CEO @ docob media | 가리나 프로젝트 | 노라조 | 딜라이트 | 괴짜 프로듀서 dk의 잡동사니 모음
Adafruit Wave Shield for Arduino Kit 조립 (실패) 에서 이어집니다.
다시 만들었습니다. 오기가 생겨서 다시.
이번엔 Seeed Studio의 music shield (v2)도 함께 주문해보았습니다.
Seeed Studio 상품들은 매우 깔끔.
이쪽은 완제품으로 옵니다.
Seeed Studio Music Shield v2
촘촘한 SMD들, 깔끔한 아크릴 덮개까지…
직접 만드는 것과는 확실히 다르네요. 가격도 $27.5면 괜찮고.
music shield의 주요 스펙은,
Adafruit Wave Shield
이쪽은 제가 만든 것.
저도 그 사이 납땜 실력이 꽤 늘었습니다? 새로 산 인두기도 도움이 되었고.
(Hakko FX-951을 쓰고 있습니다)
wave shield의 주요 스펙은,
스펙을 보면 Seeed Studio 제품이 훨씬 낫네요. 역시 중국의 승리.
(가격은 $5 정도 차이가 있습니다만, 조립비 생각하면 뭐)
아.
이번에는 마지막 조립에서 새로 주워들은 팁을 시도해 보았습니다.
강선을 쓰는 랜선을 까서 쓰면 점퍼 와이어를 대신할 수 있다고…
마지막 와이어링에 랜선을
결과물은 그럭저럭 만족
랜선 굵기가 스트리퍼와 안맞고 한가닥 선이라 꺾일 때 끊어질까봐 두렵긴 했는데…
뭐 나쁘지 않네요. 와이어 없을 때는 이런 방법으로.
아무튼 하드웨어는 완성되었으니,
실제로 코딩을 해봐야죠.
다음편에 계속.
본격 Robot 제작 삽질기 (4) – 블루투스 연결에서 이어집니다.
블루투스 연결만 하면 뭐합니까 제어를 해야지.
원래 스마트폰으로 제어를 하려고 블루투스 연결을 한겁니다만.
…귀찮으니깐 그냥 남이 만들어놓은 앱으로 버텨볼랍니다.
안드로이드에 Bluetooth Serial Controller 앱을 받으세요.
https://play.google.com/store/apps/details?id=mBluetoothSerialController.nomal#?t=W251bGwsMSwxLDIxMiwibUJsdWV0b290aFNlcmlhbENvbnRyb2xsZXIubm9tYWwiXQ..
비슷한 이름이 많으니까 혼동하지 마세요.
구글 플레이에는 쓰레기 앱이 천지라서…
연결합니다.
오른쪽 위의 CONNECT 누르시면 다음과 같이 뜹니다.
여기서 블루투스 모듈과 연결하시고,
버튼 세팅을 해보겠습니다.
Preference 들어가시면 Name, Command, Visibility가 있는데
Command 부분이 뭘 송신할지 적어놓는 부분입니다.
버튼의 배치는 이렇게 정해져있어서 못바꾸고요.
다만 Visibility에서 일부 안보이게 할 수는 있습니다.
안보이게 하고 싶은걸 체크를 빼버리면 되죠.
저는 이렇게 구성을 해봤습니다.
로봇의 이동은 w,a,s,d,x
로봇의 머리는 r,t,y,f,g,h,v,b,n 할당.
키보드에 보이는대로 쉽게 ㅎㅎ
그리고 코딩~
작동 동영상
머리와 같은 식으로 몸통 움직이는 것도 해보세요.
저는 몸통 모터가 4개라 배터리도 골치네요.
ATtiny85를 Arduino로 쓰기에서 이어집니다.
ATmega32 요청이 있어서 한번 알아보았습니다.
ATmega32-16PU
이건 제가 실험을 해보지는 않았으므로,
해외 자료들을 찾아보고 말씀드리는겁니다.
(된다는 댓글이 많이 달려있어요)
먼저 부트로더를 다운 받으시고.
ArduinoBootloader.zip
폴더에 보면 부트로더 내용이 들어있습니다.
Arduino가 설치된 폴더 아래에 (맥에서는 패키지보기 들어가셔야)
hardware/arduino/bootloaders 폴더에 가셔서
atmega32 폴더를 만드시고
makefile
ATmegaBOOT_32.hex
ATmegaBOOT_32.c
얘네를 냅다 넣으세요.
그리고 터미널에서 make 하시면 컴파일이 좌르륵~
(그 전에 AVR Toolchain은 깔려있어야죠?)
arduino/boards.txt에 다음을 추가합니다.
이렇게 되면 IDE에 이제 minimegaboard 이름이 뜹니다.
귀찮으시면 그냥 이거 받아서 쓰세요. 제가 쓰는거.
boards.txt
이제 핀 매핑을 바꿔야하는데,
arduino-mega32-mod.zip
이걸 받으시고요. hardware/arduino/cores/arduino 폴더에 덮어쓰기.
이제 아두이노로 쓰시면 됩니다.
핀 넘버는
PD0 – PD7 –> 0-7
PB0 – PB7 –> 8-15
PC0 – PC7 –> 16-22
PA0 – PA7 –> 0-7 (ADC)
4, 5, 7, 11 핀은 PWM 이라고 하네요.
그럼… 도움이 되셨길 바랍니다.
아두이노로 뭔가를 만들다보니 실험은 재미있긴한데 사이즈가 아쉽더라고요.
장난감 인형에 센서를 넣어본다던가, 건담 눈에 LED가 번쩍번쩍한다던가…
꼭 공장에 양산으로 보내지 않더라도 좀 작게 만들 수는 없을까?
Arduino Nano도 있지만 가격이 막 장난치기엔 부담스럽고.
(중국산 카피 제품은 비교적 저렴하다고는 해도 15,000원 수준)
Arduino Nano
그런데!
ATtiny 시리즈에 대한 정보 입수!
Atmel ATtiny85
Atmel 제품 중에 초소형 프로세서가 있더라고요.
키보드 위에 보이는 코딱지만한 저것이 바로 ATtiny85.
Arduino의 원조 격인 AVR이라 호환성이 높다고 하길래
바로 eBay에서 5개에 $10 정도에 구입했습니다. 싸다!
http://www.ebay.com/itm/5PCS-Original-NEW-ATTINY85-20PU-DIP-8-ATMEL-/171002060346?pt=LH_DefaultDomain_0&hash=item27d0845e3a
정말 심플 8핀짜리입니다.
Arduino IDE를 쓰기 위해서는 부트로더를 올려야하는데요.
AVR Programmer가 있으면 편리하지만, AVR 관련 물품이 하나도 없어서
Arduino를 프로그래머로 쓰는 방법을 선택.
이런거 하나 있으면 정말 편한데…
먼저, 다른 것을 연결하기 전에 Arduino를 준비해야 합니다.
Uno나 Duemilanove로 칩셋이 ATmega328인 요즘 것으로 쓰라고 하네요.
예전에는 ATmega168이었죠.
일단 이 라이브러리를 받으시고…
https://github.com/damellis/attiny/archive/master.zip
아두이노 스케치 폴더 아래에 hardware라는 폴더를 만들고
그 안에 attiny 폴더를 카피해서 넣습니다. (attiny-master 아닙니다)
그리고 Arduino IDE를 재시작하면,
ATtiny 등장!!
ATtiny 시리즈가 지원 목록에 뜨지요. 하지만 아직 건드리지는 맙시다.
우선 예제에 보시면, “ArduinoISP” 라는 스케치가 있을겁니다.
불러오셔서 실행~ 그러면 아두이노가 ISP로 변신~
그리고 나서 아래의 그림처럼 연결합니다.
이렇게 연결합니다.
잘 연결했다면,
도구 –> 보드 –> ATtiny (자신이 가진 것으로 선택)
기본 (1MHz) 로 선택하시면 됩니다.
그리고,
도구 –> 프로그래머 –> Arduino as ISP 선택.
아무 예제나 업로드 해봅시다.
저는 가장 쉬운 예제인 Blink LED 해봤습니다.
아, 제가 쓴 ATtiny85는 13번 핀이 없으므로 출력핀만 0번으로 바꿔줬죠.
성공! 이제 여러 프로젝트에 ATtiny85를 투입해야겠습니다.
본격 Robot 제작 삽질기 (3) 에서 이어집니다.
IR 리모콘의 성능은 만족스럽지 않았습니다. 각도나 거리에 심각한 제한이 있어서,
TV 리모콘으로나… 아, 하긴 TV 리모콘으로 쓸 때도 답답함을 많이 느꼈던 기억이 있네요.
스마트폰과 Bluetooth 라면 좀 괜찮을까??
바로 해보기로 했습니다.
마침 DFRobot에서 나온 모듈도 갖고 있고.
(로봇 킷에 포함되어 있더라고요. 따로 사면 비쌈! 보통은 만원 이하)
TEL0026 Bluetooth Module
핀은 4개를 사용합니다. GND, VCC, TX, RX
ROMEO 모듈 소켓에 연결을 했고요.
일반 보드 쓰시면 0(RX),1(TX) 디지털핀에 연결하시면 되겠습니다.
주의1)
블루투스 모듈의 TX -> 보드의 RX
블루투스 모듈의 RX -> 보드의 TX 로 연결하셔야 합니다.
여기서부터 저는 하루를 꼬박 삽질했는데,
일단 기본적인 개념은 블루투스 모듈과 핸드폰 간의 페어링이 되면
시리얼 통신 포트가 연결된 것으로 인식됩니다.
페어링은 보드와의 통신은 상관없고, 모듈에 전원만 들어오면! 되는거라
페어링 되었다고 해서 “보드와 커넥트되었다!” 는 아닙니다.
주의2)
보드에 USB가 연결되어 있는 상황에서는 Serial이 점유되었기 때문에
블루투스 모듈의 신호가 보드로 전달되지 않을 수 있습니다.
또한 아두이노 Serial 레퍼런스를 보시면,
http://arduino.cc/en/Reference/serial
시리얼 포트 통신법이 보드마다 다릅니다.
The Arduino Leonardo board uses Serial1 to communicate via TTL (5V) serial on pins 0 (RX) and 1 (TX). Serial is reserved for USB CDC communication.
주의3)
제가 사용한 보드는 Leonardo 호환 보드이기 때문에, Serial이 아니라 Serial1을 사용합니다.
위의 레퍼런스 페이지에서 꼭 쓰시는 보드의 시리얼 통신 스펙을 확인하시고 작업하세요!
저는 그것도 모르고 왜 시리얼 통신이 안되냐며 소켓을 테스터로 다 찍어보고… 흑흑
그럼 이제 코드 보시겠습니다.
아, 로봇에 붙인 서보나 DC모터에 대한 설명은 패스하겠습니다.
그냥 DC모터 좌우 2개씩, 서보모터로는 관절 2개 만들었습니다.
FIT0045 Pan & Tilt Kit