GSM передатчик показаний счетчиков воды на базе модуля SIM800L (DIY)

Содержание

В обзоре речь пойдет о GSM модуле SIM800L, который вкупе с Arduino Pro Mini был использован для создания автономного передатчика показаний счетчиков расхода воды. Передача осуществляется путем отправки SMS сообщений через заданные промежутки времени. Устройство легко в повторении, а также обеспечивает длительную работу на одном элементе питания.

После переезда в новую квартиру оплата услуг ЖКХ стала довольно нетривиальной задачей. В частности это касается процесса передачи показаний счетчиков расходы воды в управляющую компанию. Поскольку счетчики находятся в отдельном помещении (коллекторной), запертом на ключ, который находится у охраны, ежемесячное снятие показаний стало занимать слишком много времени. Сами счетчики же имеют импульсные выходы для автоматического сбора данных. Поэтому было принято решение о сборке устройства, способного раз в месяц (или с любой другой частотой) передавать данные со счетчиков удаленно. Причем показания должны передаваться «по воздуху», а питание быть автономным, т.к. никакой возможности проводного подключения в этом помещении нет.
В качестве передающего устройства выбор пал на GSM модуль SIM800L, который как раз приехал с Али (изначально приобретался для другого проекта), формат связи – SMS сообщение с данными. Я также рассматривал WiFi и радио модули, но у меня была уверенность только в устойчивости GSM сигнала в этом помещении (тест телефоном). К тому же было интересно получить опыт использования подобного GSM модема.

Аппаратная часть

Останавливаться подробно на обзоре самого GSM модуля я не стану, у меня все равно не получится сделать это лучше, чем здесь. Этот материал очень помог мне в процессе наладки модуля. Идея проста — используем плату Arduino Pro Mini (с контроллером Atmega168P) для опроса импульсных выводов счетчиков и считаем литры воды, по истечение заданного промежутка времени активируем GSM модуль, формируем текст СМС сообщения и выводим его через последовательный порт на модем для отправки. Таким образом схема устройства крайне проста:

Коннектор P1 — вход для счетчиков горячей (ГВС) и холодной (ХВС) воды с общей землей.

В качестве питания идеально подойдет любой литиевый аккумулятор, т.к. GSM модуль как раз имеет диапазон входных напряжений под него — 3,4 — 4,2 В. Я использовал компактный АКБ от старого телефона Nokia.

Конденсатор С1 крайне желателен. И чем больше его ёмкость, тем лучше. Потребляемый модемом ток в импульсе достигает 2А и без конденсатора велика вероятность перезагрузки Atmega168 из-за просади напряжения (особенно если использовать старый АКБ с большим внутренним сопротивлением и/или тонкие провода).

Несмотря на то, что GSM-модуль поддерживает несколько различных режимов сна, минимальный потребляемый им ток составляет порядка 1 мА, что довольно много для устройства, рассчитанного на длительную автономную работы. Поэтому используется полевой транзистор для принудительного отключения модуля. Подойдет любой с низким пороговым напряжением открытия.

Ввиду простоты схемы и минимального количества компонентов, было решено выполнять все навесным монтажом. Итоговый вид платы на фото ниже (на фото еще нет конденсатора и используется другой полевик).


Программная часть

Большую часть времени заняло именно написание скетча, его отладка и минимизация энергопотребления устройства.
Используемые в моем случае счетчики ВСХд-15 и ВСГд-15 формируют один импульс (замыкание + размыкание геркона) на 1 л воды, при этом время замкнутого и разомкнутого состояний геркона за период примерно равны (полезный материал по теме). Алгоритм работы МК должен фиксировать замыкания/размыкания герконов с двух счетчиков, при этом фильтровать дребезг контактов. Причем делать это абсолютно независимо для двух каналов, а также минимально использовать ресурсы для экономии энергии. В итоге я пришел к следующей последовательности:
— подключаем выходы со счетчиков между двумя цифровыми пинами МК и землей;
— объявляем пины как выходы;
далее в цикле:
— подтягиваем пины к шине питания командой digitalWrite(pin, HIGH) через встроенный в Atmega168 резистор 20 кОм;
— опрашиваем состояние пинов и фиксируем изменения;
— убираем подтяжку digitalWrite(pin, LOW);
— загоняем МК в сон на 500 мс
повтор цикла.

Т.е. подтяжка выходов счетчиков происходит непосредственно перед измерением на короткое время, что сильно экономит батарею.

Максимальная пропускная способность счетчика по паспорту 1л/с. То есть паузы в 500 мс как раз достаточно, чтобы не пропустить изменения состояния геркона.

Далее вышеописанный алгоритм был реализован в коде:

Я постарался максимально подробно закомментировать скетч. Помимо опроса счетчиков, в программе также реализовано измерение питающего напряжения и передача значения в СМС вместе с данными по расходу воды. Также непосредственно перед отправкой СМС текущие показания сохраняются в энергонезависимую память. Интервал отправки СМС в скетче — 1 неделя.

Итоговый вид устройства:

Расчет времени автономной работы

При работе модуля, средний потребляемый ток составляет около 25-35 мА.
Также, с помощью самодельной электронной нагрузки, была измерена емкость батареи BL-6C, которая при разряде до 3,4 В составила 974 мАч:

Рассчитаем длительность работы на одном заряде аккумулятора при передаче СМС сообщений 1 раз в неделю:

8,7 лет, что ж, неплохо! Конечно, ни о каких 8ми годах речь не идет. Саморазряд аккумулятора высадит его гораздо быстрее. Но на 2-3 года работы ориентироваться, думаю, можно.

Третью неделю устройство находится в работе. За это время получено три СМС (тестовое при установке и два интервальных). Показания совпадают со счетчиком вплоть до последнего знака. Осталось изменить интервал отправки на 1 смс в месяц и проект завершен. Напряжение на батарее за это время существенно не изменилось:


Источник: mysku.me