Сигнализация ESP-8266 шлет письмо на e-Mail

Ответить
Аватара пользователя
KirAdmin
Администратор
Сообщения: 5
Зарегистрирован: 04 янв 2019, 15:13
Откуда: М.О., г.Фрязино
Контактная информация:

Сигнализация ESP-8266 шлет письмо на e-Mail

Сообщение KirAdmin » 08 янв 2019, 22:56

Это небольшое "домашнее" устройство для "охраны" помещения. Работает по Wi-Fi и интернета бесполезно. Можно использовать для охраны квартиры или дома. имеет низкую себестоимость и простоту повторения. ESP-8266 работает в режиме deepSleep (глубокий сон ~20мкА только у ESP8266 ESP-01) и периодически проверяет состояние датчиков без подключения Wi-Fi. Устройство оповещает владельца по почте о сработавшем датчике. Датчик может быть один или несколько, поддерживает следующие виды:
  • Датчик открытия двери или растяжка
  • Инфракрасный датчик движения HC-SR501
  • Микроволновый датчик RCWL-0516
Они простые и дешевые, беру по 5 шт. Оба датчика не без недостатка:
HC-SR501 - низкое потребление 40мкА в режиме ожидания и 200мкА при срабатывании. Это очень хороший показатель, т.к. датчик включен постоянно. Угол обнаружения 120 градусов и расстояния до 7 метров. На готовом модуле есть регулировка чувствительности и времени срабатывания (время выставить на минимальное). Перемычку в положении H-режим.
SR501.jpg
Инфракрасный датчик движения HC-SR501
SR501.jpg (45.63 КБ) 1006 просмотров
RCWL-0516 - работает через стены на 360 градусов до 9 метров. Но жрет до 3 мА - это в 75 раз больше, чем HC-SR501.
RCWL-0516.jpg
Микроволновый датчик RCWL-0516
RCWL-0516.jpg (25.28 КБ) 1005 просмотров
ESP8266 ESP-01 в режиме deepSleep потребляет 20мкА, в момент опроса датчика 15мА, а при отправке письма 70-300мА. Если питать от аккумулятора 18650, то с RCWL-0516 проработает до 1 месяца, а с HC-SR501 до 2-3.




Замкнуть D0 GPIO16 - GND // разрешает deepSleep
Подтягивающий резистор 10 кОм D1 - GND
Сигнальный выход датчика к GPIO5 = D1
pic-15-2.jpg
Распиновка ESP8266 ESP-12E
pic-15-2.jpg (110.01 КБ) 1009 просмотров
ESP8266_ESP-01:
ESP8266_ESP-01_pinouts_pighixxx.jpg
Распиновка ESP8266 ESP-01
ESP8266_ESP-01_pinouts_pighixxx.jpg (67.72 КБ) 1009 просмотров

Код: Выделить всё

#include <ESP8266WiFi.h>
#include "Mail.h"

const char* const staSSID = "wi-fi-name";
const char* const staPass = "pasword";

const char* const smtpHost[] = { "smtp.mail.ru", "smtp.yandex.ru", "smtp.gmail.com" };
const uint16_t smtpPort = 465;
const char* const smtpUser[] = { "login@mail.ru", "login@yandex.ru", "login@gmail.com" };
const char* const smtpPass[] = { "password", "password", "password" };
const char* const mailTo = "llirikks@mail.ru";
// символы для текста https://apps.timwhitlock.info/emoji/tables/unicode
const char* const mailSubject = "\xF0\x9F\x9A\x94 Wi-Fi охрана";
int pin_alarm = 5;



void alarm() {
  Serial.begin(74880);
  Serial.println();

  Serial.print(F("Connecting to \""));
  Serial.print(staSSID);
  Serial.print('"');

  WiFi.begin(staSSID, staPass);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print('.');
  }
  Serial.print(' ');
  Serial.println(WiFi.localIP());

  delay(10000);
Serial.print("Mail sended through ");
  for (int8_t i = 0; i < 3; ++i) {
    Serial.println();
    if (sendMail(smtpHost[i], smtpPort, smtpUser[i], smtpPass[i], mailTo, mailSubject, F("Внимание\xE2\x9D\x97\r\nСработала Wi-Fi охрана и активирована тревога\r\nСрочно примите меры безопасности."))) {
      Serial.print(F("Mail sended through "));
      Serial.println(smtpHost[i]);
    } else {
      Serial.print(F("Error sending mail through "));
      Serial.print(smtpHost[i]);
      Serial.println('!');
    }
  }

  WiFi.disconnect();
  }
void setup() {
/*  Serial.begin(74880);
  Serial.println();

  Serial.print(F("Connecting to \""));
  Serial.print(staSSID);
  Serial.print('"');

  WiFi.begin(staSSID, staPass);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print('.');
  }
  Serial.print(' ');
  Serial.println(WiFi.localIP());

  delay(10000);
Serial.print("Mail sended through ");
  for (int8_t i = 0; i < 3; ++i) {
    Serial.println();
    if (sendMail(smtpHost[i], smtpPort, smtpUser[i], smtpPass[i], mailTo, mailSubject, F("Внимание\xE2\x9D\x97\r\nСработала Wi-Fi охрана и активирована тревога\r\nСрочно примите меры безопасности."))) {
      Serial.print(F("Mail sended through "));
      Serial.println(smtpHost[i]);
    } else {
      Serial.print(F("Error sending mail through "));
      Serial.print(smtpHost[i]);
      Serial.println('!');
    }
  }

  WiFi.disconnect();
  ESP.deepSleep(8e6); // 8 seconds
  */
    pinMode(pin_alarm, INPUT);     // инициализация входа датчика
  if (digitalRead(pin_alarm))
  {
      alarm();
      }

  else
  {
    ESP.deepSleep(8e6); // 8 seconds;
      }
}

void loop() {

}


Ответить