# HN 공개: ESP32 RC 자동차

> Clean Markdown view of GeekNews topic #19030. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=19030](https://news.hada.io/topic?id=19030)
- GeekNews Markdown: [https://news.hada.io/topic/19030.md](https://news.hada.io/topic/19030.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-02-03T09:55:47+09:00
- Updated: 2025-02-03T09:55:47+09:00
- Original source: [github.com/mattsroufe](https://github.com/mattsroufe/esp32_rc_cars)
- Points: 3
- Comments: 1

## Topic Body

#### ESP32 RC Cars

##### 데모 비디오
- 이 프로젝트는 ESP32 기반 원격 제어 카메라 시스템을 시연함
- WebSockets를 통해 실시간 비디오 스트림을 전송하고 모터와 서보를 제어할 수 있음
- Python 서버 애플리케이션이 WebSocket 통신을 관리하고 ESP32 장치를 제어할 수 있는 웹 인터페이스를 제공함

##### 기능
- ESP32-CAM에서 웹 서버로 실시간 비디오 스트리밍
- WebSocket 명령을 통한 모터와 서보의 원격 제어
- 모터와 서보를 기본 상태로 재설정하는 자동 타임아웃 기능
- 서버에서 동적 다중 클라이언트 비디오 피드 캔버스 제공

##### 하드웨어 요구 사항
- ESP32-CAM (AI Thinker 모듈 또는 호환 보드)
- 적절한 GPIO 핀에 연결된 모터와 서보
- ESP32-CAM을 위한 안정적인 5V 전원 공급
- 선택 사항: 추가 기능을 위한 SD 카드
- 통신을 위한 Wi-Fi 네트워크

##### 재료
- 모든 키트는 aliexpress에서 구매 가능
- 자동차 섀시, 전자 속도 제어기, 배터리 홀더, 18650 셀 또는 7.4v 배터리 팩, ESP32-CAM, 블루투스 게임패드(PS4 컨트롤러 사용)

##### 소프트웨어 요구 사항

###### ESP32 코드

###### 라이브러리
- `WiFi.h`: Wi-Fi 연결
- `ArduinoWebsockets.h`: WebSocket 통신
- `esp_camera.h`: ESP32-CAM 카메라 제어
- `ServoControl.h` 및 `Esc.h`: 서보와 모터 제어
- `Arduino.h`: 표준 Arduino 함수

###### Python 서버

###### 종속성
- 다음 Python 라이브러리 설치: `aiohttp`, `opencv-python`, `numpy`

##### 설정

###### ESP32 펌웨어
1. `secrets.h` 파일을 수정하여 Wi-Fi 자격 증명 및 WebSocket 서버 URL 포함
2. 카메라 모듈, 모터, 서보의 GPIO 핀이 하드웨어 설정과 일치하는지 확인

###### Python 서버
1. 웹 인터페이스를 위한 `index.html` 파일과 함께 서버 스크립트를 디렉토리에 배치
2. 서버 시작: `python3 server.py`

##### 사용법

###### ESP32
1. Arduino IDE 또는 호환 플랫폼을 사용하여 제공된 스케치를 ESP32-CAM에 업로드
2. Wi-Fi 및 WebSocket 서버에 성공적으로 연결되었는지 직렬 출력을 모니터링

###### 서버
1. Python 서버 스크립트 실행
2. 브라우저에서 웹 인터페이스를 열어 실시간 비디오 스트림 보기
3. WebSocket 연결을 통해 제어 명령 전송

##### WebSocket 명령
- `MOTOR:&lt;speed&gt;`: 모터 속도 설정 (-255에서 255)
- `SERVO:&lt;angle&gt;`: 서보 각도 설정 (0에서 180)
- `CONTROL:&lt;speed&gt;:&lt;angle&gt;`: 모터 속도와 서보 각도를 동시에 제어

##### 기술적 세부사항

###### ESP32 초기화
- **Wi-Fi**: 지정된 Wi-Fi 네트워크에 연결
- **카메라**: 비디오 스트리밍을 위한 적절한 설정으로 ESP32-CAM 구성
- **WebSocket**: 서버와 WebSocket 연결 설정

###### 타임아웃 처리
- 미리 정의된 타임아웃 기간 내에 제어 명령이 수신되지 않으면 모터 속도는 `0`으로, 서보 각도는 `90`으로 재설정

###### Python 서버
- 여러 ESP32 클라이언트와의 WebSocket 통신 처리
- 수신된 비디오 프레임을 처리하고 동적으로 그리드에 배열
- 비디오 프레임 그리드를 웹 인터페이스로 스트리밍

##### 문제 해결

###### 연결 문제
- `secrets.h`에서 Wi-Fi 자격 증명 확인
- WebSocket 서버가 실행 중이고 접근 가능한지 확인

###### 비디오 스트림 문제
- ESP32-CAM에 적절한 전원 공급 확인
- 카메라 초기화 설정 확인

##### 라이선스
- 이 프로젝트는 MIT 라이선스 하에 오픈 소스로 제공됨

##### 기여
- 애플리케이션 개선을 위한 이슈 제출이나 풀 리퀘스트 환영

## Comments



### Comment 34055

- Author: neo
- Created: 2025-02-03T09:55:47+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=42901007) 
- 12년 전, Arduino는 있었지만 ESP32는 없던 시절에 HTC Magic 폰을 사용해 카메라와 WiFi 송신기로 활용하고, Arduino와 연결하여 서보와 RGB LED를 제어하는 프로젝트를 진행했음. 연결이 안정적이지 않았지만 재미있었음
  - 프로젝트를 공유해줘서 고맙고, 차세대 마이크로컨트롤러로 프로젝트를 부활시키고 싶음
  - 프로젝트에 대한 피드백에 감사하며, 계속 진행하고 싶고 PR을 보고 싶음
  - 프로젝트를 좋아한다면, 원격 개발자를 찾는 사람에게 소개해주면 좋겠음. Ruby-on-Rails 개발자이지만 로봇 공학 작업도 고려 중임

- RC 자동차 자동화에 관심이 있다면 재미있는 읽을거리임. 몇 년 전 자료이지만 오늘날에는 더 쉬운 방법이 있을 수 있음

- ESP32 CAM을 구매하기 전에 외부 안테나가 있는 것을 고려하는 것이 좋음. Reddit에서 프레임 속도 문제에 대한 조언을 참고했음

- 최근 Rust와 Steam Deck을 사용하여 비슷한 프로젝트를 진행했음

- FPV의 큰 문제는 지연 시간이며, 이 프로젝트의 지연 시간이 궁금함

- ESP32로 구동되는 RC 탱크를 PlayStation 4 컨트롤러로 Bluetooth를 통해 제어했음
  - 기본 소프트웨어는 약 20줄의 C 코드로 시작하며, Bluetooth 컨트롤러 라이브러리를 사용함
  - 두 개의 스틱으로 두 트랙을 저속으로 제어할 수 있지만, 고속에서는 다른 제어 방법이 필요함
  - 듀얼 쇼크 컨트롤러의 "트리거"를 사용하여 rpm 제한 직접 트랙 제어를 구현했음
  - 고속 운전 시 왼쪽 스틱은 스로틀, 오른쪽 스틱은 조향으로 사용하여 일반 RC 자동차처럼 운전할 수 있음
  - 사용한 3D 프린트 모델의 동영상을 공유함

- AliExpress에서 좋은 2.5인치 RC 자동차는 30달러, 독립형 5.8 GHz 아날로그 카메라는 25달러임
  - 단순히 재미있는 프로젝트가 아닌 결과에 더 관심이 있는 사람들을 위한 정보임

- 비슷한 프로젝트를 고려 중이며, 지연 시간에 대한 경험이 궁금함. 비디오 피드를 보고 원격으로 제어할 수 있는지 알고 싶음. 장애물 회피에 지연 시간이 문제일 것 같음

- 자동으로 장애물을 피하는 고양이 장난감을 만들고 싶었음. 이 프로젝트가 기존에 선택한 것보다 더 나은 기반이 될 수 있을 것 같음
