logo elektroda
logo elektroda
X
logo elektroda

Qiachip Smart Switch BK7231N/CB2S – Innenansicht, Flashen

p.kaczmarek2 3912 0
WERBUNG
  • Elektronikmodul mit verschiedenen Komponenten auf einer Leiterplatte, gehalten von einer Zange.
    Hallo liebe Freunde
    Ich präsentiere hier das Innere eines anderen Tuya-Relais, das dieses Mal ein eher ungewöhnliches CB2S-Modul enthält, das auf dem BK7231N-Schaltung basiert (nicht zu verwechseln mit dem BK7231T). Ich werde auch versuchen, SDK dafür vorzubereiten und meine eigene Batch­da­tei darauf hochzuladen. Ich werde beschreiben, welche Tools hierfür nützlich sein können und welche Probleme ich lösen musste, um meiner Software BK7231N-Unterstützung hinzuzufügen. Das Ziel wird wie immer darin bestehen, eine Verbindung zu Home Assistant herzustellen und die Unabhängigkeit von den Servern des Herstellers.

    Qiachip Smart Switch
    Qiachip ist nur ein weiteres intelligentes Relais, das über Wi-Fi durch die mobile Anwendung des Herstellers gesteuert wird. Es verfügt über einen Knopf am Gehäuse, mit dem man es auch manuell steuern kann. Dieses Mal ist das Set mit ihm ziemlich dürftig:
    Weißer intelligenter Schalter mit sichtbaren Spezifikationen auf dem Gehäuse, auf einer Holzoberfläche liegend. Kartonverpackung mit einem weißen Etikett mit Herstellerkontaktinformationen.
    Schachtel mit der Aufschrift QIACHIP Smart Switch auf einem Holzhintergrund. Intelligenter Schalter und Bedienungsanleitung auf einer Holzoberfläche.
    Der Hersteller empfiehlt dafür die SmartLife-Anwendung, die ich in den vorherigen Themen der Serie beschrieben habe.

    Innenansicht des Qiachip Smart Switch
    Das Gehäuse wird nur an den Rastnasen gehalten:
    Das Bild zeigt ein zerlegtes weißes Plastikmodul mit einer sichtbaren Leiterplatte auf einem Holztisch. Kunststoffgehäuse mit sichtbarer Leiterplatte auf einem Holztisch.
    Das Layout im Inneren ist klassisch – ein transformatorloses Netzteil auf Basis BP2525:
    Nahaufnahme einer Leiterplatte mit verschiedenen elektronischen Bauteilen. Nahaufnahme einer Leiterplatte mit elektronischen Bauteilen, einschließlich eines WQE Weiqi-Relais und Kondensatoren.
    AMS1117 LDO-Regler (5 V Eingang, 3,3 V Ausgang für Wi-Fi-Modul):
    Nahaufnahme von Komponenten auf einer blauen Leiterplatte mit Kondensatoren und Knöpfen.
    Wi-Fi-Modul – hier CB2S – und ein Transistor zur Steuerung des Relais:
    Leiterplatte mit elektronischen Komponenten, einschließlich eines Weiqi-Relais.
    Elektronikmodul mit verschiedenen Komponenten auf einer Leiterplatte, gehalten von einer Zange.
    CB2S ist ein Wi-Fi/Bluetooth-Modul, das auf einem 32-Bit-Mikrocontroller BK7231N basiert.
    CB2S-Anschlüsse:
    Schema des Moduls CB2S mit Pin-Bezeichnungen und Abmessungen. Diagramm eines elektronischen Schaltkreises mit sechs beschrifteten Pins: 3V3, GND, RX1, TX1, P24, P26.
    Das Layout sieht dem auf BK7231T implementierten WB2S sehr ähnlich:
    Diagramm der Pins und Abmessungen des WB2S-Elektronikmoduls.
    Diese PWMs sind mit den CB2S-Pins kompatibel – schauen wir uns die Erklärung an:
    Tabelle der WB2S (BK7231T) Pin-Zuordnung mit Pin-Funktionen und I/O-Typen.
    PWM0 ist P8 – das stimmt.

    Flashen des BK7321N
    Ich habe das Problem des Flashens der Schwester BK7231T bereits gelöst. Ich betreibe ein universelles Open-Source-Batch-Projekt für diesen Chip.
    Leider ist BK7231T nicht BK7231N – die Architektur ist etwas anders. Dies wird beispielsweise durch das Vorhandensein zweier unterschiedlicher Versionen des SDK für diese Chips belegt:
    https://github.com/tuya/tuya-iotos-embeded-sdk-wifi-ble-bk7231n
    https://github.com/tuya/tuya-iotos-embeded-sdk-wifi-ble-bk7231t
    Ich kenne bereits Version T. N habe ich versucht, ähnlich auszuführen, bin aber schnell auf ein seltsames Problem gestoßen.
    Beim Kompilieren aus Cygwin habe ich Folgendes erhalten:
    Screenshot einer Konsole, die einen Kompilierungsfehler in einem Embedded-SDK-Projekt zeigt.
    Ich habe herausgefunden, dass es daran liegt, dass Cygwin Windows-Toolchain-Dateien verwenden sollte.
    Hier ist die Lösung:
    https://github.com/openshwprojects/OpenBK7231...mmit/61b4204aa0677a8fc886f4e6bd4e235337eb1e85
    GitHub-Seitenfragment mit Änderungen in einer Makefile mit einer Kompilierungsreparatur.
    Die nächsten Änderungen, die ich vorgenommen habe, waren das Hinzufügen des SDK zum Repository (wie es in der T-Version war, denn hier musste ich sie von der T-Version kopieren).
    Am Ende bin ich bei der Version gelandet, die ich hier gepostet habe:
    https://github.com/openshwprojects/OpenBK7231N/
    Das so vorbereitete SDK ist mit meiner Anwendung (Tasmota-Äquivalent) für die T-Version kompatibel, die hier verfügbar ist:
    https://github.com/openshwprojects/OpenBK7231T_App
    Auf der Anwendungsseite musste ich einige Korrekturen vornehmen (z. B. wurden der Name und der Speicherort mehrerer Dateien geändert, außerdem korrigierte Tuya Tippfehler – vorher war es "tuya_hal_storge.h" und jetzt ist es "tuya_hal_storage.h", aber das meiste blieb ähnlich).
    Ein weiterer Unterschied zwischen der N- und der T-Version des SDK ist das Vorhandensein des Tuya-Quellcodes – in der N-Version liegt er nur in Form von lib (libtuya.a) vor, und in der T-Version haben wir C-Quellen. Hier meine ich beispielsweise Funktionen wie tuya_hal_flash_read oder tuya_hal_wifi_all_ap_scan.
    Auch die Adressen der Speicherabschnitte unterscheiden sich zwischen der N- und T-Version:
    https://github.com/tuya/tuya-iotos-embeded-sd..._os/beken378/func/user_driver/BkDriverFlash.c
    https://github.com/tuya/tuya-iotos-embeded-sd..._os/beken378/func/user_driver/BkDriverFlash.c
    Quellcode, der logische Partitionen auf Geräten mit BK7231T- und BK7231N-Chips definiert.
    Ein weiterer Unsinn, den ich beheben musste, war ein Konfigurationsproblem – irgendetwas überschrieb meine BK_PARTITION_NET_PARAM-Abschnitte. Es stellte sich heraus, dass die Einstellung RL_SUPPORT_FAST_CONNECT schuld ist, die die gleiche Adresse erhält, an der sich die Konfiguration befinden soll. Nun, Tuya hat ein Durcheinander im SDK:
    Quellcode in der Programmiersprache C zur Funktion für das Lesen von BSSID-Informationen.
    Abschließend kompiliert sich die Anwendung:
    Screenshot einer Konsole mit Informationen zum Firmware-Kompilierungs- und Verpackungsprozess.

    Anschließen des Flashgeräts
    Hier ist alles wie beim zuvor beschriebenen WB2S bzw. WB3S (BK7231T). USB-zu-UART-Konverter und wir schließen nur TX1 und RX1 an:
    Prototypenplatine mit elektronischen Bauteilen auf einem Holztisch. Leiterplatte mit angeschlossenem USB-Kabel.
    Darüber hinaus auch CEN, um das Modul zurücksetzen zu können (man kann aber auch ohne CEN zurücksetzen und durch Unterbrechen der Stromversorgung zurücksetzen, solange es nach dem Anschließen des Relais nicht zu einem Reset des USB-Ports aufgrund zu hoher Stromaufnahme kommt). Natürlich auch Masse und Stromversorgung (5V, angeschlossen an den 3,3V-Eingang des LDO-Reglers).


    Ein Versuch, einen Batch von BKwriter 1.60 hochzuladen
    Zuerst habe ich versucht, dasselbe Programm zu verwenden, mit dem ich den Batch auf BK7231T hochgeladen habe – BKwriter 1.60. Ich habe dort zwei Modi überprüft, einer ist als BK7231 gekennzeichnet:
    Screenshot der Softwareoberfläche zur Programmierung von integrierten Schaltkreisen.
    Screenshot der Microcontroller-Programmiersoftware mit einer Fehlermeldung.
    Im BK7231-Modus kommt es bei der Batch-Überprüfung immer zu einem CRC-Fehler.
    Und der zweite BK7231N:
    Screenshot der Beken Writer-Software zur Programmierung von Mikrocontrollern.
    Screenshot der Mikrocontroller-Programmiersoftware mit einer Fehlermeldung.
    Im BK7231N gibt es einen Fehler beim "Unprotect" des Flash-Speichers. Handelt es sich um eine gesperrte Schaltung?

    Versuch, einen Batch mit einem Python-Tool hochzuladen
    Mit BKwriter hat es nicht geklappt, aber es gibt eine andere Möglichkeit. Ein von Tuya in Python geschriebenes Tool, verfügbar z. B. hier:
    https://github.com/OpenBekenIOT/hid_download_py
    Das obige Repo enthält bereits unsere Modifikationen.
    In readme dieses Tools wird die N-Version des Chips erwähnt:
    Zitat:

    For BK7231N, set download address to 0x0, and set -u option.

    Wird es funktionieren? Lass es uns versuchen. Ich habe eine solche .bat-Datei entwickelt (man kann sie auch über die cmd-Ebene eingeben):
    
    python uartprogram W:\GIT\OpenBK7231N\apps\OpenBK7231N_App\output\1.0.0\OpenBK7231N_app_QIO_1.0.0.bin --unprotect -d com10 -w --startaddr 0x0
    

    Ich habe es mit bereits angeschlossenem Modul ausgeführt:
    Eingabeaufforderungsfenster, das die Ausführung eines Python-Skripts für die UART-Programmierung zeigt.
    Dann (in der Phase "Getting bus") setze ich das Modul zurück (man kann einen Zyklus mit Anschließen und Trennen der Stromversorgung durchführen, aber ich habe den CEN-Pin für einen Moment mit Masse kurzgeschlossen. Wenn es nicht funktioniert, kann man versuchen einen Pull-Up-Widerstand an CEN anzuschließen und erst dann versuchen mit dem Kurzschluss zur Masse zurückzusetzen) und das Flashen wurde gestartet:
    Eingabeaufforderungsfenster, das einen Programmierprozess mit einem Python-Befehl anzeigt.
    Fertig:
    Screenshot eines Windows-Befehlsfensters, das einen Programmierprozess mit einem Python-Skript zeigt.
    Ohne Fehler hochgeladen. Ich sehe, dass der Konfigurations-AP erscheint – Batch funktioniert!

    Was bietet mein Batch?
    Mein Batch ist im Grunde das Äquivalent von Tasmota. Wenn es ausgeführt wird, erstellt es seinen eigenen AP:
    Liste verfügbarer Wi-Fi-Netzwerke auf einem Computerbildschirm.
    Die darauf befindliche Konfigurationsseite ist unter IP 192.168.4.1 verfügbar.
    Dort kann es mit unserem Router verbunden werden:
    Screenshot der OpenBK7231N-Benutzeroberfläche zur Verwaltung von WiFi-Netzwerken.
    Man kann das Modul (seine Pins, ihre Rollen) frei konfigurieren:
    Screenshot der OpenBK7231N-Benutzeroberfläche mit verschiedenen Konfigurationsoptionen.
    Screenshot der OpenBK7231N-Konfigurationsschnittstelle.
    Man kann es über MQTT mit Home Assistant verbinden:
    Screenshot der OpenBK7231N-Oberfläche mit MQTT-Einstellungen.
    Man kann das Modul auch direkt steuern:
    Benutzeroberfläche der OpenBK7231N-Seite mit mehreren Schaltflächen und Geräteinformationen.
    Es gibt auch einen automatischen Konfigurator für die von mir getesteten Smart-Geräte:
    Dropdown-Menü in der OpenBK7231N-Oberfläche mit Konfigurationsoptionen.
    Vergessen wir auch nicht den Konfigurationsgenerator für Home Assistant, hier:
    Screenshot der Home Assistant-Konfiguration für OpenBK7231N.
    Mein Batch unterstützt bereits drei Plattformen – BK7231T, BK7231N und XR809. Aber Einzelheiten ein andermal...

    PS: Und wenn wir unser Gerät mit OpenBK an unser Wi-Fi anschließen und die ihm per DHCP zugewiesene IP-Adresse wissen möchten, schauen wir am besten auf die Konfigurationsseite unseres Routers und suchen BK anhand des Hostnamens:
    Eine Tabelle mit einer Liste von Geräten im lokalen Netzwerk mit ihren IP-Adressen und Vergabezeiten.

    Zusammenfassung
    Letztendlich gelang es mir jedoch, meine offene Firmware auf diesem Relais basierend auf dem CB2S-Modul (BK7231N) auszuführen. Der Quellcode aus dem SDK musste ein wenig portiert werden, aber zum Glück musste das nur ich tun. Beim Hochladen des Batchs gab es auch ein bisschen Rätselraten, aber ich kann jetzt schon sagen, dass es am Ende auf Folgendes hinausläuft:
    1. Wir löten Drähte an RX, TX, CEN und Stromversorgung. RX und TX schließen wir an den UART-USB-Konverter an
    2. Wir starten hid_download_py über die Befehlszeile, genauer gesagt python uartprogram W:\GIT\OpenBK7231N\apps\OpenBK7231N_App\output\1.0.0\OpenBK7231N_app_QIO_1.0.0.bin --unprotect -d com10 -w --startaddr 0x0 . Ja, wir laden die QIO-Version hoch
    3. Das Programm wartet auf den Reset des Moduls – wir schließen CEN mit Masse kurz (vorzugsweise mit einem Pull up, d. h. einem Widerstand zur Stromversorgung), um das Modul zurückzusetzen
    4. Das Programm erkennt den RESET selbst und lädt den Batch hoch
    5. Fertig! Den Rest konfigurieren wir über access point Wi-Fi (IP ist 192.168.4.1, wenn sich die Seite nicht öffnet, bedeutet das, dass DHCP nicht gestartet ist – wir können unsere Maschine einfach selbst einstellen, z. B. IP 192.168.4.10 und uns wieder mit dem BK-Netzwerk verbinden)
    Die Frage ist, welcher Batch – die neuesten Versionen der Binärdateien sind hier verfügbar:
    https://github.com/openshwprojects/OpenBK7231T_App/releases
    Weitere Informationen finden Sie in meinen Repositories (README wird aktualisiert):
    https://github.com/openshwprojects/OpenBK7231T_App
    PS: Von einem der Nutzer weiß ich, dass der Qiachip Smart Switch auch mit WB2S vorkommt – es können also verschiedene Module drin sein. Glücklicherweise wird WB2S auch von meinem Batch unterstützt.


    --------------- UPDATE 2023 ---------------
    bkWriter 1.60 und hid_download_py wurden durch ein neues Tool mit GUI ersetzt, man kann es von Github herunterladen und die Readme-Datei im Repository lesen. Es wird auf die gleiche Weise verwendet wie die vorherigen Tools, man muss einfach keine Befehle eingeben, sondern nur die Plattform und die Operation auswählen, die man auf der GUI durchführen möchte.
    https://github.com/openshwprojects/BK7231GUIFlashTool

    Cool? DIY-Rangliste
    Hilfreicher Beitrag? Kauf mir einen Kaffee.
    Über den Autor
    p.kaczmarek2
    Moderator Smart Home
    Offline 
    p.kaczmarek2 hat 11884 Beiträge geschrieben mit der Bewertung 9961, und dabei 569 Mal geholfen. Er ist seit 2014 bei uns.
  • WERBUNG
WERBUNG