Flashing the firmware via cc2538-bsl

10:27

Method without Docker

Prepare your system (debian based)

Install python and python-pip.

sudo apt update && sudo apt install python3 python3-pip

Install needed python packages.

sudo pip3 install pyserial intelhex

Download cc2538-bsl

Create a directory named "cc2538-bsl", download the last master of cc2538-bsl as tarball and extract in same folder.

mkdir cc2538-bsl
cd cc2538-bsl
curl -sSL https://github.com/JelmerT/cc2538-bsl/archive/refs/heads/master.tar.gz | tar xz --strip 1

The sonoff feature is in the master since 20.01.2022.

Download the Firmware

Download the firmware for your adapter from the Supported adapter page and unzip it in the c2538-bsl directory. So everything needed is in one folder.

In this case we will flash CC1352P2_CC2652P_launchpad_coordinator_***.zip .

wget https://github.com/Koenkk/Z-Stack-firmware/raw/master/coordinator/Z-Stack_3.x.0/bin/CC1352P2_CC2652P_launchpad_coordinator_20221226.zip
unzip CC1352P2_CC2652P_launchpad_coordinator_20221226.zip
sudo python3 cc2538-bsl.py -ewv -p /dev/ttyUSB0 --bootloader-sonoff-usb ./CC1352P2_CC2652P_launchpad_coordinator_20221226.hex

-ewv means Mass erase, write, verify
-p is the port on which your device is running, in this case /dev/ttyUSB0
--bootloader-sonoff-usb means that the bootloader is activated by the script, by toggeling RTS and DTR in the correct pattern for Sonoff USB dongle (remove this if your device is not a Sonoff dongle).

If the flash process was successfully done, an output like this appears:

sonoff
Opening port /dev/ttyUSB0, baud 500000
Reading data from ../CC1352P2_CC2652P_launchpad_coordinator_20221226.hex
Your firmware looks like an Intel Hex file
Connecting to target...
CC1350 PG2.0 (7x7mm): 352KB Flash, 20KB SRAM, CCFG.BL_CONFIG at 0x00057FD8
Primary IEEE Address: 00:00:00:00:00:00:00:00
Performing mass erase
Erasing all main bank flash sectors
Erase done
Writing 360448 bytes starting at address 0x00000000
Write 104 bytes at 0x00057F988
Write done
Verifying by comparing CRC32 calculations.
Verified (match: 0xe0c256fd)

How-to check the installed firmware version

Zigbee2MQTT will output the installed firmware version to the Zigbee2MQTT log on startup:

Zigbee2MQTT:info 2022-01-05 22:36:34: Coordinator firmware version: '{"meta": {"maintrel":1,"majorrel":2,"minorrel":7,"product":1,"revision":20221226,"transportrev":2},"type":"zStack3x0"}''

In the above example the version is 20221226.

https://www.zigbee2mqtt.io/guide/adapters/flashing/flashing_via_cc2538-bsl.html

Далее

Home Assistant. Обновление Python

18:17

Если вы пользуетесь Home Assistant, то после очередного обновления могли заметить на появившееся уведомление о том, что «Support for the running Python version 3.7.3 is deprecated and will be removed in the first release after December 7, 2020. Please upgrade Python to 3.8.0 or higher».

В стандартных системных репозиториях обычно содержатся стабильные и надежные версии пакетов, а не самые свежие и актуальные. И по состоянию на середину января 2021 года Python в репозиториях Debian и Ubuntu так и не спешат обновлять до версии 3.8.x.

Поэтому единственный вариант убрать назойливое уведомление и избавить себя от возможных проблем с совместимостью грядущих обновлений Home Assistant — это установить новую версию Python вручную, предварительно собрав ее из исходников.

  •  

Исходные данные

В этой статье я буду исходить из того, что:

  • У вас уже установлен Home Assistant
  • Он установлен в виртуальное окружение Python
  • Используется операционнная система на базе Debian или Ubuntu

Если вы пользуетесь Docker-контейнерами или дистрибутивом Hass.io, то обновлять пакеты вручную вам не придется.

Обновление Python

На заметку
Процесс обновления описан на примере актуальной на момент написания статьи версии Python 3.9.1. На странице загрузок Python всегда можно посмотреть номер свежего релиза и заменить ссылки на скачивание и распаковку архива в приведенных ниже командах.

Для начала остановим Home Assistant:

sudo systemctl stop home-assistant@homeassistant.service

Установим нужные для сборки из исходников пакеты:

sudo apt-get install build-essential tk-dev libncurses5-dev libncursesw5-dev libreadline6-dev libdb5.3-dev libgdbm-dev libsqlite3-dev libssl-dev libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev libxslt-dev libxml2-dev libjpeg-dev zlib1g-dev

Скачаем и распакуем архив с Python 3.9.1:

wget https://www.python.org/ftp/python/3.9.1/Python-3.9.1.tgz
tar xzvf Python-3.9.1.tgz
cd Python-3.9.1

Соберем его из исходников и запустим установку:

./configure --enable-optimizations
make -j 4
sudo make install

Процесс сборки занимает около 12 минут на Raspberry Pi 4, поэтому придется запастись терпением.

 

 

 

После завершения установки можно проверить, что Python действительно обновился путем выполнения двух команд:

python3 --version
pip3 --version

И если в консоли появится такие ответы, то процесс обновления прошел успешно:

Обновление Python 3 в Linux для Home AssistantТеперь обновим менеджер пакетов pip:

sudo /srv/homeassistant/bin/python3.9 -m pip install --upgrade pip
sudo python3.9 -m pip install --upgrade pip

В случае если после обновления Python при запуске Home Assistant появится ошибка с доступностью библиотеки libffi.so.7 можно создать симлинк с libffi.so.7 на нее:

sudo ln -s /usr/lib/arm-linux-gnueabihf/libffi.so.6 /usr/lib/arm-linux-gnueabihf/libffi.so.7

Если симлинк не создается, то значит в вашей системе libffi.so.6 находится по другому пути. Найдите корректный путь через поиск по названиям файлов:

find /usr/lib -name "libffi.so*"

Переустановка Home Assistant

Теперь переустановим Home Assistant. Для этого сохраним в файл список используемых им пакетов Python:

cd /home/homeassistant/
sudo  -u homeassistant -H -s
source /srv/homeassistant/bin/activate
pip3 freeze –local > requirements.txt
deactivate
exit

Удалим директорию с установленным Home Assistant и создадим ее заново:

sudo rm -r /srv/homeassistant
sudo mkdir /srv/homeassistant
sudo chown homeassistant:homeassistant /srv/homeassistant

Запустим процесс установки по сохраненному ранее списку пакетов:

sudo -u homeassistant -H -s
cd /srv/homeassistant
python3.9 -m venv .
source /srv/homeassistant/bin/activate
pip3 install wheel
pip3 install -r /home/homeassistant/requirements.txt

И, наконец, перезапустим сервис Home Assistant:

sudo systemctl restart home-assistant@homeassistant

На этом процесс обновления завершен окончательно, и после перезапуска из панели уведомлений должно исчезнуть сообщение о неподдерживаемой версии Python.

 

(c) Dmitry's notes https://dmitrysnotes.ru/home-assistant-obnovlenie-python

Далее

ЛЕЧИМ BLUETOOTH В HOMEASSISTANT И ОБНОВЛЯЕМ PYTHON ДО 3.9.1

18:16

Если при добавлении bluetooth устройств в логе появились следующие ошибки

  • Polling error Could not read data
  • RuntimeError: Event loop stopped before Future completed.
  • AttributeError: module ‘socket’ has no attribute ‘AF_BLUETOOTH’
  • Broken pipe

То возможно поможет этот скрипт.

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

python_update.sh
!/bin/bash
# установка необходимых пакетов
sudo apt-get install build-essential libglib2.0-dev libjpeg-dev tk-dev libncurses5-dev libncursesw5-dev libreadline6-dev libdb5.3-dev libgdbm-dev libsqlite3-dev libssl-dev libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev bluetooth libbluetooth-dev
sudo pip3 install pybluez
# выбор корневой папки для компиляции Python
cd /home/pi
# скачивание архива исходников и разархивирование
wget https://www.python.org/ftp/python/3.9.1/Python-3.9.1.tgz
sudo tar zxf Python-3.9.1.tgz
cd Python-3.9.1
# компиляция и установка ; j4 это кол-во потоков задействованное в этой операции
sudo ./configure --enable-optimizations
sudo make -j 4
sudo make altinstall -j4
sudo apt -y autoremove
# останавливаем ha
sudo systemctl stop home-assistant@homeassistant.service
sudo systemctl stop homeassistant@homeassistant
cd /home/homeassistant
# бекапим настройки и venv
sudo mv .homeassistant/ .homeassistant_backup
sudo mv /srv/homeassistant /srv/homeassistant_backup
cd /srv
# создаем папку для окружения, меняем хозяина этой папки и переключаемся на него
sudo mkdir homeassistant
sudo chown homeassistant:homeassistant homeassistant
sudo -u homeassistant -H -s
cd /srv/homeassistant
# создаем окружение и активируем его
python3.9 -m venv .
source bin/activate
# устанавливаем ha 
pip3.9 install --upgrade pip
python3.9 -m pip install wheel
pip3.9 install mysqlclient
pip3.9 install homeassistant
# запускаем голый ha
hass
# ждем пока не загрузится админка http://ip_raspberry:8123,  и жмем ctrl c 
exit
# если все ок, то удаляем бекапы и восстанавливаем настройки
cd /home/homeassistant
sudo rm .homeassistant/ -R
sudo mv .homeassistant_backup/ .homeassistant
sudo systemctl start home-assistant@homeassistant.service
sudo systemctl start homeassistant@homeassistant.service
#даем разрешение на работу bluetooth
sudo setcap 'cap_net_raw,cap_net_admin+eip' readlink -f \which python3.9``

 

(c) MICROASSISTANT https://microassistant.ru/лечим-bluetooth-в-homeassistant-и-обновляем-python-до-3-9-1/

Далее

Прошивка Sonoff ZB Dongle-P под Z-Stack

18:11

Как показала практика, официальная инструкция1) сложна, страшна и не понятна, хотя по факту все просто.

Координатор

  1. Скачать и установить программатор SmartRF 2 (Локальное зеркало2));
  2. скачать и распаковать прошивку координатора Z-Stack 3.x.0 (Локальное зеркало);
  3. разобрать донгл, выкрутив 2 винта со стороны разъема антенны;
  4. нажать кнопку «BOOT», вставить в USB и отпустить кнопку;
  5. в программаторе, в разделе «Connected devices», нажать на «Unknown»;
  6. ниже, в списке «Select Target Device…» выбрать «CC2652P»;
  7. если надо, сделать резервную копию текущей прошивки3);
  8. перейти на закладку «Main», в разделе «Flash image(s)» установить «Single» и выбрать файл прошивки;
  9. в разделе «Actions» поставить галочки «Erase», «Program» и «Verify», не трогая прочие настройки;
  10. нажать синюю стрелочку.

На этом, собственно, все. ;-)

Заводская прошивка

Если вдруг что, оригинальная прошивка лежит тут:-)

(c) Knowledge WiKibase https://wiki.soloshin.su/iot/firmware/z-stack/cc2652p/sonoff/zb_dongle-p

Далее

How to: Setup HassOS on a KVM Virtual Machine

09:51

EDIT: I gave in and made the switch to Proxmox. Should have started there, its much easier to manage overall.

I've been using HA for about 2 years now on Ubuntu 20.04 which has been announced as unsupported. I ignored it for a while, but had a few update errors that made me want to make the switch. I came across a post by u/fourierswager that gave a high level guide to converting over to a VM Found here.

My problem was that the deploy VM step was more difficult for a novice like me so I figured I would provide a write-up to help someone else looking to migrate their system. I know a lot of people go with Promox, but I wanted to keep my existing Ubuntu system in tact and didn't want to load the desktop version. For each step I've included the source to help understand and support the functions. There maybe easier ways to do this so please correct anything I may have done wrong.

I already have Ubuntu server 20.04 setup and running and use Putty to ssh into it, but any software should work.

  1. Install a hypervisor: I chose KVM. A write up for the install can be found Here or use the two commands below to install via SSH.

     sudo apt -y install qemu-kvm libvirt-daemon bridge-utils virtinst libvirt-daemon-system
     sudo apt -y install virt-top libguestfs-tools libosinfo-bin  qemu-system virt-manager
    
  2. Install Cockpit. This allows you to manage the VM via webportal. Documentation Here and Here. This installs Cockpit that can be accessed via hostIP:9090 and installs the virtual machine manager.

     sudo apt-get install cockpit
     sudo apt-get install cockpit-machines
     sudo apt-get install virt-viewer
    
  3. To allow the VM to access your network and the internet you need to setup a network bridge. Documentation Here.

    cd /etc/netplan/
    sudo nano 50-cloud-init.yaml
    

The edited file should look like this. Highlighted in red was in my default file. I changed dhcp4: to false then added the bridges section below. update the ip addresses to the ip address of your host machine, not what you want the VM to be. Interfaces should match the ethernets section above. For me it was eno1, but yours may be different. Save the file and run the following commands to apply the settings.

    sudo netplan generate
    sudo netplan -debug apply

Next create a file named "host-bridge.xml" to the /etc/libvert/qemu/networks folder. You can do this next one in a single line, but being a novice i like navigating to the folder then creating the file.

    cd /etc/libvert/qemu/networks
    nano host-bridge.xml

copy the following and save in the host-bridge.xml file.

    <network>
      <name>host-bridge</name>
      <forward mode="bridge"/>
      <bridge name="br0"/>
    </network>

home stretch - create the new network, this will be seen in Cockpit for the next step

    virsh net-define host-bridge.xml
    virsh net-start host-bridge
    virsh net-autostart host-bridge

confirm the new network is created with the following command

    virsh net-list --all    

4. Now we're ready to create the VM image in Cockpit. If you have Ubuntu Desktop I recommend creating the VM in virtManager, but since I don't this was my solution.

Go to hostIP:9090 and should see the Cockpit login page. This will be the same log-in info for your host machine. Navigate to the Virtual Machines section and select import VM. See documentation for step #2 to see what this looks like. That example creates a new VM, where here we are simply importing one. Download the Home Assistant OS Image CQOW2 to you host machine and create the virtual machine Should look like this

Once its created you can go to the VM in Cockpit and find the console. This new VM will fail to boot because Cockpit does not boot the file as UEFI... Documentation Here. This is a fairly easy solution. Ovmf is used to boot the file, then we edit the VM file on the host machine to boot it correctly.

    Apt-get install ovmf
    cd /usr/share/ovmf/

confirm OVMF.fd is there. Now we need to edit the VM file to boot as UEFI.

    Virsh edit Virtual_Machine_Name

In the file edit the lines below to add the <loader... line so it looks like the code below.

    <os>
         <type arch='x86_64' machine='pc-q35-3.1'>hvm</type>
         <loader readonly='yes' type='rom'>/usr/share/ovmf/OVMF.fd</loader> 
         <boot dev='hd'/>
    </os>

Back to Cockpit, change the VM to work with bridged connection from step 3. Select edit and adjust the network settings from default to the new host-bridge. When the machine boots this automatically switches to br0. Image

5. Boot the VM and select Consoles in Cockpit. This will give you a visual of the VM and you should see the log-in for Home Assistant terminal similar to if you where to SHH into the machine. Log-in with "root" there is no password.

    network info

Will provide the assigned IP address to the VM. From there you should be able to access Home Assistant via your browser at Virtual Machine's IP address:8123.

I set a static IP address to the new VM via my router, but found that it reverted back for some reason so I also set the same static IP address via nmcli. I won't go into the details since it may not be necessary for everyone, but the documentation can be found here.

6. Final step - USB pass through. Documentation Here. This source does a pretty good job at explaining it so I won't re-paste everything here and there are a few system specific adjustments so probably best to just read the article. The short version is you edit the VM file similar to step 4 to add USB devices then create a USB.xml file with your device specifics then attach to the VM. Reboot everything and should be ready to import your snapshot. If you have the desktop version you should be able to also do this in virtManager.

This turned out longer than I was expecting, but I hope this helps anyone looking to do the same. I'm not sure how much I can help with any questions since most of this was found via googling each step which is why I provided the support documentation that I found to guide me through the process. It looks a little daunting at first, but its not that bad. The hardest part for me was just finding good documentation of what I needed to do.

Adding to this since I have to look it up every time. If you need access to the host command once in the HassOS CLI, just type "login"

(c) https://www.reddit.com/r/homeassistant/comments/klx7b7/how_to_setup_hassos_on_a_kvm_virtual_machine/

Далее

ёРадио

23:02

yoRadio

ESP32 Web-radio based on ESP32-audioI2S or/and ESP32-vs1053_ext library

Supported DAC modules:
I2S DAC, roughly like this one: https://aliexpress.com/item/1005001993192815.html
https://aliexpress.com/item/1005002011542576.html
or VS1053b module : https://aliexpress.com/item/32893187079.html
https://aliexpress.com/item/32838958284.html
https://aliexpress.com/item/32965676064.html

Supported displays:
ST7735 1.8' or 1.44', SSD1306 0.96' 128x64 I2C, SSD1306 0,91' 128x32 I2C, Nokia5110 84x48 SPI, ST7789 2.4' 320x240 SPI, SH1106 1.3' 128x64 I2C, LCD1602 16x2 I2C, LCD1602 16x2 without I2C, SSD1327 1.5' 128x128 I2C, ILI9341 3.2'320x240 SPI, SSD1305 (SSD1309) 2.4' 128x64 SPI/I2C, SH1107 0.96' 128x64 I2C, GC9106 0.96' 160x80 SPI (looks like ST7735S, but it's not him), LCD2004 20x4 I2C, LCD2004 20x4 without I2C, ILI9225 2.0' 220x176 SPI

Supported controls:
Three or five tact buttons https://www.aliexpress.com/item/32907144687.html
Encoders https://www.aliexpress.com/item/32873198060.html
Joystick https://aliexpress.com/item/4000681560472.html
https://aliexpress.com/item/4000699838567.html
IR Control https://www.aliexpress.com/item/32562721229.html
https://www.aliexpress.com/item/33009687492.html
Touchscreen https://aliexpress.com/item/33048191074.htm

More info

How to upate Home Assistant Core?

21:35

Here are the steps to update HA in a venv (old but I think they are still valid):

$ sudo systemctl stop home-assistant@homeassistant.service 
$ sudo su -s /bin/bash homeassistant
$ source /srv/homeassistant/bin/activate
$ pip3 install --upgrade homeassistant
$ deactivate
$ sudo systemctl start home-assistant@homeassistant.service

If necessary change the user “homeassistant” in the second line to whatever user you used to install HA.

(c)

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.
 
Далее
«12 »