Вирішив я недавно зробити апгрейд радіокерованого іграшкового джипу свого сина. Радіокерування майже одразу припинило подавати ознаки життя. Як показав розтин, в машинці встановлені занадто слабкі та неповороткі двигунчики. Головний рухаючий моторчик я одразу замінив на більший за розміром та потужністю. Для цього довелося попрацювати гравером, з встановленою на нього циркулярною пилкою (а як по-іншому виділити достатньо місця?). Також була викинута плата радіоприймача.
Далі недовго думаючи була вибрана концепція дистанційного керування за прикладом марсохода: подається команда і джип сам її виконує і зупиняється. Все із-за невпевненості, що в мого 2,5 літнього сина вийде керувати двигунами стандартним пультом. Я впевнений, що він буде надовго затискати елементи управління незалежно від поведінки машинки. А принцип марсохода: проїдь 20см та зупинись, якраз підійде. Тим більше, що я давно мріяв його спробувати хоча би у спрощеному варіанті. В цій реалізації будемо їхати не 20см, а заданий час - 1 сек.
Акумулятор можна зарядити через мікро-USB, після чого він живить драйвер двигунів напряму та WiFi-контролер через підвищуючий перетворювач до 5 В.
Код програми:
#include <ESP8266WiFi.h>
const char* ssid = "им'я вашої мережі вайфай";
const char* password = "пароль вашої мережі";
int up = 2; //номери дискретних виходів
int down = 14;
int left = 4;
int right = 12;
// Create an instance of the server
// specify the port to listen on as an argument
WiFiServer server(80);
void setup() {
Serial.begin(9600);
delay(10);
//підготовка виходів
pinMode(up, OUTPUT);
digitalWrite(up, 0);
pinMode(down, OUTPUT);
digitalWrite(down, 0);
pinMode(left, OUTPUT);
digitalWrite(left, 0);
pinMode(right, OUTPUT);
digitalWrite(right, 0);
// Connect to WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
//Запуск сервера
server.begin();
Serial.println("Server started");
//виводимо IP адресу в монітор порта
Serial.println(WiFi.localIP());
}
void loop() {
//перевіряємо чи підключився клієнт
WiFiClient client = server.available();
if (!client) {
return;
}
//Очікуємо поки клієнт не пришле які-небудь дані
Serial.println("new client");
while(!client.available()){
delay(1);
}
//Зчитування першого рядка запиту
String req = client.readStringUntil('\r');
Serial.println(req);
client.flush();
//обробка команди
if (req.indexOf("/gpio/up") != -1){
digitalWrite(up, 1);
digitalWrite(down, 0);
delay(1000);
digitalWrite(up, 0);
digitalWrite(down, 0);
}
else if (req.indexOf("/gpio/down") != -1){
digitalWrite(up, 0);
digitalWrite(down, 1);
delay(1000);
digitalWrite(up, 0);
digitalWrite(down, 0);
}
else if (req.indexOf("/gpio/left") != -1){
digitalWrite(up, 1);
digitalWrite(down, 0);
digitalWrite(left, 1);
digitalWrite(right, 0);
delay(1000);
digitalWrite(up, 0);
digitalWrite(down, 0);
digitalWrite(left, 0);
digitalWrite(right, 0);
}
else if (req.indexOf("/gpio/right") != -1){
digitalWrite(up, 1);
digitalWrite(down, 0);
digitalWrite(left, 0);
digitalWrite(right, 1);
delay(1000);
digitalWrite(up, 0);
digitalWrite(down, 0);
digitalWrite(left, 0);
digitalWrite(right, 0);
}
else {
Serial.println("invalid request");
}
client.flush();
// підготовка до відповіді
String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\n ";
s += "<center><br><a href='http://192.168.1.97/gpio/up'>UP</a><br>";
s += "<br><a href='http://192.168.1.97/gpio/left'>LEFT</a>     ";
s += "<a href='http://192.168.1.97/gpio/right'>RIGHT</a><br>";
s += "<br><a href='http://192.168.1.97/gpio/down'>DOWN</a>";
s += "</center></html>\n";
// Send the response to the client
client.print(s);
delay(1);
Serial.println("Client disonnected");
}
LEFT RIGHT
DOWN
Шилд реле для Wemos D1 mini
Модуль з електромагнітним реле для встановлення на плату контролера Wemos D1 miniХарактеристики..
51.63грн.
Модуль 4 реле I2C на DIN-рейку без корпусу
Плата продається без коробкиМодуль 4-х релейних виходів I2C для побудови домашньої або промислової с..
766.68грн.
Вимірювання часу та точні затримки на ESP32
Вимірювання часу та точні затримки на ESP32 ESP32 має потужну систему апаратних таймерів, які доз..
Основи автоматики
Основи автоматикиДавайте поговоримо про автоматику в контексті домашнього застосування. Але тільки м..
Фільтрація шумів аналогового сигналу
Шум аналогового входу Будь-який аналоговий датчик, з'єднувальні дроти, та і сам аналоговий вхід кон..




