Disclaimer
Работает с приложением на Андроид. Стоит денег.
Добрый день!
Предлагаю познакомиться и воспользоваться, моей реализацией Датчика дверного замка (Реклама приложения).
Для отслеживания замка, будем использовать обычную кнопку, подключенную к микроконтроллеру ESP8266 и приложение на Android. Ссылка.
Нам потребуется...
Любая плата с микроконтроллером esp8266. Мой вариант Wifi R3 ATmega328P + Esp8266
Кнопка. На вкус и цвет.
Резистор 220 Ом.
Макетная плата (можно самую маленькую).
Соединительные провода , желательно Папа-мама.
Скорее всего двухжильный провод, чтобы удлинить расстояние до розетки, я купил 8м КСПВ 2*0.5мм.
Коробка для защиты платы. Можно обычную для распайки проводов.
Я взял 85мм*85мм, места впритык.
Роутер с подключением к интернет сети, точкой доступа и правами Администратора.
Смартфон на Android, с доступом в интернет и Google Play.
ПК с программой Arduino
Перейдем к работе со скетчем.
Подключаем плату к ПК по USB, и настраиваем для заливки скетча в микроконтроллер ESP8266 (В интернете много видеоинструкций по настройке ПО Ардуино с работой данного микроконтроллера). На UNO + WiFi R3 ATmega328P + ESP8266, нужно так же, чтобы переключатели 5,6,7 были в ON).
Копируем скетч в Ардуино и отправляем.
Скетч:
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
bool sensor = false;
boolean btn;
const char* ssid = "****";
const char* password = "*****";
WiFiServer server(80);
IPAddress ip(192,168,1,35);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);
void setup() {
Serial.begin(115200);
pinMode(16, INPUT);
btn = digitalRead(16);
// подключаемся к wifi
WiFi.begin(ssid, password);
WiFi.config(ip, gateway, subnet);
Serial.println("Connecting to ");
Serial.println(ssid);
Serial.println("WiFi connected..!");
Serial.print("Got IP: ");
Serial.println(WiFi.localIP());
server.begin();
Serial.println("HTTP server started");
}
void loop() {
WiFiClient client = server.available();
String req = client.readStringUntil('\r');
client.flush();
if (req.indexOf("/sensor")!=-1){
if (btn && !sensor ) {
sensor = true;
}
if (!btn && sensor) {
sensor = false;
}
String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n";s += sensor;
client.print(s);
delay(1);
}
}
После того как загрузили скетч, перезапустите плату (Для работы контроллера, на UNO + WiFi R3, надо оставить только 5 и 6 переключатель в ON), как показано на фото выше.
Проверьте, появилась ли ваша плата в сети, это можно сделать на роутере в подключенных устройствах, либо в консоли управления (cmd), пропишите ping и адрес (пример: ping 192.168.1.35), который указали, должны получить 4 обратных ответа.
Настройка роутера
Если все удачно, пропишем на роутере настройку, переадресации порта, для подключения к плате из другой сети, по внешнему адресу.
В моем приложении я использовал порт 4333, укажите перенаправление с него на стандартный порт 80, или какой указали в скетче.
Для подключения к плате и мониторинга датчика, я разработал приложение “Датчик дверного замка”, оно выложено в Google Play за минимальную монету, только для поддержки разработчика.
Спасибо если купили. Запускаем. В строке адреса, нужно указать ваш внешний ip, этот адрес вам предоставляет провайдер, с него вы выходите в интернет. При удачной настройке, вы пройдете в следующее окно. По программной части закончили. Теперь сложное.
Подключение датчика (кнопки)
Для начала проверьте отверстие для замка, залезет ли туда кнопка и есть ли для нее место, чтобы не раздавить при закрытие замка, если есть проблемы поработайте перфоратором.) Так же нужно рассчитать и просверлить отверстие для выхода джемперов. В моем случае, старый дом и сделал я вот так.
В удобное место прикручиваем коробку с контроллером и макетной платой, доводим провода.
В скетче используется 16 пин для считывания кнопки. Используйте пин, именно от контроллера Esp8266.
Когда заеду в новую квартиру сделаю все красиво.
Один контакт от кнопки подключаем в плату к пину и резистором на 200Ом, второй к пину на 5В.
Включаем питание
Запустите приложение и проверьте работу. Если пользуетесь умными часами или браслетами, разрешите приложению отправлять уведомления.
Спасибо, надеюсь всем пригодится.