На самом деле трудно переоценить, насколько потрясающе выглядят и работают платы на основе ESP8266, такие как Wemos D1 Mini. За буквально пару долларов вы можете получить в удобном форм-факторе прилично мощный микроконтроллер с поддержкой Wi-Fi, который имеет достаточное количество цифровых контактов для выполнения полезных задач Интернета вещей. Как и Arduino и Raspberry Pi, ESP8266 – это устройство, которое открывает все новые области разработки электроники, которые просто не были такими практичными или экономичными, как ранее.

В качестве прекрасного примера можно привети невероятно простой интернет-детектор движения на основе ESP8266.
С помощью всего лишь платы Wemos D1 Mini, стандартного PIR-датчика и небольшого кода, вы можете создать практичный автономный модуль датчика движения, который можно разместить в любом месте, где вы хотите, чтобы он следил за движением в своей области и передавал данные через Интернет. Когда датчик определяет что-то движущееся, он вызывает событие IFTTT.
Схема подключения очень проста и выглядит она следующим образом:

Так это может выглядеть в реальности на отладочной плате:

Корпус можно распечатать на 3D принтере, взяв файлы с Thingiverse (https://www.thingiverse.com/thing:2489968).
Код прошивки ESP8266 для функционирования датчика движения с передачей данных через Интернет следующий:
#include <ESP8266WiFi.h>
const char* ssid = "xxxx"; // SSID локальной сети
const char* password = "xxxxxx"; // Пароль сети
String result;
String smoke ;
String motion ;
void setup()
{
pinMode(D4, INPUT);
pinMode(D7, INPUT);
delay(2000);
Serial.begin(115200);
WiFi.hostname("ESP8266MotionSensor"); // Имя хоста ESP8266
}
void ifttt() // соединение по Wifi и отправка всех данных через IFTTT
{
const char host[ ] = "maker.ifttt.com"; // организатор каналов IFTTT
const char trigger[ ] = "motion"; // имя тригера, который посылаем IFTTT
const char APIKey[ ] = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; // ключ
Serial.print("Connect to: ");
Serial.println(host);
// клиент WiFiClient для организации соединения HTTP
WiFiClient client;
if (!client.connect(host, 80)) {
Serial.println("connection failed");
return;
}
// формируем URL
String url = String("/trigger/") + trigger + String("/with/key/") + APIKey;
Serial.print("Requesting URL: ");
Serial.println(url);
// отправка запроса IFTTT
client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n");
delay(20);
// Считываем все строки ответа сервера и печтаем их в последовательный порт
Serial.println("Respond:");
while(client.available()){
String line = client.readStringUntil('\r');
Serial.print(line);
}
Serial.println();
Serial.println("closing connection");
Serial.println();
Serial.println();
client.stop();
delay (20000);
}
void loop()
{
if(digitalRead(D4)== HIGH)
{
motion = digitalRead(D4); // вывод датчика
smoke = digitalRead(D7); // для опционального датчика дыма (можно подключить к 7-й цифровой линии)
Serial.println("Alarm detected!");
Serial.print("motion ");
Serial.println(motion);
Serial.print("smoke ");
Serial.println(smoke);
ifttt();
}
else
{
//Serial.println("no trigger"); // для отладки
}
}
© digitrode.ru