STM32L051 + RFM69 + Android / Хабр
Добрый день, уважаемые хабровчане! Несколько лет назад я купился на красочную рекламу zWave и установил себе оконные датчики, базирующиеся на этом протоколе. К домашнему серверу был подключен USB zWave-Stick, который играл роль контроллера, написан небольшой модуль на Java, который получал данные с этого контроллера, а также написано небольшое приложение для Андроида, которое красиво отображало состояние всех датчиков. Батарейки вставлены, датчики зарегистрированы на контроллере, все заработало. Но через пару месяцев наступило жесточайшее разочарование. Во первых, данные zWave датчики работают по принципу «послать сообщение и, не ожидая подтверждения, заснуть». В моем случае это привело к тому, что сигнал от наиболее дальних от контроллера датчиков просто не доходил до контроллера. Не помогла даже установки дополнительного zWave-повторителя. Во-вторых, они настолько быстро садили батарейку, что примерно через шесть месяцев работать переставали все датчики.Кому интересно, прошу под кат.
Как мне кажется, zWave в моем случае оказался неработоспособным по двум причинам: в доме два этажа с железобетонным межэтажным перекрытием и большая площадь (то есть значительное удаление некоторых датчиков от контроллера).
Мой первый прототип датчиков базировался на ESP8266. Контроллер — на базе моей платы, о которой я уже писал на Хабре. В качестве прототипа система даже заработала, но пришлось от нее отказаться по двум причинам. Первая причина та же самая — в доме оказались закутки с очень низким уровнем сигнала WiFi, что привело к очень большому времени активации ESP8266 при пробуждении и, как следствие, к сильному разряду батарейки. Хотя я допускаю, что просто не умею правильно готовить эту самую ESP8266 (статьи вроде этой подтверждают такой тезис). Но вторая причина оказалась более серьезной. Так как я решил оставить не только корпус, но и батарейный отсек, то был ограничен батарейкой CR123A, которая на 3.
Второй прототип был проводной. Сделал прототип как датчика, так и USB-контроллера, дописал серверный модуль, чтобы он этот контроллер понимал дополнительно к zWave-Stick. Была идея постепенно тянуть провода и датчик за датчиком менять zWave-плату на проводную. Но ковырять стены в конечном итоге не стал и этот прототип также отбросил.
Потом решил посмотреть в сторону радиомодулей на 433 и 868 MHz и заказал несколько модулей для экспериментов: RFM69HCW, A110LR09A и MRF89XAM8A. По размерам модуля, цене, а также из-за наличия как библиотек, так и хороших примеров остановился на RFM69HCW, который и лег в основу системы.
В системе получилось всего четыре компонента:
- беспроводные датчики (433 MHz, батарейка CR123A 3.0V),
- сетевой контроллер (433 MHz, питание по USB от сервера)
- сервер (о котором я уже писал на Хабре в этой статье) и серверный программный модуль
- мобильный клиент (Андроид-приложение)
Датчики
В датчиках используется радиомодуль RFM69HCW. Он имеет широкий диапазон рабочего напряжения (1.8V-2.4V 17dBm, 2.4V-3.6V 20dBm) и управляется через SPI. То есть нужен микроконтроллер. Некоторое время назад я познакомился с серией STM32L и заказал для экспериментов STM32L051. В ней меня подкупил как небольшой ток в режиме сна (0.27 μA), так и рабочее напряжение, практически идентичное напряжению радиомодуля (1.65V-3.6V). Плюс низкая цена.Получилась такая схема:
Напряжение питания как микроконтроллера, так и радиомодуля таковы, что их можно напрямую запитать от элемента CR123A. STM32L051 имеет внутренний источник опорного напряжения, подключенный к каналу 17 АЦП, а также калибровочное значение этого источника, что позволяет измерять текущее значение напряжения питания VDD. Радиомодуль подключен к питанию через полевик Q1, что позволяет управлять его питанием с микроконтроллера.
Режим сна реализован переводом микроконтроллера в «Standby». В этом режиме у STM32L051 отключено ядро, практически вся периферия и внутренний регулятор напряжения, что обеспечивает потребление на уровне 0.29 μA (при отключенных часах реального времени). Но в этом режиме есть особенность — микроконтроллер пробуждается только по восходящему фронту сигнала на пине WKUP (А0). Так как используется магнитный переключатель, который двухпозиционный (замкнут или разомкнут), то нужен небольшой блок, который генерирует импульс небольшой длительности как при замыкании, так и при размыкании магнитного контакта. Этот импульс подается на вход А0 микроконтроллера и пробуждает его. Такой преобразователь реализован на микросхеме IC3 «Исключающее ИЛИ» энергоэффективной серии 74AUP (74AUP1G86), которая работает в диапазоне напряжений 0.8V-3.6V и потребляет 0.2 μA. Таким образом, общее потребление в режиме сна должно быть в районе 0.5 μA, что подтверждается измерениями на полностью собранном датчике.
Когда микроконтроллер просыпается, он сначала измеряет напряжение питания и, если оно меньше 1.
Если же напряжение батарейки больше 1.8 вольта, то микроконтроллер включает и инициализирует радиомодуль, передает состояние на сетевой контроллер и ожидает подтверждения. В пакет данных входят уникальный 32х-битный номер пакета (события), напряжение батарейки, температура, состояние магнитного контакта, контрольный байт (CRC7). В случае успешного подтверждения микроконтроллер засыпает обратно. Если нет, то высылает статус снова, но максимум 10 раз. Такую границу я установил, чтобы датчик не пытался до бесконечности ждать ответа в ситуации, когда сетевой контроллер просто выключен. Последний переданный уникальный номер события хранится во внутренней EEPROM памяти микроконтроллера.
Во время передачи данных микроконтроллер мигает светодиодом (куда же без этого). Светодиод включается при помощи ШИМ, где скважность зависит от текущего значения напряжения, что позволяет иметь практически одинаковую яркость практически во всем диапазоне рабочего напряжения.
Платы спроектированы в EagleCAD, проект плат доступен здесь. Платы двухсторонние: на верхней стороне, обращенной к раме окна, размещен микроконтроллер и его обвязка, а на нижней, обращенной в комнату — радиомодуль и светодиод. Заказывал в Китае, паял сам в обычной кухонной духовке (верхний слой) и феном (нижний слой).
Радиомодулю нужна антенна. Это просто кусочек провода длинной 164 мм.
После монтажа каждый датчик нужно программировать, для чего предусмотрен разъем SWD. Остальные контакты на плате я оставил ради возможных экспериментов в будущем.
Прошивка написана на С++, часть кода вынесена в достаточно универсальные базовые классы, которые инкапсулируют вызовы библиотеки ST HAL. Исходный код лежит здесь. Для разработки использовалась System Workbench for STM32. Размер итогового двоичного файла прошивки 22 kB.
А вот так выглядит датчик в корпусе:
В зависимости от положения датчика, для некоторых датчиков я оставил антенну снаружи (на фоне белой рамы ее, впрочем, не видно), а для некоторых датчиков изогнул провод в рамку и полностью запихал внутрь корпуса.
Ради интереса подсчитал стоимость компонент для одного датчика (по ценам каталога Mouser, цена и итоговая стоимость в евро)
Элемент | Описание | Значение | Номер MOUSER | Кол-во | Стоимость |
IC3 | Исключающее ИЛИ | 1G86 | 771-74AUP1G86GW-G | 1 | 0.254 |
IC1 | Микроконтроллер | STM32L051 | 511-STM32L051K6T6 | 1 | 2.14 |
SV1 | Разъем | SWD | 68602-406HLF | 1 | 0. 157 |
LED1 | LED 3 мм | 3mm | 630-HLMP-K155 | 1 | 0.351 |
Q1 | BSh305 | 771-BSh305G2R | 1 | 0.276 | |
S1 | Магнитный контакт | ORD211-0810 | 876-ORD211-0810 | 1 | 0.625 |
IC2 | RFM69HCW радиомодуль | RFM69HCW | 474-COM-13910 | 1 | 5.36 |
C1, C2, C3, C6 | SMD конденсатор | 0. 1uF | 80-C0805C104J5RAC | 4 | 0.1 |
C5 | SMD конденсатор | 0.4nF | C0805C471K8HACTU | 1 | 0.021 |
C4 | SMD конденсатор (тантал) | 47uF | 581-TAJR225K016RNJ | 1 | 0.334 |
R1 | SMD резистор | 10K | 660-RK73h3ATTDD1002F | 1 | 0.01 |
R10 | SMD резистор | 330 | 660-RK73h3ATTDD3300F | 1 | 0.01 |
R3, R4, R6, R7, R8, R11 | SMD резистор | 47K | 660-RK73h3ATTDD4702F | 6 | 0. 06 |
R5 | SMD резистор | 56 | 660-RK73h3ATTD56R0F | 1 | 0.013 |
R9 | SMD резистор | 56M | 603-RC0805JR-0756ML | 1 | 0.037 |
9.748 |
Сетевой контроллер
Для контроллера использовался тот же самый радиомодуль и такой же микроконтроллер, как и для датчиков. Это позволило переиспользовать большую часть кода прошивки. Для контроллера я выбрал такой форм-фактор платы, чтобы использовать готовый корпус от Raspberry Pi. По сравнению с датчиком, добавился разъем для внешней антенны и контур USB на базе FT232RL и изолятора SI-8621. Конечно, вместо этого можно было бы взять какой-нибудь STM32 с USB на борту. Но тогда, во первых, пришлось бы разделять код прошивки и, во-вторых, самому заниматься программной реализацией USB. Вариант со внешней FT232RL хоть и дороже, но надежней и быстрее в реализации. В результате получилась такая схема:А в собранном виде получилось вот так:
Микроконтроллер здесь в сон не уходит, радиомодуль работает на прием, но после успешного приема пакета с любого из датчиков модуль переходит в режим передачи и отправляет подтверждение приема. Кроме этого, любой успешно принятый пакет передается по USB на сервер. Формат пакета — это строка значений, разделенных символом «;»:
GW;3;12;-57;0;146;30;18
где:
- первая позиция — метка пакета (всегда «GW»)
- вторая позиция — тип данных (статус датчика или код ошибки)
- третья позиция — номер датчика
- четвертая позиция — качество сигнала на стороне сетевого контроллера (RFM69HCW сохраняет качество сигнала во время приема и позволяет опросить его, когда прием закончен)
- пятая позиция — состояние окна (0 открыто, 1 закрыто)
- шестая позиция — уникальный номер пакета (события) с датчика. Этот номер позволяет на стороне сервера контролировать, все ли события были получены сервером или одно или несколько событий были утеряны.
- седьмая позиция — актуальное напряжение батарейки (30 соответствует 3.0V)
- последняя, восьмая позиция — температура с внутреннего датчика микроконтроллера. Пока еще не придумал, как это можно использовать
Стоимость сетевого контроллера получилась выше за счет USB-контура, антенны и дополнительных разъемов. Но этой добавкой можно пренебречь, так как контроллер один. Но даже с учетом этой добавки он также получился в три раза дешевле, чем zWave-Stick, который был перед этим на его месте.
Серверный модуль
Сетевой контроллер подключен к серверу, который работает под управлением CentOS 7. На сервере запущена программа, написанная на Java. И по своей структуре, и по реализации, и по задачам программа достаточно простая:- При помощи очень древней и, вроде бы, больше не поддерживаемой библиотеки RxTx мониторится указанный в конфигурации USB порт (в моем случае /dev/ttyUSB0). На данный момент это самый плохо оптимизированный участок всей системы, так как библиотека сильно грузит процессор сервера.
- В случае поступления данных с USB-порта, они записываются в лог-файл и сохраняются в классе состояния датчиков. При перезагрузке сервера состояние теряется. Чтобы его восстановить, нужно пройтись по всему дому и вручную открыть и закрыть все окна. Наверное, это самый большой недостаток моей системы, но я вполне сознательно отказался от периодического опроса датчиков ради экономии их батарейки.
- Приложение также является небольшим TCP/IP сервером и слушает TCP/IP порт указанный в конфигурации. По этому порту оно может принимать соединения от мобильного клиента.
- В случае, если мобильный клиент подсоединяется к серверу, он высылает текущее состояние всех датчиков. Также при помощи периодических heartbit-сообщений сервер отслеживает активность соединения.
- Сервер и мобильный клиент обмениваются сообщениями в формате XML. Эти сообщения реализованы в виде небольшой Java-библиотеки, которая совместно используется как на стороне сервера, так и на стороне мобильного Андроид-приложения.
- Хоть большого смысла это пока не имеет, но ради интереса я добавил функцию авторизации мобильного клиента по IMEI, а также AES-шифрование сообщений между сервером и клиентом по ключу, зашитому в исходный код (Java-пакет javax.crypto). Но это так, чисто для эксперимента, так как TCP/IP порт этого серверного модуля доступен только из внутренней сети и снаружи не виден. Хотя, если я захочу открыть этот порт в большой мир, то теперь делать это будет не так страшно.
Мобильный клиент (Андроид-приложение)
Тут много не напишешь, несмотря на то, что это приложение и есть конечный результат всего проекта. Это стандартное и очень простое Java-приложение с тремя вкладками: состояние окон первого этажа, состояние второго этажа, и небольшая телеметрия сервера (см. исходный код здесь):В основе графики лежит набор SVG-файлов, которые в виде стека рисуются друг над другом в зависимости от состояния датчиков. Поддерживается долгое нажатие в области каждого окна, по которому отображается подсказка со временем, во сколько это окно было открыто:
В принципе, ничего не мешает добавить в эту подсказку пиктограмму заряда батарейки, но руки пока не дошли.
Опыт эксплуатации
«Каждый чих» записывается в лог-файл на стороне сервера. Анализ этих файлов за последние 5 месяцев позволяет немного подробнее понять, как же эта система себя чувствует.Анализ очень простой — просто grep в папке лог-файлов на сервере.
Сколько было ошибок передачи данных по радио-каналу? За 5 месяцев зарегистрировано 8 ошибок, когда получено сообщение неправильного размера и 25 ошибок неверного CRC. В обеих случаях нельзя напрямую сказать, с каким датчиком были проблемы, так как пакет данных в этом случае полностью поврежден. Так как сетевой контроллер во всех этих случаях прием данных не подтверждает, то датчик должен высылать данные по новой, что в большинстве случаев эти ошибки исправляет.
А вот сводная таблица по работе датчиков за 5 месяцев.
Этаж | Датчик | Количество Событий |
Потерянных Событий |
Напряжение Батареи |
Медиана Мощности Сигнала |
1 | 10 | 105 | 0 | 3. 1 | -66 |
1 | 11 | 52 | 0 | 3.3 | -70 |
1 | 12 | 122 | 0 | 3.3 | -61 |
1 | 13 | 89 | 0 | 3.3 | -74 |
1 | 14 | 2573 | 0 | 3.3 | -68 |
1 | 15 | 261 | 0 | 3. 3 | -60 |
1 | 16 | 543 | 2 | 3.3 | -70 |
1 | 17 | 156 | 2 | 3.3 | -74 |
1 | 18 | 177 | 2 | 3.2 | -68 |
1 | 19 | 384 | 3 | 3.3 | -56 |
2 | 3 | 368 | 2 | 3. 3 | -62 |
2 | 4 | 86 | 0 | 3.3 | -71 |
2 | 5 | 521 | 2 | 3.3 | -59 |
2 | 6 | 115 | 0 | 3.3 | -62 |
2 | 7 | 316 | 2 | 3.3 | -63 |
2 | 8 | 419 | 1 | 3. 3 | -60 |
2 | 9 | 89 | 0 | 3.3 | -68 |
Датчик №14 установлен на входной двери, именно поэтому у него такое большое количество срабатываний. Но на напряжении батарейки такое большое число срабатываний пока не отразилось.
Потерянное событие — это когда датчик пытался отправить состояние, но сервер его так и не подтвердил. Все потерянные события связаны с тем, что я отключал сервер примерно на полдня для чистки.
В колонке «Медиана мощности сигнала» показано медианное значение RSSI (в dBm), где каждое отдельное значение получено после завершения приема каждого пакета. Датчик с самым лучшим сигналом (№19, -56 dBm) находится на расстоянии 2 метров в прямой видимости от сетевого контроллера, но вот антенна в этом датчике свернута рамкой внутри корпуса. Сам сетевой контроллер находится на первом этаже. Однако сигнал с датчиков второго этажа очень даже неплох. Это связано с тем, что на всех датчиках второго этажа антенна вынесена из корпуса датчика.
Вместо послесловия
С одной стороны я рад, что самостоятельно, в качестве хобби получилось с нуля спроектировать, собрать и запустить систему такого уровня. И еще больше рад, что она работает лучше «фирменной» системы, базирующейся на хайповой технологии zWave. Также есть куда развивать и улучшать эту систему. Меня только гложут небольшие сомнения. А именно, что человек без профильного электротехнического образования собирает на коленке нечто, что работает надежнее фирменных продуктов известных в узких кругах IOT-брендов. Наверное, прогресс свернул куда-то не туда.Самодельные сенсорные переключатели и электронные кнопки
Сенсорные устройства зарекомендовали себя надежно и неприхотливо в различных радиолюбительских «штучках». Они позволяют сберегать кнопки с механическими контактами и плоские клавиатуры и привносят в устройство некоторую оригинальность.
Применять сенсоры можно практически в любом электронном устройстве как прибор, коммутирующий каналы информации или какую-либо нагрузку.
Ограничение для сенсоров только одно- оно вытекает из физического объяснения работы системы. Сенсоры бесполезны в лесах, на природе и вдали от электрических коммуникаций, иногда ненадежно работают в поселках в домах с земляным полом.
Ведь сенсор улавливает наведенное в теле человека небольшое переменное напряжение 0,05…0,5 В от находящихся рядом проводов электросетей.
Если заземлить человека одновременно с касанием сенсорного контакта намеренно или случайно взяться за токопроводящую водопроводную коммуникацию, то эффекта от электрических наводок также не будет, все они уйдут «в землю». Далее рассмотрим два разных схемных решения, объединенных эффектом сенсора.
Схема сенсорного переключателя
На рисунке 1 представлена схема сенсорного триггера с двумя сенсорами, иными словами сенсорное реле. Рассмотрим работу схемы на примере блока 1 (блок 2 аналогичен блоку 1).
С помощью коаксиального кабеля от телевизионной антенны конденсатор С1 подключают к небольшой токопроводящей площадке F1, с максимальными размерами 60×60 мм.
Длина коаксиального соединения может достигать 1 м. Экран кабеля подключают к общему проводу. Конденсатор С1 пропускает сетевые наводки от тела человека с частотой 50 Гц.
Рис. 1. Принципиальная схема сенсорного переключателя с двумя кнопками.
Диоды VD1, VD2 выпрямляют переменное напряжение наводок и через ограничивающий резистор R1 оно поступает на вход первого инвертора. Полевые транзисторы на входе логического элемента обладают высокой чувствительностью и кроме инверсии сигнала еще и усиливают его.
Резистор R2 необходим для нейтрализации ложных срабатываний от помех из-за колебания входных токов элемента D1.1. На выходе элемента импульсный сигнал свободно проходит через конденсатор С2 (гальваническую развязку) и уже имеет форму меандра сетевой частоты, который детектируется диодами VD3, VD4 и сглаживается конденсатором C3.
Далее фронт импульса (при касании сенсора) усиливается и дважды инвертируется логическими элементами D1.2, D1.3. С вывод 8 микросхемы К561ЛА7 фронт импульса проходит через диод развязки VD6 и управляет триггером Шмитта на элементе D2.1.
Элемент D2.1 находится в состоянии ожидания за счет делителя напряжения R4R5. Низкий логический уровень, поданный на вход D2.1 через диод VD7 от блока 2, переключит элемент (на его выходе появится и будет удерживаться состояние высокого логического уровня) — транзисторный ключ откроется, включит реле.
Оно своими контактами коммутирует маломощную нагрузку. Высокий логический уровень, поступивший на вход триггера Шмитта через диод VD6 от блока 1, перебросит триггер в другое устойчивое состояние, транзисторный ключ на VT1 закроется и реле отключит нагрузку.
Диод VD5 препятствует броскам обратного напряжения при коммутации реле, защищая транзистор. Напряжение питания схемы может варьироваться от +5 до +15 В.
При максимальных значениях напряжения питания чувствительность сенсорного устройства уменьшается, поэтому необходимо точнее подобрать значения элементов R1, R2, R3 и конденсаторов С1, С2.
Наилучшие результаты получены при эксплуатации схемы с питающим стабилизированным напряжением в интервале +5…+8 В. Исполнительное реле также следует подбирать исходя из питающего напряжения схемы.
Чувствительный сенсор
На рисунке 2 представлена очень чувствительная сенсорная схема, реагирующая на прикосновение человека к сенсорной пластине Е1 даже через перчатки или одежду.
Рис. 2. Схема простого самодельного сенсорного переключателя с высокой чувствительностью на 555.
В схеме предусмотрены регулировки чувствительности (переменный резистор R4) и задержки срабатывания (переменный резистор R1). Популярная микросхема DA1 КР1006ВИ1 включена по стандартной схеме.
После воздействия на сенсор через 2…10 с (задержка определяется значениями элементов времязадающей цепи R1R2C1) на выводе 3 появляется исходный низкий уровень напряжения.
Транзистор VT1 закрывается, но не выключает реле, так как используется тиристор VS1 в ключевом режиме. Реле будет находиться во включенном состоянии до тех пор, пока не будет (хотя бы кратковременно) нарушена цепь питания схемы переключателем S1.
Контакты реле К1 коммутируют цепь маломощной нагрузки. Схему можно использовать универсально — как сигнальное устройство или устройство управления любой маломощной активной нагрузкой.
Резистор R4 исключать из схемы нельзя, так как без него устройство работает ненадежно. Он задает смещение тиристору и тем самым регулирует его порог срабатывания.
Если все элементы схемы правее точки А (по схеме) исключить, то получится надежный сенсорный узел, где выход DA1 (вывод 3) будет способен управлять любыми электронными устройствами. Размах управляющего напряжения в этом случае составит 2/3 напряжения питания.
Сенсорный модуль на К1564ТЛ2
На рисунке 3 показана схема простого сенсора на микросхеме К1564ТЛ2 с передаточной характеристикой триггеров Шмитта. Касание сенсоров Е1 и Е2 вызывает устойчивое состояние соответственно высокого (лог. 1) и низкого (лог. 0) логического уровня на выходе элемента D1.1 (вывод 2).
Рис. 3. Принципиальная схема простого сенсора на микросхеме К1564ТЛ2.
При замыкании токопроводящим предметом (например, пальцем) сенсора подается лог. 0 на один из входов триггера. При одновременном замыкании обоих сенсоров система остается в первоначальном состоянии.
Литература: А. П. Кашкаров, А. Л. Бутов — Радиолюбителям схемы, 2008.
Самодельные датчики для начинающих: выбор технологий и коммуникаций — Оборудование
вбах #1Привет,
Я только начал играть с Home Assistant на Raspberry PI 3 и ищу рекомендации о том, какую аппаратную платформу и технологию связи выбрать для датчиков.
Я хотел бы установить датчики температуры/влажности/движения в несколько комнат в моем доме, сделать «автоматизацию гаража» и еще несколько мероприятий. Половина или больше этих датчиков должны работать от батареек, поэтому я думаю, какую платформу выбрать. Насколько я понимаю, Wi-Fi платы не будут долго работать от батареи. Другие популярные коммуникационные технологии могут быть менее энергоемкими, но либо требуют дополнительных мостов, либо недостаточно стабильны.
Я в порядке с самодельной электроникой, пайкой и написанием сценариев, у меня есть несколько запасных плат Arduino и Raspberry Pi Zero Wireless, я тоже смотрю на ESP8266, но также готов попробовать что-то новое.
Буду признателен за рекомендации, какую архитектуру/технологии выбрать и куда двигаться дальше.
Большое спасибо,
Влад
Привет @vbakh и добро пожаловать в наше сообщество!
В нашем разделе форума «Поделитесь своими проектами» вы найдете множество проектов, использующих ESP8266, и несколько для Arduino и Raspberry.
Взгляните на видео Bruh на YouTube, в частности: https://www. youtube.com/watch?v=jpjfVc-9IrQ&t=693s
Вы также можете посмотреть MySensors для получения дополнительных идей.
Я не питаюсь от батареи — это пока приемлемый вариант для самодельного датчика (могу ошибаться).
Но если это необходимо для вас, я настоятельно рекомендую продукты Xiaomi, для которых требуется шлюз для подключения всего, но у меня есть много разных датчиков от Xiaomi, работающих более года на батареях, и поскольку они имеют большой набор датчиков, переключателей и источников света. это только 1 дополнительный шлюз, и они относительно дешевы
1технофил (1 технофил) #3Здравствуйте,
Это действительно зависит от уровня DIY, который вы хотите, если я проведу класс (меньше DIY, чтобы больше DIY), вот что я знаю:
- Датчики Xiaomi действительно, готовый датчик и шлюз
- Дешевые датчики 433 МГц, готовые датчики и шлюз DIY (RFLink или OpenMQTTGateway), вы можете найти готовый шлюз, который постоянно отправляет, но не получает
- Arduino Uno + датчик (проблема в сроке службы батареи)
- Мотеино малой мощности
- Джиноде малой мощности
- Майсенсоры
- ESP32 + датчики https://youtu. be/r75MrWIVIw4 или ESP8266
- Atmega328p или другой автономный микроконтроллер + датчик
мощность батареи подходит для DIY, но вы должны знать, что делаете, и действительно снижать энергопотребление. Например, я намерен сделать датчик воды на основе nodemcu с батарейным питанием. Мне придется модифицировать nodemcu, чтобы избавиться от некоторых энергоемких частей, но я могу отключить Wi-Fi, следить за водой в состоянии очень низкого энергопотребления, а затем включить Wi-Fi, чтобы сообщить об обнаружении воды.
Теоретически вы можете построить радиочастотный детектор движения 433 МГц или 2,4 ГГц, но это требует больше усилий, чем оно того стоит, поскольку вы все равно можете просто купить датчик движения 433 МГц по дешевке.
Стоуп (Стоуп) #5Хорошо, возможно, для датчика воды может потребоваться более длительное время, но приличный датчик температуры или датчик воздуха / дыма или пир-датчики, как долго они могут работать без замены батарей?
первый из 9 (первый из 9) #6Я использую доски для перьев от Adafruit с их батареями LiPo емкостью 1200 мАч и кодом MySensors. С моими PIR и DHT22 мои узлы обычно работают около 4-6 месяцев, прежде чем им потребуется перезарядка.
Робмарккоул (Робин) #7Касса Circuitpython
вбах #8Спасибо, ребята, я проверю предоставленные вами ссылки и информацию. Это правильная страница для датчиков Xiaomi? Я не вижу никаких продуктов для умного дома на их веб-сайте в США и вижу лишь несколько на amazon.com — похоже, они официально не продают их в США.
В любом случае, я немного потерялся в различных сетевых/коммуникационных технологиях, используемых в домашней автоматизации — во всех этих ZigBee, Z-wave, RFM69, LoRa и т. д. Есть ли какая-нибудь хорошая статья/пост, сравнивающая их с точки зрения домашней автоматизации?
вбах #9П. С. Неважно — я нашел полезную информацию и ссылки в документации HASS
1technophile (1 технофил) #10Мой датчик температуры 433 МГц работает больше года и каждый час отправляет данные для информации.
1 Нравится
1технофил (1 технофил) #11У меня нет поста, но вот характеристики, которые их отличают:
- стоимость входа
- подписка стоит
- диапазон
- безопасность
- скорость передачи данных
- подтверждение
- срок службы батареи
- стоимость интеграции (нужен ли отдельный шлюз)
- уровень DIY
И если мы перечислим технологии для сравнения, у нас есть:
- Wi-Fi
- GSM
- блютуз
- блютуз BLE
- зигби
- цвейв
- 433 МГц ООК, СПРОСИТЕ
- 433 МГц RFM69
- ЛОРА
- SIGFOX
Вы нашли что-то подобное в документации HASS?
1 Нравится
вбах #12Нет, но я начал читать про zwave
Спасибо!
Стоуп (Стоуп) №13Всем привет!
Прежде всего, поздравляю с датчиком @1technophile, выглядит потрясающе!
@nordlead2005, @firstof9, @1technophile
Я не имел в виду, что это невозможно, я просто думаю, что это не такой сильный жизнеспособный вариант по сравнению с проводными датчиками.
Я предпочитаю подключать его к стене, и если я не внесу в него никаких изменений, мне никогда не придется об этом беспокоиться.
нордлид2005 (Нордлид, 2005 г.) №14Я согласен, что проводной вариант лучше для начала и в большинстве ситуаций. Батарейные датчики следует сохранить на тот случай, когда нецелесообразно подключать их к стене. Например, кто-то спрашивал о беспроводных датчиках для гаражных ворот, но в гараже с проводной связью все просто, так как питание есть, а внешний вид не имеет большого значения. Для обнаружения воды под некоторыми из моих раковин это почти невозможно.
Моя самая большая проблема с батареями — это когда у вас есть 20 устройств, и все они работают от батареек 3AA, и вам приходится менять их случайным образом в течение года.
первый из 9 (первый из 9) №15Вот почему я использую аккумуляторы LiPo емкостью 1200 мАч. Циклы перезарядки 4-6 месяцев вполне управляемы, и вы также можете настроить отчет о состоянии батареи. Если все, что он делает, это обнаружение воды, вы, вероятно, можете продлить цикл до 12 месяцев и получать отчет датчика только, скажем, ежечасно или раз в два часа.
Доктор Джефф (Доктор Джефф) №16Положи меня на землю ради моих сенсоров! Один esp8266 для моста и несколько Arduino pro minis 3v3 являются ключевыми для батареи или нет, а также некоторые радиостанции nrf24. Существует большое сообщество, которое провело тестирование, и результаты показывают, что не нужно изобретать велосипед. Я играл с неоптимизированным датчиком влажности, работающим на паре батареек типа C, в течение длительного времени, более года. Единственным модом было удаление встроенного светодиода.
Самодельные датчики — PiCockpit | Контролируйте и управляйте своим Raspberry Pi: бесплатно до 5 Pi!
Узнайте, как создавать собственные датчики. Это просто, быстро и почти ничего не стоит. Кроме того, вы узнаете много нового о датчиках.
Посмотрите наше видео, если вам не хочется читать.
Как работают датчики
Существует бесчисленное множество типов датчиков. Датчики для измерения температуры, света, звука или силы, и это лишь некоторые из них. Каждый датчик устроен по-своему, и постоянно проводятся исследования, чтобы сделать их еще лучше.
Тем не менее, большинство датчиков работают по похожему принципу. По сути, это переменный резистор, который реагирует на измеряемый вход.
Сопротивление – RВ качестве примера рассмотрим датчики температуры. Для многих материалов удельное сопротивление увеличивается с повышением температуры. Кроме того, большинство металлов очень хорошо проводят тепло, а это значит, что они быстро реагируют на изменения температуры.
Медь – CuИтак, если вы измерите сопротивление очень тонкой медной проволоки, оно будет увеличиваться почти в реальном времени при повышении температуры.
Датчик температуры ПримерЭто изменение сопротивления может быть измерено для расчета температуры.
Теперь, когда вы знаете, как работает большинство датчиков, давайте создадим наши собственные датчики!
Требования
Эти материалы очень дешевы, и, вероятно, большинство из них есть у вас дома.
Датчик давления | Датчик изгиба | Датчик вибрации |
Картон | Картон | Резистор (10 кОм) |
Алюминиевая фольга | Алюминиевая фольга | Медный провод (одножильный) |
Лента | Лента | Болт или винт диаметром ~ 3 мм |
Клей | Клей | Пистолет для горячего клея |
Ножницы | Ножницы | |
Медная проволока | Медная проволока | 9027 5 |
Карандаш | Карандаш | |
Бумага | Бумага |
Датчик давления
Вырежьте два квадрата 2×2 см из картона, один квадрат 2×2 см из бумаги и два квадрата 2×2 см из алюминия фольга. Для контактов можно использовать медный провод или перемычки. Отрежьте 4 см медного провода или перемычки и обязательно удалите изоляцию. Наконец, используйте карандаш, чтобы полностью заштриховать обе стороны бумажного квадрата черным цветом.
Примечание Если у вас дома есть Velostat, вы можете использовать его вместо заштрихованного бумажного квадрата.
Теперь все готово к сборке.
Датчик давленияВозьмите картонный квадрат и нанесите клей на одну сторону. Приклейте контакт так, чтобы он был немного рядом с центром и выступал примерно на 2 см. Накройте все одним из квадратов алюминиевой фольги.
Датчики давления и изгибаТеперь соберите идентичную копию из оставшегося картона, контакта и алюминиевой фольги. После этого поместите заштрихованный бумажный квадрат между квадратами из алюминиевой фольги, как бутерброд – картон, проволока, алюминиевая фольга, бумага, алюминиевая фольга, проволока, картонный бутерброд.
Чтобы завершить сборку, плотно обмотайте все лентой.
Датчик изгиба
Датчик изгиба подобен датчику давления, разница только в размере. Для датчика гибкости вам нужно разрезать что-либо на прямоугольники, а не на квадраты.
Flex sensorЯ использовал прямоугольники 1×6 см, потому что мне нужен этот формат для будущего проекта.
Есть предположения, что это может быть? Оставляйте их в комментариях 😀
Датчик вибрации
Собрать датчик вибрации очень просто. Оберните медную проволоку вокруг винта, чтобы получить пружину. Затем выпрямите одну из сторон. Это служит контактом позже. Пружина должна быть очень шаткой. Я использовал медную проволоку диаметром 0,6 мм и нашел, что 5 см будет хорошей окончательной длиной пружины.
Датчик вибрацииТеперь приклейте резистор к пружине с помощью пистолета для горячего клея. Один из лидов будет вторым контактом. Другой стержень должен быть идеально отцентрирован, пока клей сохнет, чтобы он не касался пружины.
Датчик вибрацииНа неподвижном стадионе резистор и пружина не соприкасаются и, следовательно, ток не может течь. Как только датчик вибрирует из-за удара, резистор и пружина касаются и замыкают цепь.