Вирішив я недавно зробити апгрейд радіокерованого іграшкового джипу свого сина. Радіокерування майже одразу припинило подавати ознаки життя. Як показав розтин, в машинці встановлені занадто слабкі та неповороткі двигунчики. Головний рухаючий моторчик я одразу замінив на більший за розміром та потужністю. Для цього довелося попрацювати гравером, з встановленою на нього циркулярною пилкою (а як по-іншому виділити достатньо місця?). Також була викинута плата радіоприймача.
Далі недовго думаючи була вибрана концепція дистанційного керування за прикладом марсохода: подається команда і джип сам її виконує і зупиняється. Все із-за невпевненості, що в мого 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
Генератор пари ультразвуковий
Ультразвуковий генератор холодної пари, зволожувач повітряНапруга живлення 24ВДіаметр 3,6 смВисота 2..
168.91грн.
Ультразвуковий датчик відстані HC-SR04
Напруга живлення 5 ВРобочий кут відбитої хвилі не більше 15 градусівДіапазон вимірюваних відстаней 2..
44.31грн.
Гвинт М2х20мм оцинкований
Гвинт оцинкований з різьбою М2 для кріплення елементів любительських проектівДовжина різьби 20 мм..
2.62грн.
Набір керамічних конденсаторів 300шт.
Конденсатори мініатюрні керамічні 30 номіналів по 10 штук кожного.Напруга до 50 В.2P,3P,5P,10P,15P,2..
74.69грн.
Міні вимикач 250 В 3 А
Прикольний маленький вимикач живлення, для врізання в монтажну панель або в корпус електронного прис..
9.19грн.