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 2×3 P6 1.27mm 1 pcs.
C1, C7, C13, C15, Condenser 100NF X7R 10% 50V 0603 4 pcs.
NRF52832, YJ-16048 1 pcs.
200×200, 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.
Все закупалось на Али, но думаю статья будет перегружена ссылками на товары.
Скачать последнюю версию 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 (Скетч —> Загрузить через програматор или просто нажав на иконку — загрузить)
Процесс компиляции достаточно длинный.
Необходим програматор — Програматор 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
- Беспроводной мини датчик температуры и влажности с E-PAPER дисплеем
- Часы "Ракета" 2609.НА или бессмертный шедевр 70-х.
- Часовой калибр "Ракета 2609Б 21 камень", или приквел калибра "Ракета 2609.НА 19 камней".
- Реставрация полки образца 1967 года
- Трицикл из гироскутера/мини-сигвея: cборка, прошивка и настройка.
- Готовим на алюминиевой сковороде на индукционной плите
- Часы "Слава" 2414, 21 камень или минимализм в стиле bauhaus.
- Интернет на даче
- Теплые ламповые часы. Приложение: схема, прошивка.
- Теплые ламповые часы. Часть первая.