[Flask, React Native] 원격 제어 가능한 라즈베리파이 자동차 제작하기
스마트폰으로 원격 제어가 가능한 라즈베리파이 기반의 자동차를 만드는 방법입니다.
서버는 간단한 구성이라 Python Flask
를 사용했고, React Native
와 Expo
를 사용하여 아이폰, 안드로이드 겸용 모바일 애플리케이션을 제작했습니다.
1. 준비물
라즈베리파이
카메라 모듈
DC 모터 및 바퀴
모터 드라이버
배터리
자동차 프레임
기타
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를 제어하는 코드도 같이 구현되어 있습니다.
5. 포트포워딩 및 스케줄러 등록
외부에서 접속할 경우, 포트포워딩을 이용하여 접속할 수 있습니다.
또한 스케줄러를 등록하여 라즈베리파이 부팅시 자동으로 서버를 실행할 수 있습니다.
6. 결과물
전면 | 측면 |
---|---|
![]() | ![]() |
7. 시연 영상
참고자료
- https://www.youtube.com/watch?v=Tsy8SwY_jic&list=WL&index=3&t=226s
- https://www.youtube.com/watch?v=8p5B5sDw3k0
- https://www.youtube.com/watch?v=Z1RJmh_OqeA
- https://www.instructables.com/id/Video-Streaming-Web-Server/
- https://code.headmelted.com/
- https://medium.com/@staceyzander/setinterval-and-clearinterval-in-react-b1d0ee1e1a6a
- https://www.youtube.com/watch?v=FZDOxrQNMjs
- https://stackoverflow.com/questions/35537229/how-to-update-parents-state-in-react
- https://reactnative.dev/docs/textinput
- https://reactnative.dev/docs/network
- https://towardsdatascience.com/passing-data-between-react-components-parent-children-siblings-a64f89e24ecf
- https://programmers.co.kr/learn/courses/2/lessons/330
- https://stackoverflow.com/questions/38963018/typeerror-super-takes-at-least-1-argument-0-given-error-is-specific-to-any
- https://stackoverflow.com/questions/40359800/how-to-toggle-boolean-state-of-react-component
- https://www.youtube.com/watch?v=DkqzLHopaeE