좌충우돌 로봇 만들기!


이제 막 걸음마를 뗐는데…
벌써 수퍼맨이 되어 날아가려고 한다고나 할까…
어디서 본 것은 있어가지고…
목표를 3관절의 4족 보행 로봇으로 잡았다…-.-
(일단 기본 지식을 정리하는 내용은 기존의 ‘문돌이의 공돌이 따라잡기’로 계속
포스팅을 할 예정이고 로봇 제작 과정은 ‘좌충우돌 로봇 만들기’로 따로 정리할
생각이다.)


사실 요즘같이 수없이 많은 정보가 공유되는 세상에서
내 것이 아닐 뿐 못만들 것은 없기도 하다.
그래도 최대한 스스로의 연구를 통해 만들어보고자 하지만
시작부터 난관의 연속이다.


우선 오늘의 준비물이다.

  • 아두이노 나노와 빵판
  • 배터리 케이스 2개
  • HM-10 1개
  • 서보모터 MG996R 4개 (사진은 1개만 찍음)




목표 1. 아이폰-아두이노 블루투스 통신


일단 로봇은 무선 통신을 통해 컨트롤하기로 하였다.
무선 통신 중 그래도 가장 무난한(은 무슨…이걸로 하루 그냥 버렸다…ㅠ.ㅠ)
블루투스 통신을 사용하기로 하였다.


첫 번째 난관은 나는 아이폰 사용자인데 미리 구매해놓은 HC-06모듈이
아이폰과 통신이 되지 않는다는 것이었다. 뒤늦게 부랴부랴 블루투스 4.0이
지원되는 HM-10을 새로 구입하여 테스트를 진행하였다.


유의사항 1
참조한 사이트 및 스케치 테스트 코드에서 분명 디지털 2번 핀에 HM-10의 TX를,
디지털 3번 핀에 HM-10의 RX를 연결하라고 되어있음에도 불구하고 나는 아무생각없이
아두이노 나노의 TX와 RX에 연결을 해버렸다. 블루투스 연결 시에는 우선 연결에
주의하도록 하자. 


두 번째 난관은 HM-10을 연결하고 LightBlue Explorer라는 앱을 이용하여
테스트할 때는 정상적으로 데이터 송수신이 잘 되었는데 Swift로 된 샘플 코드를
이용하여 진행하니 커넥팅까지는 잘 되었는데 데이터 송수신이 안되는 것이었다.
일단 HM-10을 scan하고 connect하는 것까지는 잘 되는 것 같은데 이후 작동이
묵묵부답이었다.


확인 결과 CBPeripheral의 discoverCharacteristics 함수에서 파라미터 중
characteristic의 UUID를 정상적으로 설정해주지 않은 것이 원인이었다.
보통의 경우 이 UUID는 0xFFE1으로 표시된다.


이 부분을 제대로 구현하고 나서 앱과 HM-10과의 데이터 송수신이 정상적으로 
처리되는 것을 확인하였다.


확인할 내용 1
CBCentralManager의 scanForPeripheralsWithServices 함수에 첫 번째 인자로
블루투스 기기의 Service UUID를 넣어주면 해당 기기만 스캔한다고 하는데 HM-10의
Service UUID를 넣으면 찾지를 못한다. 인자를 nil로 하여 모든 기기를 찾도록 해야만
HM-10을 찾는데 이 부분은 확인이 필요하다.


목표 2. 서보모터 구동


세 번째 난관은 아두이노 회로 연결 과정에서 발생했다.
아직은 회로 연결에 대한 지식이 부족하다보니 막연히 이렇게 하면 될 것 같다 해서
연결하는 경우가 많다.


처음 HM-10과 서보모터 1개로 테스트했을 때는 아두이노 나노의 5V핀과 GND핀에
바로 연결을 했다. 물론 잘 동작을 하였다. 이제 서보모터 3개를 더 추가하려니 연결할
공간이 모자랐다. 그래서 나름 머리를 굴린 결과 아두이노의 5V를 빵판의 +에 
아두이노의 GND를 빵판의 -에 연결하고 서보모터의 전원을 빵판의 +와 -에 연결을 했다.
결과는…실패였다. 전원이 전혀 들어오지 않는다.


일단 검색을 좀 하고 서보모터 2개 이상인 경우 아두이노의 전원으로는 부족하다는
글들을 보고는 외부 전원을 연결하는 방법을 확인한 후 아래의 그림대로 연결을 하였다.



결과는 성공이었다. 물론 이 과정에서도 아두이노의 GND와 빵판의 -를 연결하지 않아
작동을 하지 않는 실수가 있었다.


확인할 내용 2
아두이노 5V와 GND를 연결하여 다수 기기를 활용하는 방법을 확인한다.


최종 결과


아직은 특정 조건에서 서보모터를 2개씩 짝지어 동일한 각도로 움직이도록 한 것이 다이다.
앞으로 로봇의 움직임을 구현하려면 보다 복잡한 코딩을 해야 할 것 같다.
오늘 작업 결과 동영상으로 이 작업을 마무리 한다.

동영상에서 아이폰을 컨트롤한 사람은 나의 둘 째 공주님이다...^^;;


딸과 함께 하다보니 쓸데없는 목소리가 녹음되어버렸다…-.-


작업에 사용한 스케치 코드 및 Swift 소스 코드
https://github.com/mazdah/BluetoothController


참조 사이트

Swift 소스 참조
https://github.com/0x7fffffff/Core-Bluetooth-Transfer-Demo.git

외부 전원 연결 참조
http://www.hardcopyworld.com/ngine/aduino/index.php/archives/1174

서보모터 배선 참조
http://wiki.vctec.co.kr/opensource/arduino/servocontrol

HM-10 연결 기초 참조
http://bbangpan.tistory.com/17


블로그 이미지

마즈다

이미 마흔을 넘어섰지만 아직도 꿈을 좇고 있습니다. 그래서 그 꿈에 다가가기 위한 단편들을 하나 둘 씩 모아가고 있지요. 이 곳에 그 단편들이 모일 겁니다...^^

티스토리 툴바