Дистанционно управляемое транспортное средство с камерой передающей изображение на экран может иметь много применений а также это весьма интересная штука. Такую штуку можно сделать на основе модуля ESP32-CAM (http://alii.pub/69872w) для чего его нужно дополнить самим транспортным средством и драйверами для его управления через данный модуль. В простейшем случае транспортным средством может быть какая либо колесная платформа поворачивающаяся по танковой схеме. Если исключить возможность заднего хода то электрическая схема всей конструкции может быть очень простой:
Рисунок 1 - Схема радиоуправляемого автомобиля с камерой
else if(!strcmp(variable, "left"))
{
pinMode(12,OUTPUT);
digitalWrite(12,HIGH);
pinMode(13,OUTPUT);
digitalWrite(13,LOW);
}
else if(!strcmp(variable, "right"))
{
pinMode(12,OUTPUT);
digitalWrite(12,LOW);
pinMode(13,OUTPUT);
digitalWrite(13,HIGH);
}
else if(!strcmp(variable, "forward"))
{
pinMode(12,OUTPUT);
digitalWrite(12,HIGH);
pinMode(13,OUTPUT);
digitalWrite(13,HIGH);
}
else if(!strcmp(variable, "stop"))
{
pinMode(12,OUTPUT);
digitalWrite(12,LOW);
pinMode(13,OUTPUT);
digitalWrite(13,LOW);
pinMode(12,INPUT);
pinMode(13,INPUT);
}
Теперь чтобы модуль заработал осталось поменять соответствующим образом фронтенд который накодится по вкладке camera_index.h. В коде на этой вкладке есть 2 массива для разных камер. Нужно выбрать массив с камерой которая используется и заменить его содержимое. Для этого можно например скопировать его содержимое в программу для разархивации из формата .gz в .html потом изменить html код, после чего сжать его программой архиватором в формат .gz и содержимое переместить в выбранный массив. html код который будет работать с кодом выше может выглядеть например так:
Это довольно минималистичный веб интерфейс без излишеств, только с изображением для вывода потокового видео и кнопками для управления автомобилем. Основная функция в данном коде -fetch() для отправки get запроса с командами управления моторами. А также тег img для отображения видео. В сжатом виде данный код будет выглядеть так:
Удивительно, но после сжатия размер занимаемой памяти увеличился. Возможно сжатие начнет работать нормально при больших html кодах поэтому тут можно не экономить и сделать большую и красивую веб страницу. Но конечно же в разумных пределах т.е. не стоит например подключать react или другой большой фреймворк. Модуль может этого не потянуть даже со сжатием. В результате после внесения данных поправок в стандартный скетч и загрузки его в автомобиль, получается интересная радиоуправляемая по wifi со смартфона или компьютера машинка, тест драйв которой можно посмотреть на видео:
КАРТА БЛОГА (содержание)