ETC.

RFID 곰인형 만들기 프로젝트 - 웨이브쉴드 킷(Wave Shield Kit) 설치

종보샘 2014. 9. 26. 12:19

Charlie’s RFID Teddy Bear라고 국내판 make에서 RFID 곰인형이 소개되어서 아들 책 읽어주는 장치로 괜찮겠다 싶어서 프로젝트를 시작했다.

http://makezine.com/projects/make-28/charlies-rfid-teddy-bear/

거기서 추천하는 재료는 다음과 같다.

Barrel connector, size M (5.5mm outer × 2.1mm inner) (1) power plug for Arduino

Thread (1) that matches toy color

Velcro (1) that matches toy color

Battery holder, 6xAA (1)

Batteries, AA (6)

Battery clip, for 9V battery (optional) (1) if battery holder has 9V connector rather than wire leads

SD memory card (1)

Wire, 22 gauge, solid (1) multiple colors

Connector header, female, 4-pin, (1) 0.1' spacing, with 4 jumper wires

Arduino microcontroller (1)

Stuffed toy (1) Choose something quite soft that can accommodate the electronics easily and also provide some padding for them.

Wave Shield (1) an audio shield for Arduino

Parallax RFID Reader, serial (1) aka RFID antenna

Speaker, 3' (1)

RFID tags, 125kHz, one for each object you have audio files for (1) Parallax offers several different shapes/sizes.

Charlie Bear Project Bundle (1)

나에게는 아두이노가 있으니 필요한건 웨이브 쉴드와 RFID 리더와 카드 정도겠다.

웨이브 쉴드는 아트로봇에서 35,000원에 팔고 있다.

http://artrobot.co.kr/front/php/product.php?product_no=333&main_cate_no=&display_group=

Adafruit Industries 의 DIY 킷 시리즈, 드디어 한국 출시!

아두이노로 사운드 응용작품을 만드세요!

SD메모리에 wav파일을 저장하여장착하면 아두이노로 음악을 재생시킬 수 있습니다. 회로도, 소스코드, 예제가 모두 공개되어 있으므로 사운드 재생을 위한 부품과 회로의 이해 및 작동방법에 대한 학습용으로 좋은 제품입니다.

(한글 웨이브 쉴드 사용법 안내문을 참고하세요)

  • 아두이노/SD메모리카드/스피커/헤드폰 등은 미포함 되었습니다.
  • 직접 납땜을 하여 조립하는 DIY형 제품이며, PCB와 필요한 전자부품들이 포함되어 있습니다.

Parallax RFID Reader는 디지키에서 55,000원. ㅎㄷㄷ

http://www.digikey.kr/product-search/ko?mpart=32395&vendor=149

그래서 RFID Reader는 아트로봇에서 다른 것으로 샀다.

[TA789] RFID NFC 쉴드 A형 + RFID 태그 1개 포함(Adafruit PN532 NFC/RFID Controller Shield for Arduino + Extras ) 50,000원. 33,000원 짜리도 있다.

http://artrobot.co.kr/front/php/product.php?product_no=802&main_cate_no=&display_group=


여기서는 웨이브 쉴드를 조립해서 테스트하는 부분까지만 다루고자 한다. RFID NFC 쉴드 A형이 male 핀이라 확장이 안되어 female핀으로 납땜해야 해서 그렇다.

웨이브 쉴드와 RFID 쉴드, 2GB SD카드까지 105,000원... ㅠ.ㅠ

열면 이렇게 부품이 완제품이 안되어 있는 상태로 있다. 납땜해야 한다.

납땜방법은 adafruit 홈페이지에서 영문으로 소개되어 있지만 그냥 사진만 보고 따라서 붙이면 된다.

https://learn.adafruit.com/adafruit-wave-shield-audio-shield-for-arduino/solder

콘덴서 다리가 종이테이프에 단단히 붙어 있는데 나처럼 힘으로 빼려하면 다리가 빠지는 불상사가 생긴다. 조심해서 살살 뜯어내야겠다.

다리가 떨어져 나간 콘덴서(Electrolytic capacitors)는 6.3V 100uF 제품이다.  급한 마음에 대체품으로 예전에 분해하고 놔두었던 CD플레이어 기판에서 16V 100uF 제품을 찾아서 납땜했다.

그다음은 아트로봇에서 안내하는 것과 같다. 아트로봇에서 안내하는 것에 약간 덧붙이면 이렇다.

http://robobob.cafe24.com/front/php/b/board_read_new.php?board_no=7&no=170&number=19&offset=0&page=1&search_key=&search=

2. SD메모리 준비하기

FAT 기본 모드로 새로 포맷 하실 것을 추천드립니다. 

3-1. 음원 Wav 파일을 준비하기 (변환하기)

Wave Shield와 호환되는 음원을 준비하시거나 음원에 맞게 음원을 변환하셔야 합니다.

지원가능한 포맷은 아래와 같습니다.

22KHz, 16-bit, mono PCM (지원가능한 최고 샘플속도 및 해상도)

더 고품질 음원 재생은 지원되지 않지만  더 낮은 품질의 음원인 16KHz, 16-bit, mono PCM은 재생 가능합니다.

최근에는 44KHz 이상의 Stereo 음원이 대부분이므로 Wave Shield로 재생하기 위해선 변환을 해줘야 합니다.

무료 프로그램을 원하시는 분은 Audacity를 추천드립니다.

http://audacity.sourceforge.net/ 여기서 다운 받으면 된다.

Audacity에서 주의할 점은 Hz를 맞추어 16비트로 저장하고 파일명은 파일명은 8글자 영문제목 + 3글자 확장자로만 인식된다는 것이다.


22kHz로 맞추고 파일>내보내기 한다.

wav 16비트로 저장한다.

이걸 SD카드에 복사하고 아두이노 프로그램 라이브러리에다가  WaveHC폴더를 복사하고 http://www.ladyada.net/media/wavshield/daphc.pde 이 코드를 아두이노에 전송한 다음 웨이브쉴드 장착, SD카드 장착, 스피커 연결해서 전원을 재연결하면 위의 동영상과 같이 음원이 재생된다. 이렇게 해서 웨이브쉴드 장착은 끝.

4. Wave파일 복사하기 와 파일명 검토

준비된 wav 파일을 SD메모리에 복사합니다.  파일명은 8글자 제목 + 3글자 확장자로만 인식됩니다. 이보다 긴 파일명은 8자리 영문명으로 직접 변경하시기 바랍니다. 미변경시 파일명이 임의 특수문자(~등)로 변경되어 인식되므로 프로그램 코드에서 파일명을 지정하여 재생하는데 문제가 될 수 있습니다.


5. 라이브러리 설치하기

제조사 튜토리얼에서는 구버전 라이브러리의 사용예와 새로운 라이브러리 사용예가 함께 소개되어 있습니다.

본 글은 기능이 더 강력해진 신버전을 기준으로 소개해 드리겠습니다. 

Mr Fat16 이란 분이 (이름도 신기하시네요 ^^.) 기존 라이브러리를 기능보강시킨 WaveHC 라는 라이브러리를 아래에서 다운로드 받으시기 바랍니다.

WaveHC 다운로드 페이지: http://code.google.com/p/wavehc/downloads/list


2011.6.13 현재 최신버전은  wavehc20110508.zip  입니다.


압축을 풀어보시면, examples, FielsForExamples, html, WaveHC 라는 폴더가 보이실 겁니다.

이중에서 WaveHC라는 폴더를 통째로 복사하셔서  아두이노 libraries 폴더에 복사하시면 됩니다.

가령, 제 경우 아래의 같은 폴더가 새로 추가되었습니다.

D:\ARDUINO_WORKS\arduino-0022\libraries\WaveHC

WaveHC 폴더안을 확인해보시기 바랍니다. 약 15개의 파일이 있고, 그 중에 WaveHC.h 와 WaveHC.cpp 파일이 보이시면 됩니다.

항상 라이브러리를 새로 추가한 후엔, 스케치를 모두 종료 후 다시 여시기 바랍니다.


이것으로 Wave Shield 사용을 위한 라이브러리 준비가 끝입니다.



6. 예제 소스 컴파일 하기


아래의 링크에 다양한 응용 소스가 있습니다. 

http://www.ladyada.net/make/waveshield/examples.html


사실 SD메모리에서 읽어서 Wave Shield로 재생하는 기능을 하는 소스 부분은 거의 모두 동일하고 이를 제어하는 방식만 다른 예제들입니다.  우선, 가장 기본적인 단순 Play 예제부터 실행해 보겠습니다.


http://www.ladyada.net/media/wavshield/daphc.pde


제목이 어려워 보여서 실행하기가 겁이 납니다;;

하지만,  Digital Audio Player for waveHC 의 약자 정도 되는 이름일 뿐이므로 걱정 하실 것 없습니다.

(본 파일은 WaveHC 라이브러리내 examples 폴더에도 들어 있습니다.)


다운로드 후, 적당한 위체에 저장하고 스케치에서 읽어 들입니다. 새폴더를 만들어야 한다는 알림창이 뜨면 OK를 눌러줍니다.


컴파일 버튼이나 ctrl-R 을 눌러서 컴파일을 시도해 봅니다.


Done compiling.

Binary sketch size: 9348 bytes (of a 32256 byte maximum)


위와 같은 메시지가 나오면 성공입니다.  코드내 오류가 뜨면 라이브러리 설치부분을 다시 확인하시기 바랍니다.

포트번호와 아두이노 종류 설정도 맞게 되었는지 확인해 보시기 바랍니다.



7. 재생 실행하기


아두이노의 USB케이블을 제거하신 후, 

웨이브 쉴드에 wav파일이 기록된 SD메모리 카드를 꽂아주고, 아두이노에 장착합니다.

USB케이블을 다시 연결합니다.


리셋버튼을 눌러주면, 잠시후 사운드 재생이 시작됩니다. 

볼륨을 시계방향으로 회전시켜서 볼륨을 조절 하시기 바랍니다.


8. 재생상태 모니터링 하기


PC에 USB케이블로 연결된 상태라면 스케치의 시리얼 모니터 창을 통행 재생상태를 모니터링 할 수 있습니다.

속도를 9600 baud 로 맞춥니다. 이후 오토 리셋이 되고, 아래와 같은 메시지 들이 출력됩니다.



Wave test!

Free RAM: 672

Using partition 1, type is FAT16

Files found:

FROGS1.WAV

FROGS2.WAV

CHIMES.WAV

DOORBELL.WAV

0.WAV

1.WAV

2.WAV

3.WAV

4.WAV

5.WAV

6.WAV

7.WAV

8.WAV

9.WAV

P.WAV

DO.WAV

MI.WAV

RE.WAV

SOL.WAV

LA.WAV

FA.WAV


Playing FROGS1.WAV

.....................



9. 문제처리


컴파일 및 업로드까지 성공적인 경우, 재생이 되지않으면 시리얼모니터를 통해 출력되는 메시지를 참고하시면 도움이 됩니다.

가령 SD메모리 포멧이 문제인 경우,  해당 부분에서 오류메시지가 출력되고 멈추게됩니다.


가령, FAT12 로 포맷된 경우, 파일시스템이 FAT12 라는 메시지를 출력 후 멈쳐있게됩니다.

FAT16으로 포맷하여 실행하면 정상작동 됩니다.


특정 파일명을 재생하는 경우, 해당 파일이 없어서 재생이 안되는 경우도 시리얼 모니터를통해 확인할 수 있습니다.


10. 기타 예제 들


이외에도 example 페이지에는 재밌는 응용 예제가 많습니다.


Text to Speech Demo 

 저도 안해봤습니다만 , 글을 목소리로 변역해준다는 예제입니다. 흥미로운 주제네요. 여러분이 먼저 해보시죠~!


파이(PI, 3.14159....) 값을 읽어주기

 음원만 한국어로 바꿔주시면 숫자값 읽어주는 기계는 쉽게 구현 가능합니다.

 0~9, P(point) 음을 위한 wave파일들을 미리 저장해두면됩니다. (음원 wav파일도 함께 제공됨)


버튼연동 재생 예제들

 버튼입력에 따라 특정 소리를 내는 예제들입니다.