В данном примере используются:
M5stack core: http://ali.pub/4snj9n
X.COM gsm module m5stack: http://alii.pub/62yjgf
Датчик движения: http://alii.pub/62ymxg
Геркон: http://alii.pub/62yn8x или готовый: http://alii.pub/62ync8
Прежде чем приступить к материалу, я Вас попрошу, если нравится то, что я делаю и хотите следить за моей деятельностью, то рекомендую подписаться на мой телеграмм канал: https://t.me/ypavla
Там я публикую новости о вышедших видео, статьях и разные устройства для умного дома и не только показываю.
Спасибо за внимание, теперь продолжим.
Итак, в этой статье покажу как сделать простую сигнализацию, которая по срабатыванию датчика движения или при открытии двери и срабатыванию геркона, будет отправлять смс сообщение на ваш мобильный телефон.
Такая реализация будет полезна например на даче. На даче обычно люди осень зиму и раннюю весну не проводят. Просто закрывают дом и уезжают в город. И часто эти самые пустые дачи обворовывают в эти времена, когда хозяев нет рядом. Так вот как-раз таки данная реализация будет полезна и всегда оповестит нас о том открылась ли дверь без нашего ведома или же если датчик движения, то оповестит о этом самом движении.
Почему я выбрал два этих способа? (Движение и открытие двери). Ну это самые основные элементы сигнализации и код подходит под любой из этих датчиков. Потому что они работают по одинаковому принципу. А именно всегда когда они срабатывают, отправляют логическую единицу на сигнальный пин.
Вообще я как-то делал подобную сигнализацию на gsm модуле M590E и Arduino. Но проблема заключалась там в том, что модуль M590E очень прожорливый по питанию во время отправки СМС. И если модуль M590E питать от arduino, то он просто перезагружается и СМС не отправляет. Ему нужно отдельное питание 5 вольт 2 Ампера. Об этой реализации на M590E можно почитать тут:
В этот же раз я решил использовать модуль COM.X GSM для M5stack core. Такой выбор я сделал потому что Базовое устройство M5stack у меня уже было и с ним GSM модуль соединится в “бутерброд” и будет аккуратное устройство. Тем более, что данному устройству для отправки СМС будет хватать питания. В GSM модуле используется SIM800C. И довольно сложная схема питания с конденсаторами, что позволяет питаться модулю от 5 вольт самой M5stack core. И просадок по питанию не происходит.
Вот так выглядит плата мод SIm800C:
Как видим из нее питаться может устройство от внешнего источника питания и даже от 12 вольт. Это тоже вносит некое удобство. Мы например сможем питать устройство от машинного аккумулятора, его емкости нам хватит на всю зиму.
Когда будете подключать питание, обратите внимание на переключатель, он стоит у Вас 5 вольт или 12. А то можете спалить устройство.
Даташит на Sim800C можно почитать тут: https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/docs/datasheet/module/SIM800C_datasheet.pdf
GSM контроллер SIM800C общается с ESP32 контроллером по UART интерфейсу путем AT команд. Список AT команд для SIM800 можно посмотреть тут:
X.COM GSM модуль в сборе с M5stack Выглядит вот таким вот “бутербродом”:
UART пины M5stack используются – RX 17 пин, а TX 16 пин. Скорость COM порта 115200.
Программа:
Ну что-ж теперь давайте теперь перейдем к программе.
Программу можно скачать тут: https://disk.yandex.ru/d/NCHV2gZKHb7g_g
Библиотека используется MODEMKA_Driver.h , которую скачать можно отсюда: https://github.com/dsiberia9s/MODEMKA_Driver
Ну и на всякий случай оставлю еще тут библиотеку, на случай если она совершенно полностью поменяется и мой код перестанет работать: https://disk.yandex.ru/d/wiJsXe2AlT6WwA
Важные строчки в коде:
Объявление пинов:
#define TX_PIN 16 // TX пин esp32
#define RX_PIN 17 // RX пин ESP32
#define BAUDRATE 115200 // Скорость COM порта
#define RESET_PIN -1 // -1 if not using
#define pirPin 35 // Пин к которому подключен датчик движения или геркон.
Номер телефона и текст сообщения:
#define PHONE_NUMBER “+79200000000” // Здесь указывается номер телефона на который будет отправляться СМС по движению или по открытию двери.
#define MESSAGE “Dvizhenie” // В ковычках указывается текст сообщения, Русский шрифт как всегда к сожалению не работает. С ним всегда сложно.
Функция отправки СМС:
if (pirVal == HIGH) { //Здесь задается логическая единица “HIGH” на входе или логический ноль “LOW” Это нужно поменять в зависимости от вашего модуля,
//например мой геркон наоборот не посылает 1 на вход,а посылает 0.
Serial.println(“motion”); // Это сообщение “motion” которое будет отправляться в монитор порта по движению, это нужно для отладки датчиков
COM_GSM.SMS(PHONE_NUMBER, MESSAGE); // Эта строка отвечает за отправку СМС. Когда будете выяснять ваш датчик подает 0 или 1 на вход,
//лучше закомментировать ее чтоб смс не отправлялось, а ориентироваться только на монитор порта.
delay(60000); // Это задержка после отправки СМС. В данном случае это 60 секунд. Сделано ля того чтоб не слало 100 смс в секунду.
}
На этом пожалуй все. Также видео с демонстрацией работы будет ниже: