В данном примере используются:
M5stack core: http://ali.pub/4snj9n
X.COM gsm module m5stack: http://alii.pub/62yjgf
BME280: http://alii.pub/5yjrsz
Прежде чем приступить к материалу, я Вас попрошу, если нравится то, что я делаю и хотите следить за моей деятельностью, то рекомендую подписаться на мой телеграмм канал: https://t.me/ypavla
Там я публикую новости о вышедших видео, статьях и разные устройства для умного дома и не только показываю.
Спасибо за внимание, теперь продолжим.
Для чего нужен данный пример:
Я подумал, что иногда необходимо мониторить показания температуры или влажности. И иногда это необходимо там, где нет интернета. Например в какой-нибудь теплице на даче.
И таким образом и родился данный пример.
Пример основан на библиотеке MODEMKA_Driver которую можно скачать отсюда: https://github.com/dsiberia9s/MODEMKA_Driver
Или отсюда на случай если библиотека кардинально поменяется и мой скетч перестанет с ней работать: https://disk.yandex.ru/d/wiJsXe2AlT6WwA
Скетч произошел из примера СМС оповещение по датчику движения. С которым можно ознакомиться тут:
Датчиком температуры будет выступать датчик BME280.
Подключается датчик BME280 по шине i2c. По этому нужно соединить пины SCL и SDA датчика BME280 с такими же пинами Контроллера ESP32.
GSM модулем я буду использовать как и в прошлом примере X.COM GSM модуль. Он получился на мой взгляд очень удачный и не требует “танцев с бубном” в подключении и в питании. Да и в связке с M5stack получается аккуратное законченное устройство.
Работа программы:
Программа будет работать следующим образом:
Мы должны позвонить на номер телефона симкарты которая вставлена в GSM модуль. Возьмется трубка и через 2 секунды сбросится. Далее программа сверяет если это был номер телефона звонившего и он указан в скетче, то отправляет СМС с текстом температуры на номер который указан в скетче.
А если мы позвоним с другого номера то произойдет все тоже самое, возьмется трубка на 2 секунды, но программа сверит номера телефонов, поймет что данного номера нет в программе и отправлять смс не будет, так как не выполнено условие.
Код программы:
Программу(скетч) скачать можно отсюда: https://disk.yandex.ru/d/tN3pnEOx6ZziMQ
После того как скачали программу ниже опишу важные строчки которые можно изменить под себя:
Библиотеки:
#include <Wire.h> // Подключаем библиотеку Wire
#include <Adafruit_Sensor.h> // Подключаем библиотеку Adafruit_Sensor – эту библиотеку можно найти в стандартных библиотеках в программе Arduino IDE
#include <Adafruit_BME280.h> // Подключаем библиотеку Adafruit_BME280 – эту библиотеку можно найти в стандартных библиотеках в программе Arduino IDE
Объявление пинов:
#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 PHONE_NUMBER “+7920000000” //Номер телефона на который отправлять сообщение
#define MESSAGE (“Temperature: ” + String(bme.readTemperature()) + ” C”) //Текст смс сообщения
В данном тексте сообщения будет отправляться только температура. Например если Вам нужна температура влажность и давление то текст смс сообщения будет выглядеть так:
#define MESSAGE (“Temperature: ” + String(bme.readTemperature()) + ” C” + “Humidity: ” + String(bme.readHumidity()) + “%” + “Pressure: ” + String(bme.readPressure()) + “Pa”)
Функция отправки СМС:
void call_handler(String phone) {
Serial.println(“[J] ” + phone);
COM_GSM.accept();
COM_GSM.DTMF(“123”);
COM_GSM.decline();
if (phone == “+79200000000”) { // Тут указывается номер с которого будем запрашивать смски
Serial.println(“motion”);
COM_GSM.SMS(PHONE_NUMBER, MESSAGE); //отправка сообщения
delay(10000);
}
Если Вы позвоните с другого номера, не с того который указан в этой функции, то смс Вам не придет.
if (!bme.begin(0x76)) { // Инициализация датчика BME280
Serial.println(“Could not find a valid BME280!”); // Печать сообщения об ошибки
while (1);
}
Ну а в данной функции задается адрес i2c датчика в моем случае 0x76 ( хотя обычно BME280 все имеют такой адрес, но везде бывают исключения, если что меняется он тут.)
Ну и под конец видео демонстрации работы: