Авто с управлением по WIFI
В этой статье мастер-самодельщик расскажет нам, как сделать автомобиль с дистанционным управлением по WiFi. Таким авто можно управлять через смартфон. В качестве микроконтроллера в данной сборке используется модуль ESP8266. Этот модуль имеет порт MicroUSB, и работает от напряжения 7-12 В.Инструменты и материалы:-Печатная плата;-Модуль ESP8266-12E (NodeMCU);-Микросхема драйвера двигателя L293D – 2 шт.-Двигатель постоянного тока с редуктором – 4 шт;-Регулятор 7805;-Батарейный отсек;-Аккумуляторы;-Конденсатор 100 мкФ / 25 В – 4 шт;-Керамический конденсатор 100 нФ – 2 шт;-Штыревой разъем;-2-контактные винтовые разъемы – 5 шт;-Колеса – 4 шт;-Выключатель;-Акрил;-Паяльник;-Дрель;-Провода;Шаг первый: печатная платаДля данного устройства требуется печатная плата. Плату можно заказать перейдя по этой ссылке.
Шаг второй: монтаж платыПосле получения платы мастер производит ее монтаж.
Монтирует разъемы и конденсаторы. Устанавливает микросхему драйвера двигателя L293D. L293D – это популярная микросхема драйвера двигателя с 16 выводами. Одна микросхема L293D способна одновременно управлять двумя двигателями постоянного тока, направление этих двух двигателей можно контролировать независимо. Мастер использует две микросхемы для четырех двигателей.
Шаг третий: кодТеперь нужно загрузить код. Мастер подключает микроконтроллер NodeMCU к ПК. Открывает Arduino IDE.Затем нужно перейти в Инструменты> Плата> Платы ESP8266> NodeMCU 1.0 (модуль ESP-12E).Выбирает правильный порт. Затем загружает код.Код можно скачать ниже.
Показать / Скрыть текст// NodeMCU Based WIFI Controlled Car//
#define ENA 14 // Enable/speed motors Right GPIO14(D5)
#define ENB 12 // Enable/speed motors Left GPIO12(D6)
#define IN_1 15 // L298N in1 motors Right GPIO15(D8)
#define IN_2 13 // L298N in2 motors Right GPIO13(D7)
#define IN_3 2 // L298N in3 motors Left GPIO2(D4)
#define IN_4 0 // L298N in4 motors Left GPIO0(D3)
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
String command; //String to store app command state.
int speedCar = 800; // 400 – 1023.
int speed_Coeff = 3;
const char* ssid = "NodeMCU Car";
ESP8266WebServer server(80);
void setup() {
pinMode(ENA, OUTPUT);
pinMode(ENB, OUTPUT);
pinMode(IN_1, OUTPUT);
pinMode(IN_2, OUTPUT);
pinMode(IN_3, OUTPUT);
pinMode(IN_4, OUTPUT);
Serial.begin(115200);
// Connecting WiFi
WiFi.mode(WIFI_AP);
WiFi.softAP(ssid);
IPAddress myIP = WiFi.softAPIP();
Serial.print("AP IP address: ");
Serial.println(myIP);
// Starting WEB-server
server.on ( "/", HTTP_handleRoot );
server.onNotFound ( HTTP_handleRoot );
server.begin();
}
void goAhead(){
digitalWrite(IN_1, LOW);
digitalWrite(IN_2, HIGH);
analogWrite(ENA, speedCar);
digitalWrite(IN_3, LOW);
digitalWrite(IN_4, HIGH);
analogWrite(ENB, speedCar);
}
void goBack(){
digitalWrite(IN_1, HIGH);
digitalWrite(IN_2, LOW);
analogWrite(ENA, speedCar);
digitalWrite(IN_3, HIGH);
digitalWrite(IN_4, LOW);
analogWrite(ENB, speedCar);
}
void goRight(){
digitalWrite(IN_1, HIGH);
digitalWrite(IN_2, LOW);
analogWrite(ENA, speedCar);
digitalWrite(IN_3, LOW);
digitalWrite(IN_4, HIGH);
analogWrite(ENB, speedCar);
}
void goLeft(){
digitalWrite(IN_1, LOW);
digitalWrite(IN_2, HIGH);
analogWrite(ENA, speedCar);
digitalWrite(IN_3, HIGH);
digitalWrite(IN_4, LOW);
analogWrite(ENB, speedCar);
}
void goAheadRight(){
digitalWrite(IN_1, HIGH);
digitalWrite(IN_2, LOW);
analogWrite(ENA, speedCar/speed_Coeff);
digitalWrite(IN_3, LOW);
digitalWrite(IN_4, HIGH);
analogWrite(ENB, speedCar);
}
void goAheadLeft(){
digitalWrite(IN_1, LOW);
digitalWrite(IN_2, HIGH);
analogWrite(ENA, speedCar);
digitalWrite(IN_3, HIGH);
digitalWrite(IN_4, LOW);
analogWrite(ENB, speedCar/speed_Coeff);
}
void goBackRight(){
digitalWrite(IN_1, LOW);
digitalWrite(IN_2, HIGH);
analogWrite(ENA, speedCar/speed_Coeff);
digitalWrite(IN_3, HIGH);
digitalWrite(IN_4, LOW);
analogWrite(ENB, speedCar);
}
void goBackLeft(){
digitalWrite(IN_1, HIGH);
digitalWrite(IN_2, LOW);
analogWrite(ENA, speedCar);
digitalWrite(IN_3, LOW);
digitalWrite(IN_4, HIGH);
analogWrite(ENB, speedCar/speed_Coeff);
}
void stopRobot(){
digitalWrite(IN_1, LOW);
digitalWrite(IN_2, LOW);
analogWrite(ENA, speedCar);
digitalWrite(IN_3, LOW);
digitalWrite(IN_4, LOW);
analogWrite(ENB, speedCar);
}
void loop() {
server.handleClient();
command = server.arg("State");
if (command == "F") goAhead();
else if (command == "B") goBack();
else if (command == "L") goLeft();
else if (command == "R") goRight();
else if (command == "I") goAheadRight();
else if (command == "G") goAheadLeft();
else if (command == "J") goBackRight();
else if (command == "H") goBackLeft();
else if (command == "0") speedCar = 400;
else if (command == "1") speedCar = 470;
else if (command == "2") speedCar = 540;
else if (command == "3") speedCar = 610;
else if (command == "4") speedCar = 680;
else if (command == "5") speedCar = 750;
else if (command == "6") speedCar = 820;
else if (command == "7") speedCar = 890;
else if (command == "8") speedCar = 960;
else if (command == "9") speedCar = 1023;
else if (command == "S") stopRobot();
}
void HTTP_handleRoot(void) {
if( server.hasArg("State") ){
Serial.println(server.arg("State"));
}
server.send ( 200, "text/html", "" );
delay(1);
}
После загрузки кода устанавливает микроконтроллер на плату.
Шаг четвертый: сборкаТеперь можно собрать автомобиль. Шасси мастер сделал из акрилового листа. Отрезал лист по размерам. Просверлил все необходимые отверстия. Закрепил на шасси двигатели. Между двигателя крепиться аккумулятор. Установил выключатель.На оси моторедукторов устанавливаются колеса.
Закрепляет на шасси плату.
Производит подключения. На печатной плате всего пять 2-штырьковых разъемов, один из них – вход (от аккумулятора), а остальные – выход на мотор-редуктор.
Шаг пятый: приложениеТеперь нужно установить приложение на смартфон. Включает питание на авто.
Дальше нужно скачать и установить на смартфон приложение ESP8266 WIFI ROBOT CAR.Включить на смартфоне Wi-Fi. Делает сопряжение с Nodemcu Car. Открывает приложение ESP8266 WIFI ROBOT CAR.
Теперь все готово. Управляется авто с помощью приложения загруженного ранее на смартфон.
На видео ниже можно посмотреть полную сборку данного авто, а также демонстрацию его работы.
(Source)