Данное устройство разрабатывалось для мониторинга температуры в гараже где один датчик отправляет температуру (Ds18b20) в основном помещении, а второй датчик температуру и влажность (AM2320) подвала, отдален от основной платы по витой паре на 10м. Локально информация выводиться на OLED (SSD1306) дисплей. Статистика с датчиков температуры собирается на сервере, отображается в виде графика. Управление исполнительным устройством производиться через Telegram. Исполнительное устройство (два спаренных реле) добавлено без определенной цели, но думаю оно там нужно.
Устройство питается от источника 5В 2А.
Все исходные коды доступны по ссылке. Так же приложена принципиальная схема устройства.
Релиз Альфа.
Сим карту для устройства порекомендую от Tele2 т.к. у них есть опция 100мб, за 10 рублей. Берем классический тариф и подключаем данную опцию, 100мб для данного устройства за глаза. Данный тариф они не афишируют, но как подключить спокойно ищется в поисковике.
С помощью USSD-команды:
Включить *155*281#
Отключить *155*280#
Необходимо подобрать резисторы R1 и R2 для преобразователя уровня.
На DC-DC конверторе, питающий sim800l выставить напряжение 4.1В.
Модуль sim800l работает в автоматическом режиме определение скорости обмена по USART.
Модуль sim800l можно заменить на другие сборки, где уже имеются преобразователи уровней на плате.
Т.к. OLED дисплеи сильно склонны к выгоранию в устройстве добавлена кнопка, что включает дисплей при нажатии. Не работает пока идет обмен с сервером (можно переделать, повесив на прерывание).
В исходниках перед сборкой необходимо внести правку в заголовочный файл data.h, где указать URL реального сервера и точку APN оператора SIM карты.
Код написан в среде Visual Studio Code с расширение PlatformIO (очень приятное и универсальное расширение)
Для работы устройства нам никак не обойтись без сервера т.к. где-то нужно накапливать статистику. Но, вполне возможно переработать код устройства и наладить работу исключительно через Telegram, без использования своего сервера.
Наш сервер написан на языке C# с использованием технологии .NET Core 2.2. Среда разработки Visual Studio 2019. Да, выбор языка для сервера не лучший и требует для запуска VPS/VDS сервер, но я просто люблю этот язык. Данная технология позволяет без проблем запускать наш сервер как на Windows, так и на Linux. Подробнее можно почитать в интернете.
Возможно я перепишу свой собственный поднятый сервер для возможности работать с ним любым пользователя, зависит от востребованности.
http://nameServer.ru/GG
Для взаимодействия с исполнительным устройством используется Telegram. Где сообщения боту транслируются на наш сервер, а далее эти команды забирает исполнительное устройство.
Грубо это выглядит так: мы посылаем команду телеграм боту, наш сервер считывает команду от бота и запоминает ее. Через некоторое время наше устройство подключается к серверу и передает данные по температуре и в тоже время запрашивает команду на исполнение. Когда устройство считало команду, бот сообщает об этом.
Доступные команды:
Пример:
gg r1on
gg help
где, gg – имя сервера, r1on, help – команды для устройства.
Команды сервером не фильтруются. Очереди команд нет, что последнее пришло, то и будет отправлено.
Все исходники доступны так, что все можно переделать как вам нравится.
В серверной части перед необходимо внести правки в файл конфигурации appsettings.json.
В ветке TelegramStrings внести:
Вот такой монстр у нас получился.