라즈베리파이와 아두이노 사이의 통신에는 SPI, I2C , UART 등을 사용할수 있습니다.
그중에 제일 만만한? UART(Serial) 을 테스트 해보았습니다.
같은 전압의 IO핀을 사용하면 바로 결선해서 사용하면 간단해 지겠지만 아두이노의 입출력 핀 전압 5V 와 라즈베리파이의 GPIO 의 입출력 핀전압 3.3V 의 차이 때문에 직접적인 결선은 문제가 있어서 회로구성이 불가피 해집니다.
가격면이나 회로구성이 조금이나마 단순해 지는 Logic IC를 사용 하겠습니다.
제가 사용한 Logic IC 는 국내쇼핑몰 등에서 구입하기 쉬운 74HC4050 입니다. 74HC4049 를 사용해도 무관 합니다.
라즈베리 파이의 UART 설정 수정
라즈베리 파이는 기본적으로 115200 의 uart로 콘솔에 접속 하도록 되어 있습니다. 따라서 아두이노와 minicom등 을 사용하여 시리얼에 바로 연결하게 되면 정상적으로 작동하지 않습니다.
/boot/cmdline.txt 파일과 /etc/inittab 을 수정하여 콘솔역할을 제거하여 시리얼 연결로만 작동하도록 수정해줄 필요가 있습니다.
우선 cmdline.txt 를 수정합니다.
다음 내용을 찾아서 붉은 글씨 부분을 제거 합니다.
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
다음으로 inittab 을 수정합니다.
T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100 를 찾아서 주석처리를 해주면 됩니다.
수정 후 리부팅을 해주면 콘솔역할을 막아주는 작업은끝이 납니다.
라는데... 최근 라즈비안은 눈을 씻고 찾아봐도 inittab 같은걸 찾을 수가 없을거다ㅋㅋㅋㅋㅋㅋ 해결책은
sudo systemctl stop serial-getty@ttyAMA0.service
sudo systemctl disable serial-getty@ttyAMA0.service
이 두개 쳐주자. 위에껀 중지하는거고 밑에껀 재부팅해도 꺼지도록 설정을 바꿔주는거다.
아두이노의 D2, D3 핀은 각각 AVR의 RX, TX 핀에 대응한다.
라즈베리파이 minicom 설치 / 작동 테스트
시리얼 통신에 많이 사용하는 프로그램인 minicom 으로 작동을 테스트 해봅니다.
위와 같이 설치하고
으로 실행합니다.
실행중에 종료는 ctrl-a 누르고 x 누르면 됩니다.