Smart apiary |
Умная пасека на базе ESP32 и SIM80
Пчеловоду, кроме метеоданных, особо важно знать температуру внутри улья и изменения веса самого улья. Поскольку пасеки распологаются, как правило, на приличном расстоянии от дома, то отслеживать основные параметры надо дистанционно. На сегодня наиболее развита и доступна связь GSM. Предлагаемое устройство позволяет дистанционно контролировать параметры окружающей среды и веса улья с использованием GSM или WIFI соединения.
Устройство предназначено для дистанционного получения информации через SMS сообщения мобильной связи. Также устройство позволяет приблизиться к улью на расстояние 10-20 метров, активировать Wi-Fi и подключиться к точке доступа, чтобы получить необходимую информацию, в том числе историю показаний датчиков на графиках или изменить настройки. Кроме того Устройство может работать в локальной сети, но для этого необходимо внести и имя лоальной сети и пароль в скетч и перепрограммировать ESP32.
Схема
ESP32_bee (V7.2) - все в одном архиве 642 kb. |
Некоторые особенности
Для спящего режима в схему добавлены два соединения от sim800 RING и DTR.
Обратите вниамние, что аналоговые входы не работают во время работы WI-FI. Мне пришлось переместить подпрограмму измерения напряжения в другое место "loop".
Можно позвонить на SIM 800, к которому подключен микрофон, и услышать, что происходит вокруг.
В схеме использовано два преобразователя напряжения для раздельного питания ESP32 и SIM800. Для экономии можно использовать один преобразователь и установить на нем 5 вольт, а через последовательно подключенные гасящие диоды подключить питание SIM800. Один диод на себе образует падение напряжения 0,5-0,7в, в зависимости от типа.
Если у вас аккумулятор, не на 12 вольт, то номиналы сопротивлений R4,R5 должны быть другими, чтобы на вход 39-контакта ESP32 подавалось не более 3 в.
Электролитический конденсатор на шинах питания SIM800 уменьшает скачки напряжения во время звонков.
К разъемам CON1 и CON2 можно подключить "Пусковой таймер" для экономичного режима питания системы.
Элементы html страницы
видео: https://youtu.be/MDR0Pn4AruI 1 - установка периода опроса датчиков 2 - время (сек) до следующего опроса 3 - экран 4 - выбор датчика 5 - индикатор выбранного датчика с тремя зонами наблюдения: зеленой, желтой и красной 6 - окна настройки шкалы наблюдений: минимум, граница зеленой зоны, граница желтой зоны и максимум 7 - кнопка открыть/закрыть настройки 8 - максимальное напряжение питания 9 - индикатор напряжения питания 10 - текущее напряжение питания 11 - загрузить настройки с SD card 12 - запись измерений на SD card 13 - записать на SD текущие настройки 14 - открыть/закрыть окно тестирования 15 - открыть/закрыть окно терминала 16 - для работы с SD card 17 - кнопка "передать значения датчиков". Передаются на экран значения каналов, установленных ползунками в окне тестирования 18 - кнопка "обновить" для обновления контрольных параметров при отладке программы 19 - кнопка "тестировать" для вывода на экран случайных данных всех 4х каналов по всему временному интервалу 20 - ползунки каналов действуют в установленных в настройках диапазонах 21 - кнопка обнуления весов, используется при подключении HX711. 22 - индикатор пониженного напряжения питания |
Каждый сенсор имеет график своего цвета. У сенсора веса график коричневый и его шкала называется HX711. (Название можно поменять в скетче). Чтобы поменять шкалу сенсоров надо нажать на кнопку справа от шкалы (7). Цвет этой кнопки совпадает с цветом графика этой шкалы.
После нажатия на эту кнопку, открываются поля для настройки шкал. Шкалы ты можешь настраивать по своему усмотрению при «manual setting» (4а). При этом поле «min» указывает нижний диапазон для графика этой шкалы, то есть для тебя это может быть вес тары.
Поле, помеченное зеленым маркером, устанавливают границу для наблюдений, чтобы видеть текущее состояние датчика в рабочем режиме. Это поле ты можешь использовать для сравнения с предыдущим периодом измерений. Например 1 числа вес был 7 кг. Ты установил границу на 7 кг и смотришь как меняется вес по дням. При этом отсчеты со значениями буду находиться в районе желтой зоны. Поле, помеченное желтым маркером устанавливает границу между между желтой и красной зоной, которую можно использовать, чтобы отслеживать критическое значение веса. Установка этих значений ни как не влияют на сами измерения, а только на формирования графиков.
Поле «max» устанавливает верхнюю границу отображения графика и позволяет лучше рассмотреть мелкие колебания измерений.
Можно сказать так, меняя «min» и «max», ты как бы регулируешь лупу (увеличительное стекло) для построения графика выбранной шкалы.
Вы можете нажать кнопку " для теста "в верхнем меню и использовать движок выбранной шкалы (он имеет тот же цвет), чтобы увидеть реакцию на самой шкале, а если нажать кнопку "Передать" (17), то значения ползунков (20) будут отображаться на графике
Таймеры
В проекте реализованы два таймера: один на html странице, второй в микроконтроллере. Первый, назовем его WEB timer, задает период опроса сенсоров системы и ее состяния, второй, это таймер ESP32, позволяющий осуществлять режим записи измерений на SD card в автономном режиме, то есть, без управления от html страницы.
Период опроса датчиков передается в систему при ее загрузке или перезагрузке, или с html страницы при каждом Get запросе измерений. Период опроса ESP таймера всегда устанавливается на 1-5 сек больше Web таймера для исключения накладок.
Контроль напряжения
Элементы интерфейса 8, 9, 10 и 22 предназначены для контроля за напряжением питания системы. Следует знать, что минимальный порог напряжения вычисляется, исходя из установленного максимального напряжения аккумулятора: 0.7 * Vmax [8]. Так, если Vmax установлен 15, то система среагирует на авариную ситуацию при напряжении батареи 15*0.7 = 10.5 вольт. При этом на экране появится красный индикатор [22]. Одновременно с эти будет передано SMS сообщение на активный номер телефона (номер последнего звонка).
Чтобы изменить порог срабатывания, достаточно изменить Vmax [8]. Если Vmax установить равным 16, то при напряжении батареи 11.2в система отработает аварийное оповещение: SMS и индикатор [22].
Панель SETUP (настройки)Панель разделена на три зоны:
|
|||||||||
Панель filesМаксимально в файл на SD card записывается по 300 измерений, после чего формируется новый файл. Панель работы с файлами, записанными на SD card:
|
|||||||||
Работа с архивными записямиПосле нажатия кнопки Ok (4) потребуется некоторое время для построения графиков измерений в окне внутреннего монитора (5). Передвигая визир с информационном окном (6) можно оценить измерения в нужный момент времени. |
SMS команды модуля SIM800
Способ связи и управления через SMS сообщения на номер SIM карты SIM800L: чтобы упростить набор SMS команд, все команды начинаются с заглавных букв и не надо переключать регистр при наборе букв.
команда | описание |
---|---|
Balans | запрос баланса своего номера |
Info | Информация о состоянии системы |
Vol | Контроль напряжения питания |
Bme | Опрос датчиков температуры, влажности и давления |
Wgt | Вывод значения весов |
Sdon | Включить запись измерений на SD card |
Sdoff | Выключить запись измерений |
Sleep | Включить режим сна - измерения не записываются на SD-карту |
Wifi1 | Включить WIFI |
Wifi0 | Выключить WIFI |
PhoneADD | PhoneADD=Номер телефона - добавить в белый список |
PhoneDel | PhoneDel=Номер телефона - удалить из белого списка |
PhoneAll | Показать список разрешенных телефонов |
Com. | Com.text - Записать в строку измерений на SD card комментарий |
Reset | Перезагрузить ESP32 |
Не спешите, иногда реакция на SMS сообщения занимают много времени - зависит от состояния сети.
Управление белым списком телефонных номеров.
Формат Sms команд:
PhoneAdd=+321232123 --- любой номер или несколько номеров, разделенных запятыми
PhoneDel=+3212 --- достаточно, если можно номер отличить от других
PhoneAll
При подключенном устройстве через USB к компьютеру, через COM port можно передавать как AT команды, так и SMS команды. Это помогает при изучении возможностей устройства и его модификации.
Теперь о том, что делать перед запуском программы.
1. Загрузите эскиз в Arduino IDE и проверьте свой номер телефона (строка 23);
2 Найдите в тексте *102 # и замените свой код вызова баланса, например *100 #
3 Обратите внимание, что в моей программе Myserial Softwareserial (2, 3); / / установить контакты 2 и 3 для программного порта
Serial2 встроена в библиотеку ESP32.
Однажды у нас был сильный град. Все это длилось 10-12 минут, и если регистрировать атмосферные изменения каждые 30 минут, то можно не заметить аномалий.
При входном напряжении 12 вольт ток в нормальном режиме-90-110 ма, а в спящем-45 мА. Это достаточно большое потребление для автономных систем. Чтобы решить проблему я разработал блок "Starting the timer" (Пусковой таймер) на базе Arduino Nano. Этот блок позволяет снизить ток потребления всей системы до 1 ма в режиме сна. /подробнее/
После пробуждения, когда SIM800 получил другую команду, ток составляет 90-92 ма. Wi-Fi отключен, но измерения продолжаются.
Таким образом, когда вы приближаетесь к отдаленной пасеке, вы посылаете SMS "Wi-Fi1", чтобы включить его. Затем вы находите в своем смартфоне WiFi-сеть точки доступа "ESP32-A...ss-Point" (вы задаете название этой сети в скетче) и подключаетесь к ней. Теперь вы можете набрать в браузере 192.168.4.1 на своем смартфоне и управлять измерениями.
Без использования блока Starting the timer, если кто-то случайно набирает телефонный номер SIM800 или отправляет на него SMS, ESP 32 на короткое время просыпается, чтобы определить источник, и, если номер телефона не находится в белом списке, он снова засыпает.
Если Ваш телефон находится в белом списке системы, но он не основной, то чтобы получать от системы SMS сообщения, необходимо сначала отправить системе любой разрешенный SMS запрос,чтобы система записала текущий номер телефона (current_number). Current_number предназначен для внутреннего потребления, и вам даже не нужно регистрировать его в программе. Программа запоминает, с какого номера телефона был сделан последний звонок или SMS, чтобы знать, куда отправить ответ! Чтобы избежать путаницы при включении, введите свой основной номер телефона в поле "current_number", но программа изменит его после первого звонка с другого телефона..
Устройства не имеют часов реального времени, поэтому нужно взять время либо через SMS, либо с HTML-страницы (192.168.1.222). Чтобы отслеживать время в ESP 32, вы должны сделать запрос (yy) хотя бы один раз. Для этого вам следует установить флажок, как показано на рисунке.
Так как в системе нет часов реального времени, то ESP32 берет время либо из запросов со страницы 192.168.1.222, либо через SMS-запрос. Запрос времени по SMS производится только при включенной записи на Sd-карту . Коррекция времени (Sms-запрос) выполняется при записи нового файла (300 баллов). Таким образом, система отсчитывает время, если:
- есть подключение к Интернету, и запрос инициируется.
или
-запись включена на Sd-карту.
Первые сообщения вроде бы подтверждают, что все работает нормально и дают возможность контролировать настройки.
Если SMS-сообщения отправляются каждый раз при получении измерения, это означает, что какое-то измерение находится вне граничных условий. Это измерение, которое передается по SMS
Речь идет оотчет 5 мин - 12 записей в час. В одном файле 300 записей, размер файла = 35 КБ
300 / 12 = 25 часов один файл
1 ГБ = 1000000 КБ 1000000/ 35 >= 28500 записей / 25 = 1140 дней
коррекция времени с помощью SMS происходит каждый раз, когда записывается новый файл - 300 * 5мин = 1500мин / 60-это 25 часов. То есть, раз в 25 часов устройство отправляет SMS-сообщение для коррекции времени.
Если вы установите период в 6 минут, 300 * 6 = 1800/60 - это 30 часов.