В обзоре речь пойдет о 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 мс как раз достаточно, чтобы не пропустить изменения состояния геркона.
Далее вышеописанный алгоритм был реализован в коде:
Скетч
#include <EEPROM.h> // Стандартная библиотека для записи в энергонезависимую память
#include <SoftwareSerial.h> // Стандартная библиотека для виртуального последовательного порта
#include <LowPower.h> // Библиотека для эффективного засыпания - https://github.com/rocketscream/Low-Power
SoftwareSerial SIM800(18, 19); // Виртуальные RX, TX
#define timer 1121400 // 7*24*6675 tick/hour - через сколько тиков по ~0,5с отправлять смс
boolean hotPrev; // Переменные
boolean coldPrev;
unsigned long ticks = 0;
float hot, cold;
void setup() {
// delay(10000); // Необходама однократная прошивка начальных значений счетчиков перед установкой
// EEPROM.put(0, 32.385);
// EEPROM.put(20, 47.8910);
EEPROM.get(0, hot);
EEPROM.get(20, cold);
pinMode(2, INPUT); // Вход с геркона счетчика ГВС
pinMode(3, INPUT); // Вход с геркона счетчика ХВС
pinMode(4, OUTPUT); // Управление транзистором, через который подключен GSM модуль
digitalWrite(2, HIGH); // Определяем начальное состояние счетчика ГВС
hotPrev = digitalRead(2);
digitalWrite(2, LOW);
digitalWrite(3, HIGH); // Определяем начальное состояние счетчика ХВС
coldPrev = digitalRead(3);
digitalWrite(3, LOW);
for (int i=0; i<3000; i++){
checkCounter();
}
sendSMS(); // Отправка тестового СМС
}
void loop() {
checkCounter(); // Запускаем функцию опроса герконов счетчика
ticks++; // Тикаем один раз
if (ticks > timer) { // Если кол-во тиков превысило заданное, обнуляем счетчик, записываем данные в EEPROM и шлем смс
ticks = 0;
sendSMS();
}
}
void checkCounter() { //Функция опроса счетчиков
digitalWrite(2, HIGH); //Подтягивем пин 2 к Vcc через встроенный в МК резистор 20кОм
if (digitalRead(2) != hotPrev) { // Проверяем не изменилось ли состояние пина, если да, то:
hot = hot + 0.0005; // -накидываем поллитруху
hotPrev = !hotPrev; // -инвертируем переменную
}
digitalWrite(2, LOW); // Отключаем подтяжку к Vcc (если этого не зделать, то МК будет жрать повышенный ток 4,2В/20кОм = 210мкА! с пина 2 и столько же с пина 3)
digitalWrite(3, HIGH); // Все аналогично счетчику ГВС
if (digitalRead(3) != coldPrev) {
cold = cold + 0.0005;
coldPrev = !coldPrev;
}
digitalWrite(3, LOW);
LowPower.powerDown(SLEEP_500MS, ADC_OFF, BOD_OFF); // Засыпаем на 0,5с
}
void sendSMS() { // Функция отправки смс
EEPROM.put(0, hot);
EEPROM.put(20, cold);
float V = 0; // Переменная для напряжения питания
for (int i = 0; i < 100; i++) { // Сто раз считываем значение с пина A3 (который подключен к Vcc) и внутреннее опорное напряжение
V = V + analogRead(A3) / readVcc(); // Суммируем
}
V = (V / 100) * 1.0656 + 0.1017; // Усредняем с учетом коэффициентов, откалиброванных при Vcc 3,0-4,2В
digitalWrite(4, HIGH); // Включаем GSM модуль
for (int i = 0; i < 100; i++) checkCounter(); //Даем модулю 50 сек на установку связи, в это время опрашиваем счетчики
SIM800.begin(9600); // Скорость обмена данными с модемом
SIM800.flush(), checkCounter(); // Дожидаемся передачи команды по Serial и даем GSM модулю 0,5 с на выполнение команды (проверяем в это время счетчики)
SIM800.println("AT"); // Автонастройка скорости
SIM800.flush(), checkCounter();
SIM800.println("AT+CMGF=1"); // Включить TextMode для SMS
SIM800.flush(), checkCounter();
SIM800.println("AT+CMGS=\"+79854xxxx03\""); // Номер, на который шлем смс
SIM800.flush(), checkCounter();
SIM800.println("C: " + String(cold, 3) + ", H: " + String(hot, 3) + ", V: " + String(V, 3) + "\r\n" + (String)((char)26)); // Строка смс сообщения: ХВС, ГВС, напряжение на батарее
SIM800.flush();
for (int i = 0; i < 60; i++) checkCounter(); // Даем модулю 30 секунд на отправку смс, в это время опрашиваем счетчики
SIM800.println("AT+CPOWD=1"); // Команда выключения
SIM800.flush();
for (int i = 0; i < 10; i++) checkCounter(); // 5 сек даем на отключение
digitalWrite(4, LOW); // Обесточиваем GSM модуль
}
float readVcc() { // Функция, возвращающая внутреннее опорное напряжение МК
float tmp = 0.0;
ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
delay(2);
ADCSRA |= _BV(ADSC);
while (bit_is_set(ADCSRA, ADSC));
uint8_t low = ADCL;
uint8_t high = ADCH;
tmp = (high << 8) | low;
return tmp;
}
Я постарался максимально подробно закомментировать скетч. Помимо опроса счетчиков, в программе также реализовано измерение питающего напряжения и передача значения в СМС вместе с данными по расходу воды. Также непосредственно перед отправкой СМС текущие показания сохраняются в энергонезависимую память. Интервал отправки СМС в скетче — 1 неделя.
Итоговый вид устройства:
Расчет времени автономной работы
Используя приведенный выше код, а также отключив GSM-модуль аппаратно с помощью транзистора, мне удалось добиться среднего тока потребления в ~8,5 мкА:
При работе модуля, средний потребляемый ток составляет около 25-35 мА.
Также, с помощью
самодельной электронной нагрузки, была измерена емкость батареи BL-6C, которая при разряде до 3,4 В составила 974 мАч:
Рассчитаем длительность работы на одном заряде аккумулятора при передаче СМС сообщений 1 раз в неделю:
8,7 лет, что ж, неплохо! Конечно, ни о каких 8ми годах речь не идет. Саморазряд аккумулятора высадит его гораздо быстрее. Но на 2-3 года работы ориентироваться, думаю, можно.
Итог
Третью неделю устройство находится в работе. За это время получено три СМС (тестовое при установке и два интервальных). Показания совпадают со счетчиком вплоть до последнего знака. Осталось изменить интервал отправки на 1 смс в месяц и проект завершен. Напряжение на батарее за это время существенно не изменилось:
P.S. В будущем есть идея объединить это устройство с датчиком закрытого ригельного замка во входной двери квартиры и организовать эффективную систему защиту от протечек. А конкретно: если в квартире никого нет (датчик фиксирует что ригельный замок закрыт), но есть потребление воды (датчик фиксирует изменения состояния герконов) — значит произошла протечка. Отправляется команда на сервопривода и вводные клапаны закрываются. Система выгодно отличается от других массово доступных на рынке тем, что не нужны датчики и ей абсолютно не важно где произошла протечка — хоть в полу или стене, она все равно сработает. Но это уже тема следующего обзора :)
Обновление от 30.11.2021
Последенне СМС пришло от модуля 9 февраля 2021 года, при напряжении аккумулятора 3,29 В, что выходит за указанный для модуля SIM800L минимум в 3,4 В. Таким образом устройство проработало на одном заряде 2 года и 10 мес:
А вот здесь не понял, если честно. У Вас что, индивидуальная разводка в каждую квартиру? Любопытно что за дом такой странный. Чаще всего счетчики воды и газа стоят в квартире, отопления и электричества — на площадке.
В новостроях часто (по крайней мере в моих краях) вода, электричество, отопление идут в щитах в тамбурах. Газ в квартире.
Разводка да, отдельная в каждую квартиру. Трубы идут в стяжке пола. Счетчики в отдельно помещении — коллекторной:
1. Квтч
2. Гигакалории
3. Время непрерывной работы
4. Температура подачи
5. Температура обратки
6. Код ошибки
7. Время работы с ошибкой
Может еще что-то, по памяти не скажу.
Это сколько же этажей в доме?
У нас, кстати, сейчас популярны многотарифные счетчики на ГВ, иначе пока вода «сбежит», то столько насчитает…
если и так все уже считается?)
25 этажей. По 5 квартир на этаж, 10 подъездов. Вот такой муравейник)
Счетчик такой
А на каждом этаже коллекторная, у нас только по отоплению так сделано, только небольшие ящики, но у каждого есть свой ключ.
На каждом. В этом помещении находятся счетчики воды и тепла (пока не установлены) на все 5 квартир площадки.
Но здесь кнопку нажимать надо, чтобы режимы отображения переключать.
Для контроля со стороны жильцов достаточно одного показания — гигакалории или мегаватта (в зависимости от настройки счетчика), все остальное заботит теплокоммунэнерго.
В общем, зная сколько гигакалорий за сезон насчитало, можно легко перепроверить правильности начисления.
В моем случае ультразвуковой.
Выше я перечислил тот минимум, что я передаю каждый месяц, причем я не уверен, что указал всё, лень лезть смотреть.
Так мне не надо перепроверять, мне надо каждый месяц, 6 раз в год показания давать.
В моем случае, требуют тот же перечень + показания механических, если они есть. И на коды ошибок я не смотрю, на моей памяти был только один раз, когда врал датчик температуры на обратке, показывал 120 градусов, и еще было на водомерах, через раз срабатывал геркон и из-за грязи врал ультразвуковой, но в этих случаях потребитель только выиграл в оплате (но проиграл в, демонтаже, ремонте и проверке… А еще, есть фантастический дом, в котором врут 2 исправных счетчика, в пользу жильцов. Там ошибка проектировщиков, из-за которой на батареи подается температура на 10 градусов выше чем в соседних домах, при одинаковой стоимости кв.метра. Я время от времени вожу в этот дом жильцов остальных домов и провоцирую их на написание кляуз в теплокоммунэнерго… А потом довожу до ступора комиссии. Уже лет 10 такая фигня длится.
Так я бы тоже не смотрел, если бы это не требовалось для дачи показаний.
У вас таких объявлений не бывает? —
Да к моем вообще туча всяких модулей идет, вот только теплосбыт еще не принимает показания в таком варианте, а мне наличие модулей не сильно помогает, а уж цена на них…
Я такое делал для общедомовых счетчиков тепла/воды. Например KM5. запрос текущих показаний. Подставил в команду конкретный сетевой номер счетчика и на верхнем уровне рассчитал CRC. Получил 16-байтовую посылку, в которой ничего менять не надо. Посылаю эту посылку в RS485, счетчик отвечает 72байтовым ответом, в котором на определенных позициях дата/время, значения интеграторов тепла, масс и объемов по прямой трубе и обратке, время наработки, а также значения температур и давлений на прямой трубе и обратке на тек. момент времени.
ЗЫ лечится синхронизацией часов и запретом на опрос в эти критические
днимоменты.На практике имел дело с десятками моделей общедомовых счетчиков(КМ5, Взлеты, ТЕМ-104/106, ВИСТ, SA94, МКТС, УВП280, ВКТ-7, ТВ7, ВТД, ТМК-Н100/120/130, Логика, Практика и т.д.). О таком впервые слышу (как этот счетчик сертификацию то смог пройти ???). Помню сталкивался с каким-то счетчиком (сейчас уже не помню точно модель), который уменьшал время нормальной работы при опросе, т.е. никаких нештатных ситуаций он не фиксировал, но если его сутки не опрашивать, то время норм. работы за сутки было 24 часа, а если его часто опрашивать за эти сутки — то время работы было уже меньше 24 часов. Но там разработчик быстро все это подправил в новой версии прошивки.
И да это не проблема теплосчётчика, это проблема сторонней системы диспетчерезации. У любого производителя приборов она как правило есть, продвигаемая, своя и 100% «дружит» с приборами.
ЗЫ У ТЭМ прибора только из за того, что медленно чесались с прошивками теперь проблемы с рынком в дефолтсити. А у Asvega как только нормальный програмист «ушёл», так и кончился софт на продукт.
Меня знакомили с ответом производителя на «всплывшую» проблему по переполнению интегратора с прибором 2005 года выпуска. Решение проблемы я описал в своём первом комменте.
Подробности: Опрос был от внедряемой системы АСУПР. в 2016 году, контроллером нижнего уровня от switron. Система опрашивает именно мгновенные значения и строит на их основе часовые, среднесуточные, месячные да и любые другие отчёты. Проблемы с переполнением интеграторов были только у «старых» КМ-5.
ЗЫ Да «описался, пьяиница будь она не ладна» архив остаётся, но интеграторы стираются.
ЗЗЫ если найду ведомость, скину в личку образец переполнения, как пруф. но это очень не точно прибор на адресе сменили и новый рабочий комп выдали.
1. Напоминаю, на адресе сменился тип и номер прибора, поэтому система дописывает в шапку нынешний тип и номер. Данные меж тем берутся фактические.
2. Я вручную обезличил адрес/округ/ответственное лицо. Так же пришлось конвертировать полученный файл в рисунок и немного сжать. Номер прибора могу по дате восстановить из бызы по инвентаризации, а по поводу прошивки точно нет.
3. Данные получены из АСУПР, рабочий комп на работе, инфу из km5db потёр, так как вы правильно заметили ТБНЭнерго уже не торт, есть ПромСтройДеталь и АЭТ и очень много номеров «Ньюшек» и Атэшек шестизначных и скролить через отсутствующие приборы утомительно.
ЗЗЫ Do you spёk кулич?
Yes i spёk
Но есть и нюансы:
1. Минимальный расход теплоносителя, т.е. выключить или сильно прикрутить отопление не выйдет.
2. Передавать надо вовремя, а то могут насчитать «и за того товарища».
Так у Вас наверное общий, на дом.
Прикажут — захочет.
У нас уже много лет только прямые платежи, правда лучше от этого не стало :(
но ведь ясно, что оставлять отдуваться за все тепло в доме только тех, у кого квартиры скраю (они то никогда себе тепло не отключат, так как быстро промерзнут) — затея порочная и нечестная.
Зы. К данному обзору вопрос не относится.
В общем есть такой момент на этом сайте
Я вот собрать не смогу, не умею, но с удовольствием приобрел бы. Особенно если еще добавить интеграцию с каким-нибудь p’n’p протоколом типа ifttt.
И да, в посудомойке есть свой клапан который отключает воду в случае проблем. Да и воды в ней немного.
А вообще, вопрос включенной посудомойки(стиралки) можно решить программно зная примерный профиль потребления.
Но вот аккумуляторным питанием уже не обойтись. Нужна информация о расходе в реальном времени. Не тянуть же линию от датчика замка в коллекторную.
www.rmcip.ru/files/rus/pdf/articles/2011/ef51679f479c2cb9171920011777aa3f.pdf
За реализацию и исходник прошивки — огромный плюс
Честно говоря, SIM800L избыточна для этого проекта. Из пушки по воробьям. Отлично подошел бы и модуль Neoway 590.
Пробежался по быстрому в интернетах, нашёл ещё один вариант подобной реализации, со своими, конечно, особенностями — сетевое питание, Wi-Fi…
Деньги при оформлении («покупке»)? Зависит от оператора, тарифа и маркетинговых акций. Могут бесплатно раздавать, могут брать 100р и класть их на счёт (т.е. сама карте 0 руб, 100р минимальное первоначальное пополнение счёта). Могут и что-то брать «безвозвратно».
Абонплата в месяц? Брать тариф без включенных минут и/или траффика в месяц, там абонплата ноль.
«Спящие» абоненты для оператора убыточны — денег не приносят, а всю инфраструктуру в готовности на них держать надо. Поэтому все операторы с такими абонентами борятся (с разной степенью злобности).
Простейший метод — пункт мелким шрифтом в тарифе (а менять тарифы оператор имеет право по пункту мелким шрифтом в любом договоре), согласно которому при бездействии номера 60-90-120 дней на нём «включается опция удержания номера» с нехилой абонентной платой (у моего тарифа — кажется 15 руб в сутки), которая высасывает весь остаток до нуля, после чего, согласно тем же тарифам, ещё через 2 месяца номер отключается и поступает в «отстойник» для последующей выдачи новому клиенту.
Так что найти такой тариф, на котором бы можно было неск месяцев не пользоваться и деньги не пропали — вряд ли сумеете.
Народ по-разному извращается (особенно с GSM-сигнализациями, могущими «спать» по пол-года), например раз в месяц шлёт 1 SMS «всё в норме», или настраивает в личном кабинете платёжной системы (на банковской карте, например, или в QIWI-кошельке) автоплатёж 1 руб каждый месяц — если для биллинга оператора зачисление 1руб достаточно чтобы считать номер работающим и сбрасывать «счётчик простоя» в 0 дней.
Помню, народ жаловался на айфоны в метро, когда в тоннелях не было связи, только на станциях. При появлении сигнала он отправлял 1 байт, оператор округлял при разрыве сессии до 1М, 7 станций проехал — 7 мегабайт по 7 рублей улетело…
Что-то не нашёл у нас такого.Не нашёл на сайте в меню, но нашёл поиском пресс-релиз, а в нём перешёл по ссылке:
И есть:
Так что выбор есть.
У Билайна вроде как тоже был подобный тариф, но что-то не нашел его среди действующих сейчас.
Неужели так трудно было поставить нормальный транзистор в "+"?… и не использовать жаргон?
По поводу 1 кОм в затворе — не поверите, но на этом моменте я потратил наибольшее количество времени! Изначально он у меня действительно отсутствовал. Но Arduino абсолютно рандомно перезагружалась при выключении SIM800 (подаче LOW на транзистор). Иногда это происходило, иногда нет, я не мог выявить закономерности. В итоге пришел к выводу что емкости затвора транзистора достаточно (плюс его расположение на металлической крышке gsm модуля), чтобы импульс тока при выключении оного ресетил Ардуино и взял с запасом 1 кОм.
Хуже, когда получаем полу-открытое состояние, при котором мосфет начинает греться.
1й случай — как в моей схеме.
1а. МК сгорает и пин в low — все ОК.
1б. МК сгорает и пин в high — мосфет открыт, модуль высаживает батарею, я не получаю смс.
1в. МК сгорает и пин в неопределенном состоянии — мосфет греется, от него загорается литий, пожар и взрыв =) наихудший случай
2й случай — как Вы предлагаете 1K на управляющем и 10-100K разрядный
2а. То же самое.
2б. То же самое.
2в. В чем принципиальное отличие от 1в? Напряжение на затворе тр-ра может оказаться любым в зависимости от того, что произойдет с МК.
Вы можете и дальше «занудствовать» (или просто послать меня подальше с советами), но был случай, когда в результате такого висящего в воздухе гейта (проводок отвалился) у меня отпаялся силовой мосфет в линии управления небольшой солнечной панелью (токи в районе 2-5А). Т.е. тепла может внезапно оказаться — много.
Спасибо!
Как дополнительное устройство контроля пойдет, но полагаться на него на 100% не приходится.
Я ставил защиту от протечек нептун и заводил ее на отдельную линию со своим дифом. Даже есть возможность поставить небольшой ибп.
Кстати, не совсем понятно, почему счетчики установлены там. Обычно их ставят в сантехшкафу и они являются зоной ответственности жильца.
Включая сбор, опечатку, проверки и т.д. Можно было поставить дублирующие счетчики в квартире и подавать показания с них.
В том виде как УК это реализовала, это форменное извращение.
Еще можно подавать по средним нормативам потребления и раз в пол-года / год проводить корректирующий платеж.
за прямые руки и реализацию, однозначно, зачет!
Ведь «Вода дырочку найдет © народ», и эта дырочка может быть совсем не там, где датчик. А предложенная система гарантированно и глобально покажет, что идет несанкционированное потребление воды
По поводу клапанов на входе в хату, их надо регулярно активировать чтобы не закисли. И ставить приличные шаровые с металлическими шестернями, от того же гидролока. У китайцев они дороже выйдут.
С модемом не всё гладко, правда я его использовал для передачи данных в инет. Пришлось строить контроль коннекта и физическое обрубание питания через реле при зависании, оказалось проще всего. Проблема с коннектом завязана на опсосе, не с каждой симкой всё работало, опсоса пинать, бессмысленая трата времени, поскольку единственый у меня на даче мегафон.
Применение данный «гаджет» может найти ещё много где, включая не только подвалы\коридоры.
Мой плюс, и наилучшие пожелания в дальнейших разработках!
У нас так и сделано, счетчики тепла находятся в коллекторных на этажах, дежурные раз в месяц проходят, и снимают показания.
Что то не припомню таких выводов на ардуино мини.
A0 -14
A1 -15
A2 -16
A3 -17
A4 -18
A5 -19
С помощью команды LowPower.powerDown(SLEEP_500MS, ADC_OFF, BOD_OFF); загоняем МК в сон, в котором он практически ничего не потребляет. Единственный момент — нужно откусить светодиот индикации питания на плате — он крайне прожорливый.
По поводу 16го пина не в курсе. На Ардуино это не нужно.
А, пардон, в более новых кристаллах и в самом деле его прожорливость радикально сохранили. Глянул описание этой функции — да, wdt. Тогда вообще-то потребление устройства должно быть меньше 6 uA.
По возможности измерю потребление в режиме сна без пробуждений.
У меня же состояние пинов определяется (подтягивается к питанию резистором 20кОм внутри МК) непосредственно перед проверкой их состояния на очень короткое время. Так достигается низкий ток потребления.
200 х 2 (т.к. счетчика 2) = 400 мкА.
А теперь сравните с тем, что у меня — 8,5 мкА =)
Надо будет при случае измерить и проверить кто прав. 8,5 мкА хорошее потребление во сне.
У меня esp во сне 20мкА. Кстати! при этом там 2 датчика на i2c шине и утяжка к 3.3 В резисторами. Вот интересно я что потребление без датчиков и утяжки измерял чтоли. Просто у меня уже 6 месяцев аптайм от одного комплекта энелупов(выбрал из-за низкого саморазряда 20 процентов за 5 лет и работа до -20) и +uldo dc-dc.
Если б было как вы считаете и резистор утяжки в 5кОм, то я б уже несколько раз должен был бы батарейки поменять.
Возможно ваша ESPшка перед сном переводи входы/выходы в высокоимпедансное состояние.
Не зная емкости аккумуляторов рассчитать не представляется возможным.
ну и ловим прерывание по rising edge. Соответственно, пока геркон не сработает в счетчике, через резистор ничего не утекает.
эта гипотеза выглядит правдоподобной.
1900mAh.
3.3/5000=660 мкА. 1900mAh/0,66= 2879 часов=120 суток то бишь 4 месяца. И это при учете, что кушает только утягивающий резистор. А у меня уже 6 месяцев аптайм.
Расскажите лучше, каким образом отслеживаете положение ригелей замка.
имеет внутри геркон и работает от литиевой таблетки cr1632 годами.
Оч. интересно, а главное познавательно, особенно респект за скетч!
Мне удавалось выжать 3 микроампера, без всяких библиотек.
Вы 3 мкА на каком контроллере и при каком напряжении выжимали?
* 3. bod Brown Out Detector (BOD) module disable control:
* (a) BOD_OFF — Turn off BOD module
* (b) BOD_ON — Leave BOD module in its default state
Т.е. какое-то управление этим режимом есть.
Был бы сам очень рад узнать как это работает…
В скетч также добавил.
ЗЫ. Очень часто показания можно отправлять по почте, так было бы здорово, если бы ваше устройство сразу писало бы письмо по заданному шаблону с нужными данными прямиком в ЖКХ…
Без ЭЦП — такое принимать к расчетам — не серьезно.
6545612414154 16450 16587
первое — персональный код (постоянный, м.б. серийник счётчика, не сравнивал), второе — старое показание счётчика, третье — новое
Приходят ответы от робота «Спасибо, показания счётчика приняты»
Счета на бумаге приходят — с этими показаниями.
Счётчик — на лестничной площадке, проверяющие могут сверить когда хотят.
Сначала просто засомневался в столь малом потреблении, мне казалось АТМеги больше жрут…
Я у себя сделал подключение литиевой батареи к входу RAW через диод, который, заодно, разделяет питание при подключении ардуины к компу по USB для программирования.
А вот в этом случае питание как раз идет через стабилизатор и по идее ток потребления должен быть повышенный относительно питания через Vcc. Какие у вас показатели?
С потреблением — все плохо, т.к. у меня модуль — не отключаемый, а «засыпает» он у меня несколько странно, т.е. единиц миллиампер я так и не добился (было чуть меньше 100мА).
PS: В качестве рацухи: сделать передачу через телеграм-бот… говорят, есть тариф в меге для домашней автоматизации 50 метров бесплатно…
блэкджеком и шлюхамиавтономностью на 10 лет и веб-приложением. Или даже такое с еще незапущенной в России технологией NB-IoT. Но и стоимость готового изделия в несколько раз выше, чем сделать самому, а процесс работы с железками — бесценен)И такой вариант — насколько вероятен случай, когда контроллер будет просыпаться и считывать одинаковые уровни сигнала, пропуская при этом изменение? Например — проснулся, считал лог. «0» буквально в момент изменения его на лог. «1» (или в момент дркбезга контактов при включении геркона), заснул и через 500 мсек снова считал лог. «0»?
через 500 мс будет по прежнему лог 1, т.к. геркон за это время не успеет изменить состояние (см. первый абзац).
Заказал с Али еще пачку ардуино, а питание стационарное кину от кучи старых зарядок от телефонов.
pinMode(2, INPUT); // Вход с геркона счетчика ГВС
pinMode(3, INPUT); // Вход с геркона счетчика ХВС
Оговорочка!
А почему решили землю рубить у GSM-модуля, а не питание?
Как-то не кошерно, ИМХО.
А вообще идея понравилась — обязательно соберу.
Есть счётчики VALTEc, у него помимо геркона стоят два резистора, называют они это NAMUR, придумано для того что бы отличить обрыв или к.з. он штатной работы. Но импульс он таки всё равно выдаёт, приблизительно раз в 10 литров :)
У автора цена тика в счётчике была 1л и он накидывал 0.5 литра каждое замыкание/размыкание.
В большинстве того что сейчас продают, или в счётчиках вгд20, которые для учёта большего расхода, цена тика 10 литров. Соответственно нужно накидывать по 5л.
Код, я бы порефакторил, но результаты отличные!
Надо ваш транзистор мне для пробуждения ESP использовать.
Моё устройство через Wi-Fi работает:
github.com/dontsovcmc/waterius
Код, я бы порефакторил, но результаты отличные!
Жду статью про GPRS.
Надо ваш транзистор мне для пробуждения ESP использовать.
Моё устройство через Wi-Fi работает:
github.com/dontsovcmc/waterius
Доработки сходу:
1. учитывать дребезг контактов. по форумам, он проскальзывает иногда и показания путаются.
2. добавить отдельно константу «кол-во литров/импульс».
3. может модуль после подключения что-то пишет в порт? ждать 50сек не экономно
4. Можно добавить стабилизатор типа MCP1700 (их можно параллельно подключить для 500мА) и запитать от батареек.
5. 500мс для квартиры ок, если 10л/имп, но если считать пропускную способность счетчика 3м2/час и 1л/сек, то нужно чаще опрашивать. Кажется ~300мс если 1л/сек. Мои счетчики замыкаются от 9 до 3 на циферблате.
6. Можно уменьшить частоту Atmega, чтобы меньше потребляла. Надо графики смотреть, т.к. считывать показания будет линейно медленнее.
7. Я сегодня проверил, опрос входов битовыми масками оптимальнее в… 7 раз для 2-х входов: github.com/dontsovcmc/waterius/issues/67