Товары из Китая

ARDUINO Термометр & гигрометр с E-INK на nRF52 — или то чего еще не выпустили производители.


ARDUINO Термометр & гигрометр с E-INK на nRF52 - или то чего еще не выпустили производители.

Приветствую всех читателей блога Mysku!!! В данной статье хочу поделится с Вами очередным своим проектом. Это датчик температу и влажности, который является частью экосистемы MySensors, основной его функционал это мониторинг температуры и влажности в помещении, отправка данных на контролер умного дома или непосредственно на исполнительное устройство. В моей реализации исполнительное устройство это контролер контуров системы отопления. Ну а дополнительным функционалом является как раз вывод данных с датчика sht20, сетевой информации и уровня заряда батареи на монитор.

Идея девайса с таким функционалом «бродила» в голове давно, первая попытка была это сделать на atmega328. И впринципе это было реализовано, но хотелось большей энергоэфективности, более красочного вывода информации на дисплей.

версия на atmega 328

ARDUINO Термометр & гигрометр с E-INK на nRF52 - или то чего еще не выпустили производители.

Часто указывают на то то что такие девайсы уже сделаны Сяоми, но разница есть, У Сяоми это показометр, в моем случае это датчик системы умного дома с функцией показометра. Зачем дисплей? Ну просто иногда хочется просто повернуть голову в направлении датчика и посмотреть на температуру в комнате :).

ARDUINO Термометр & гигрометр с E-INK на nRF52 - или то чего еще не выпустили производители.

Датчик был реализован на двух платах, за основу схемы для дисплея была взята схема от распостраненных дисплеев Waveshare | Даташит. Правда позднее были внесены незначительные изменения. Дисплеи прибретались пустыми здесь. Мозгом датчика является чип nRF52832 в модульной реализации от HOLYIOT. Сами модули заслуживают отдельного внимания, это самая беспроблемная реализация в плане работы в Ардуино IDE. В устройстве использованы модули — YJ-16048.

ARDUINO Термометр & гигрометр с E-INK на nRF52 - или то чего еще не выпустили производители.

За основу програмной реализации работы с диплеем был взят экземпл распостраняемый на сайте Waveshare Electronics. Правда и тут не обошлось без доработки. Замеры потребления дисплея соответствуют заявленным в даташите, самое главное что этот дисплей может спать а на экране остаются данные. Правда переводить в сон дисплей получилось не сразу, реализация от Waveshare этого не позволяла.

Питание в модуле реализовано на двух батарейках cr2450, понижает до рабочих 3.3V микра TPS62745DSSR1 c довольно неплохими характеристиками | даташит. На данный момент можно уверенно сказать что работать устройство способно 1 год точно.

Была проблема с которой я столкнулся это обновление информации на экране. На данных дисплеях доступно частичное обновление нужной области на экране что является безусловным плюсом со стороны энергопотребления, но минусом является появление артефактов в области обновления данных от предыдущих символов.

ARDUINO Термометр & гигрометр с E-INK на nRF52 - или то чего еще не выпустили производители.

Но и эту проблему удалось. В итоге получилось так:

В итоге получилось так
ARDUINO Термометр & гигрометр с E-INK на nRF52 - или то чего еще не выпустили производители.

ARDUINO Термометр & гигрометр с E-INK на nRF52 - или то чего еще не выпустили производители.

ARDUINO Термометр & гигрометр с E-INK на nRF52 - или то чего еще не выпустили производители.

ARDUINO Термометр & гигрометр с E-INK на nRF52 - или то чего еще не выпустили производители.

Демонстрация работы устройсва | обновления экрана

Данная реализация не является заключительной, этот проект оставлен для повторения в виде Ардуино модуля. Корпус к нему не планируется. Сейчас из этого проекта родилось сразу несколько как логичесое продолжение. Основные отличия будующей V2 это питание от одной батарейки, трехцветный дисплей, наличие корпуса.

Проект является открытым. Библиотека с кодом доступна на моем личном гугл драйве — drive.google.com/file/d/13wmxCt9XehJr1E2eyG1RnYsQTMb9A2LR/view Настоятельно рекомендуется к прочтению моя тема на форуме Mysensors по этому проекту (На английском). Так как эта ссылка так же не прошла модерацию то попробую описать некоторые трудности здесь, итак поехали:

Отдельного разговора для решивших повторить этот девайс заслуживает тема конвертации символов нужных шрифтов в C массивы. Мой опыт это конвертация с помощью программы TheDotFactory. (ссылку не даю, но вроде бы гуглится)

Процесс установки библиотек
ARDUINO Термометр & гигрометр с E-INK на nRF52 - или то чего еще не выпустили производители.

ARDUINO Термометр & гигрометр с E-INK на nRF52 - или то чего еще не выпустили производители.

Процесс конвертации текстов в C массивы:

ARDUINO Термометр & гигрометр с E-INK на nRF52 - или то чего еще не выпустили производители.

ARDUINO Термометр & гигрометр с E-INK на nRF52 - или то чего еще не выпустили производители.

ARDUINO Термометр & гигрометр с E-INK на nRF52 - или то чего еще не выпустили производители.

ARDUINO Термометр & гигрометр с E-INK на nRF52 - или то чего еще не выпустили производители.

ARDUINO Термометр & гигрометр с E-INK на nRF52 - или то чего еще не выпустили производители.

ARDUINO Термометр & гигрометр с E-INK на nRF52 - или то чего еще не выпустили производители.

ARDUINO Термометр & гигрометр с E-INK на nRF52 - или то чего еще не выпустили производители.

ARDUINO Термометр & гигрометр с E-INK на nRF52 - или то чего еще не выпустили производители.

ARDUINO Термометр & гигрометр с E-INK на nRF52 - или то чего еще не выпустили производители.

ARDUINO Термометр & гигрометр с E-INK на nRF52 - или то чего еще не выпустили производители.

ARDUINO Термометр & гигрометр с E-INK на nRF52 - или то чего еще не выпустили производители.

ARDUINO Термометр & гигрометр с E-INK на nRF52 - или то чего еще не выпустили производители.

Абсолютно любой шрифт, вы ограничены только возможностями памяти 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.

Все закупалось на Али, но думаю статья будет перегружена ссылками на товары.

Процесс установки плат nRF5 в среду Ардуино:
Необходим програматор Програматор J-Link или ST-Link V2 (ссылки на Али)

Скачать последнюю версию ARDUINO IDE(Windows Installer) — линк гуглится.

(не рекомендуется скачивать Windows app Requires Win 8.1 or 10)

ARDUINO Термометр & гигрометр с E-INK на nRF52 - или то чего еще не выпустили производители.

Запустить 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

Нажать на кнопку «установить» (Необходимо набратся терпения, тк в какой-то момент покажется что установка зависла. Не прерывать процесс установки!!!)

ARDUINO Термометр & гигрометр с E-INK на nRF52 - или то чего еще не выпустили производители.

Теперь найти плату MySensors nRF5 boards by MySensors, нажать на кнопку «установить»

ARDUINO Термометр & гигрометр с E-INK на nRF52 - или то чего еще не выпустили производители.

Установить библиотеку MySensors v2.3.0 — ссылка гуглится

Закрыть ARDUINO IDE

Скачать программу для установки USB драйверов — zadig — ссылка гуглится

Подсоеденить программатор (J-Link или ST-Link) к usb порту компьютера, Запустить программу zadig

Открыть «Options», установить галку «List All Devices»

Выбрать подсоединенный программатор из списка доступных устройств

Ниже под списком устройств, в правой части выбрать устанавливаемый драйвер — WinUSB (v6. 1. 7600. 16385)

ARDUINO Термометр & гигрометр с E-INK на nRF52 - или то чего еще не выпустили производители.

Нажать на кнопку «INSTALL»

Желательно перезагрузить компьютер.

Запустить ARDUINO IDE

Подключить програматор в плате NRF5

Выбрать плату (инструменты —> плата —> MySensors nRF5 boards(MyBoardNRF5 nRF51822 или MyBoardNRF5 nRF52832))

ARDUINO Термометр & гигрометр с E-INK на nRF52 - или то чего еще не выпустили производители.

Выбрать програматор (инструменты —> програматор) J-Link или ST-Link V2

Открыть скетч репитера MySensors (Файл —> Примеры —> MySensors — Repiter Node)

В скетче закоментировать — // #define MY_RADIO_NRF24 и раскоментировать #define MY_RADIO_NRF5_ESB

Заргузить скетч на плату NRF5 (Скетч —> Загрузить через програматор или просто нажав на иконку — загрузить)

ARDUINO Термометр & гигрометр с E-INK на nRF52 - или то чего еще не выпустили производители.

ARDUINO Термометр & гигрометр с E-INK на nRF52 - или то чего еще не выпустили производители.

Процесс компиляции достаточно длинный.

ARDUINO Термометр & гигрометр с E-INK на nRF52 - или то чего еще не выпустили производители.

ARDUINO Термометр & гигрометр с E-INK на nRF52 - или то чего еще не выпустили производители.

Процесс разблокировки некоторых модулей nRF5:
Проверено в Windows7 и Windows10

Необходим програматор — Програматор J-Link (ссылки на Али)

Если ранее на компьютере использовался програматор J-link, необходимо удалить все драйвера через диспечер устройств, возможно процедуру придется повторить несколько раз.

Далее необходимо скачать драйвер JLINK WINDOWS V640(не гуглится) — dropmefiles.com.ua/file?source=18112314190081213094

Установите драйвер JLINK WINDOWS V640 на компьютер.

Далее скачиваем программу nRFGO STUDIO — гуглится

ARDUINO Термометр & гигрометр с E-INK на nRF52 - или то чего еще не выпустили производители.

Устанавливаем. ВАЖНО!!!, при установке програмы будет предложена установка драйверов для JLINK(более рання версия, нам не подходит), — ОТКАЗЫВАЕМСЯ от установки драйверов, тк ранее мы поставили правильные драйвера

Подключаем програматор к модулю nRF52832 по очень простой схеме:

VDD — VDD

GND — GND

SWDIO — SWDIO

SWDCLK — SWCLK

(названия могут немного отличатся, но общий смысл такой, плюс к плюсу, земля к земле, IO к IO, CLK к CLK)

ARDUINO Термометр & гигрометр с E-INK на nRF52 - или то чего еще не выпустили производители.

Подключаем програматор к USB компьютера, запускаем програму nRFGO STUDIO

В открывшейся програме должен быть активен пункт — nRF5x Programming (не серого цвета, это произойдет если установили правильные драйвера V640)

ARDUINO Термометр & гигрометр с E-INK на nRF52 - или то чего еще не выпустили производители.

Нажимаем на кнопку — Recover

После востановления на следуюшей открывшейся странице можно полностью очистить чип — Erase all

ARDUINO Термометр & гигрометр с E-INK на nRF52 - или то чего еще не выпустили производители.

На этом все, модуль разблокирован.

Гербер файлы плат(ссылки на мой личный гугл драйв)

drive.google.com/file/d/1keT2tisy5k0hM1eYpYbmdf_0PLAdC4zI/view?usp=sharing

C радостью помогу всем в чате(установка плат, работа с микроконтролерами nRF5 в среде arduino ide, советы по работе с протоколом — @mysensors_rus


СМОТРИ ТАКЖЕ

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *