Уведомления об открытии двери на Gmail через Arduino Uno: руководство для начинающих
Компоненты и материалы
| Компонент | Количество | Примечание |
|---|---|---|
| Arduino Uno | 1 | Основная плата |
| PHPoC Shield для Arduino | 1 | Ethernet/WiFi + SSL для отправки почты |
| Магнитный датчик (реедик) | 1 | Два элемента: датчик + магнит |
| Провода-перемычки | 1 набор | Для подключения |
| LAN-кабель или USB WiFi-адаптер | 1 | Для подключения PHPoC Shield к интернету |
О проекте
Проект для начинающих: обнаружение открытия двери магнитным датчиком и отправка уведомления на Gmail. Используется PHPoC Shield, который берет на себя всю сложность работы с SSL/TLS и SMTP-протоколом.
Принцип работы магнитного датчика
Датчик состоит из двух частей: геркон (сенсор) и магнит. Когда они рядом — контакт замкнут (HIGH), при разъединении — разомкнут (LOW). Монтируем одну часть на створке, вторую — на косяке.
Обработка события
При срабатывании (дверь открыта) Arduino через PHPoC Shield подключается к SMTP-серверу Gmail (smtp.gmail.com:587) и отправляет письмо. Для работы нужен аккаунт Google с включенным доступом «менее безопасных приложений» или пароль приложения.
Необходимые библиотеки
- PHPoC — общение с шилдом, встроенный email-клиент
- ezButton — удобная обработка кнопок/датчиков с дебаунсом
Установка PHPoC: официальный гайд | GitHub
Схема подключения
- Установите PHPoC Shield на Arduino Uno
- Подключите LAN-кабель или WiFi-адаптер к шилду
- Магнитный датчик:
- VCC (красный) → 5V
- Signal (черный) → A0
- GND → GND (если есть отдельный провод)
Код проекта
#include <Phpoc.h>
#include <ezButton.h>
PhpocEmail email;
ezButton button(A0); // Датчик на пине A0
void setup() {
Serial.begin(9600);
Phpoc.begin(PF_LOG_SPI | PF_LOG_NET | PF_LOG_APP);
// Phpoc.beginIP6(); // Раскомментируйте для IPv6
button.setDebounceTime(100); // 100 мс дебаунс
}
void loop() {
button.loop(); // Обязательный вызов
if (button.isPressed()) { // Дверь открыта
// Настройка email
email.setOutgoingServer("smtp.gmail.com", 587);
email.setOutgoingLogin("Ваш_Google_ID", "Пароль_приложения");
email.setFrom("ваш@gmail.com", "Arduino Alert");
email.setTo("получатель@email.com", "Хозяин");
email.setSubject("Дверь открыта! [#905]");
email.beginMessage();
email.println("#905");
email.println("");
email.println("Дверь была открыта.");
email.endMessage();
if (email.send() > 0) {
Serial.println("Письмо успешно отправлено");
} else {
Serial.println("Ошибка отправки");
}
}
else if (button.isReleased()) { // Дверь закрыта
// Аналогично можно отправить уведомление о закрытии
}
}
Важные замечания
- Безопасность: Не храните пароли в коде. Используйте пароли приложений Google.
- Лимиты: Gmail имеет лимиты на отправку. Для частых срабатываний используйте другие каналы (Telegram, MQTT, Pushbullet).
- PHPoC Shield упрощает работу: не нужно вручную реализовывать TLS/SSL на Arduino.
- Питание: Убедитесь, что блок питания выдает достаточно тока для шилда + Arduino.
Расширение функционала
- Добавьте несколько датчиков на разные двери/окна
- Логируйте события на SD-карте или в Google Sheets
- Интегрируйте с Home Assistant через MQTT
- Добавьте зуммер для локального сигнала
Производственный процесс
- Датчик CO2 K30: мониторинг качества воздуха в реальном времени на Arduino
- Цифровой стадиометр на Arduino: отслеживание роста лазерным датчиком VL53L0X
- Интеграция ёмкостного сканера отпечатков DFRobot с Arduino или ESP8266
- Сенсорная башня на Arduino Cloud: Мониторинг температуры, движения и газа
- Умный водяной пистолет с датчиком движения на Arduino Nano
- Бесконтактный термометрический шлюз для быстрого и точного скрининга
- Arduino UNO + WiFi Shield: реальный график температуры в вебе через Serial
- Умная система мониторинга температуры для школ: точно, в реальном времени, безопасно
- Компактный радар на Arduino Nano с HC-SR04 и дисплеем 1.8"
- Сенсорный выключатель LED на Arduino UNO: простой DIY-проект