킹!왕!짱! 기다리고 기다렸던

많은 분들이 안드로이드기기의 무선통신 기능( Bluetooth, Wifi) 을 활용하여 원격 제어되는 자동차나 탱크등을 갖고 싶어 하시는것 같습니다.  이중 소수의 분들이 직접 제작하는경우를 봤습니다만 제작 비용도 만만치 않고 소요시간과 제작을 위해 알아야할 사항도 제법 많은것 같습니다.  특히 하드웨어 개발보다는 소프트웨어 개발에 집중하려는 개발자분들은 무선으로 제어되는 적당한 하드웨어 플랫폼을 찾고 계실겁니다. 저도 마찬가지로 이런 기능을 하는 저렴한 장비를 찾아왔는데요 오늘 소개해드릴 제품이 바로 딱! 그 제품인것 같습니다.  

 

해킹 권장 플랫폼

안을 들여다 보면 ATMega칩을 주제어칩으로 장착하고 있고,  이곳에 모터드라이버 회로와  블루투스(Bluetooth) 모뎀이 장착되어 있는것이 보입니다.  제어보드에는 MCU를 재프로그래밍하려는 해커? 분들을 위해 ISP핀홀도 마련되어 있어서 내장된 프로그램을 직접 원하는데로 바꿔보실 수 있습니다.(차량용 펌웨어 소스코드와 무선 명령어 코드가 공개되어 있습니다.)  또한 전용 안드로이드앱(apk파일)을 동봉된 CDROM에 넣어 주므로 프로그래밍을 전혀 모르시는 분들도 파일메니져를 이용하여 apk 파일을 설치하기만 하면 재밌게 갖고 놀 수 있습니다. 

 

All in One

필요한 액세서리도 모두 포함되어있어서 작동을위해 따로 준비해야할 것은 안드로이드폰(또는 스마트패드) 뿐입니다.

LiPo배터리가 내장되어 있고, 충전기능이 내장된 USB케이블이 제공되므로 PC에 꽂아서 충전해 주시면 수십분간 주행이 가능합니다. Wow~

 

첨부된 동영상을 참고하시기 바랍니다.

 

 

 

 

오늘은 울트라 하이테크놀로지의 결합체인 디지탈 카메라를 만들어봤습니다.  "정말 피눈물나는 노력을 통해 완성한 나만의 아두이노 호환 똑딱이입니다." 라고 말씀드리면 거짓말이고요,  사실 제가 한 일이라곤 촬영된 이미지를 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 전원이 상시 연결됩니다.)

보드테스트
(카메라 및 메모리)아무것도 장착하지 않은상태에서
스위치 off상태에서 Lipo단자에 Lipo배터리 연결후, 스위치 on하고 몇초후 LED가 깜빡거려야함.


스위치 기능
배터리 입력전원을 승압회로에 연결여부를 선택해준다.(회로도를 꼭 참고하세요)
배터리 사용시 보드 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확장자로 저장되므로 꼭 업그레이드 하시기 바랍니다.


주의사항:
보드가 켜있는 상태에서 메모리카드를 뽑지 마세요! 메모리 상태 및 보드 펌웨어 상태가 손상될 수 있습니다.
이경우 보드 펌웨어를 재프로그래밍하고 메모리를 재 포맷해야할 수 있습니다.


 

 

아두이노와 전자회로를 배울때 가장 먼저 해보는것이 LED ON/OFF 제어인데요, LED 대신 IRED(적외선 LED)를 장착하고  마치 모르스 부호같이 규칙에 맞쳐 ON/OFF를 해주면 복잡한 데이타도 송수신이 가능합니다.  여러분이 매일 사용하고 계신 TV같은 가전기기가 바로 이렇게 눈에 보이지 않는 빛을 통해 제어되고 있습니다.  이 기술을 잘 활용하면 여러분의 아두이노로 리모콘을 대체하거나 반대로 리모콘 명령에 따라 동작하는 아두이노 기기의 제작이 가능합니다.

본 글을 통해 아래의 적외선 송수신 기본회로를 소개해 드리고 실제로 리모콘으로 조정되는 로봇을 아두이노로 제어하는 방법도 안내해 드리겠습니다

1. 초간단 적외선 송신 회로
2. 고출력 적외선 송신 회로 ( 5미터 이상의 장거리? 전송가능)
3. 리모컨 신호 수신 회로



1. 초간단 적외선 송신 회로

그림1.의 회로를 보시면 바로 아시겠죠?  네,  일반적인 LED를 켤때 사용하는 회로와 동일하게 연결하면 됩니다.  차이점이라면 보통 IRED는 대부분의 LED보다 좀더 저 전압에서 구동된다는 점입니다.  따라서 일반 LED보다는 조금더 큰 저항을 사용하면 됩니다.  저항값이 작으면 좀더 IRED를 밝게 켤 수 있지만 대신 IRED와 아두이노에 무리가 갈 수 있으므로 적당한 저항값을 선정해주시면 됩니다. 하지만 정답은 없습니다.   예제에서는 560옴 저항을 사용하였습니다. 

예제에 사용된 IRED 규격:   정격 1.36V ,  최대 1.7V,  피크주파수 940nm, 화각+-20도

5V 전압을 가할 경우,  I= V/R 공식을 참고하시면  약, 9mA 전류가 흐를 수 있음을 계산으로 예상할 수 있습니다.
아두이노의 경우 핀 한개에서 출력할 수 있는 전류허용량은 20mA에 불과합니다.  초간단 회로로 광신호 도달 거리가 짧을 경우 그림2. 와 같은 고출력 전송회로를 사용하면 됩니다.  위 예제에선 아두이노 디지탈3번 핀을 통해 ON/OFF 제어를 하게됩니다. 참고로, 디지탈 3번핀은 PWM 출력을 지원해주는 핀중 하나입니다.



2. 고출력 적외선 송신 회로

본 회로는 보통의 가전기기 제어용 리모콘에서 사용되는 회로입니다. 수십에서 수백 mA의 고출력 송신이 가능하므로 비교적 원거리(5미터 이상)로 광신호를 전송할 수 있습니다. 이를 위해 트랜지스터를 사용하는데요 아두이노에서 저 전류 제어로 ON/OFF를 제어하고 실제로 IRED에 전류공급은 트랜지스터가 담당하여 비교적 큰 전류를 사용할 수 있게 됩니다.
그림2.를 참고하여 회로를 구성하시면 됩니다.  여기서 R1은 330옴  R2는 1옴을 사용하였습니다.  실제로 테스트 해본 결과 방이나 거실 전역에서 방향에 상관없이 신호전달이 되는것을 확인했습니다. 기본 제공되는 리모콘보다 더 고출력인것 같네요;; 
(사실 본 회로에 5V는 조금 과할 수 있습니다.  아두이노와 함께 사용하실 경우 5V 대신 3.3V 전압을 사용하면 좋습니다.)

예제 회로의 경우 일시적으로 매우 큰 전류가 흐르게되지만 매우 짧은 시간동안만 구동되므로 전체적인 전류소모율은 적은 편입니다.  참고로, 상용 리모콘의 경우 미작동중엔 sleep모드로 대기하다가 버튼이 눌리는 순간 깨어나서 IR송신 후 다시 잠에 들게 되므로 건전지 2개로 수개월씩 작동이 가능합니다.  회로도로 잘 이해가 가지 않으신 분들은 아래의 실제 연결된 사진을 참고하시기 바랍니다.

사진1. 고출력 IR 송신회로 실제 구성예

3. 적외선 수신 회로

적외선 송신측 IRED의 피크 주파수와 일치하는 파장의 포토트랜지스터나 포토다이오드를 이용하여 수신부 구현이 가능합니다. 하지만 우리주변엔 다양한 파장의 빛들이 가득차 있으므로 노이즈에 해당하는 빛신호를 차단하고 원하는 광신호만 추출해주는 필터회로가 있어야 실용이 가능해 집니다.  리모콘 수광 모듈은 이를 위한 소자와 필터회로가 일체화된 제품으로 매우 손쉽게 특정 파장 및 주파수의 빛 신호에 반응하는 수신기로 활용할 수 있습니다.

예제에 사용된 적외선 수광모듈 사양:   감응되는 빛의 파장: 940nm ,  빛 신호의 주파수: 38KHz

참고로, 적외선 송신시 사용된 IRED가  850nm 파장의 빛을 출력한다면,   수광모듈도 850nm 용으로 맞쳐줘야 수신률이 높아집니다.  마찬가지로 빛 신호의 캐리어 주파수(가령 38KHz)도 송/수신 모듈이 일치되어야 합니다.
예제에선  940nm 피크 파장의 IRED와  940nm형 수광모듈을 사용하였으며,  캐리어 주파수는 38KHz로 맞췄습니다.


IR 수광 모듈의 연결법도 매우 간단하며 (그림3을 참고) 전원만 공급해주고 VOUT단자로 출력되는 신호를 참고하기만 하면 됩니다. 다만,   전원 입력부에 노이즈가 있어 문제가 되는경우라면 전원 입력부에 저항과 콘덴서를 이용하여 노이즈를 감쇄시켜줘야 합니다.  (보통은 생략이 가능합니다. 필요한 경우 관련자료에서 IR수광모듈 데이타 시트를 참고하시기 바랍니다.)
위 회로에서는 VOUT 출력을 아두이노 디지탈11번 핀에 연결하여 신호를 감지하는 경우를 가정하였습니다.


아두이노로 적외선 신호 송신 및 수신하기 - 프로그래밍 편

위에서 소개해드린 방법으로 하드웨어 준비는 간단히 끝났습니다.
이제는 아두이노로 리모콘 제어 신호를 발신하기 위해선 전송규약에 맞쳐 ON/OFF제어가 필요한데 많은 분들에게 쉽지 않은 과제입니다. 따라서 전용 라이브러리를 활용하시면 좋은데요  공개된 아두이노 라이브러리들을 둘러보시고 적절한것을 선택하시면됩니다. 본 글에선 IR Remote 라는 라이브러리를 참고로 하였습니다. 
IR Remote 라이브러리의 경우  IR 송신을 위해서 D3핀을,  수신을 위해서 D11핀을 기본으로 사용하고 있습니다.


IR Remote 라이브러리로 적외선 리모콘 신호 발신하여 로봇 원격 제어하기

이제는 실제로 리모콘으로 제어되는 로봇을 아두이노로 제어해 보도록 하겠습니다.

제어대상: 원격제어 6족보행 로봇
전송프로토콜: 유사 NEC 코드
전송부 회로:  그림1. 또는 그림2 의 회로 모두 사용 가능

사전준비:
 .IR리모콘으로 조정되는 로봇 준비: 관련글 링크, 
 .IR Remote 라이브러리 설치:  라이브러리 제작자 홈페이지 링크,   라이브러리 다운로드 링크


소스코드 예제:

#include <IRremote.h>

IRsend irsend;

int incomingByte = 0;

void setup()
{
  Serial.begin(9600);
}

void loop() {
 
    if (Serial.available() > 0) {
        // read the incoming byte:
        incomingByte = Serial.read();
        // say what you got:
        Serial.print("I received: ");
        Serial.println(incomingByte, DEC);
        Serial.flush();
    }
        switch( incomingByte){
         case 56: //forward
           irsend.sendNEC( 0xc5000000, 8); //전진
           break;
         case 50: //backward
            irsend.sendNEC( 0x45000000, 8); //후진
            break;
         case 52: // turn reft
            irsend.sendNEC( 0x25000000, 8); //좌회전
            break;
         case 54: // turn right
            irsend.sendNEC( 0x85000000, 8); //우회전
            break;
         case 53: //stop 정지 , 아무신호도 안 보내면 정지합니다.
          break;
        }
      delay(500);    // 0.5초를 주기로 반복
}

아두이노에 위 소스를 프로그래밍 하신 뒤 시리얼 모니터 창을 여시고,  send 입력란에 아래의 해당 숫자키를 입력한 뒤 엔터를 입력하여 전송해줍니다.

 전진 8
후진 2
 좌회전 4
 우회전 6
 정지 5 or 기타키 or 그냥 엔터

가령, 전진을 하려면 숫자 8을 누르고 엔터를 쳐주면됩니다. 중지하려면 5번을 누르고 엔터를 치면됩니다.

소스 해석:
시리얼 포트를 통해 값이 전송되면 첫번째 바이트 값을 읽고 이값에 따라 방향제어 변수값을 수정합니다. 또한 이값은 별도의 입력이 없는경우 그대로 유지되므로 매번 순환루프 마다 보관해둔 방향제어 변수값에 따라 리모콘 신호를 발신하게 됩니다.

방향 제어 명령을 유선 시리얼 통신으로 받는 대신, 무선으로 전송 하거나 조이스틱이나 버튼 또는 센서를 이용하여 변화시켜주면 전파를 이용한 로봇제어나 자율이동형 로봇의 제작도 가능합니다.


동영상1. 실행 예제 보기

키보드 숫자를 입력후 엔터를 치면 시리얼통신으로 아두이노에 전송되고 이 값에 따라 적절한 리모콘 신호를 보내어 로봇을 제어하게됩니다.  본래 적외선은 사람 눈으로는 보이지 않지만 대부분의 카메라로는 볼 수 있습니다. 동영상 후반부를 보시면 광신호가 약 0.5초에 한번씩 송출될때 로봇이 움직이고, 신호가 없으면 로봇이 멈추는것을 확인하 실 수 있습니다.

끝으로,
 온갖 가전기기들이 리모콘으로 제어되고 있습니다.  이는 아두이노로 제어할 수 있는 기기들이 많다는 뜻이기도 한데요 여러분은 어떤 기기를 제어해 보시겠습니까?  가령 저렴하게 구입이 가능한 리모컨 제어되는 MP3플레이어로 말하는 로봇 만들기도 가능합니다.  아래의 관련글에서 좀더 세부적인 리모콘 프로토콜 정보도 참고하시기 바랍니다.

즐거운 DIY 생활 보내시길!!


관련 제품 링크

 .무선제어 6족보행 로봇

 .아두이노 UNO

 .적외선 무선통신킷

 

 


기타정보 링크
 .아두이노로 무선제어 6족보행 로봇 제어하기  63
 .말하는 로봇 만들기( 적외선 리모콘 프로토콜 ) 31
 .IR수광모듈 데이타시트(첨부파일 참조)

IR수광모듈-datasheet.pdf
다운로드


아두이노로 제어하기 좋은 로봇을 찾아오다 얼마전 드디어 쓸만한 녀석을 발견했습니다.

바로 무선제어 6족보행 로봇이란 제품입니다.





6족 보행로봇으로 전진,후진,좌회전,우회전이 가능하며 제공되는 적외선 리모컨을 통해 무선 조정이 가능합니다.
여러대의 로봇을 동시에 조정할 수 있도록 점퍼세팅으로 총 6대의 로봇을 동시에 조정할 수 있게 제작되었습니다.
조립도 간단하고 접착제같은건 사용하지 않아 신속하고 깔끔하게 제작이 가능합니다.

왜 좋은가?

1. 저렴한 가격
2. 손쉬운 제작 ( 8세이상 조립가능, 납땜불필요)
3. 손쉬운 아두이노 연동 가능( 전선 결합 불필요, 적외선 통신으로 제어)


조립시 필요한 것:
1.5V 알카리인 건전지 4개( 조정기용 2개, 로봇본체용 2개,  1.2V 충전지로도 잘 작동됩니다.)
스크류 드라이버

아두이노로 제어할 경우 필요한 재료:
 아두이노, IRED(적외선 LED) 1개,  저항 1개
(5미터 이상의 장거리 제어를 원하면 트랜지스터 1개, 저항 1개가 추가로 필요합니다.  관련글 링크 참고)


동영상1. 로봇 기본동작 보기

리모컨 제어로 전진, 후진, 좌회전, 우회전이 가능합니다.


아두이노로 제어하기

1. 하드웨어 준비
적외선 리모컨 신호를 아두이노 디지털 출력을 통해 출력하면됩니다.  이를 위해서 IRED(적외선LED) 1개와 저항 1개가 전부입니다.   원거리에서 제어하려면 트랜지스터를 사용해야 합니다.  연결방법은 일반 LED와 동일하게 저항1개와 함께 직렬 연결해주시면 됩니다.  본 예제에서는 PWM출력을 지원하는 아두이노 디지털 3번핀을 사용합니다.

리모콘 신호 전송을 위해 아두이노에 IRED 연결


IRED연결은 일반 LED 연결과 유사합니다.



2. 라이브러리 준비
적외선 리모컨의 역활을 아두이노가 대신하려면 여러분이 직접 38KHz의 캐리어 주파수에 수신기의 코드부호를 실어서 출력해주면 됩니다.  하지만 많은분들에게 쉽지 않은 도전과제이므로 천재적이면서 친절하기까지 하신 분들이 미리 만들어둔 라이브러리를 활용하여 비교적 손쉽게 아두이노로 리모컨 신호를 발신할 수 있습니다. 

아래의 링크에 가셔서 해당 라이브러리를 아두이노 스케치 library 폴더안에 복사하여 라이브러리 설치를 완료합니다.


위에서 준비해놓은 라이브러리는  RC5, SONY, NEC 코드 등의 송신 및 수신을 위한 기능이 제공되며 여기서는 NEC코드 발신 함수만 사용하면 됩니다. 리모컨 신호를 이용해 가전기기를 제어하는 것에 대해 일전에 소개해 드린적이 있는데요  이번에도 마찬가지로 코드부호를 스캔하여 해독한 결과 이 로봇도 NEC코드와 유사한 전송방식을 사용하는것을 알게되었습니다.
차이점은 데이타 전송폭이 짧다는 점과 반복표시용 코드를 사용하지 않는다는 것입니다. 

하지만 로봇제어를 위해 복잡한 내용은 모르셔도 상관 없습니다.  단지, 아래와 같은 함수 하나만 사용하기 때문입니다.


  irsend.sendNEC( codedata , nbits );   // codedata에 수신기용 코드값과   nbits에 코드값의 비트 수를 적어주면 됩니다.

위와 같은 함수로 해당코드값을 전송하면,  아두이노의경우 디지탈 3번핀에 해당되는 코드신호가 출력되고 이곳에 연결된 IRED를 통해 빛신호로 변환되어 출력되고  로봇에 내장된 적외선 수신기에서 해당 코드를 수신한뒤 대응되는 모터의 작동이 이뤄지게 되는 것입니다.


아래의 소스는 1초에 한번씩 전진, 후진, 좌회전, 우회전 신호를 발신하는 예제입니다.


#include <IRremote.h>

IRsend irsend;  

void setup()
{
// 특별한 초기화 설정이 불필요합니다.
}

void loop() {
   irsend.sendNEC( 0xc5000000, 8); //전진
   delay(1000);
   irsend.sendNEC( 0x45000000, 8); //후진
   delay(1000);
   irsend.sendNEC( 0x25000000, 8); //좌회전
   delay(1000);
   irsend.sendNEC( 0x85000000, 8); //우회전
   delay(1000);
  
}


위의 소스는 1초에 한번씩만 코드를 발송하므로 지속적으로 작동상태가 유지되지 않습니다. 따라서 만약 전진을 지속적으로 하려면 1초에 수회 정도 전진에 해당되는 코드를 반복하여 전송해야합니다. 


동영상2. 위 소스로 로봇 제어되는 장면

보통 이동형 로봇을 제작시 아두이노같은 마이크로콘트롤러 보드에 모터 구동 회로를 장착하고 모터 2개를 제어할 경우 방향제어를 위해 최소 4개의 전선을 연결하여 제어하게 됩니다. 이에 반해 본 로봇킷의 경우 모터 회로 구현이 이미 되어있는데다 전선의 연결이 불필요하고 빛으로 연결되어 있으므로 비용도 절감되고 제어도 간단해 질 수 있으므로 기초 이동형 로봇 제어 학습시 효과적으로 응용할 수 있는 방법으로 판단됩니다.  (물론 전용 모터드라이버 연결법이 더 다양한 제어가 가능합니다. 가령 속도조절이 가능함)

거리센서 등을 통해 주변 물체를 감지하고 회피하는 로봇의 제작이나  전파(Zigbee, Bluetooth, Wifi 등 활용)를 통한 무선통신으로 신호를 수신 받고 이를 광통신으로 변환하여 원격제어되는 로봇의 구현도 가능합니다.

게다가 수신모듈+모터드라이버 역활을 하는 제어기만 활용할 수도  있습니다.


사진. 리모컨 수신기 및 모터구동 드라이버 보드: 
좌측에 전원연결(2핀)부, 우측에 모터2개 연결부(4핀), 상부에 ON/OFF스위치,  하부에 리모컨 채널 조정용 헤더핀(6핀)이 있으며 가운데에 IR수광모듈이 보입니다.


기타.  작동중 오동작이 계속되면 건전지를 교체해 보시기 바랍니다.  모터 구동시 전력소모가 큰 편이므로 배터리 소모가 빨리 됩니다.


관련 제품 링크

 무선제어 6족보행 로봇

 아두이노 UNO

 적외선 무선통신킷



내용추가
2011.July.26 
아래의 관련글 링크에 리모콘 신호 송수신 회로와  PC에서 키보드 입력으로 로봇을 제어하는 소스 예제를 포함한 글을 새로 등록하였습니다. 참고하세요


관련글 링크

 .IR무선 리모콘 송수신 회로로 로봇 제어하기



^^. 로보밥 얼뚱연구소에 또하나의 재밌는 제품이 들어왔습니다. 예전부터 이제품 찾는 분들이 많았는데 드디어 입수하게 되었습니다.
 자세한 소개이전에 일단 테스트 영상을 올려봅니다.

Adafruit Industries사의 아두이노용 웨이브 쉴드이며,  직접 납땜하여 조립하는 DIY형 제품입니다.
mp3플레이어의 경우 전용 하드웨어 코덱칩을 사용하곤 하는데요, 요제품은 걍 wav파일을 곧바로 DAC칩으로 재생해버리므로 코덱같은거 없습니다.  단점일수있지만 반대로 장점일 수 도있죠,
low level 의 wav데이타를 곧바로 DA로 변형후 OPamp로 증폭하여 출력합니다.
그리고, 사실 mp3 배우기 전에  wav부터 배우는게 순서가 맞을것 같습니다.
SD메모리 슬롯도 내장하여 용량문제없이 음악재생이 가능하고, SD메모리만 응용할 수도 있습니다.

아래의 예제는 sd메모리에 미리 넣어둔 wav파일 몇개를 지정된 키를 누를때마다 재생하는 예제입니다.
관련예제는 해당제품 안내페이지에서 모두 보실 수 있습니다.
기회가 되면 상세 리뷰도 소개해 드리겠습니다.

 

 

 

 

 

PCB와 조립용 부품이 제공되며 직접 납땜으로 완성시키는 DIY형 제품입니다.

 

릴레이로 가전기기 제어하기

아두이노로 LED를 제어하여 ON/OFF 제어를 해보신 분들이라면 주변에서 널리 사용되고 있는 가전기기들도 ON/OFF 제어를 해보고 싶은 마음이 드실 겁니다. 이때 사용되는 전자부품으로 릴레이(Relay) 입니다.  보통 릴레이라고 하면 코일이 감겨진 전자석에 제어 전류를 흘려주면 그 자력으로 스위치의 접점부가 ON/OFF 되도록 설계된 기계식 릴레이가 많이 사용되고 있습니다.

 

 

사진.코일형 릴레이


조금? 다른 릴레이 SSR


오늘 실험에선 보통의 릴레이와 동일한 기능을 해주지만 좀더 사용하기 쉬운 SSR이라는 재밌는 전자부품을 사용하였습니다.
반도체 기술의 발달로 기계식 코일내장형 릴레이의 기능을 반도체 소자로 대체한 것이 SSR(Solid State Relay; 무접적 반도체 릴레이)입니다.  상대적으로 좀더 비싼편이지만 사용의 편리성과 안정된 성능으로 전기회로에 익숙치 않은분들이 가전기기의 제어용 릴레이로 사용하시기 좋은 부품입니다.

하지만, SSR도 용도별로 수많은 종류의 제품이 있어서 고르기가 쉽지만은 않습니다.
본 글에서는 4~32V의 직류 전원으로 240V 15A 까지의 교류 부하를 제어할 수 있으며, 납땜 작업 없이도 전선을 체결할 수 있는 볼트 결합단자가 제공되고, 보호 커버까지 장착된 SSR 제품을 선정하여 사용하였습니다.

 

 

 

사진. SSR 저전압(4~32V) 직류로 고전압 교류(240VAC) 부하를 제어하는 제품예

시중엔 이 제품보다 저렴한 제품이 많이 있지만, 일단은 사용하기 쉽고 편리한 제품의 사용을 추천드립니다.

SSR 의 특징
 .기계식 접점이 없으므로 접촉시 발생되는 노이즈가 없고 내구성이 우수합니다.
 .제품에 따라 매우 낮은 전압(가령 4~32V 직류)로 제어 할 수 있습니다.
 .코일형에 비해 상대적으로 매우 작은 전류만 소모합니다.
 .부하측 회로와 제어회로와의 우수한 절연성


릴레이 구동 회로

기계식 접촉식 릴레이를 사용할 경우 코일에 의한 역기전력이나 구동전류의 고려가 필요해지므로 제어측  회로가 좀더 복잡해집니다.  SSR의 경우 보통 입력신호측과 부하측이 전기적으로는 절연되어있고 광신호만 전달되므로 코일에 의한 역기전력이나 부하측과의 전기 절연에대해 고려할 점이 적어 회로가 매우 간단해 집니다.  6V건전지로 구동되는 스위치를 연결하거나 아두이노 같은 마이크로 콘트롤러의 디지탈 출력단자(5V출력)를 그대로 직결할 수 있습니다.


 

 

그림1. SSR로 전등 제어하는 초간단 회로도

주의 사항.
본 회로는 저전력 소모용 가전기기나 전등의 제어를 위한 것이며, 고전력 및 코일형 기기를 제어하는 경우 부가적인 안정화 회로가 필요할 수 있으며 고전류 구동시 방열을 위해 SSR의 밑면을 히트싱크(방열판)에 결합하여 사용해야 합니다. 또한, 전원 플러그와 소켓에는 안전을 위해 접지선까지 연결해 주실 것을 당부드립니다.


실험1. 6V건전지와 스위치로 220V 전등 ON/OFF하기

소개해 드렸듯이 입력측에 4~32V의 직류전압을 가하면 릴레이가 연결되고 교류회로가 작동되게 됩니다.  랜턴에 많이 사용되는 6V 건전지로 전등을 제어해 보는 장면입니다. 가장 단순한 회로의 예입니다.

실험2. 아두이노로 220V 전등 ON/OFF 제어하기

아두이노를 통한 제어도 원리상 동일합니다.  아두이노의 디지탈 출력핀에 High를 출력하면,  약 5V 전압이 출력됩니다. 그대로 SSR의 입력측에 연결해주면 LED를 ON/OFF하듯이 220V 전등이 ON/OFF 되게 됩니다.


너무 간단하죠 ^^.
하지만 220V는 간단치 않습니다. 잘못 만지면 크게 다치거나 돌아가실 수 있으니 주의해서 다뤄야합니다.
아래의 구성 예는 참고만 하시고, 스스로 충분히 안전에대한 준비가 되셨을때 스스로 충분히 검증을 하신 후 시도하시기 바랍니다.


주의사항 및 경고. 
본 글의 내용은 오류가 있을 수 있으며, 초보자들이 실습을 하기위해 필요한 모든 사전지식을 포함하고 있지 않습니다.
220V 교류 전원을 부주의하게 다루면 크게 다치거나 생명을 잃을 수 있습니다.  적절한 경험과 사전지식을 탐구한 이후에 주의하여 시도하시기 바랍니다.  여러분이 행한 실험에 대하여 저자는 어떠한 책임도 질 수 없습니다.


릴레이로 제어되는 콘센트 플러그 세트 만들기

이하, 위의 동영상에서 사용된 릴레이로 제어되는 콘센트 플러그를 만드는 방법을 소개해 드립니다.


 

 

1단계. 기본 재료:

플러그 암수 세트, SSR, 규격에 맞는 압착단자, 교류220V용 케이블(1.5mm 이상)

도구: 니퍼와 플라이어(뺀찌), 드라이버

 

 

 

플러그 부분에 부하선을 결합해 줍니다.

 

 

 

전선이 빠지지 않도록 매듭을 묶어주면 빠지지 않게됩니다. (매듭은 속에있어서 안보여요;;)

 

 

 

전용 압착단자를 이용하면 편리합니다.

 

 

 

 

 

 

플라이어로 꽉 눌러줘야 합니다.

 

 

 

 

 

 

 

암플러그 쪽에도 전선을 결합니다.

 

 

 

전선빠질 공간을 칼로 깍아냈습니다.

 

 

 

보통 잘라낼 수 있도록 미리 공간이 마련되어 있습니다.

 

 

 

이렇게 연결할까나~

 

 

 

 

 

요렇게 연결해 주시면 볼트가 풀려도 전선이 빠져나가는 사고는 미연에 방지할 수 있겠죠?!

 

 

 

회로도 보시면 어떻게 연결되는지 쉽게 아실 수 있으시죠?

 

 

 

건전지로 구동되는 아두이노라도 Okay입니다.

 

 

 

아답터 전원도 물론 좋구요

 

 

 

 

 

 

 

 

 

 

 

완성된 상태 여러장면들...


관련 제품 링크
 .무접접 반도체 릴레이 SSR
 .아두이노 Arduino
 .450/750V 기기배선용 절연선
 .전원플러그 220V형
 .전원 콘센트 1구형

추가 정보
아트로봇샵에서 취급중인 기계식 릴레이E형 제품의 사용법을 궁굼해하시는 분들이 계셔서 연결 예시 이미지를 추가로 올려봅니다.  예제에서는 12V전원에서 구동되는 모터를 아두이노에서 제어하기 위해서 릴레이E형과 아두이노를 연결한 모습입니다.

 

 

추가안내 사항.  2014.8.23일

전기기사님께서 댓글로 알려주신 정보입니다.  제가 예제소개시 사용한 전선의 색상(녹색)이 적절한 선택이 아니었던것 같습니다.  녹색 전선은 전기공사시 접지용도로 사용되어야하는 규칙이 있다고 하네요.  전기배선함이나  전등 스위치 단자를 열어보면 검정색선을 보통 사용하는것을 봤는데  나름대로 규칙이 있는것 같습니다. 이런 사항도 파악하셔서 꼭 지켜주시는것이 좋을것 같습니다.  좋은 정보 알려주신 익명의 전기기사님께 감사드립니다!!!

참고로 저전압을 사용하는 전자회로에서는 검정색은 GND 접지선으로 보통 사용됩니다.  고압을 사용하는 전기선과 서로 많이 다르네요 TT    이와 관련하여 어떤 역사적 스토리가 존재하는지 궁굼해집니다....   

 

 

 

오늘 소개해 드릴 녀석은 

EL 씨퀀서 아두이노 호환 보드(EL Sequencer)

  입니다.

일전에 소개해 드린(

인버터로 발광선 구동 안내기

) EL Wire 를 단순히 켜거나 점등하는 것으로는 부족하신 분들을 위한 시퀀서(제어/콘트롤) 보드입니다.
본 제품은 아두이노와 동일한 ATmega328칩을 내장하였고 아두이노 호환보드로 설계되어 일반 아두이노와 동일한 스케치(Sketch) 개발환경을 이용할 수 있으므로 비교적 손쉽게 EL Wire를 제어할 수 있게 해줍니다.  유사한 기능을 하지만 ATmega칩이 없이 아두이노 UNO에 장착하여 사용할 수 있는 쉴드형 제품(

아두이노용 EL제어 쉴드(EL Escudo)

도 있습니다.


EL Sequencer 프로그래밍 방법 소개

스케치에서 보드 선택은 "LilyPad Arduino w/ ATmega 328"  로 해주시면 됩니다.

아두이노 프로그래밍을 위해선 LilyPad나 Pro, Pro mini 와 동일한

FTDI USB시리얼 변환기

를 사용하시면 되며 5V형과 3.3V형 둘 다 사용 가능합니다.  FTDI보드 연결을 위한 6 Pin 핀홀에  일반 12mm 길이의 핀헤더나  90꺽인 핀 헤더를 납땜 후, FTDI보드를 연결해주시면 됩니다.   아래의 사진을 참고 하세요.

[사진. EL Sequencer 와 FTDI USB시리얼 변환 보드 연결방법]

참고로, 프로그래밍시엔 EL 인버터 전원을 꺼줄 것을 권장드리며,  전원 선택 스위치를 BAT가 아닌 USB 쪽으로 밀어주면, 보드 전원을 PC에 연결된 FTDI보드에서 공급받게 되므로 별도의 전원이나 배터리를 연결할 필요가 없습니다.

참고로, 총 8개의 EL Wire를 제어할 수 있으며 각각의 EL_Wire 단자마다 ON/OFF Relay역활을 해주는 TRIAC 소자를 이용해 인버터로 부터 나오는 교류 100~200V정도의 전원을 EL_Wire에 공급 여부를 선택하여 EL Wire를 ON/OFF 하게 됩니다.

프로그래밍 방법은 매우 간단하며, 아두이노를 처음 시작할때 배웠던 LED Blink 예제와 비슷한 수준입니다.
해당 디지탈 핀을 출력모드로 설정 후,
    pinMode( 2, OUTPUT);  // EL_A 단자 해당 디지탈핀(D2)를 출력모드로 설정

High 나 Low 신호를 출력하여 해당 디지탈핀의 출력을 제어하면, LED 가 ON/OFF 되듯이 EL_Wire가 ON/OFF 됩니다.

    digitalWrite( 2, LOW);  // EL_A 단자(D2)에 연결된 Wire 끄기
    digitalWrite( 2, HIGH);  // EL_A 단자(D2)에 연결된 Wire 켜기

가령 EL_A 단자에 연결된 EL Wire를 켜고자 한다면  아두이노 D2 핀 출력을 HIGH 로 설정해 주면 됩니다.

시퀀서 보드의 핀연결은 아래와 같이 되어 있습니다.

EL_단자와 대응되는 Arduino Digital Pin번호
 
Atmega328 핀번호
EL_A D2 PD2
EL_B D3 PD3
EL_C D4 PD4
EL_D D5 PD5
EL_E D6 PD6
EL_F D7 PD7
EL_G D8 PB0
EL_H D9 PB1

[표1. Pin Map]


매우 간단하고 응용하기 쉬운 예제 소스는 아래의 링크자료를 참고하시기 바랍니다.  튜토리얼 내용중에 GND끼리 납땜하는 작업은 안하셔도 됩니다. 패숑~드자이너 여러분께서는 튜토리얼 보시고 EL Wire를 활용한 패션쇼 한번 만들어보시기 바랍니다.  소스에 대해 몰라도 그냥 Copy/Paste 하셔서 Upload버튼만 눌러주시면 휘황찬란하게 8개의 EL Wire가 점등되는것을 보실 수 있습니다.

패션쇼 응용사례 소개 및 프로그래밍 소스예제 링크
 .

패션쇼용 EL Wire프로그래밍 따라잡기

( 출처: Makezine.com )
 .

위 튜토리얼에서 사용된 아두이노 소스 다운로드

EL Sequencer 프로그래밍 하기 동영상 소개

동영상1. 프로그래밍을 위한 FTDI 보드 연결방법

동영상2. 스케치 프로그래밍

동영상3. 인버터와 발광선 연결 후 실제 작동장면



부록. EL Wire 연결 방법

기본 장착된 EL Wire 연결 단자는 2pin JST 규격이므로  JST 2pin 커넥터가 연결된 EL Wire를 사용하면 그대로 연결 할 수 있습니다.  하지만, 모든 연결 단자 옆에 2pin 핀홀이 따로 있으므로 이곳에 원하는 규격의 단자를 연결하여 사용할 수 도 있습니다. 

 

 

[사진. JST 2pin 단자가 연결되어있는 EL Wire와 JST 2pin 케이블]

 

[사진. JST 규격 케이블과 JST Female 단자 ]


발광선(EL Wire)의 최대 장점중의 하나는 비교적 가공이 쉽다는 것입니다. 네온램프의 경우 일반인이 원하는 길이로 절단하고이를 원하는 모양으로 휘어서 가공하는 것이 가능할 지 모르겠습니다만, 발광선은 직접 원하는 크기로 잘라서 사용하실 수 도 있습니다. 이에관한 자료는 아래의 링크 정보를 참고하시기 바랍니다.

관련정보:

EL Wire 도움글:  http://www.ladyada.net/learn/el-wire/
EL와이어 작업방법: http://www.sparkfun.com/tutorials/130
EL wire 기타 예제:  http://www.digitalmisery.com/projects/halloween/el-ladder/

 

 

+ Recent posts