RSS блога
Подписка
ARDUINO Термометр & гигрометр с E-INK на nRF52 - или то чего еще не выпустили производители.
Приветствую всех читателей блога Mysku!!! В данной статье хочу поделится с Вами очередным своим проектом. Это датчик температу и влажности, который является частью экосистемы MySensors, основной его функционал это мониторинг температуры и влажности в помещении, отправка данных на контролер умного дома или непосредственно на исполнительное устройство. В моей реализации исполнительное устройство это контролер контуров системы отопления. Ну а дополнительным функционалом является как раз вывод данных с датчика sht20, сетевой информации и уровня заряда батареи на монитор.
Идея девайса с таким функционалом «бродила» в голове давно, первая попытка была это сделать на atmega328. И впринципе это было реализовано, но хотелось большей энергоэфективности, более красочного вывода информации на дисплей.
версия на atmega 328
Часто указывают на то то что такие девайсы уже сделаны Сяоми, но разница есть, У Сяоми это показометр, в моем случае это датчик системы умного дома с функцией показометра. Зачем дисплей? Ну просто иногда хочется просто повернуть голову в направлении датчика и посмотреть на температуру в комнате :).
Датчик был реализован на двух платах, за основу схемы для дисплея была взята схема от распостраненных дисплеев Waveshare | Даташит. Правда позднее были внесены незначительные изменения. Дисплеи прибретались пустыми здесь. Мозгом датчика является чип nRF52832 в модульной реализации от HOLYIOT. Сами модули заслуживают отдельного внимания, это самая беспроблемная реализация в плане работы в Ардуино IDE. В устройстве использованы модули — YJ-16048.
За основу програмной реализации работы с диплеем был взят экземпл распостраняемый на сайте Waveshare Electronics. Правда и тут не обошлось без доработки. Замеры потребления дисплея соответствуют заявленным в даташите, самое главное что этот дисплей может спать а на экране остаются данные. Правда переводить в сон дисплей получилось не сразу, реализация от Waveshare этого не позволяла.
Питание в модуле реализовано на двух батарейках cr2450, понижает до рабочих 3.3V микра TPS62745DSSR1 c довольно неплохими характеристиками | даташит. На данный момент можно уверенно сказать что работать устройство способно 1 год точно.
Была проблема с которой я столкнулся это обновление информации на экране. На данных дисплеях доступно частичное обновление нужной области на экране что является безусловным плюсом со стороны энергопотребления, но минусом является появление артефактов в области обновления данных от предыдущих символов.
Но и эту проблему удалось. В итоге получилось так:
Данная реализация не является заключительной, этот проект оставлен для повторения в виде Ардуино модуля. Корпус к нему не планируется. Сейчас из этого проекта родилось сразу несколько как логичесое продолжение. Основные отличия будующей V2 это питание от одной батарейки, трехцветный дисплей, наличие корпуса.
Проект является открытым. Библиотека с кодом доступна на моем личном гугл драйве — drive.google.com/file/d/13wmxCt9XehJr1E2eyG1RnYsQTMb9A2LR/viewНастоятельно рекомендуется к прочтению моя тема на форуме Mysensors по этому проекту (На английском). Так как эта ссылка так же не прошла модерацию то попробую описать некоторые трудности здесь, итак поехали:
Отдельного разговора для решивших повторить этот девайс заслуживает тема конвертации символов нужных шрифтов в C массивы. Мой опыт это конвертация с помощью программы TheDotFactory. (ссылку не даю, но вроде бы гуглится)
Процесс конвертации текстов в C массивы:
Абсолютно любой шрифт, вы ограничены только возможностями памяти nRf52.… И нет смысла хранить все символы, Если вам нужны только цифры, это очень хорошо экономит место.
Список компонентов:
PCB 2 pcs.
SW1, SW2 Buttons clocks cm 2 pcs.
J5 Connector 2x3 P6 1.27mm 1 pcs.
C1, C7, C13, C15, Condenser 100NF X7R 10% 50V 0603 4 pcs.
NRF52832, YJ-16048 1 pcs.
200x200, 1.54inch E-Ink raw display 1 pcs.
D1, LED SIDE SMD 1204 (2012) 1 pcs.
U5, FPC Pitch 0.5mm 24 pins 1 pcs.
L1, CD43 SMD Power Inductor 68uh 1 pcs.
U4, SI1304BDL N-Channel 30 V (D-S) MOSFET 1 pcs.
U2, U3, U6, MBR0530 Schottky Power Rectifier 3 pcs.
C2, C3, C4, C5, C6, C8, C9, C10, C11, Condenser 1UF X5R 10% 16V 0603 9 pcs.
C14, Condenser 10uf 10v 0805 1 pcs.
R7, Resistors 24K 1% 0805 1 pcs.
R5, R6, Resistors 4,7K 1% 0805 2 pcs.
R3, R4, Resistors 10K 1% 0805 3 pcs.
R1, Resistors 1K 1% 0805 1 pcs.
R2, Resistors 3R0 1% 0805 1 pcs.
J1, J2, J3, J4, 2.54mm Connectors Header 4 pcs.
U1, SHT20 Temperature And Humidity Sensor 1 pcs.
U1, U3 Battery holder 2 pcs.
TPS62745DSSR1, TPS62745DSSR 1 pcs.
C2, Condenser 10uf 25v 1206 XTR7 1 pcs.
C1, Condenser 10uf 16v 1206 XTR5 1 pcs.
L1, Inductance 4.7uh 1210
U2, Micro Slide Toggle Switch 1P2T 1 pcs.
R2, Resistors 1M 1% 0805 1 pcs.
R1, Resistors 160K 1% 0805 1 pcs.
Все закупалось на Али, но думаю статья будет перегружена ссылками на товары.
Гербер файлы плат(ссылки на мой личный гугл драйв)
drive.google.com/file/d/1keT2tisy5k0hM1eYpYbmdf_0PLAdC4zI/view?usp=sharing
C радостью помогу всем в чате(установка плат, работа с микроконтролерами nRF5 в среде arduino ide, советы по работе с протоколом — @mysensors_rus
Идея девайса с таким функционалом «бродила» в голове давно, первая попытка была это сделать на atmega328. И впринципе это было реализовано, но хотелось большей энергоэфективности, более красочного вывода информации на дисплей.
версия на atmega 328
Часто указывают на то то что такие девайсы уже сделаны Сяоми, но разница есть, У Сяоми это показометр, в моем случае это датчик системы умного дома с функцией показометра. Зачем дисплей? Ну просто иногда хочется просто повернуть голову в направлении датчика и посмотреть на температуру в комнате :).
Датчик был реализован на двух платах, за основу схемы для дисплея была взята схема от распостраненных дисплеев Waveshare | Даташит. Правда позднее были внесены незначительные изменения. Дисплеи прибретались пустыми здесь. Мозгом датчика является чип nRF52832 в модульной реализации от HOLYIOT. Сами модули заслуживают отдельного внимания, это самая беспроблемная реализация в плане работы в Ардуино IDE. В устройстве использованы модули — YJ-16048.
За основу програмной реализации работы с диплеем был взят экземпл распостраняемый на сайте Waveshare Electronics. Правда и тут не обошлось без доработки. Замеры потребления дисплея соответствуют заявленным в даташите, самое главное что этот дисплей может спать а на экране остаются данные. Правда переводить в сон дисплей получилось не сразу, реализация от Waveshare этого не позволяла.
Питание в модуле реализовано на двух батарейках cr2450, понижает до рабочих 3.3V микра TPS62745DSSR1 c довольно неплохими характеристиками | даташит. На данный момент можно уверенно сказать что работать устройство способно 1 год точно.
Была проблема с которой я столкнулся это обновление информации на экране. На данных дисплеях доступно частичное обновление нужной области на экране что является безусловным плюсом со стороны энергопотребления, но минусом является появление артефактов в области обновления данных от предыдущих символов.
Но и эту проблему удалось. В итоге получилось так:
В итоге получилось так
Демонстрация работы устройсва | обновления экрана
Данная реализация не является заключительной, этот проект оставлен для повторения в виде Ардуино модуля. Корпус к нему не планируется. Сейчас из этого проекта родилось сразу несколько как логичесое продолжение. Основные отличия будующей V2 это питание от одной батарейки, трехцветный дисплей, наличие корпуса.
Проект является открытым. Библиотека с кодом доступна на моем личном гугл драйве — drive.google.com/file/d/13wmxCt9XehJr1E2eyG1RnYsQTMb9A2LR/view
Отдельного разговора для решивших повторить этот девайс заслуживает тема конвертации символов нужных шрифтов в C массивы. Мой опыт это конвертация с помощью программы TheDotFactory. (ссылку не даю, но вроде бы гуглится)
Процесс установки библиотек
Процесс конвертации текстов в C массивы:
Абсолютно любой шрифт, вы ограничены только возможностями памяти nRf52.… И нет смысла хранить все символы, Если вам нужны только цифры, это очень хорошо экономит место.
Список компонентов:
PCB 2 pcs.
SW1, SW2 Buttons clocks cm 2 pcs.
J5 Connector 2x3 P6 1.27mm 1 pcs.
C1, C7, C13, C15, Condenser 100NF X7R 10% 50V 0603 4 pcs.
NRF52832, YJ-16048 1 pcs.
200x200, 1.54inch E-Ink raw display 1 pcs.
D1, LED SIDE SMD 1204 (2012) 1 pcs.
U5, FPC Pitch 0.5mm 24 pins 1 pcs.
L1, CD43 SMD Power Inductor 68uh 1 pcs.
U4, SI1304BDL N-Channel 30 V (D-S) MOSFET 1 pcs.
U2, U3, U6, MBR0530 Schottky Power Rectifier 3 pcs.
C2, C3, C4, C5, C6, C8, C9, C10, C11, Condenser 1UF X5R 10% 16V 0603 9 pcs.
C14, Condenser 10uf 10v 0805 1 pcs.
R7, Resistors 24K 1% 0805 1 pcs.
R5, R6, Resistors 4,7K 1% 0805 2 pcs.
R3, R4, Resistors 10K 1% 0805 3 pcs.
R1, Resistors 1K 1% 0805 1 pcs.
R2, Resistors 3R0 1% 0805 1 pcs.
J1, J2, J3, J4, 2.54mm Connectors Header 4 pcs.
U1, SHT20 Temperature And Humidity Sensor 1 pcs.
U1, U3 Battery holder 2 pcs.
TPS62745DSSR1, TPS62745DSSR 1 pcs.
C2, Condenser 10uf 25v 1206 XTR7 1 pcs.
C1, Condenser 10uf 16v 1206 XTR5 1 pcs.
L1, Inductance 4.7uh 1210
U2, Micro Slide Toggle Switch 1P2T 1 pcs.
R2, Resistors 1M 1% 0805 1 pcs.
R1, Resistors 160K 1% 0805 1 pcs.
Все закупалось на Али, но думаю статья будет перегружена ссылками на товары.
Процесс установки плат nRF5 в среду Ардуино:
Необходим програматор Програматор J-Link или ST-Link V2 (ссылки на Али)
Скачать последнюю версию ARDUINO IDE(Windows Installer) — линк гуглится.
(не рекомендуется скачивать Windows app Requires Win 8.1 or 10)
Запустить ARDUINO IDE.
Перейти в настройки (файл --> настройки)
В открывшемся окне настроек найти пункт «Дополнительные ссылки для менеджера плат»
Ввести ссылку №1
Ввести ссылку №2
Перейти в менеджер плат (инструменты --> плата — > менеджер плат)
В открывшемся окне менеджера плат спустится вниз списка и найти Nordic Semiconductor nRF5 boards by Sandeep Mistry
Нажать на кнопку «установить» (Необходимо набратся терпения, тк в какой-то момент покажется что установка зависла. Не прерывать процесс установки!!!)
Теперь найти плату MySensors nRF5 boards by MySensors, нажать на кнопку «установить»
Установить библиотеку MySensors v2.3.0 — ссылка гуглится
Закрыть ARDUINO IDE
Скачать программу для установки USB драйверов — zadig — ссылка гуглится
Подсоеденить программатор (J-Link или ST-Link) к usb порту компьютера, Запустить программу zadig
Открыть «Options», установить галку «List All Devices»
Выбрать подсоединенный программатор из списка доступных устройств
Ниже под списком устройств, в правой части выбрать устанавливаемый драйвер — WinUSB (v6. 1. 7600. 16385)
Нажать на кнопку «INSTALL»
Желательно перезагрузить компьютер.
Запустить ARDUINO IDE
Подключить програматор в плате NRF5
Выбрать плату (инструменты --> плата --> MySensors nRF5 boards(MyBoardNRF5 nRF51822 или MyBoardNRF5 nRF52832))
Выбрать програматор (инструменты --> програматор) J-Link или ST-Link V2
Открыть скетч репитера MySensors (Файл --> Примеры --> MySensors — Repiter Node)
В скетче закоментировать — // #define MY_RADIO_NRF24 и раскоментировать #define MY_RADIO_NRF5_ESB
Заргузить скетч на плату NRF5 (Скетч --> Загрузить через програматор или просто нажав на иконку — загрузить)
Процесс компиляции достаточно длинный.
Скачать последнюю версию ARDUINO IDE(Windows Installer) — линк гуглится.
(не рекомендуется скачивать Windows app Requires Win 8.1 or 10)
Запустить ARDUINO IDE.
Перейти в настройки (файл --> настройки)
В открывшемся окне настроек найти пункт «Дополнительные ссылки для менеджера плат»
Ввести ссылку №1
https://sandeepmistry.github.io/arduino-nRF5/package_nRF5_boards_index.json
Ввести ссылку №2
https://raw.githubusercontent.com/mysensors/ArduinoBoards/master/package_mysensors.org_index.json
Перейти в менеджер плат (инструменты --> плата — > менеджер плат)
В открывшемся окне менеджера плат спустится вниз списка и найти Nordic Semiconductor nRF5 boards by Sandeep Mistry
Нажать на кнопку «установить» (Необходимо набратся терпения, тк в какой-то момент покажется что установка зависла. Не прерывать процесс установки!!!)
Теперь найти плату MySensors nRF5 boards by MySensors, нажать на кнопку «установить»
Установить библиотеку MySensors v2.3.0 — ссылка гуглится
Закрыть ARDUINO IDE
Скачать программу для установки USB драйверов — zadig — ссылка гуглится
Подсоеденить программатор (J-Link или ST-Link) к usb порту компьютера, Запустить программу zadig
Открыть «Options», установить галку «List All Devices»
Выбрать подсоединенный программатор из списка доступных устройств
Ниже под списком устройств, в правой части выбрать устанавливаемый драйвер — WinUSB (v6. 1. 7600. 16385)
Нажать на кнопку «INSTALL»
Желательно перезагрузить компьютер.
Запустить ARDUINO IDE
Подключить програматор в плате NRF5
Выбрать плату (инструменты --> плата --> MySensors nRF5 boards(MyBoardNRF5 nRF51822 или MyBoardNRF5 nRF52832))
Выбрать програматор (инструменты --> програматор) J-Link или ST-Link V2
Открыть скетч репитера MySensors (Файл --> Примеры --> MySensors — Repiter Node)
В скетче закоментировать — // #define MY_RADIO_NRF24 и раскоментировать #define MY_RADIO_NRF5_ESB
Заргузить скетч на плату NRF5 (Скетч --> Загрузить через програматор или просто нажав на иконку — загрузить)
Процесс компиляции достаточно длинный.
Процесс разблокировки некоторых модулей nRF5:
Проверено в Windows7 и Windows10
Необходим програматор — Програматор J-Link (ссылки на Али)
Если ранее на компьютере использовался програматор J-link, необходимо удалить все драйвера через диспечер устройств, возможно процедуру придется повторить несколько раз.
Далее необходимо скачать драйвер JLINK WINDOWS V640(не гуглится) — dropmefiles.com.ua/file?source=18112314190081213094
Установите драйвер JLINK WINDOWS V640 на компьютер.
Далее скачиваем программу nRFGO STUDIO — гуглится
Устанавливаем. ВАЖНО!!!, при установке програмы будет предложена установка драйверов для JLINK(более рання версия, нам не подходит), — ОТКАЗЫВАЕМСЯ от установки драйверов, тк ранее мы поставили правильные драйвера
Подключаем програматор к модулю nRF52832 по очень простой схеме:
VDD — VDD
GND — GND
SWDIO — SWDIO
SWDCLK — SWCLK
(названия могут немного отличатся, но общий смысл такой, плюс к плюсу, земля к земле, IO к IO, CLK к CLK)
Подключаем програматор к USB компьютера, запускаем програму nRFGO STUDIO
В открывшейся програме должен быть активен пункт — nRF5x Programming (не серого цвета, это произойдет если установили правильные драйвера V640)
Нажимаем на кнопку — Recover
После востановления на следуюшей открывшейся странице можно полностью очистить чип — Erase all
На этом все, модуль разблокирован.
Необходим програматор — Програматор J-Link (ссылки на Али)
Если ранее на компьютере использовался програматор J-link, необходимо удалить все драйвера через диспечер устройств, возможно процедуру придется повторить несколько раз.
Далее необходимо скачать драйвер JLINK WINDOWS V640(не гуглится) — dropmefiles.com.ua/file?source=18112314190081213094
Установите драйвер JLINK WINDOWS V640 на компьютер.
Далее скачиваем программу nRFGO STUDIO — гуглится
Устанавливаем. ВАЖНО!!!, при установке програмы будет предложена установка драйверов для JLINK(более рання версия, нам не подходит), — ОТКАЗЫВАЕМСЯ от установки драйверов, тк ранее мы поставили правильные драйвера
Подключаем програматор к модулю nRF52832 по очень простой схеме:
VDD — VDD
GND — GND
SWDIO — SWDIO
SWDCLK — SWCLK
(названия могут немного отличатся, но общий смысл такой, плюс к плюсу, земля к земле, IO к IO, CLK к CLK)
Подключаем програматор к USB компьютера, запускаем програму nRFGO STUDIO
В открывшейся програме должен быть активен пункт — nRF5x Programming (не серого цвета, это произойдет если установили правильные драйвера V640)
Нажимаем на кнопку — Recover
После востановления на следуюшей открывшейся странице можно полностью очистить чип — Erase all
На этом все, модуль разблокирован.
Гербер файлы плат(ссылки на мой личный гугл драйв)
drive.google.com/file/d/1keT2tisy5k0hM1eYpYbmdf_0PLAdC4zI/view?usp=sharing
C радостью помогу всем в чате(установка плат, работа с микроконтролерами nRF5 в среде arduino ide, советы по работе с протоколом — @mysensors_rus
Самые обсуждаемые обзоры
+46 |
1256
102
|
+71 |
2296
54
|
+30 |
1890
56
|
Один раз прочитать ок, два — тоже ок, а вот регулярно — то весы отвалятся, но их «не слышно» в эфире, то зависнут на середине передачи.
Может быть у кого есть реализация, которая нормально работает?
У меня из BLE нормально и стабильно работают только метки nut-mini %)
опять-же проблема с несколькими устройствами одновременно? как вы ее решаете? есть какой-то общий программный шлюз вычитвания BLE-устройств?
По железу шагнул, например SPI уже 32МГц, а не 8МГц.
BT5 с поддержкой Long Range и использование самоорганизующихся сетей (Bluetooth mesh и Thread).
mysensors-rus.github.io/nrf52840-The-first-steps/
P.S. но есть минус. Почему-то сяоми не хотят в свои устройства авторизацию делать, подключиться может любой желающий без физического доступа к устройству.
habr.com/ru/post/452558/
Очень интересующий вопрос, как часто он шлёт показания?
На MySKU система кармы более адекватная.
Или такая же, но тогда аудитория адекватнее.
Жаль только что муськовчане беднее условных «погромиздов»,
но зато голь на выдумки хитра — поделки интереснее.
Но вот с подключением к умному дому там есть нюансы: как минимум нужен гейт. А при подключении к своей системе типа Домотикс — нужно постараться чтоб еще и напрямую сигнал можно было принять :(
И те же ZigBee устройства видит без шлюзов, если купить ZigBee свисток за 600р. И никаких китайских облаков и шлюзов, система сама в роли шлюза работает.
1. Делать бекапы
2. Не громоздить на одной железке кучу всего
3. Настроил? Работает? Не трогай!
На NAS у меня работает из важного только почта и DNS сервер, остальное мелочи, как файлопомойка, ftp репозиторий, видеонаблюдение… Весь умный дом на малине и orange pi, сервер traccar на nano pi, мессенджер пока на Synology, но уже тестирую матрикс на малине, скоро перейду.
Так что самое страшное, это если микротик сгорит, тут кранты всему, кроме умного дома и наблюдения, они от отдельной системы живут и интернета никогда не видят.
P.S. а так рассуждать если, то любая железка может упасть и любая система может сломаться. На текущий момент я пострадал куда больше от блокировок роскомпозора, нежели чем от поломок своего софта или железа.
при наличии готовых докерфайлов — вообще запросто
docs.mattermost.com/administration/backup.html
docs.mattermost.com/deployment/cluster.html
В принципе, обычно эта услуга немного дороже обходится, но не так, чтоб уж критично
Это да, но многие из тех, кто предоставляет белый ip всё равно гадят, закрывая 25 порт, привет МГТС и Онлайм.
Деваться было некуда, за 280 р в месяц был куплен VPN с белым up, пинг по дольше, но жить можно.
И не важно, у тебя это ПО, или у Яндекса\мейла\гугла..., толтко в последнем случае ещё надо быть уверенным сотрудниках этих компаний и гадать, не сходил ли к ним товарищ майор, не слили ли ему все данные.
Да, и мега сливы паролей топовых сервисов, гигабайтные базы логин\пароль в даркнете тому подтверждение.
Я и не призываю пользоваться общими сервисами и доверять им.
Этого должно более чем хватить для защиты от любителей читать про уязвимости и искать, где бы применить полученные знания. После этого уже можно спать спокойно. У меня не Центробанк дома и не Пентагон, чтоб меня стремились взломать ценой серьёзных усилий.
1) 300 рублей включение статики + 130 руб./мес. абонетка
2) 100 руб./мес. абонентка
3) бесплатный IPv4 но скорость 100 кбит/с
Сравнение с BME280 и AcuRite 77003EM (оба показывают одинаково).
И еще, не нашел сколько устройств можно подключить к системе. Если одно, то это как из пушки по воробьям, а если несколько то их видимо придется как то идентифицировать?
Даже на NRF24 можно сделать несколько каналов
и назначение (хотя бы в общих чертах)
наиболее важных
если не трудно
habr.com/ru/post/510102/
«Дисплеи прибретались пустыми здесь. Мозгом датчика является чип nRF52832 в модульной реализации от HOLYIOT.»
битые. (выделено жирным и подчеркиванием)
Причем пару раз после перемещения слайдера, меня выкидывало назад на вашу статью… еле добрался 8)))
Запитывающейся от эфирных помех? :)
Основная преимущество проекта автономность. Имеется в виду ионистр или конденсатор который бы собирал энергию от той же лампочки или из «нульпространства» если рядом есть источники.
Ах, да! Хабр!
Ардуино термометр & гигрометр с E-PAPER на nRF52832 — или о том, что забыли выпустить производители
https://habr.com/ru/post/452532/
Просто лишат некоторых плюшек, если попадет в призеры по итогам месяца :)
там можно в новости набигать и каменьтить без премодерации, кстати
на первый комментарий к любому посту (кроме новостей),
— должны или редакторы одобрить,
или автор топика
Тут вроде только на халяву могут прислать.
Какие призы топчикам месяца?
Нет, пока в наших магазинах похоже будут бумажные ярлычки )))
Программироваться они могут автоматически: в магазине где-нить под потолком висит базовая станция на сотню-другую ярлыков, которая связана по сети с базой данных. Изменилась информация о товаре в БД — станция автоматически обновила по воздуху соответствующий ценник. Китайцы эти решения уже давно предлагают :)