[아두이노] ESP32 CAM - 도깨비 자동차
- Download
- ESP32DokkaebiCar.zip(8.9 KB) 2022-05-085
- Link
- https://makernambo.com/10953
- https://randomnerdtutorials.com/esp32-cam-car-robot-web-server/65
최근 전자 부품 (아두이노) 가격이 3배 이상 인상되어 기존에 제작 되어 있는 도깨비 자동차를 저렴한 ESP32 -CAM으로 변경 하는 프로젝트를 시작 하게 되었습니다.
아직 완성은 하지 못하였으나 ESP32-CAM에 대해서 구글링을 통하여 알게된 사실에 대해서 정보 공유 및 간단한 정보 전달 수준의 글을 등록해 봅니다.
작년에 온기랩에서 제작한 도깨비 자동차 아두이노 나노 + 블루투스 + 모터 드리버 + 초음파 + 부저로 구성하였으며 핸드폰 블루투스 조정으로 몇 차례 워크샵을 진행 하였다.
1. ESP32 CAM의 카메라 모듈 예제 포팅
ESP32 CAM은 저렴한 가격으로 카메라가 있는 보드 이다. 자세한 설정은 첫번째 링크를 참조 하시면 큰 어려움이 없이 초기 설정이 가능하다.
기본 예제 소스 ESP32 / Camera / CameraWebServer에서 기본 ssid와 password 변경 후 포팅시 아래와 같은 메세지가 출력되어 문제 해결을 위하여 구글링을 해보았다.
[E][camera.c:1049] camera_probe(): Detected camera not supported. [E][camera.c:1249] esp_camera_init(): Camera probe failed with error 0x20004 |
예제가 여러가지 모델을 지원하고 있어 자신에 맞는 define을 선택 후 다시 포팅 해야 된다.
초기 값은 CAMERA_MODEL_WROVER_KIT되어 있어 CAMERA_MODEL_AI_THINKER로 변경
// Select camera model //#define CAMERA_MODEL_WROVER_KIT //#define CAMERA_MODEL_ESP_EYE //#define CAMERA_MODEL_M5STACK_PSRAM //#define CAMERA_MODEL_M5STACK_WIDE #define CAMERA_MODEL_AI_THINKER |
모듈을 잘 살펴보면 ESP32-S AI-Thinker 글자가 확인 되어 예저 프로그램의 Define문을 수정 후 ESP32 CAM의 카메라 정상 동작 하는 것을 확인 하였다.
2. Web Page를 통한 자동차 제어
ESP32-CAM의 기본 예제는 간단한 Web Server를 구동 시키고 브라우저 접속으로 카메라 이미지와 Web Page의 버튼 조작으로 자동차를 조작 하는 방식으로 구성 되어 있다.
2번째 링크를 참조 하여 회로 구성 및 프로그램 포팅시 큰 문제 없이 동작이 확인 되었으나, 기존 도깨비 자동차와 동일하게 초음파 센서 + 부저 연동하기는 물리적으로 사용 가능 포트가 부족 한것으로 판단 된다.
ESP32 자체를 쓰면 WiFi와 BLE가 기본 내장되어 있어 별도의 블루투스 부품이 필요 없는 장점은 있으나 WiFi와 BLE가 동시 동작 여부는 본인은 테스트 하지 못하였다. (추후 자료를 찾으면 공유 하도록 하겠습니다)
WiFi connected Camera Stream Ready! Go to: http://192.168.1.87 |
설정된 WiFi에 접속이 성공한 경우 할당된 IP Address를 Serial Terminal에 정보를 출력하고 모바일 기기에서 해당 IP로 브라우저 접속하면 아래와 같은 화면과 버튼 클릭으로 자동차 조작이 가능하다
3. 도깨비 자동차 ESP32-CAM GPIO확인
ESP32-CAM의 GPIO 테스트 및 확인 (1인 확인하여 부정확할수 있음)결과 왼쪽 6개 GPIO에 대하여 정상 동작이 가능하여 모터 드라이버와 초음파 센서 연결핀으로 사용 하기로 결정 하였다.
GPIO4번 같은 경우 Flash LED와 연결되어 있으나 초음파 센서의 동작시 짧은 순간 LED가 번쩍하기는 하였으나 정상 동작 하는것은 확인 되었으며, 기존 부저는 GPIO의 부족으로 과감히 연동 포기
ESP32-CAM의 사용시 별도의 아두이노 같은 기기를 Serial 통신으로 추가 연동하여 문제를 해결하는 방법도 있으나 저렴한 비용의 제작을 목적으로 하고 있어 최대한 ESP32-CAM을 활용하기로 하였다.
4. Soft AP Mode 추가 와 초음파 센서 연동
2번째 링크의 자동차 제어 프로그램 사용시 Station Mode를 통한 WiFi접속으로 Serial Terminal를 통한 할당 IP Address 확인 필요하며, 매번 접속시 IP Address확인의 번거로움을 해소하기 위하여 LCD를 장착하여 해당 정보를 출력하는 방법도 있으나 모든 GPIO를 사용하고 있어 다른 대안을 고민 하였다.
ESP32는 WiFi의 Soft AP 와 Station를 동시 지원하고 있어 Soft AP를 코드에 추가 해보았다.
WiFi.mode(WIFI_AP_STA);
WiFi.softAP(ssidAP, passwordAP); IPAddress IP = WiFi.softAPIP();
Serial.print("AP IP address: "); Serial.println(IP); |
AP IP address: 192.168.4.1 |
Soft AP모드의 경우 IP는 192.168.4.1 고정 값이 할당되어 관련 정보 확인할 필요가 없다.
핸드폰 WiFi접속을 설정된 ESP32 연결 후 192.168.4.1로 브라우저 접속 하면 동작 화면을 확인 할수 있으나 WiFi 설정 변경으로 모바일의 다른 인터넷 외부 접속은 불가능한 상태이다.
첨부 파일에 수정된 소스와 사용된 초음 센서 라이브러리를 같이 공유하며 문제 발생또는 새로운 기능 추가시 공유를 부탁 드립니다.