이미 소개해 드렸던 촬영된 이미지를 JPEG 포멧으로 압축하여 시리얼통신으로 전송해주는 카메라를 PC와 직접 연결하여 테스트해봤습니다. 시리얼 통신으로 촬영된 데이타를 전송해주므로 시리얼통신을 지원하는 모든 기기에 연결 가능합니다. 게다가 JPEG 이미지 포멧으로 압축하여 전송을 해주므로 저장만 해주면 PC에서도 그대로 확인이 가능해집니다. 본 동영상에서는 USB to 시리얼 변환기를 통해 PC와 연결한 뒤, 기본 제공되는 PC 용 테스트 프로그램을 이용하여 실시간 이미지 전송과 Single Shot(한장촬영) 기능을 테스트 및 해상도와 전송속도 조절기능도 사용해봤습니다.
PC와 연결 구성
PC USB포트<-> USB 케이블 <-> USB to Serial FTDI 변환기 <-> TTL Serial JPEG Camera
오늘은 울트라 하이테크놀로지의 결합체인 디지탈 카메라를 만들어봤습니다. "정말 피눈물나는 노력을 통해 완성한 나만의 아두이노 호환 똑딱이입니다." 라고 말씀드리면 거짓말이고요, 사실 제가 한 일이라곤 촬영된 이미지를 JPEG 포멧으로 시리얼통신을 통해 전송해주는 카메라와 이값을 수신하여 microSD메모리에 저장해주는 역활을 해주는 JPEG Trigger 아두이노 호환보드를 단순히 조립해주고 버튼한개 달랑 단것이 전부입니다. 아, 그리고 휴대용 카메라의 역활을 다할 수 있도록 3.7V Lipo충전지도 장착해줬습니다. 성능은 최신 카메라에 비길수 없겠지만 그래도 좋은건 센서연동 및 자유로운 제어가 가능한 아두이노 호환형 디지탈 카메라 시스템이라는 점입니다.
시리얼통신 JPEG 카메라가 무엇인가? 시중에서 많이 구경할 수 있는 카메라들과 달리 촬영된 이미지를 JPEG 이미지 포멧으로 압축하여 시리얼 통신(TTL 레벨)으로 전송해주는 특수 카메라입니다. 즉, 시리얼 통신이 가능한 모든 기기에서 압축된 디지탈 이미지 데이타를 수신할 수 있습니다.(일반적인 video 신호 출력도 지원) PC의 경우엔 FTDI USB시리얼 변환보드를 경유하여 카메라를 제어하고 이미지를 수신해 볼 수 있습니다. (
관련글 - 시리얼통신 카메라 PC연결하기
) 그리고 무엇보다도 아두이노같은 8bit 저속 MCU 보드들에서도 시리얼통신으로 촬영된 이미지를 수신할 수 있게 되어 유용한 카메라입니다. 물론 압축된 이미지(JPG) 데이타라도 아두이노에서 실시간 처리를하는 것은 무리가 있습니다. 하지만 데이타를 SD메모리에 저장하고 참고하는 형태의 응용이라면 충분히 제 역활을 할수 있게되는데요, 이 역활을 하는 전용 보드(JPEG Trigger)가 있어 함께 사용하면 손쉽게 디지탈 카메라 기능 구현이 가능해집니다.
JPEG Trigger 보드 본 제품은 JPEG Camera와 짝을 이뤄 사용하도록 최적화된 아두이노 호환 보드이지만 몇가지 특수 기능을 갖쳐서 프로그램을 바꿔서 다른 용도로 사용하는것도 좋을 것 같습니다. JPEG 이미지 저장용 microSD 메모리 인터페이스와 1V~ 5V 사이의 전원을 입력해주면 내장된 승압회로를 통해 5V전원으로 작동되도록 설계되어 건전지(1.5V or 3V)나 Lipo(3.7V) 충전지 하나만으로 작동이 가능합니다. 야호! 더불어 총 6개의 범용 IO핀( 아두이노 D2,D3,D4,A0,A1,A2) 홀이 제공되어 트리거(Trigger, 셔터눌러주기) 용도 및 기타 IO기능으로 사용이 가능합니다.
오픈 소스 하드웨어 공개된 소스코드와 라이브러리를 설치해주면(이미 프로그램되어 있음) 원하는 방식으로 카메라 구현이 가능하므로 응용범위가 무궁무진해 집니다.
사진. 초간단 디지탈 카메라 구현 연결이미지 카메라 + 보드 + Lipo충전지 + 버튼 을 연결해주기만 하면 프로그래밍 없이도 바로 작동합니다.
동영상. 결합상태 확인 및 사진촬영 테스트
동영상 내용 소개 보드, 카메라, 충전지, 버튼이 연결된게 보입니다. 스위치를 켜주면 상태점검 후 상태 LED가 켜집니다. 이게 안켜지거나 깜빡거리면 카메라나 메모리에 문제가 있는것입니다. 초기상태의 경우 D2,D3,D4 버튼중의 하나를 GND에 연결하는 순간 카메라 셔터가 작동(촬영)되고 JPEG으로 압축된 이미지가 시리얼 통신으로 보드에 전달되고 이 정보가 SD메모리에 저장됩니다. 마침 네모로봇 군이 옆에 있어 버튼을 눌러 촬영을 해봤습니다. 이미지가 저장되는 중에 상태 LED가 깜빡거리는게 보입니다. 저장이 완료되면 상태 LED가 다시 켜집니다. 저장된 이미지는 PC에 연결하여 (변환과정 없이) 볼 수 있습니다. (단, 초기 프로그램된 상태에선 확장자가 txt로 저장이되는 문제가 있어서 이를 PC에서 jpg 확장자로 변환해야 볼 수 있습니다. 신규 소스로 업로드하시면 이문제는 해결됩니다.)
사진. 촬영된 이미지 예
카메라와 보드 연결 JPEG카메라 <-> JPEG트리거보드 VCC -- 5V GND -- GND TXD -- D5(Rx) 주의. 카메라측 송신(Tx)단자가 트리거보드 측 수신(Rx)에 (교차)연결됩니다. RXD -- D6(Tx) 주의. 카메라측 수신(Rx)단자와 트리거보드 측 송신(Tx)에 (교차)연결됩니다. TV(미연결) 일반적인 video 신호출력선입니다. 본 예제에서는 사용안함.
전원 배터리 단자에 3.7V 정도의 Lipo충전지를 연결하여 사용하거나, 배터리 단자 옆에있는 GND와 1~5V 핀에 1~5V 전원을 연결해줍니다. (입력된 전원은 5V승압회로를 통해 5V로 승압되어 공급되게됩니다.) (FTDI USB시리얼 보드 연결시엔 usb 전원이 상시 연결됩니다.)
스위치 기능 배터리 입력전원을 승압회로에 연결여부를 선택해준다.(회로도를 꼭 참고하세요) 배터리 사용시 보드 ON/OFF 기능으로 사용됩니다. (FTDI USB시리얼 보드 연결시엔 usb 전원이 상시 연결됩니다.)
사용법 카메라와 FAT 포멧된 메모리를 장착후 전원을 켜주면 LED가 ON된다. 메모리가 없거나 포멧상태 문제등으로 초기화가 안되면 LED는 깜빡인다. 카메라가 연결되지않은경우 LED가 안켜진다. (단, 상태LED 모드는 펌웨어에 따라 다를수있으므로 해당 소스 상단 주석을 확인바랍니다.)
입출력핀 카메라 촬영신호를 받거나 I/O용으로 아래의 6개핀을 사용할 수 있습니다. 아두이노 디지탈핀 D2,D3,D4와 아두이노 아날로그핀 A0,A1,A2를 입출력 보드에는 손쉽게 전원활용을 할수있도록 각 입출력핀마다 GND,5V 홀(구멍)이 함께 있어서 총 18개의 구멍이 있습니다. 이때 GND, 5V 구멍이 안쪽에 있고 바깥쪽이 D2,D3,D4,A0,A1,A2 핀이므로 주의바랍니다.
카메라 촬영법 초기 제공되는 펌웨어(소스참조)의 경우 D2,D3,D4 핀을 GND에 연결하거나 (내부 Pullup되므로 별도 저항없어도 됩니다) A0,A1,A2 핀을 5V에 연결하는 순간 카메라 촬영이 되고,이미지가 메모리에 저장됩니다. 이때 LED가 깜빡거리고, 저장이 끝날때까지는 재촬영이 안됩니다.
저장된 JPEG이미지 초기 제공되는 펌웨어의 경우, 저장된 이미지는 001.TXT 와 같이 확장자가 TXT로 저장되는 문제가있으며 이를 PC에서 JPG로 변경하셔야 이미지 확인이 가능합니다. 하지만 새로 제공되는 소스코드로 재프로그래밍 하시면 JPG확장자로 저장되므로 꼭 업그레이드 하시기 바랍니다.
주의사항: 보드가 켜있는 상태에서 메모리카드를 뽑지 마세요! 메모리 상태 및 보드 펌웨어 상태가 손상될 수 있습니다. 이경우 보드 펌웨어를 재프로그래밍하고 메모리를 재 포맷해야할 수 있습니다.