Forum: Mikrocontroller und Digitale Elektronik ZigBee/MMT Module: How-To?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Thorsten S. (kooglefish)


Lesenswert?

Hi,

kurzes Vorwort: mein Kenntnisstand bewegt sich auf Protoboards, fertigen 
PCBs und devboards mit ATMega/ESP32 (sowie den Raspis...). SMD ist mir 
handwerklich noch etwas zu heikel, Python bevorzuge ich C/C++ der 
schnellen Resultate wegen, aber ATTiny's sinnvoll einzusetzen steht noch 
auf Liste (meine Erfahrungen mit C sind von Pufferüberlaufen 
gekennzeichnet).

Nun interessiere ich mich für ZigBee, und finde neben diversen 
USB-Dongles auch die modular wirkenden MMT-Module. XBee3 will 
Micropython-kompatibel sein, ich weiß noch gar nicht, was das für den 
Umgang damit bedeutet (Micropython kenne ich vom ESP32 Devkit) - aber 
für viel wichtiger halte ich die Frage: wie benutzt man die Module?

Es gibt auf digi.com eine offene Frage von 2019 dazu, woher man die 
Sockel bekommen könnte, mit nur einer weiteren (wiederholten) Frage 
obendrauf. Weiß hier jemand mehr? Hat schon jemand sowas benutzt? Die 
Developmentkits von Digi umfassen den Chip an der Seite mit einer 
speziellen Halterung und lassen die Unterseite frei - möglicherweise 
fürs Signal. Mir sieht das auch nicht nach 2.54mm Raster aus.

Möglicherweise ist das auch zu sehr low-level, als dass ich damit 
anfangen sollte... dann wäre ich aber auch da für eine Bestätigung 
dankbar.

Aufreißer für mich und die Hardwaresuche nach sowas war unter anderem 
dieser Thread hier: Beitrag "Warum ist ZigBee so teuer?"
Da wird auch so ein MMT-Modul verlinkt (konkret das hier: 
https://de.aliexpress.com/item/32906661666.html - was nach der 
Unterhaltung wohl interessant sein könnte).

Meine Grobplanung sieht so aus: XBee3 und ein bisschen Leuchtmittel von 
Ikea oder so besorgen, mit Micropython die ersten Gehversuche machen und 
dann möglichst ohne exotische Hardware eigene ZigBee-Geräte entwickeln 
(das, was ich wie der TE im obigen Thread wohl auch vor hat) und von 
"schwerem Geschütz" wie dem ESP32 loskommen. Den XBee3 gibts wohl auch 
mit THT, aber damit navigiere ich mich wohl in eine Sackgasse.

Sollte das alles darauf hinauslaufen, dass ich Raspberrys mit USB-Sticks 
oder Fertigmodule von IKEA betreibe, verliert das Projekt recht schnell 
seinen Reiz...

Vielen Dank für euren Input

von Stefan P. (disaster123)


Lesenswert?

Super nun sind wir also schon zu Dritt ;-) Hast du Fortschritte machen 
können?

von Thorsten S. (kooglefish)


Lesenswert?

Hi Stefan,

gewissermaßen? Ich hab mich damit abgefunden, dass das nicht für die 
"through hole Gemeinde" erschlossen ist. Außerdem scheint es Lizenzware 
(patentiert) von digi zu sein, das hab ich aber nicht weiter 
recherchiert.

Was allerdings zwischenzeitlich aufgetaucht ist, ist 
https://www.reichelt.de/arduino-grove-xbee-socket-grv-xbee-socket-p255700.html 
- eine etwas günstigere Variante zu dem Adapter, den digi selbst auch 
vertreibt. Das ist keine Antwort auf meine Frage (oder deine), aber ein 
Workaround, mit dem ich die XBees verwenden kann.

Zur Softwareseite: (wie nicht wirklich anders erwartet) kann micropython 
auf dem XBee3 nicht besonders viel. Die eigentliche Kommunikation läuft 
über AT-Befehle. Zu meiner Schande bin ich auch noch nicht weiter damit, 
einen Durchstich wie "verbinde dich mit dem existierenden Netz und mach, 
dass die Lampe angeht" habe ich noch nicht erreicht. Sobald ich aber 
verstanden habe, wie die ganzen Puzzleteile funktionieren, sehe ich da 
aber kein Hindernis (außer Zeit und Fokus).

von Stefan P. (disaster123)


Lesenswert?

Danke Dir. An sich möchte ich in meinem Falle gerne eine Zisterne 
batteriebetrieben überwachen. Dazu möchte ich einen 3,3V 
Ultraschallsensor betreiben, der alle 3-6 Stunden einen Wert via Zigbee 
sende. Leider bin ich etwas überfordert ob ich nu Xbee, NodeMCU mit 
Zigbee Shield (gibt es das), Wemos D1 + Shield, ... verwenden soll. Man 
findet gefühlt sehr wenig dazu.

von Harry L. (mysth)


Lesenswert?

Ich hab Zigbee bei mir mit so einem Stick:
Ebay-Artikel Nr. 233939362212
und zigbee2mqtt realisiert.
https://www.zigbee2mqtt.io/

Läuft auf nem RasberryPi.

: Bearbeitet durch User
von Stefan P. (disaster123)


Lesenswert?

Harry L. schrieb:
> Ich hab Zigbee bei mir mit so einem Stick:
> Ebay-Artikel Nr. 233939362212
> und zigbee2mqtt realisiert.
> https://www.zigbee2mqtt.io/
>
> Läuft auf nem RasberryPi.

Das ist sicherlich grundsätzlich simpel aber ich habe keinen Strom vor 
Ort. Das Gerät muss mind. 12 Monate mit 2x AA Batterien auskommen.

von Stefan P. (disaster123)


Lesenswert?


von Harry L. (mysth)


Lesenswert?

Stefan P. schrieb:
> Das ist sicherlich grundsätzlich simpel aber ich habe keinen Strom vor
> Ort. Das Gerät muss mind. 12 Monate mit 2x AA Batterien auskommen.
Das ist ja auch nur das Gateway, aber da kannst du dann praktisch 
beliebige andere Zigbee-Devices ankoppeln und schon mal darauf 
zugreifen.

Jedes Zigbee-Gerät erweitert dann die abgedeckte Fläche (Mesh)

von Stefan P. (disaster123)


Lesenswert?

Zigbee Receiver / Gateway usw. hab ich alles laufen... ich suche aktuell 
nach einer guten Möglichkeit selber einen Client zu bauen. Aber es gibt 
gefühlt zu viele Möglichkeiten ;-) und zu wenig ausführliche Hilfe.

von Harry L. (mysth)


Lesenswert?


von Stefan P. (disaster123)


Lesenswert?

Das liest sich ja gut. Welchen Vorteil hat der stm32wb gegenüber den 
ganzen anderen? Hast du zufällig ein umgesetzten Beispielprojekt von dem 
man lernen kann? Ich habe bei github gesucht aber nichts gefunden.

von Harry L. (mysth)


Lesenswert?

Stefan P. schrieb:
> Welchen Vorteil hat der stm32wb gegenüber den
> ganzen anderen?

Der hat zum Einen einen eigenen M0+-Core für den Zigbee-Stack und zum 
Anderen ist das gesamte Radio integriert.

Besorg dir am besten dieses Nucleo-Board:
https://www.st.com/en/evaluation-tools/p-nucleo-wb55.html

Von ST gibts dazu Online-Kurse bei Youtube und einige Beispiel-Projekte 
in der Cube-Software.

von Stefan P. (disaster123)


Lesenswert?

das klingt gut - wozu braucht man den USB Stick - zum programmieren?

von Stefan P. (disaster123)


Lesenswert?

preislich mit 62 € bei reichelt aber ganz schön teuer

von Harry L. (mysth)


Lesenswert?

Stefan P. schrieb:
> das klingt gut - wozu braucht man den USB Stick - zum programmieren?

Nö, das ist ein eigenständiges Dev-Board damit du auch eine Gegenstelle 
zum Funken hast.
Kann man u.A. zum Sniffen nutzen.

von Stefan P. (disaster123)


Lesenswert?

OK aber 62 € ist nicht ohne. Ich dachte ich komme so mit 20 € pro Device 
aus.

von Michael D. (nospam2000)


Lesenswert?

wie wäre es hiermit:
https://www.mouser.de/new/nordic-semiconductor/nordic-nrf52840-usb-dongle/

kostet 11,- Euro

das große DevKit kostet 50,- Euro

von Stefan P. (disaster123)


Lesenswert?

Michael D. schrieb:
> wie wäre es hiermit:
> https://www.mouser.de/new/nordic-semiconductor/nordic-nrf52840-usb-dongle/
>
> kostet 11,- Euro
>
> das große DevKit kostet 50,- Euro

ja neh nen usb dongle brauche ich gar nicht. Ich suche ein möglichst 
komplettes einfach zu programmierendes low voltage device was ich mit 2x 
AA betreiben kann und was zigbee spricht und UART/GPIO kann für einen 
JSN-SR04T-2.0

von Michael D. (nospam2000)


Lesenswert?

Stefan P. schrieb:

> ja neh nen usb dongle brauche ich gar nicht. Ich suche ein möglichst
> komplettes einfach zu programmierendes low voltage device was ich mit 2x
> AA betreiben kann und was zigbee spricht und UART/GPIO kann für einen
> JSN-SR04T-2.0

Genau das kann das Teil, aber dazu muss man natürlich erst lesen.

Der Formfaktor ist so gemacht, dass du es direkt auf dein Board auflöten 
kannst. Den USB Anschluss ignorierst du einfach.

Natürlich gibt es das auch ohne USB Anschluss, das sieht dann so aus:
Ebay-Artikel Nr. 194017870564

 Michael

von Stefan P. (disaster123)


Lesenswert?

Sorry, dass es doof rüber kam. Ich habe es wirklich gelesen. Ich kann 
programmieren habe mit HW an sich aber wenig bis nichts zu tun. Fällt 
mir deshalb  etwas schwer. Sah für mich wirklich wie nen USB Stick aus 
den man auch  so nutzen muss (trotz lesen). Ich sehe mir mal ein paar 
youtube videos dazu an.- Habe das Gefühl, dass ist besser für mich. 
Danke!

von Stefan P. (disaster123)


Lesenswert?

@michael sorry vermutlich doofe Frage aber ich bin echter Anfänger was 
das angeht. Das Nordic Semiconductor nRF52840 Development Kit brauche 
ich ja nicht oder? Ich kann den nRF52840 ja irgendwie auf nen breadboard 
klemmen?

von Michael D. (nospam2000)


Lesenswert?

Stefan P. schrieb:
> @michael sorry vermutlich doofe Frage aber ich bin echter Anfänger was
>was das angeht

Ok, dann ist das Teil vielleicht doch nicht ganz das passende. Plug and 
Play ist das nicht.

> Das Nordic Semiconductor nRF52840 Development Kit brauche
> ich ja nicht oder?

Nein, das brauchst du nicht. Da ist eben gleich noch ein JTAG Interface 
zum Debuggen drauf und ein paar weitere Extras.

> Ich kann den nRF52840 ja irgendwie auf nen breadboard klemmen?

Da benötigst du ein passendes Modul dafür. An den USB Stick kann man 
sicher auch Pins anlöten, aber das die dann vernünftig halten glaube ich 
nicht, da es nur halbe Löcher am Rand hat, eben zum Auflöten auf ein 
anderes Board oder um direkt Kabel anzulöten.

Der Stick hat den Vorteil, dass man ihn direkt per USB programmieren 
kann. Für andere Module benötigst du einen JTAG Programmer.

Du kannst dir mal die neue Generation des Micro:Bit v2 mit dem nRF52833 
ansehen: 
https://www.nordicsemi.com/News/2020/10/Nordic-powered-next-generation-microbit-to-support-AI-and-machine-learning-applications

Gibt es z.B. hier: 
https://www.reichelt.de/bbc-micro-bit-v2-bbc-micro-bit-v2-p289797.html?&nbc=1&trstct=lsbght_sldr::239298

Das geht vielleicht eher in die Richtung die du gerne hättest.

Da gibt es auch das MakerHawk BBC Micro: Bit Erweiterungsplatine 
Breakout Adapter Shield dafür (Amazon).

 Michael

von Stefan P. (disaster123)


Lesenswert?

Super vielen Dank! Ich habe mir jetzt erstmal den 
https://www.mouser.de/new/nordic-semiconductor/nordic-nrf52840-usb-dongle/ 
bei Ali bestellt. Gucken wir mal wie weit ich damit komme.

von Michael D. (nospam2000)


Lesenswert?

Stefan P. schrieb:
> Ich habe mir jetzt erstmal den
> nordic-nrf52840-usb-dongle bei Ali bestellt.

Dazu ist mir noch ein interessantes Video über den Weg gelaufen:
https://www.youtube.com/watch?v=R5wub5ywzTU

Ich bin noch auf der Suche nach Micropython Unterstützung für ZigBee. 
BLE wird unterstützt.

  Michael

von EmKo (Gast)


Lesenswert?

Hey,
Ich benutze die Mighty Gecko Module von Silicon Labs und bin ganz 
zufrieden damit. Wenn ich mich nicht täusche gabs die damals bei Digikey 
für ca. 8 Euro.

Die Module sind aber sehr klein und dazu gedacht direkt auf einer 
Platine gelötet zu werden.

von Stefan P. (disaster123)


Lesenswert?

Ah mega wenn man alles in Python programmieren könnte inkl zigbee Stack.

von Stefan P. (disaster123)


Lesenswert?

Michael D. schrieb:
> Stefan P. schrieb:
>> Ich habe mir jetzt erstmal den
>> nordic-nrf52840-usb-dongle bei Ali bestellt.
>
> Dazu ist mir noch ein interessantes Video über den Weg gelaufen:
> https://www.youtube.com/watch?v=R5wub5ywzTU
>
> Ich bin noch auf der Suche nach Micropython Unterstützung für ZigBee.
> BLE wird unterstützt.
>
>   Michael

Bzgl. micropython:
https://github.com/micropython/micropython/tree/master/ports/nrf

https://forum.micropython.org/viewtopic.php?f=12&t=5348&start=10&sid=16e7f6a24b37d6442f1fb097bb70ab4c

https://devzone.nordicsemi.com/f/nordic-q-a/19054/is-it-possible-to-program-nrf52-dk-with-python-instead-c-language

Mal gucken ob der Aufwand lohnt… oder ob es nicht einfach ist bei C zu 
bleiben.

von Michael D. (nospam2000)


Lesenswert?

Michael D. schrieb:
> Micropython Unterstützung für ZigBee

Jetzt habe ich tatsächlich was gefunden: https://trmm.net/Ikea/
"Ikea Tradfri LED power supplies with wireless receiver are cheap and 
easily modifiable. Some of them have accessible SWD programming headers 
allowing openocd to debug and modify the firmware."

Ich bin überrascht wie günstig die ZigBee Hardware des Möbelherstellers 
ist und wie offen.

  Michael

von EmKo (Gast)


Lesenswert?

Michael D. schrieb:
> Jetzt habe ich tatsächlich was gefunden: https://trmm.net/Ikea/

Ah in den Dingern steckt ja der selbe SoC. Also müssten die Mighty Gecko 
Module auch mit MicroPython laufen.

Wenn ich mal wieder im Büro bin probier ich das mal aus.

von Stefan P. (disaster123)


Lesenswert?

Habe meinen nrf52 dongle soweit laufen. Was mir noch unklar ist, ist die 
ich den nun an welchen Pins mit Batteriestrom statt usb versorgen kann.

von Michael D. (nospam2000)


Lesenswert?

Stefan P. schrieb:
> Habe meinen nrf52 dongle soweit laufen. Was mir noch unklar ist, ist die
> ich den nun an welchen Pins mit Batteriestrom statt usb versorgen kann.

Getting started Downloads:
https://www.nordicsemi.com/Software-and-tools/Development-Kits/nRF52840-Dongle/Download#infotabs
Datei:  Schematic_Layout pdf files/PCA10059_Schematic_And_PCB.pdf

Soweit ich diesen Schaltplan verstehe müsste der VBUS Anschluss der 
richtige sein, um Spannung einzuspeisen. Dieser Pin geht über einen 4,7 
Ohm Widerstand auf VDDH.

Board Bild in der Doku für die Anschlüsse:
https://infocenter.nordicsemi.com/index.jsp?topic=%2Fug_nrf52840_dongle%2FUG%2Fnrf52840_Dongle%2Fkit_hw_content.html

Die Product Specification, Kapitel 5.3 "Power"
https://infocenter.nordicsemi.com/pdf/nRF52840_PS_v1.2.pdf

 Michael

: Bearbeitet durch User
von Stefan P. (disaster123)


Lesenswert?

Ich hatte gelesen man soll SB2 trennen und SB1 verlöten und dann via VDD 
OUT 3,3V anlegen

Bin aber sehr unsicher ob das richtig ist

: Bearbeitet durch User
von Michael D. (nospam2000)


Angehängte Dateien:

Lesenswert?

Stefan P. schrieb:
> Ich hatte gelesen man soll SB2 trennen und SB1 verlöten und dann via VDD
> OUT 3,3V anlegen

Woher stammt diese Info?
/Edit: kommt wohl von hier: 
https://infocenter.nordicsemi.com/pdf/nRF52840_Dongle_User_Guide_v1.0.pdf 
bzw. 
https://infocenter.nordicsemi.com/index.jsp?topic=%2Fug_nrf52840_dongle%2FUG%2Fnrf52840_Dongle%2Fhw_power_ext_reg_source.html
Dort steht dann auch "Do not have both SB1 and SB2 connected at the same 
time as this will damage the nRF52840 SoC."

Ich habe die relevanten Schematic Ausschnitte mal angehängt.

"nRF52840_normal voltage mode.png" stammt aus der Product Specification 
welche ich im letzten Posting verlinkt hatte:
5.3.1.4 Regulator configuration examples, Figure 13

"nRF52840_Dongle_VDD" zeigt die beiden Jumper SB1 und SB2.

Den Jumper SB1 zu schließen kann ich nachvollziehen, damit kann man die 
Konfiguration aus Figure 13 verwenden und der REG0 wird nicht mehr 
verwendet, nur noch REG1.
Damit kann man sicher Strom sparen. Die Register DCDCEN0, REGOUT0 und 
DCDCEN müssen dann entsprechend gesetzt werden.

Wenn man den SB2 öffnet, dann wird der Dongle nicht mehr über den USB 
Port versorgt werden. Das bedeutet die externe Stromversorgung muss dann 
auch beim Programmieren über USB die MCU versorgen. Aber laut Doku 
dürfen ja nicht beide Jumper gleichzeitig geschlossen sein.

Dazu hat hier mal jemand gefragt, aber keine Antwort bekommen:
https://devzone.nordicsemi.com/f/nordic-q-a/58030/looking-for-ideas-to-mount-coin-battery-holder-to-nrf52840-dongle

  Michael

: Bearbeitet durch User
von Stefan P. (disaster123)


Lesenswert?

Danke dir, puh klingt alles mega kompliziert für jemanden der wenig 
Ahnung von Registern  hat ;-)

Also ich schließe mal SB1 und trenne SB2 und gucke mal was passiert...

von Michael D. (nospam2000)


Lesenswert?

Stefan P. schrieb:
> Danke dir, puh klingt alles mega kompliziert für jemanden der wenig
> Ahnung von Registern  hat ;-)

Daher ja mein erster Vorschlag. Da ändert sich garnichts, außer das die 
Spannung nicht am USB Stecker sondern an VBUS angelegt wird :-)

Du darfst dann natürlich nicht USB und gleichzeitig deine 
Spannungsquelle anschließen.

 Michael

: Bearbeitet durch User
von Stefan P. (disaster123)


Lesenswert?

EDIT: wenn man Ihn nun programmieren will geht das via USB, wenn man 
gleichzeitig die 3,3V Stromquelle - bei mir 2x AA anschließt

: Bearbeitet durch User
von Stefan P. (disaster123)


Lesenswert?

Mein Programm zum ansteuern des Ultraschallsensors funktioniert 
problemlos. Nun muss ich nur noch irgendwie Zigbee integrieren.

Ich wollte gucken, ob ich das hier irgendwie als Basis verwenden kann:
https://github.com/otaviojr/zigbee_light_sensor/

Oder hat jemand noch simpleren zigbee example Code?

von Michael D. (nospam2000)


Lesenswert?

Stefan P. schrieb:
> Oder hat jemand noch simpleren zigbee example Code?

Einfacher weiß ich nicht, aber zur Ergänzung: Example of ZigBee light 
bulb based on nRF52840 SoC: https://github.com/aeremin/nordic-zigbee

Was genau ist die Gegenstelle mit welcher du kommunizieren willst? Ist 
es ein ZLL Coordinator?

Die Infos aus folgendem Blog könnten noch nützlich sein, falls dir was 
essentielles im Code fehlt (ich denke da an "Schlüsselerlebnisse"):
https://community.oh-lalabs.com/t/guide-build-a-zigbee-cc2531-sniffer-how-to-use-it/469

  Michael

: Bearbeitet durch User
von Michael D. (nospam2000)


Lesenswert?

Hier noch ein paar Infos, wie man den nRF52840 Dongle zusammen mit den 
examples von Nordic verwenden kann, d.h. was man dazu anpassen muss:
https://devzone.nordicsemi.com/nordic/short-range-guides/b/getting-started/posts/nrf52840-dongle-programming-tutorial

von Michael D. (nospam2000)


Lesenswert?

Stefan P. schrieb:
> Nun muss ich nur noch irgendwie Zigbee integrieren.

Kannst du etwas konkreter sagen, mit welcher Gegenstelle du reden willst 
(z.B. Philips Hue Hub, IKEA TRÅDFRI, Amazon Echo+, ...) ?

Den Link für das Beispiel welches ich gepostet habe kann ich jetzt unter 
MacOS OSX übersetzen mit dem SDK welches im README genannt wird. Der 
Test steht noch aus.

Im README steht noch ein Abschnitt mit "Change `D0 D1 D2 ... DF`" drin. 
Dazu muss man die beiden binären .a library Files patchen. Das kann man 
z.B. mit folgenden Kommando machen, aber vorher \x00\x01\x02..\x0f durch 
den echten Key ersetzen. Woher man den bekommt habe ich oben unter 
"Schlüsselerlebnisse" geschrieben (wird dort Master Key genannt):
1
bbe -e "s/\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf/\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f/" -o libzboss.a.patched libzboss.a

bbe ist ein binär Streameditor, den bekommt man z.B. bei Sourceforge. 
Man kann natürlich einen HexEditor nehmen und das händisch machen.

  Michael

: Bearbeitet durch User

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.