Euen Diese Software wird in den USA standardmäßig über das 915 -MHz -ISM -Band legal übertragen. Das Senden dieser Bande ist in Ihrem Land möglicherweise nicht legal.
Wie man kompiliert
$ git clone --recurse-submodules https://github.com/jpaximadas/YeeNet.git
$ cd YeeNet
$ git config core.hooksPath git-hooks # Only necessary if you plan on contributing
$ export YEENET_BOARD=BLUEPILL_F103
$ make -C libopencm3
$ make -C src
Wenn Sie einen älteren Git haben oder sich selbst eingestuft haben und die --recurse-submodules übersprungen haben, können Sie Dinge beheben, indem Sie git submodule update --init (dies wird nur einmal benötigt)
Wenn Sie sich auf die Entwicklungskarte als die STM32 "Blue Pill" ansprechen, ändern Sie yeenet_board entsprechend. Eine Liste unterstützter Boards finden Sie unter unterstützten Boards
Nachfolgende Änderungen an den Quelldateien erfordern nur make -C src
So hochladen
Dieses Repository verwendet das STLink Open Source STM32 MCU-Programmierwerkzeug: https://github.com/stlink-org/stlink
- Stellen Sie sicher
- Stellen Sie sicher, dass SWDIO, SWCLK und GND mit der MCU verbunden sind (nur 3.3 V anschließen, wenn Sie die Platine vom Programmierer mit Strom versorgen möchten).
- Programmieren Sie den Chip:
OpenOCD ist eine Alternative zu STLink, wird jedoch nicht durch make upload unterstützt.
Wie man debugug
Sobald die Binärdatei hochgeladen wurde, laufen Sie Folgendes im SRC -Verzeichnis aus:
- Starten Sie den GDB -Server
- In einem anderen Terminal-immer noch in SRC-starten Sie GDB und konfigurieren
$ gdb yeenet_router_firmware.elf
$ set processor armv7
$ target remote localhost:4242
$ load yeenet_router_firmware.elf
Weitere GDB bei STM -Lesung:
https://www.st.com/resource/en/user_manual/dm00613038-stm32cubeide-stlink-gdb-server-stmicroelectronics.pdf
Beachten Sie, dass dieser PDF den STMCube -GDB -Server verwendet, nicht den Open Source STLink One. Aus der Sicht des GDB -Kunden gibt es jedoch keinen Unterschied. Seite 6/15 des PDF zeigt, wie man Haltepunkte und Wachpoints verwendet.
So verwenden Sie die serielle Schnittstelle
Hier gibt es serielle Treiber in der Entwicklung: https://github.com/jpaximadas/yeenet-router-driver-python
Verzeichnisse
- SRC enthält das Programm
- Shared enthält gemeinsam genutzte Dateien von libopencm3
Unterstützte Boards
Yeenet zielt darauf ab, leicht verfügbare und kostengünstige STM32-Entwicklungsboards anzusprechen. Eine Tabelle mit unterstützten Zielen und ihren entsprechenden Yeenet_board -Wert finden Sie unten.
| Planke | Yeenet_board |
|---|
| Blaue Pille STM32F103 | Bluepill_f103 |
| Schwarze Pille STM32F411 | Blackpill_f411 |
Die Unterstützung für andere Boards kann hinzugefügt werden, indem eine geeignete Plattformdefinition in platform/ und yeenet.mk entsprechend aktualisiert wird.
Breadboard -Setup
Die folgende Tabelle zeigt, wie die Stifte der unterstützten Entwicklungsboards mit dem SX127X und USB an UART verbunden werden sollten. Bitte lesen Sie die Warnungen am Ende des Abschnitts durch, bevor Sie versuchen, dies zu dem Breadboard.
| Funktion | Blaue Pille/schwarze Pille Pin |
|---|
| Serien TX | PA9 |
| Serienrx | Pa10 |
| Irq | PA0 |
| Mosi | PA7 |
| Miso | PA6 |
| Sck | PA5 |
| CS/SS | A1 |
| RST | B9 |
| Adressbit 0 | B10 |
| Adressbit 1 | B11 |
- Serielle TX/RX sollte eine Verbindung zu einem USB/UART -Chip herstellen.
- IRQ sollte am SX127X mit DIO0 eine Verbindung herstellen. (Kann D0 oder G0 auf einem Breakout -Board genannt werden)
- MOSI, MISO, SCK und SS sollten sich von der Entwicklerplatine mit den entsprechenden Stiften des SX127X -Breakouts verbinden.
- RST sollte von der Entwicklungsplatte mit dem entsprechenden Pin auf dem SX1276X -Breakout verbunden werden.
- Adressbits 0 und 1 sollten von der Entwicklungskarte auf 3,3 V oder Boden ausgeführt werden.
Euen Fahren Sie die Karte nicht von mehr als einer Spannungsquelle mit. Dadurch wird der Regler auf der PCB beschädigt.
Euen Setzen Sie die SX127X- oder SX127X Dev Board nur mit 3,3 Volt mit. Das Layout der Stifte über den Routen signalisiert vom SX127X in Stifte des Bluepill, die nicht 5 Volt -tolerant sind. Der Adafruit SX127X Breakout wird 5 Volt -Logiksignale ausgeht und den Bluepill schädt, wenn sie von 5 Volt angetrieben werden.
Empfohlener Weg, um die Boards mit Strom zu versorgen
- Bringen Sie den Bluepill von 5 Volt vom USB nach UART mit. Der Bluepill reguliert dies für seine eigene Verwendung auf 3,3 Volt. Alternativ kann der Bluepill mit 3,3 Volt von einem Regler auf der USB nach UART angetrieben werden.
- Setzen Sie den SX127X von einem anständigen 3,3 -Volt -Regler mit. Der 3,3 -Volt -Regler des Bluepill ist nicht gut genug für die Aufgabe. Verwenden Sie die auf Ihrem USB, um UART zu erhalten, wenn es anwesend ist.
- Lassen Sie 3,3 Volt auf dem ST-Link-Programmierer getrennt.
Todo
- Arbeiten Sie am Pakethandler
- Verbesserung des Fehlermodus, wenn ein ACK spät ankommt
- Wie wirken sich ACKs auf den Pakethandler bei der Arbeit mit nicht abgeschlossenen Paketen aus?
- Funktioniert TX Snooze Feature?
- Verhindern, dass paket_handler unmittelbar nach dem Setup tx_pkt null Zeiger Dereferenzierungen beim RX'ing A Nack?
- Geben Sie die Funktion höherer Ebenen zur Verfügung, um den Standort des RX_PKT -Zeigers in Paket_handler zu verschieben
- Schreiben Sie Paketrouter
- USB implementieren und UART -Funktionen behalten
- Dokumentation aufschreiben
- Verbesseren Sie Backoff_RNG in Paket_handler, damit der Entropiepool nicht schnell erschöpft ist
- Verbessern Sie die Organisation des Hardware -Setups
- Starten Sie Repo für die Benutzeroberfläche (verwenden Sie Dear IMGui)
- SX127X FSK -Funktionalität zu modem_xl.c hinzufügen
Erhalten eines Breakout -Boards
Das AdaFruit Breakout Board kann zu viel Platz einnehmen, um auf alle Stifte zuzugreifen, und kann teuer sein. Sie können hier ein bloßes Breakout -Board erhalten:
Das RFM95 -Radiomodul kann von Aliexpress oder Banggood für weniger als fünf Dollar pro Stück erhalten werden.
Notizen
SX127X Notizen
- Der Reset -Pin auf der Adafruit Breakout -Board muss niedrig gehalten werden, damit das Gerät entgegen den Anweisungen auf der Adafruit -Website funktioniert.
- Der Reset -Stift muss kurz gezogen werden, um das Gerät beim Neustart der MCU zurückzusetzen. Dies garantiert, dass Register auf den ursprünglichen Zustand zurückgesetzt werden. Das Versäumnis, dies zu tun, kann seltsames Verhalten verursachen.
- Um das IRQ -Flagsregister zu löschen, müssen Nullen zweimal über SPI geschrieben werden. Dies ist ein Hardwarefehler.
- Beim Einlegen des SX127X in den Lora -Modus muss er zuerst in den Schlafmodus gesteckt werden. Nicht Standby oder andere Modi.
- Der SPI -Meister kann nicht außerhalb des Standby -Modus an das FIFO schreiben
- Das FIFO wird während einer Modusänderung nicht immer gelöscht. Gehen Sie niemals davon aus, dass das FIFO automatisch gelöscht wird
- Der explizite Header -Modus in SF = 6 funktioniert nicht. Die automatische Modulationskonfigurationsfunktion in dieser Software lehnt diese Modulationskonfiguration nicht ab.
- Dieser Code berührt nicht das "Sync -Wort" -Byte, mit dem Loras Pakete automatisch ablehnen können.
Bluepill Dev Board Notizen
- Die PC13 -LED auf der "Bluepill" -Devplatine hat eine Anode mit 3,3 Volt gebunden und die Kathode ist (aus irgendeinem Grund) an PC13 gebunden. Dies bedeutet, dass PC13 niedrig gezogen werden muss, um die LED einzuschalten.
- Versuchen Sie nicht, den SX127X aus der 3,3 -Volt -Versorgung des Bluepill zu versorgen. Der On-Board-Regler kann die Aufgabe während RX oder TX nicht erledigen. Ihr SX127X wird ausbrennen und zurücksetzen.
USB zu UART -Notizen
- Die Verwendung eines Arduino -Boards mit dem CH430 -USB zu UART -Chip als USB -to UART -Gerät ist keine einfache Aufgabe. Was als TX auf der PCB bezeichnet wird (aber RX aus der Sicht des Arduino) kann in einen 5 Volt -toleranten TX -Pin Ihrer Entwicklerplatine gebracht werden. Hier kommt der schwierige Teil. Was als RX auf der PCB laballiert ist (eigentlich TX aus der Sicht des Arduino) funktioniert nicht, wenn Sie es einfach in den RX -Pin Ihrer Entwicklerplatine anschließen. Sie müssen direkt zum CH430 -Chip löten. Wenden Sie sich an das Datenblatt, um herauszufinden, wo sich die TX -Pin des CH430 befindet. Der Brief am Ende von "CH430" ist sehr wichtig.
Yee: https://youtu.be/iepv31_e__4
