2017년 5월 24일 수요일

ESP8266에 카메라를 붙이다.

1. 카메라 모듈이 필요하게 되다.

 기존의 연구아닌 연구를 통하여 원격으로 원하는 곳의 온도, 습도는 알 수 있게 되었다. 인터넷이 되는 기계(핸드폰 포함)만 있다면 언제 어디서든 1일치 데이터를 볼 수 있게 되었다. 

[현재 로깅중인 온습도]

시제품을 만들지는 않았지만 전기 제품의 스위치도 원격으로 On/Off가 가능하게 되었고 이를 응용하여 문의 개폐를 할 수 있게 되었다. 하지만 원격으로 제어하는 것이기 때문에 정상적으로 스위치가 동작하였는지 확인할 방법이 없다. 결국 카메라 모듈이 필요한 상황이 되었다.  실시간 스트리밍을 하기 위해서는 상시전원이 필요한 터라, 고려 대상에서 제외하였다. 무선랜 연결 가능한 곳이면 어디에라도 설치할 예정이기 때문이다. 
[ 현재 연구중인 것의 최종 산출물 예상도 ]


2. OV528로 선택하다.

 Arduino에 연결 가능한 카메라 모듈은 많다. OV7670 계열 중에서  FIFO 기능이 없는 카메라 모듈은 싸게는 4$ 정도에 구매가 가능하다. 다만 약 17개의 핀을 연결해야 한다.  나는 Arduino 보드를 사용하는 것이 아니라 ESP8266을 사용하기 때문에 이정도의 핀을 연결할 수 없다. 그래서 RT/TX 연결을 사용하는 TTL 레벨의 카메라 모듈을 찾았다. 내가 선정한 카메라 모듈은 OV528이다. 


[ OV528 ]


OV528이 엄청난 고해상도 이미지를 촬영하는 카메라 모듈은 아니다(난 엄청난 고해상도가 필요한 것도 아니다). 장점은 오로지 4개의 핀 연결로 ESP8266과 연결이 가능하다는 것이다. 게다가 이미지를 카메라 모듈에서 JPG 포멧으로 끌어 낼 수 있는 편리함이 있다. 단점은 OV7670과 비교해서 4배 정도 비싸다. 

내가 카메라 모듈을 구매한 사이트


3. 테스트를 하다.

 제품을 배송받고 나서 몇일이 지나야 테스트를 할 수 있었다. 판매자의 제품 정보에 포함된 링크로부터 Windows용 테스트 프로그램을 다운받을 수 있었다. 카메라 모듈에 내가 가지고 있던 CH340 모듈을 연결하고 테스트를 해서 이미지를 확인할 수 있었다. 테스트 프로그램으로 연결 가능한 속도는 9600 이었다. 다른 속도로는 성공하지 못했다.


[ CH340으로 PC와 연결 ]


4. ESP8266에 붙이다.

 제품에 문제가 없음을 테스트하고 나서 본격적으로 ESP8266에 연결하였다(RX->TX, TX->RX, GND->GND, VCC->5V). 인터넷에서 공수한 예제를 가지고 이틀의 고생 끝에 드디어 이미지를 얻게 되었다. 오래걸린 이유중에 하나는 카메라 모듈이 5V에서 동작하는 기계였기 때문이었다. 내가 계획하는 것이 18650 배터리 1개 셀에 ESP8266 + 카메라 모듈을 연결하는 것이라서 카메라 모듈에 공급하는 전압을 3.3V에서 했기 때문이었다. 카메라 모듈에 3.3V를 연결하면 이미지 촬영이 안된다는 것을 아주 많은 시도 끝에 알게 되었다. 머리속에 여러가지 생각이 지나갔다. 처음 내린 결론은 DC 부트터를 하나 달아서 3.3V -> 5V로 변경하여 카메라 모듈에 붙이는 방법이었다. 

5. 레귤레이터를 떼어내다.

 난 전공이 전기나 전자가 아니다. SW쪽이라서 전기, 전자에는 문외한이나 다름없다. DC부스터를 주문하고 기다리면서(먼가 주문하면 기본 20일 이다.ㅠㅠ) DC부스터 연결에 따른 전력량 손실이나, 패키지 부피가 커지는점 등을 고려하니 처음 내린 결론은 정답이 아니라는 생각이 매일 커져 갔다. 카메라 모듈을 매일 이리 저리 뚫어져라 쳐다 보다가 어느날 문득 모듈에 붙여저 있는 3개의 레귤레이터들이 눈에 들어왔다. 3개의 레귤레이터 중 1개를 어찌하면, 카메라 모듈을 3.3V에서 동작가능하게 만들 수 있다는 상상을 마친후 레귤에이터에 대해서 공부하기 시작했다(워낙 문외한 이라 뭐든 공부를 해야 한다.)
[ AMS1117 ]

연구 대상인 AMS1117은 위쪽에 1개의 굵은 다리와 아래쪽에 3개의 가는 다리가 있다. 카메라 모듈 기판에는 4개 다리 모두 납땜이 되어 있는 상태라 더 많은 고민을 했다. 단순하게 AMS1117를 기판으로 부터 분리하면 당연히 동작하지 않을 것이라는 것은 짐작할 수 있었기 때문에 카메라 모듈에 전원을 공급한뒤 테스터기로 측정을 하기 시작했다. GND를 제외한 나머지 3개의 다리에서 3.3V가 두군데,  5V가 한군데 측정 되었다. 5V는 당연히 Input이겠고 나머지 두 곳이 고민되었다. 3.3V 두곳을 테스터기로 연결테스트 해보니 직접 연결이 되어 있었다(글을 쓰면서 생각해보니 저항 측정을 안했다). 많은 고민끝에 5V의 다리를 기판으로 부터 분리하고, 기판의 5V 부분과 3.3V 부분을 쇼트 시키기로 결정하고 작업했다.


[ AMS1117 분리 작업 결과 ]

AMS1117의 다리 1개를 기판으로 부터 분리하는 가장 좋은 방법은 잘라내는 것이다. 난 아주 작은 니퍼가 없었기 대문에 손톱깍기를 썼다. 훌륭한 선택이었다. 결론은 성공했다. 3.3V의 전압을 입력하여, 필요한 이미지를 추출해 낼 수 있었다.

6. 연구해야 할 것을 정리하다.

약 20cm X 6cm 크기 태양광 패널의 1일 전력 생산량을 실측.
ESP8266 + 카메라 모듈의 시간당 소비 전력량 실측.
(1.5분 정도 슬립모드 그후 깨어나서 촬영 및 서버 전송을 반복)
18650 충전 및 보호 모듈 테스트
서버 이미지 업로드 및 서버 이미지 관리 및 웹클라이언트 배포 방법 모색


댓글 없음:

댓글 쓰기

3단 6핀 스위치로 DC 모터의 회전 방향을 바꾸어 보자

1. 필요는 연구의 어머니 항상 느끼는 부분이다. 필요하지 않으면 연구하지 않으며, 필요하면 연구한다. DC 모터를 조건에 따라서 정방향 또는 역방향으로 회전시켜야 하는 필요가 생겼다. 처음에는 MCU 및 Relay Switch를 이용하는 방법을 생각...