[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






