라즈베리파이 GPIO 활용강좌 : 라즈베리파이로 멀티두이노(Atmega328) 만들기
라즈베리파이로 멀티두이노(Atmega328) 만들기
안녕하세요 산딸기마을 이장 나무꾼 입니다.
최근 라즈베리파이에 취약점인 모터 부분을 다루면서 dc motor 까지는 별도의 MCU가 없이 잘 제어를 하였지만, 서보 모터를 다루기 시작하면서부터 MCU의 필요성을 느끼게 되었다.
아래 [사진1]은 아두이노 우노가 라이트 된 Atmega328 cheap을 이용해 파이에서 SPI + 시리얼 통신을 이용하여 Atmega328을 적용한 사례이다.
자 그럼 이제부터 나무꾼과 함께 파이와 Atmega328이 결합된 Piduino를 제작하고 사용 해 보도록 하자.
0. 라즈베리파이 와 Atmel328 결선도
위 [사진1]에는 제외가 되어 있지만, [그림1] 에서와 같이 22pF x 2 개를 캐패시터를 추가해 안전하게 PiDuino를 제작해 보도록 하자
[그림1] Piduino 결선도
1. 라즈베리파이에서 Arduino IDE 사용하기
이미 GPS 및 알피노 관련 포스트를 통해 경험을 한 사례에서 보았듯이 라즈베리파이에서 시리얼 통신을 하기 위해선 /boot/cmdline.txt 와 /etc/inittab 파일을 수정해 주어야만 Arduino IDE 사용이 가능하다.
1-1. /boot/cmdline.txt 수정
“/boot/cmdline.txt” 파일 내용을 모두 교체 해 주도록 하자.
pi@openmake ~ $ sudo nano /boot/cmdline.txt
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait
위 원본을 아래와 같이 “console=ttyAMA0,115200 kgdboc=ttyAMA0,115200” 내용을 삭제 하도록 하자
dwc_otg.lpm_enable=0 rpitestmode=1 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait
1-2. /etc/inittab 수정하기
“/etc/inittab” 파일 내용 중 아래 ttyAMA0 항목 찾아 통신이 가능하도록 주석처리를 하자.
pi@openmake ~ $ sudo nano /etc/inittab
#To:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
1-3. /etc/udev/rules.d 작성
위 내용 처럼 시리얼 포트를 사용 할 수 있도록 설정을 했다고 하여 라즈베리 파이에서 알피노 처럼 바로 Arduino IDE를 사용할 수 있는 것은 아니다.
마지막으로 절차로 “/etc/udev/rules.d/85-paperduinopi.rules” 파일에 아래 내용을 추가하고 리부팅 후부터 비로소 Arduino IDE 사용이 가능 해 진다.
pi@openmake ~ $ sudo nano /etc/udev/rules.d/85-paperduinopi.rules
KERNEL==“ttyAMA0”, SYMLINK+=“ttyS0”,GROUP=“dialout”,MODE:=0666
1-4. avrdude 다운로드 및 실행권한 부여
pi@openmake ~ $ wget http://project-downloads.drogon.net/gertboard/avrdude_5.10-4_armhf.deb
–2013-11-06 17:47:11– http://project-downloads.drogon.net/gertboard/avrdude_5.10-4_armhf.deb Resolving project-downloads.drogon.net (project-downloads.drogon.net)… 195.10.226.169, 2a00:ce0:2:feed:beef:cafe:0:4 Connecting to project-downloads.drogon.net (project-downloads.drogon.net)|195.10.226.169|:80… connected. HTTP request sent, awaiting response… 200 OK Length: 202814 (198K) [application/x-debian-package] Saving to: `avrdude_5.10-4_armhf.deb’ 100%[======================================>] 202,814 123K/s in 1.6s 2013-11-06 17:47:14 (123 KB/s) – `avrdude_5.10-4_armhf.deb’ saved [202814/202814 |
pi@openmake ~ $ sudo dpkg -i avrdude_5.10-4_armhf.deb
Selecting previously unselected package avrdude. (Reading database … 80739 files and directories currently installed.) Unpacking avrdude (from avrdude_5.10-4_armhf.deb) … Setting up avrdude (1:5.10-4) … Processing triggers for man-db … |
pi@openmake ~ $ sudo chmod 4755 /usr/bin/avrdude
1-5. Arduino IDE 설치
pi@openmake ~ $ sudo apt-get install arduino arduino-mk
Reading package lists… Done Building dependency tree Reading state information… Done The following extra packages will be installed: arduino-core avr-libc avrdude binutils-avr extra-xdg-menus gcc-avr libftdi1 libjna-java librxtx-java Suggested packages: arduino-mk avrdude-doc task-c-devel gcc-doc gcc-4.2 libjna-java-doc The following NEW packages will be installed: arduino arduino-core avr-libc avrdude binutils-avr extra-xdg-menus gcc-avr libftdi1 libjna-java librxtx-java 0 upgraded, 10 newly installed, 0 to remove and 0 not upgraded. Need to get 24.7 MB of archives. After this operation, 81.6 MB of additional disk space will be used. Do you want to continue [Y/n]? y |
1-6. Arduino IDE 환경설정
pi@openmake ~ $ wget http://project-downloads.drogon.net/gertboard/setup.sh
–2013-11-06 15:29:26– http://project-downloads.drogon.net/gertboard/setup.sh Resolving project-downloads.drogon.net (project-downloads.drogon.net)… 195.10.226.169, 2a00:ce0:2:feed:beef:cafe:0:4 Connecting to project-downloads.drogon.net (project-downloads.drogon.net)|195.10.226.169|:80… connected. HTTP request sent, awaiting response… 200 OK Length: 1870 (1.8K) [application/x-sh] Saving to: `setup.sh’ 100%[======================================>] 1,870 –.-K/s in 0s 2013-11-06 15:29:26 (20.0 MB/s) – `setup.sh’ saved [1870/1870] |
pi@openmake ~ $ sudo chmod +x setup.sh
pi@openmake ~ $ sudo ./setup.sh
Setting up Raspberry Pi to make it work with the Gertboard and the ATmega chip on-board with the Arduino IDE. Checking … Avrdude: OK Arduino IDE: OK Fetching files: boards.txt programmers.txt avrsetup Replacing/updating files: inittab: OK cmdline.txt: OK boards.txt: OK programmers.txt: OK All Done. Check and reboot now to apply changes. |
1-7. 라즈베리파이 gpio 와 atmega328 통신 테스트
pi@openmake ~ $ sudo avrdude -p m328p -c gpio
1-8-1. 아두이노 스케치 사용하기
pi@openmake ~ $ sudo arduino