2016-11-12 в 20:00 (последнее изменение 2021-04-19 в 23:50)
В этот раз расскажем Вам что такое платформа NodeMCU.
Она полностью совместима со средой разработки Arduino IDE. Превосходит Arduino по скорости в 10 раз. Тактовая частота составляет 80 MHz. Имеет встроенный Wi-Fi модуль ESP8266.
В сегодняшнем примере разберем как на такой платформе используя беспроводной интерфейс управлять различными нагрузками. Опять же в примере в качестве нагрузки будет использован светодиод.

Для того чтобы устройство самостоятельно подключилось к точке доступа расположенной у Вас дома необходимо ввести имя сети и пароль для нее в соответствующие поля.
Код
// Сюда название вашей Wi-FI сети и пароль!!!
const char* ssid = "ssid";
const char* password = "password";
Выбрали pin к которому будет подключена нагрузка.
Код
// подготавливаем пин для реле GPIO2
pinMode(2, OUTPUT);
digitalWrite(2, 0);
После того как ввели эти данные загружаем весь код в плату.
Код
/*
* http://server_ip/gpio/0 выключаем пин GPIO2
* http://server_ip/gpio/1 включаем пин GPIO2
*/
#include <ESP8266WiFi.h>
// Сюда название вашей Wi-FI сети и пароль!!!
const char* ssid = "ssid";
const char* password = "password";
// Поднимаем веб сервер
WiFiServer server(80);
void setup() {
Serial.begin(115200);
delay(10);
// подготавливаем пин для реле GPIO2
pinMode(2, OUTPUT);
digitalWrite(2, 0);
// подклюсаемя к сети WI-FI
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");
// Start the server
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();
// присваиваем значение переменной val в зависимости от ссылки по которой перешли
int val;
if (req.indexOf("/gpio/0") != -1)
val = 0;
else if (req.indexOf("/gpio/1") != -1)
val = 1;
else {
Serial.println("invalid request");
client.stop();
return;
}
// работаем с GPIO2 и переменной val
digitalWrite(2, val);
client.flush();
// выводим html код
String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nGPIO is now ";
s += (val)?"high":"low";
s += "</html>\n";
// что там с клиентом..
client.print(s);
delay(1);
Serial.println("Client disonnected");
}
В мониторе порта плата нам напишет какой IP адрес был присвоен ей. И теперь, чтобы включить светодиод необходимо пройти по ссылке ip_адресс/gpio/1. А для того чтобы отключить светодиод переходим уже по другой ссылке ip_адресс/gpio/0.
Если Вам интересно и Вы обладаете небольшими навыками то можете попробовать сделать небольшую страничку с кнопками-ссылками, по нажатию на которые будут включаться/отключаться приборы и прочие устройства. Это не альтернатива нашим прошлым устройствам, а лишь демонстрация возможностей альтернативных платформа по созданию различных устройства.
Не пропустите обновления! Подписывайтесь на нашу группу
Вконтакте.
Так же у нас есть
Telegram канал.
Вам понравился наш материал? Поделитесь с коллегами!
Просмотров: 28131. Оценка статьи:
1.4 из 5. Уже оценило
69 читателей