MySensors. Часть-1. Ведение

02:21

До какого-то момента, все устройства моей системе умного дома были представлены промышленными моделями от белорусской компании «Ноолайт» и самодельными на базе ESP8266. Если к первым вопросов особо не возникало (ну, может разве, кроме частоты в 433МГц на которой они работают и достаточно высокой стоимости), то ESP8266 из-за своего количества загадили домашний Wi-Fi так, что их пришлось выносить в отдельную подсеть на отдельный роутер. В общем с какого-то времени я стал недолюбливать Wi-Fi устройства и в один прекрасный момент мне подвернулся под руку проект Mysensors.

MySensors:

Mysensors, это собственно открытая библиотека для платформы Arduino и др, активно разрабатываемая сообществом. Данную библиотеку можно подключить практически к любому проекту в Arduino IDE и получить возможность передавать в сеть MySensors свои данные. Существует большое кол-во готовых скетчей для подключения всевозможных датчиков и исполнительных устройств.

MySensors может функционировать на базе радиоканала 2,4ГГц (и это не Wi-Fi), используя приемо-передатчики NRF24L01+; RFM69; RFM95 (LoRa); nRF5x… Так же система может работать с проводным интерфейсом на базе RS485. 

К MySensors можно подключить:

  • всевозможные датчики: метео, качества воздуха, освещенности, движения, открытия-закрытия, затопления, газа, дыма, IR, RFID, кнопки (выключатели) и т.п.
  • исполнительные устройства: реле, диммеры и т.п.
  • устройства вывода: LCD, OLED и т.п  

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

На базе MySensors можно создавать энергоэффективные батарейные ноды с потреблением в несколько микроампер. 

MySensors интегрирован практически во все популярные открытые системы умных домов.

Структура сети:

Цитата из Википедии:

«Устройства MySensors создают виртуальную радиосеть узлов, которая автоматически формирует структуру с самовосстановлением. Каждый узел может передавать сообщения другим узлам для покрытия больших расстояний с помощью простых приемопередатчиков ближнего действия. Каждый узел может иметь несколько датчиков или исполнительных механизмов, подключенных и взаимодействующих с другими узлами сети.»

В общем и целом сеть MySensors состоит из шлюза (MYS Gateway), необязательных узлов  повторителей (R) и узлов датчиков и актуаторов (S и A). Шлюзов может быть несколько, например, один для радиосети, а второй для проводной. 

Радио сеть строится автоматически, новые узлы (ноды) автоматически получают уникальный номер  (MY_NODE_ID) в момент регистрации на контроллере. Этот номер сохраняется в энергонезависимой памяти (EEPROM) ноды. И в дальнейшем, даже после перепрошивки используется именно он. EEPROM можно очистить, загрузив специальный скетч, после чего контроллер выдаст узлу новый номер. Номер можно принудительно указать в скетче в директиве:

1
#define MY_NODE_ID xxx

где xxx  — номер ноды от 1 до 254.
Сеть на базе RS485 не позволяет автоматически присваивать новым узлам номера, т.к. эти номера используются для для транспортного протокола и без присвоенного вручную номера нода не сможет подключиться к контроллеру в принципе. Исключение составляют те ноды, которые уже использовались в сети MySensors и в их EPROM сохранился MY_NODE_ID. Он и будет использован для транспорта на RS485 и он же отобразится на контроллере УД (необходимо контролировать уникальность MY_NODE_ID)

В простейшем случае для построения сети MySensors понадобится один шлюз и один узел. В сети даже есть примеры как с одного узла управлять другим, минуя контроллер УД. Эту схему можно использовать для децентрализации управления, что бы, например, включение/выключение освещения не зависело от работы контроллера УД.  Но в полноценной системе, конечно не обойтись без контроллера.

Шлюз:

Шлюзы могут различаться по типу подключения к сети MySensors (радиоканал или провода) и по типу подключения к контроллеру УД (Serial, Wi-Fi, Ethernet и прямое подключение, когда контроллер УД является шлюзом). Так же для подключения шлюза к контроллеру УД могут быть использованы разные протоколы (TCP-IP, MQTT… )

Самым быстрым вариантом создания шлюза, как мне кажется, будет связка ESP8266 + NRF24L01+.

Именно так я и поступил для начала, но Вы же помните о моей нелюбви к устройствам Wi-Fi, поэтому следующее, что я сделал, это прикрутил радио модуль NRF24L01+ напрямую к RaspberryPi 3, на котором у меня установлена система Majordomo.

Так же я собрал Ethernet шлюз для сети RS485.

Датчики:

Сами сенсоры проще всего строить на связке arduino pro mini (atmega328) и NRF24L01+, но также широко распространены варианты на NRF5x модулях. 

В следующих частях на своих примерах я более подробно опишу сборку всех компонентов системы MySensors.

отсюда

Далее

MySensors - Подключение радио

02:17

Приемопередатчик NRF24L01 + и RFM69 взаимодействует с платой Arduino через интерфейс SPI.

Важно всегда подавать на радио стабильный и не шумный источник питания 3,3 В, обеспечивающий достаточный ток для вашего устройства, иначе могут возникать неустойчивая связь, плохой диапазон и чувствительность.

См. Примечания об использовании регулятора напряжения или развязывающего конденсатора.

NRF24L01+ & Arduino

ПРИМЕЧАНИЕ: Входные контакты на NRF24L01 + имеют толерантность 5 В. Однако, вы не можете питать модуль более чем 3.3V на VCC. Если вы используете 5V Arduino, вам нужно использовать понижающий регулятор!

Pro Mini / Nano Mega NRF24L01+ Color
GND GND GND Чёрный
5VReg -> 3.3V 3.3V VCC Красный
9 49 CE Оранжевый
10 53 CSN/CS Жёлтый
13 52 SCK Зелёный
11 51 MOSI Синий
12 50 MISO Фиолетовый
2 2 IRQ Серый

Вывод IRQ нужен для подключения только, если в эскизе определен MY_RX_MESSAGE_BUFFER_FEATURE. Использование этой функции требуется только для узлов или шлюзов с высоким трафиком. Включение его приведет к повышению пропускной способности, но для обработки сообщения потребуется дополнительная память.

Если вы используете Arduino Mega, к вашему эскизу необходимо добавить следующее, перед подключением MySensors.h:

 

NRF24L01+ & ESP8266

Это также работает с платами на базе ESP8266, такими как NodeMCU и Wemos D1 Mini.

NodeMCU Radio Comment
GND GND Чёрный
3V3 VCC Красный
D2 CE Оранжевый
D8 CSN/CS Жёлтый
D5 SCK Зелёный
D7 MOSI Синий
D6 MISO Фиолетовый

Примечание: IRQ в настоящее время не используется библиотекой MySensors, поэтому его можно оставить не подключенным.

RFM69 & Arduino

ПРИМЕЧАНИЕ: NSS, MOSI и SCK не являются толерантным к 5V на RFM69. Вам нужно будет использовать конвертер уровня, если вы используете 5V Arduino.

Arduino RFM69 Color
 GND GND  Чёрный
3.3V VCC Красный
10 NSS Жёлтый
13 SCK Зелёный
11 MOSI Синий
12 MISO Фиолетовый
2 DI00 Серый
  ANA Антенна

RFM69 & ESP8266

Это также работает с другими платами на базе ESP8266, такими как NodeMCU и Wemos D1 Mini.

ESP8266 RFM69 Color
 GND  GND  Чёрный
3.3V VCC Красный
D1 DIO0 Серый
D5 SCK Зелёный
D6 MISO Фиолетовый
D7 MOSI Синий
D8 NSS Жёлтый
  ANA Антенна

Для вышеуказанного подключения необходимо использовать следующие строки:

Шлюз и узлы могут использовать одно и тоже подключение, но имейте в виду, что RFM радио использует все контакты, с которыми легко работать, кроме D2, поэтому подключение чего-либо дополнительного может быть сложным. Вместо этого используйте Arduino, если хотите подключить что-то ещё.

Настройка MySensors для RFM69

MySensors настроен на использование радио NRF24 по умолчанию. Чтобы использовать RFM69, необходимо добавить следующее строки: перед подключением MySensors.h

Основные определения для радио не High Power 868Mhz, и Atmel 328p (mini pro, nano, uno и т. д.):

И если вам нужна расширенная конфигурация, вам нужно добавить следующие определения:

Подробнее об этом можно узнать здесь: https://www.mysensors.org/download/sensor_api_20

Примечание. Драйвер Mysensors RFM69 управляется прерываниями.

Антенна RFM69

ВАЖНО: Вы ДОЛЖНЫ установить антенну на плату. Антенна должна быть одножильной, а не многожильной (не подходит для антенны). Если включить без антенны, передатчик может сгореть.

Взяв провод нужной длины, вы можете создать простую антенну для RFM69 радио. В зависимости от частоты радио, антенна должна быть разной длины. Сделайте вашу антенну немного длиннее, чтобы можно было припаять ее к вашей плате. Вы всегда можете обрезать её после пайки.

Частота Длина (дюймы) Длина (мм)
434 MHz 6.47″ 164.7 мм
868 MHz 3.22″ 82.2 мм
915 MHz 3.06″ 77.9 мм

Вышеуказанная длина антенны составляет 1/4 волны. Есть также в продаже готовые антенны нужной длины.

Советы:

  • Прямой провод будет работать лучше для всего диапазона и чувствительности.
  • Для устройства с ограниченным пространством, вы можете намотать антенну. Конечно, это ухудшит ваш диапазон, но он по-прежнему будет приличный и конкурентоспособный. Уже было проверено, что подойдёт для вашего случая. Катушка будет работать лучше, если следовать некоторым правилам https://github.com/OpenHR20/OpenHR20/wiki/2.1)—433-MHz-and-868-MHz—Antenna-Design-Examples

Подключение развязывающего конденсатора

Если у вас плохой прием или переданные данные не доходят до адресата, попробуйте добавить развязывающий конденсатор в 4.7 — 47μF (точный размер обычно не имеет значения) между 3.3В и GND как можно ближе к передатчику.

Конденсатор Радио Коментарии
— пин GND Чёрный провод радио
+ пин 3.3V Красный провод радио

Сторона с отметкой «<- <-» должна быть подключена к GND

Подключение регулятора напряжения

ПРИМЕЧАНИЕ. Если вы используете мини-версию Arduino Pro Mini 5V (которой нет регулируемого выхода на 3,3 В), вам нужно будет подключить регулятор 5V-> 3,3 В между Arduino и Radio.

Arduino Регулятор Радио
5V Vin  
  Vout VCC

 

отсюда

Далее

Karadio - интернет радио на базе ESP32

02:13

Это вторая статья о замечательном проекте Karadio, который создан хорошим программистом и я уверен человеком, - JP Cocatrix. Страница всех его проектов на Github.
Но речь пойдет сегодня о новой ступени развития проекта Karadio - интернет радио на базе ESP32.
Постараюсь очень четко и по делу написать в помощь тем, кто, как и я плохо понимает иностранные языки, электронику.  Однако, иметь такое интересное радио хочется всем. Будет и просто перевод с github и мои дополнения.

Проект находится на стадии тестирования,  уверен, это скоро изменится. Для вывода звука можно исплользовать внутренний DAC (ЦАП), находящийся в ESP32 или подключить внешний DAC, например такой на Aliexpress.Ссылка может перестать работать, но можно поиском найти по запросу I2S PCM5102 DAC или просто I2S DAC. 
При использовании внутреннего DAC ничего не нужно, кроме усилителя, например PA8403 (с регулятором громкости даже). Либо использовать уже знакомую нам связку ESP32 и VS1053, при этом будет возможность прослушивать потоки AAC, чего нельзя сказать о режиме DAC или PDM. На режиме PDM я не буду останавливаться, потому что смысл будет такой же, как и у внутреннего DAC. Я попробовал включить этот режим, но шум сильный, как во время дождя. Автор Karawin пояснил, что нужна фильтрация. Я не стал заморачиваться, потому что с внутренним DAC качество воспроизведения меня удовлетворило. Если что можно применить внешний DAC или VS1053. Еще есть режим I2SMERU для подключения какого-то особого усилителя, можете сами разузнать.
Сначала займемся прошивкой ESP32. Будем говорить о заливке уже скомпилированной прошивки в память. Все необходимое для прошивки можно взять тут. Программа для прошивки здесь. Сама прошивка в нескольких файлах тут и тут. Скриншот программы, поясняющий куда и что заливать тут. Все выставляете, как написано, но пути к прошивочным файлам у вас могут быть свои (не стоит использовать пути с кириллическими символами, лучше только латиницей). Т. е. распаковываете все файлы для прошивки в отдельную папку (можно назвать ее Flash) на диске C: , потом путем нажатия на многоточия в конце строк прописываете аккуратно все пути к этим файлам. Правее в поле вводите то, что написано, на скриншоте.
 

 

Все остальное прописываете, как на скрине, кроме порта COM, его вы меняете на свой. посмотреть его можно в Диспетчере устройств, при подключении ESP32 появится COM порт (если драйверы вы уже поставили). Драйверы зависят от вашей операционной системы  и типа USB- COM адаптера, который установлен на вашей ESP32. Скорость BAUD как на картинке. Подключаете ESP32 к компьютеру и нажимаете START (у меня было так, никаких кнопок на самой плате я не нажимал). Ждете окончания прошивки и отключаете плату от USB. Можно приступать к соединению всей периферии.

Схема соединений

Сильно схеме не доверяйте, доверяйте только себе, но нарочно я не ввожу в заблуждение. Батарейки изображены условно, необходимо подключить 5В. Сегодня измерял ток потребления 0,15А при малой громкости. Блока питания на 0,5 - 1А должно хватить. Питание зависит от усилителя.
Итак,  если вы используете VS1053, то соединения такие:
 VS1053----ESP32 (номера GPIO)

XCS-----  GPIO_NUM_32
RST-----  GPIO_NUM_12
XDCS----- GPIO_NUM_33
DREQ----- GPIO_NUM_34
MISO----- GPIO_NUM_19
MOSI----- GPIO_NUM_23
CLK-----  GPIO_NUM_18
 
У меня номера GPIO указаны на самой плате или смотрите распиновку
Если используете внешний DAC по I2S, то соединения такие:
I2S DAC----ESP32
LRCK-------- GPIO_25
BCLK------- GPIO_26
DATA------- GPIO_22
Если используете DAC самой платы ESP32, то GPIO 25 и 26 подключаете к правому и левому каналу усилителя, а также соединяете GND усилителя и GND ESP32. GPIO 22 при этом не нужен. Также и для PDM режим, только надо будет выбрать его в web интерфейсе и все (ну и про фильтр вспомните для этого режима).
На данный момент поддерживается использование дисплея  OLED SSD1306 128x64.
Подсоединяем так:
SSD1306-----ESP32
 
SCL------ GPIO_14
SDA------ GPIO_13
МСС -----3.3v (или 5v)
GND-------GND
 
 
Энкодер:
DT-------GPIO_16
CLK ----  GPIO_17
SW------- GPIO_5
GND ---GND
+-----+5V
 
 
Дополнительно можно подключить светодиод для индикации работы радио ---GPIO 4.

Включение 

Проверяете все соединения и подключаете питание. На схеме показано общее питание для всей схемы, но предпочтительнее использовать отдельное питание для ESP32 и усилителя, для того, чтобы избежать дополнительных шумов. В режиме DAC при общем питании шумы я не заметил и качество хорошее. Смотрите сами. 
Через некоторое время после включения ESP32 создаст точку доступа WifiKaradio с IP адресом 192.168.4.1. Подключаетесь к этой сети с компьютера и в браузере переходите по этому IP. Переходите на вкладку SETTING и находите настройки Wifi. Вписываете данные своего роутера и нажимаете Validate, радио может перезагрузиться. В роутере ищите какой адрес IP выдан радио. В некоторых роутерах можно оставить автоматическую раздачу IP (DHCP), но для отдельных устройств назначить постоянные адреса, чтобы каждый раз не отгадывать IP.
 
 
После перезагрузки переходите в SETTING в Sound Setting и выбираете режим вывода звука, затем нажимаете Validate.

После перезагрузки можете приступить к формированию своего списка радиостанций или скачать уже созданный на вкладке SETTING---Playlist.



 Сегодня поговорим о добавлении к Karadio32 внешней платы DAC PCM5102. При выводе 
через эту плату звук стал более чистым и появились басы. При минимальной громкости в Web 
интерфейсе искажений никаких нет.
На плате есть выход Line Out для подключения внешнего усилителя. Наушники в этот разъем 
не подключить, звука никакого нет абсолютно. 

Схема соединений.

Схему подсказал пользователь сообщества Karadio.
 
PCM5102              ESP32
LCK                         GPIO25
BCK                        GPIO26
DIN                          GPIO22
XMT(XSMT)           подтянуть к +5в через резистор 10кОм
FMT                          GND
SCL(SCK)                 GND
 
 
Могут быть незначительные различия в названиях пинов PCM5102, но догадаться можно.
Также на плате есть пины для подключения внешнего усилителя (у меня это PAM8403)  LOUT LROUT AGND. Питание подал 5в.
При использовании данной платы нужно выставить режим I2S в Web интерфейсе Karadio.
 
Далее

Дом-дурачок 2.0

02:10

Итак, вы решили добавить немного киберпанка в своё будничное существование. Хотите чтобы подсветка в коридоре включалась когда вы ночью крадетесь поссать или кофе утром заваривался одной кнопкой прямо из постели. Умный дом, интернет вещей, IoT или как там всё в этом году это называют. Буду по-старинке называть это всё #домдурачок, так на мой взгляд точнее.

Недавно я переехал в новую квартиру и решил заморочиться по домашней автоматизации. Раз уж покупать лампочки, то почему бы не взять сразу умные. Захожу в гугл, а там и HomeKit, и Alexa, и Philips Хуе, и целое ведро электроники от Xiaomi. Спалось весьма беспокойно. Никто ж не сказал, что для умного дома тоже надо быть умным.

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

читать