[Flask, React Native] 원격 제어 가능한 라즈베리파이 자동차 제작하기
스마트폰으로 원격 제어가 가능한 라즈베리파이 기반의 자동차를 만드는 방법입니다.
서버는 간단한 구성이라 Python Flask
를 사용했고, React Native
와 Expo
를 사용하여 아이폰, 안드로이드 겸용 모바일 애플리케이션을 제작했습니다.
1. 준비물
라즈베리파이
라즈베리파이1 ~ 4 모두 가능합니다.
카메라 모듈
카메라 모듈이 아닌 USB 카메라도 연결 가능합니다.
DC 모터 및 바퀴
DC모터는 접촉 불량 빈도가 높아, 납땜 처리를 권장합니다.
모터 드라이버
안정적인 구동을 위해 모터 드라이버가 필요합니다. L298N을 사용합니다.
배터리
리튬이온, 리튬폴리머, 알칼라인 건전지 모두 사용 가능합니다.
(하지만 배터리 관련 지식이 부족하여) 완제품인 보조배터리를 라즈베리파이에 연결하여 메인 전원으로 사용하고, 알칼라인 배터리를 보조 전원으로 사용했습니다.
(또는 단순한 전력공급용으로 라즈베리파이나 아두이노를 추가로 연결해도 됩니다)
(하지만 배터리 관련 지식이 부족하여) 완제품인 보조배터리를 라즈베리파이에 연결하여 메인 전원으로 사용하고, 알칼라인 배터리를 보조 전원으로 사용했습니다.
(또는 단순한 전력공급용으로 라즈베리파이나 아두이노를 추가로 연결해도 됩니다)
자동차 프레임
openscad
를 사용하여 자동차 프레임을 설계했습니다. 3D 프린터의 출력 한계 때문에, 모터를 수직 방향으로 장착했습니다.기타
서보모터, RGB LED, 저항, 점퍼선, 브레드보드(빵판), SD 카드, 충전 케이블 등
2. 회로도 구성
출력 저하가 없도록 병렬로 모터를 연결하여 납땜 처리 후, 모터 드라이브를 통해 라즈베리파이의 GPIO핀에 연결했습니다. 또한 충분한 전력을 공급받을 수 있도록 9V를 추가로 연결했습니다.
3. 코드 편집기
라즈베리파이에 라즈비안을 설치한 후, 원격 데스크톱으로 연결하여 개발을 진행했습니다.
리눅스용 vscode를 설치하여 진행할 경우, 훨씬 편리하게 개발할 수 있습니다.
sudo su
. <( wget -O - https://code.headmelted.com/installers/apt.sh )
설치가 완료되었으면, code-oss
를 입력하여 vscode를 실행시키고, 작업을 진행하면 됩니다.
code-oss
4. 코드
DC모터
와 카메라
뿐만 아니라 서보모터와 RGB LED를 제어하는 코드도 같이 구현되어 있습니다.