
Hallo liebe Freunde
Ich präsentiere hier meinen Tasmota-Ersatz, der von Bouffalo Lab für die BL602-Plattform entwickelt wurde, der unter anderem die Möglichkeit bietet, unser Gerät über MQTT mit Home Assistant zu koppeln. Ich zeige hier, wie man den Batch mit einem einfachen USB-zu-UART-Konverter einfach auf den BL602 hochladen kann, und ich werde auch den SDK-Kompilierungsprozess für Leute beschreiben, die diese Plattform selbst flashen möchten. Darüber hinaus präsentiere ich zwei interessante Demos vom SDK BL602.
Wozu BL602 flashen?
Die Motivation ist die gleiche wie bei den Plattformen, die ich zuvor besprochen habe. Mit einer eigenen Firmware kann man das IoT-Produkt von den Servern des Herstellers befreien, einen möglichen Kontrollverlust über dieses Produkt beim Ausfall dieser Server vermeiden, die Verfolgung und Erfassung von Daten durch den Hersteller vermeiden und darüber hinaus Produkte verschiedener Hersteller in einem Ökosystem kombinieren. Was ich hier erstelle, ist ein "Tasmota" für andere Plattformen.
Verwendetes Modul mit BL602
Module mit BL602-Schaltungen (oder verwandten Schaltungen) können zu relativ niedrigen Preisen erworben werden, aber das Hauptprinzip meiner Tätigkeit ist die "Freigabe" fertiger IoT-Produkte mit geschlossener Programmierung ihrer Hersteller, daher habe ich für dieses Thema ein solches Produkt verwendet.
Es diente mir als Testgelände RGB-LED-Streifen mit IR-Fernbedienung und Wi-Fi – MWIR-RGB Magic Home Pro.

An Bord dieser Steuerung befinden sich BL602 und 3 per PWM gesteuerte Transistoren:

Anschlussskizze:

Was für Firmware ist das?
Das Firmware-Repository findet man hier:
https://github.com/openshwprojects/OpenBK7231T_App
Meine Firmware für BL602 ist im Grunde eine Portierung meines OpenBeken. Tatsächlich wurde OpenBeken so überarbeitet, dass es jetzt eine Multiplattform-Anwendung ist, die die Chips BK7231T, BK7231N, XR809 und BL602 unterstützt.
Für den Benutzer – Herunterladen des kompilierten OpenBL602/OpenBeken-Batches für BL602
Mein Github-Repository enthält ein Skript, das die Binärdateien automatisch online kompiliert, die Ausgaben sind hier verfügbar:
https://github.com/openshwprojects/OpenBK7231T_App/releases
Dies kann sich in Zukunft ändern und wir werden den Batch über die Registerkarte "Releases" auf der rechten Seite herunterladen.
Für den Benutzer – Anschließen der Hardware
Es wird ein USB-zu-UART-Konverter mit 3,3-V-Logikpegeln benötigt, ein 10 kΩ-Widerstand, möglicherweise ein 3,3-V-LDO-Regler (wenn er nicht auf unserer Platine ist) und Kabel.
Wir verbinden:
- RX vom Modul zum TX UART
- TX vom Modul zum RX UART
- BOOT vom Modul zum 10k-Widerstand zur Stromversorgung, aber wir lassen es offen (wir schließen es nur zum Flashen an)
- Masse zu Masse
- 3,3-V-Stromversorgung (wenn ein LDO auf der Platine vorhanden ist, können wir an seinen Eingang 5 V über USB liefern)
Bei mir sieht es so aus:

HINWEIS: Wenn Ihr die 5-V-Stromversorgung von USB an den LDO-Eingang (oder Abwärtswandler) auf der BL602-Platine anschließt und dann die 12-V-Stromversorgung anschließt, beschädigt Ihr mindestens den USB-zu-UART-Adapter und möglicherweise auch den USB selbst... Während des Flashens sollte man die externe Stromversorgung trennen.
Für den Benutzer – Hochladen des Batchs
Um den Batch hochzuladen, müssen wir Folgendes tun:
1. Das BOOT-Signal über einen 10k-Widerstand mit der Stromversorgung verbinden
2. Die Stromversorgung trennen und wieder anschließen (Neustart mit BOOT-Signal in hohem Zustand zur Stromversorgung).
3. In BLDevCube.exe die folgenden Dateien auswählen:

4. Sicherstellen, dass der UART-Port nicht verwendet wird (z. B. wenn wir ihn in RealTerm nicht geöffnet haben – wenn ja, schließen wir ihn).
5. Auf "Herunterladen" klicken (was "Batch an BL602 senden" bedeutet):

Fertig!
Um nun den Batch auszuführen, trennen wir den BOOT (lassen ihn locker) und unterbrechen die Stromversorgung für eine Weile und stellen sie dann wieder her.
Logdateien des Gerätes sind weiterhin mit Baud = 2000000 verfügbar (wie in SDK-Demos).
Für den Benutzer – OpenBL602-Konfiguration
Die Konfiguration meines Batch-Ports auf dem BL602 ist analog zu der in diesem Thema beschriebenen Konfiguration:
Qiachip Smart Switch BK7231N/CB2S – Innenansicht, Flashen
Nach dem Neustart des Geräts sollte ein offener Access Point mit einem Namen wie OpenBL602_1A1B2C3D4E5 edie Initiarscheinen:

Wir verbinden uns damit und öffnen die Seite mit der Adresse 192.168.4.1. Wir konfigurieren es genau wie Tasmota (wir geben die Anweisungen für unser Wi-Fi, wir legen die Rollen der Pins fest, wir geben die Anweisungen für MQTT...
Bei diese RGB-LED-Streifen haben die Stifte folgende Aufgaben:

In der aktuellen Version unterstützt meine Firmware die IR-Fernbedienung mit dieser Streifen nicht.
Für den Benutzer – Kopplung mit Home Assistant
Im OpenBL602-Panel gibt es die Option "Generate Home Assistant Config", diese reicht jedoch nicht immer aus. Im Fall des RGB-Controllers "weiß" diese Option nicht, dass man drei PWMs in einem Farbcontroller kombinieren muss.
Aus diesem Grund empfehle ich, daraus nur den Gerätenamen zu übernehmen, z. B. obl42DACAB0, und ihn manuell in diese Vorlage einzufügen:
Code: yaml
Wir speichern es in der Datei "configuration.yaml". Wenn wir mehrere Lichter haben, setzen wir das Präfix light einmal mit einem Doppelpunkt.
Nach dem Neustart von Home Assistant können wir den Streifen steuern:




Die aktuelle Version hat einen Nachteil: Nach dem Neustart liest Home Assistant den aktuellen Helligkeits- und Farbwert nicht ab. Dies wird korrigiert, hat aber keinen Einfluss auf die Steuerung des Streifens.
Für den Programmierer – MSys2-Installation
Man muss die Firmware nicht selbst kompilieren, da ich fertige Binärdateien zur Verfügung stelle. Wenn wir meinen Code jedoch selbst ändern möchten, müssen wir noch das Kompilieren lernen. Zum Kompilieren der Firmware wird MSys2 benötigt. Es muss von hier heruntergeladen und installiert werden:
https://www.msys2.org/#installation

Windows blockiert möglicherweise MSys – man soll trotzdem fortfahren.

Wir wählen den Ordner für die Installation:

Nach der Installation führen wir msys2 aus. Es muss noch aktualisiert werden.
Wir führen den Befehl aus:
pacman -Syu

Dann auch pacman -Su
Dann pacman -S make

Für den Programmierer – Herunterladen von SDK und Kompilierung des Projekts
Leider wird es hier kompliziert. Das offizielle SDK ist hier:
https://github.com/pine64/bl_iot_sdk
Stand heute (April 2022) lässt sich die neueste Version des SDK von Github jedoch nicht korrekt kompilieren, man sollte die ältere Version verwenden, genauer gesagt b3898a520d6e5a34a5f4de8241fcc1c1d3b071b9.
Außer mir haben auch andere Leute Probleme mit der Kompilierung der neuesten Version:
https://github.com/pine64/bl_iot_sdk/issues/94
HINWEIS: Wenn Ihr das SDK herunterlädt, um es zum Erstellen meines Projekts zu verwenden, lädt bitte meine modifizierte Version hier herunter:
https://github.com/openshwprojects/OpenBL602
Dies liegt daran, dass die Hauptanwendung von OpenBK (oder OpenBL), App genannt, von verschiedenen SDKs verschiedener Plattformen gemeinsam genutzt wird und diese SDKs selbst die Basis für Projekte enthalten, in denen diese Haupt-Apps kompiliert werden.
Projekte im SDK befinden sich im Ordner customer_app:
Hier ist ihre Liste:
benchmark_security_aes
bl602_boot2
bl602_boot2_mini
bl602_demo_event
bl602_demo_joylink
bl602_demo_nano
bl602_demo_noconnectivity
bl602_demo_wifi
bl602_huawei_cloud
sdk_app_audio_udp
sdk_app_ble_sync
sdk_app_blog
sdk_app_cli
sdk_app_cronalarm
sdk_app_dac
sdk_app_easyflash
sdk_app_event
sdk_app_fdt
sdk_app_gpio
sdk_app_hbnram
sdk_app_heap
sdk_app_helloworld
sdk_app_http_client_socket
sdk_app_http_client_tcp
sdk_app_i2c
sdk_app_ir
sdk_app_mdns
sdk_app_pwm
sdk_app_romfs
sdk_app_spi_pdm
sdk_app_spi_wave
sdk_app_timer
sdk_app_uart_ctl
sdk_app_uart_echo
Beim Kompilieren geht es darum, in den Ordner eines bestimmten Projekts zu gehen und ./genromap aufzurufen

Man muss noch aufrufen:
- export BL60X_SDK_PATH=~/your_path_to_Sdk/
- export CONFIG_CHIP_NAME=BL602

Aber meiner Erfahrung nach ist es normalerweise nicht nötig und das Skript findet den Pfad selbst, indem es davon ausgeht, dass das SDK zwei Ordner höher liegt als das zu erstellende Projekt. CONFIG_CHIP_NAME wiederum ist erforderlich, wenn wir den Befehl "clean" des Projekts ausführen möchten, um vom Compiler generierte Zwischendateien .o zu entfernen, die dann vom Linker verbunden werden.
Die generierten Dateien befinden sich im Ordner build_out, zum Beispiel: customer_app\bl602_sharedApp\build_out
Für den Programmierer – Demo sdk_app_gpio
Nachdem wir nun selbst kompilieren können, ist es an der Zeit, die von den SDK-Entwicklern bereitgestellten Funktionsdemos zu testen.
Eine der interessantesten Demos ist sdk_app_gpio.
Mit der sdk_app_gpio-Demo kann man GPIO-Pins über die UART-Konsole konfigurieren. Die Befehlssyntax lautet "gpio-func <Pin-Index> <Eingangsmodus> <pullup> <pulldown>".
Zum Beispiel der Befehl:
gpio-func 8 0 0 0
Konfiguriert GPIO-Pin 8 als Ausgang ohne Pull-Up/Down-Widerstände.
Die Baudzahl einer Demo beträgt 2.000.000.
So sieht die Demo nach dem Start aus:

Nach dem Senden des Pin-Steuerbefehls:

Dann kann man auf diesem Pin den Zustand niedrig oder hoch setzen mit:
gpio-set
Im Fall der Eingangspins haben wir einen analogen UART gpio-get-Befehl:
gpio-get
Für Neugierige: Die Implementierung von gpio-func sieht folgendermaßen aus:
Code: c
Wiederum den Pin setzen:
Code: c
Pinstatus abrufen:
Code: c
Für den Programmierer – Demo bl602_demo_wifi
Eine weitere interessante Demo des SDK ist ein Programm, das die Funktionsweise von Wi-Fi zeigt. Hier steuern wir es auch über UART-Befehle. Baud wie zuvor.

Zunächst lohnt es sich, die gesamte Befehlsliste über den ganz offensichtlichen Befehl help kennenzulernen:


Versuchen wir es mit wifi_ap_start:


wifi_scan funktioniert auch. Wir haben den gesamten Code dieser Demo, sodass wir sehen können, was und wie realisiert wird.
Zusammenfassung
Eine weitere Plattform befreit! Ich begann mit der Befreiung von XR809, dann habe ich mich um BK7231T und BK7231N gekümmert. Jetzt ist es gelungen BL602 zu befreien. Als nächstes kommen die Schaltungen Realtek und W600, aber wird es auch mit ihnen funktionieren? Wir werden sehen.
In der Warteschlange zum Flashen habe ich noch eine Glühbirne mit BL602, aber ich glaube nicht, dass es damit Probleme geben wird - auf der Platine mit dem Wi-Fi-Modul werden Pads benötigt, also RX, TX und BOOT. Ich werde die Beschreibung in den Abschnitt "Geräte-Innenansicht" einfügen.
Was die Stabilität der aktuellen Version der Firmware für BL602 angeht, habe ich sie zwei Tage lang getestet, einschließlich des absichtlichen Ausschaltens des Routers (überprüfen, ob er event disconnect abfängt und die Verbindung wiederherstellt), und ich bin auf keine Probleme gestoßen, aber natürlich werde ich weiterhin fortlaufend Tests durchführen und etwaige Probleme beheben.
Weitere Informationen zum Projekt findet man im offiziellen Repo:
https://github.com/openshwprojects/OpenBK7231T_App
PS: Wenn Ihr IoT- oder ähnliche Geräte kennt, die auf BL602 oder einem verwandten Schaltungen basieren, lässt es mich wissen - ich füge der Firmware ständig Unterstützung für neue Funktionalitäten hinzu und sammle Informationen darüber, wie sie funktioniert. Soweit ich weiß, verwendet der Sonoff 40 beispielsweise wahrscheinlich den BL602.
Cool? DIY-Rangliste