[아두이노] ESP32 CAM - 도깨비 자동차 2
지난 3개월 동안 틈틈히 시간내서 이것 저것 시도 했던 내용을 정리하여 공유 해 본다. 지극 히 개인 적인 경험으로 각자의 상황에 따라 조금씩 틀릴수 있는점 양해 부탁 드립니다.
최초 링크의 소스를 참조하여 GPIO12을 모터 드라이버 제어에 사용 하려고 하였으나 적용된 모터 드라이버 문제 인지 초기 동작시 해당 IO에 연결된 모터가 동작 되어다 ESP32 CAM이 계속 Restart되는 문제가 발생되어 초음파 센서로 대체 하여 사용 IO를 할당 하였다.
L9110S L9110 H-브리지 스테퍼 모터 듀얼 DC 모터 드라이버 컨트롤러 보드 모듈 가장 저렴한 모터 드라이버로 2개의 모터를 제어 할수 있으며 이전 아두이노 나노 도깨비 자동차에서도 사용 하였다.
특별할게 없는 모터 드라이버 인데 ESP32 CAM (AI THINKER)의 GPIO 12번 연결 사용시 초기 모터가 동작하는 것으로 보아 해당 핀이 초기 설정 값이 HIGH 또는 내부 회로로 구성이 다른 IO 과 틀린 부분이 있지 않을까 의심 해본다.
ESP32 CAM의 도깨비 자동차의 주요 기능 정의
1. WiFi는 AP Mode와 Station Mode 동시 지원
AP Mode를 접속하여 Station Mode WiFi의 설정 정보 설정 및 저장 (EEPROM 영역에 저장)
2. 모터 속도 제어 및 관련 설정
설정 페이지에 접속하여 모터 속도 설정 (EEPROM 영역에 저장)
3. Web Page를 통하 영상 이미지 확인 및 자동차 제어
WiFi검색 후 Pro+Makers AP에 연결 후 192.168.4.1 웹 주소 접속 하면 위와 같은 화면을 볼수 있다. 기본 적은 WiFi 설정 정보 입력 후 Update 버튼 클릭시 해당 정보가 EEPROM에 저장되어 추가 설정 없이 사용이 가능 하다. 추가적으로 모터의 전진/후진 시 속도 제어 값도 설정 할수 있도록 하였다.
(아두이노 나노와 다르게 ESP32는 별도의 EEPROM영역이 없다 Flash Memory를 일부를 할당하여 사용되며 사용 함수도 살짝 상이한 부분있다.)
ESP32 CAM과 초음파 센서 전원 터미널드 커페시터를 회로 구성, 스위치는 Boot Mode 선택에 사용되며 시리얼 통신은 뒤면에 별도의 보드를 연동하여 사용 하도록 하였다.
전원 보드는 28650 리튬이온 배터리의 충전 모듈과 DC UP (3,7~4,2V to 5V) 모듈 장착, DC UP 모듈은 3A까지 지원 된다고 하는데, 테스트 시 전원 부족으로 제어 보드가 Reboot 되는 현상이 발생 된다. (모터 2개를 동시 동작시 주로 발생)
완성된 도깨비 자동차 기존 레이저 커터를 활용하여 장착해 보았으며, 시간을 두고 기구 및 관련 문제를 해결해 나갈 예정이다.
설정 화면 하단에 카메라 화면과 제어 버튼 들이 배치 되어 있고. 버튼 누를때 해당 동작이 서버로 전송 되며 땔때 정지 동작이 서버로 전송 되도록 HTML이 구성되어 있다.참고한 예제 같은 경우 Web Server호출된 처리 Handler 함수에서 모터 제어가 이루어 지고 있는데, 여러번 제어 명령을 내릴 경우 처리 속도가 계속 느려지는 문제가 확인 되어 Handler에서 이벤트만 등록 하고 IO처리는 Loop 에서 처리하도록 로직을 변경 하였다.
추측으로는 ESP32는 CPU0에서는 시스템 (통신) CPU1에서 사용자 로직을 처리 하도록 설계된것으로 알고 있으며 귀차니즘으로 인하여 이런 차이로 문제가 발생 되지 않았나 생각 해 본다, 추후 자세한 원인 파악이 되면 관련 내용을 업데이트 하도록 하겠다.
P.S : 해당 소는 정리 후 빠른 시일내에 공개 하도록 하겠다.