️ Ce logiciel transmet par défaut sur la bande ISM 915 MHz légale aux États-Unis. La transmission de ce groupe peut ne pas être légale dans votre pays.
Comment compiler
$ 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
Si vous avez un Git plus ancien, ou vous avez pris de l'avance sur vous-même et que vous avez sauté les --recurse-submodules vous pouvez corriger les choses en exécutant git submodule update --init (ce n'est nécessaire qu'une seule fois)
Si vous ciblez le tableau de développement autre que la "pilule bleue" STM32, modifiez en conséquence Yeenet_Board. Pour une liste des conseils pris en charge, voir les conseils pris en charge
Les modifications ultérieures des fichiers source ne nécessitent que make -C src
Comment télécharger
Ce référentiel utilise le jeu d'outils de programmation MCU STLINK STM32 STM32: https://github.com/stlink-org/stlink
- Assurez-vous que BOOT0 n'est pas défini de telle sorte que la carte effacera la mémoire après une réinitialisation
- Assurez-vous que SWdio, SWCLK et GND sont connectés au MCU (connectez uniquement 3,3 V si vous avez l'intention d'alimenter la carte du programmeur)
- Programmez la puce:
OpenOCD est une alternative à STLink mais n'est pas prise en charge par make upload .
Comment déboguer
Une fois le binaire téléchargé, exécutez ce qui suit dans le répertoire SRC:
- Démarrer le serveur GDB
- Dans un autre terminal - toujours en SRC - marte GDB et configurer
$ gdb yeenet_router_firmware.elf
$ set processor armv7
$ target remote localhost:4242
$ load yeenet_router_firmware.elf
De plus GDB sur la lecture STM:
https://www.st.com/resource/en/user_manual/dm00613038-stm32cubeide-stlink-gdb-server-stmicroelectronics.pdf
Notez que ce PDF utilise le serveur GDB STMCUBE, pas le STLink Open Source. Cependant, du point de vue du client GDB, il n'y a pas de différence. La page 6/15 du PDF montre comment utiliser les points d'arrêt et les points de surveillance.
Comment utiliser l'interface série
Il y a des pilotes en série en développement ici: https://github.com/jpaximadas/yeenet-router-driver-python
Répertoires
- SRC contient le programme
- Partagé contient des fichiers partagés de libopencm3
Cartes soutenues
Yeenet vise à cibler facilement les conseils de développement STM32 facilement disponibles et à faible coût. Voir ci-dessous pour un tableau des cibles prises en charge et leur valeur de panneau Yeenet_Board correspondante.
| Conseil | Yeenet_board |
|---|
| Pilule bleue stm32f103 | Bluepill_f103 |
| Pilule noire stm32f411 | Blackpill_f411 |
La prise en charge des autres conseils peut être ajoutée en créant une définition de plate-forme appropriée dans platform/ et la mise à jour yeenet.mk en conséquence.
Configuration de la planche à pain
Le tableau suivant montre comment les broches sur les cartes de développement prises en charge doivent être connectées au SX127X et USB à UART. Veuillez lire les avertissements à la fin de la section avant de tenter de la planche à pain.
| Fonction | Pilule bleue / pilule noire |
|---|
| Tx en série | PA9 |
| Rx en série | PA10 |
| IRQ | PA0 |
| Mosi | PA7 |
| Miso | PA6 |
| SCK | PA5 |
| CS / SS | A1 |
| Premier | B9 |
| Adresse Bit 0 | B10 |
| Adresse du bit 1 | B11 |
- Le TX / RX série doit se connecter à une puce USB / UART.
- IRQ doit se connecter à Dio0 sur le SX127X. (Peut être appelé D0 ou G0 sur une planche de rupture)
- MOSI, MISO, SCK et SS doivent se connecter de la carte de développement aux broches appropriées sur la cassure SX127X.
- RST doit se connecter de la carte de développement à la broche appropriée sur la cassure SX1276X.
- Les bits d'adressage 0 et 1 doivent être passés de la carte de développement à 3,3 V ou au sol.
️ N'alimentez pas la carte à partir de plusieurs source de tension. Cela endommagera le régulateur sur le PCB.
️ Alimenter la carte de développement SX127X ou SX127X avec 3,3 volts uniquement. La disposition des broches au-dessus des routes signale du SX127X en broches du Bluepill qui ne sont pas tolérantes à 5 volts. La cassure Adafruit SX127X émettra des signaux logiques de 5 volts et endommagera le Bluepill s'il est alimenté par 5 volts.
Moyen recommandé d'alimenter les planches
- Alimenter le Bluepill de 5 volts de l'USB à UART. Le Bluepill réglementera cela à 3,3 volts pour son propre usage. Alternativement, le Bluepill peut être alimenté avec 3,3 volts d'un régulateur de l'USB à UART.
- Alimenter le SX127X à partir d'un régulateur décent de 3,3 volts. Le régulateur de 3,3 volts du Bluepill n'est pas assez bon pour la tâche. Utilisez celui sur votre USB pour UART s'il est présent.
- Laissez 3,3 volts sur le programmeur ST-Link déconnecté.
FAIRE
- Travailler sur Packet Handler
- Améliorer le mode de défaillance lorsqu'un ACK arrive en retard
- Comment les ACK affectent-ils le gestionnaire de paquets lorsque vous travaillez avec des paquets non emballés
- La fonctionnalité TX SNOOZE fonctionne-t-elle?
- Empêcher Packet_Handler de dérégérer le pointeur nul tx_pkt immédiatement après la configuration lorsque Rx'ing a nack?
- Fournir une fonction de couches plus élevée pour déplacer l'emplacement du pointeur RX_PKT dans Packet_Handler
- Écrire un routeur de paquets
- Implémenter USB et conserver les fonctionnalités UART
- Rédiger la documentation
- Améliorer Backoff_rng dans Packet_Handler afin qu'il n'épuise pas rapidement la piscine d'entropie
- Améliorer l'organisation de la configuration du matériel
- Démarrer le repo pour l'interface utilisateur (utilisez cher imgui)
- Ajoutez une fonctionnalité SX127X FSK à modem_xl.c
Obtenir une planche à rupture
Le tableau de rupture Adafruit peut occuper trop d'espace pour accéder à toutes les épingles et peut être coûteux. Vous pouvez obtenir une planche à rupture nue ici:
Le module radio RFM95 peut être obtenu auprès d'AliExpress ou de Banggood pour moins de cinq dollars par pièce.
Notes
Notes SX127X
- L'épingle de réinitialisation sur la carte de rupture Adafruit doit être maintenue bas pour que l'appareil fonctionne, contrairement aux instructions sur le site Web d'Adafruit.
- La broche de réinitialisation doit être tirée momentanément afin de réinitialiser l'appareil lorsque le MCU redémarre. Cela garantit que les registres sont réinitialisés à l'état d'origine. Ne pas faire cela peut provoquer un comportement étrange.
- Afin d'effacer le registre des drapeaux IRQ, les zéros doivent être écrits deux fois sur SPI. Il s'agit d'un bug matériel.
- Lorsque vous mettez le SX127X en mode LORA, il doit d'abord être mis en mode de sommeil. Pas de veille ou de tout autre modes.
- Le maître SPI ne peut pas écrire au FIFO en dehors du mode de secours
- Le FIFO n'est pas toujours effacé lors d'un changement de mode. Ne présumez jamais que le FIFO est automatiquement effacé
- Le mode d'en-tête explicite dans SF = 6 ne fonctionne pas. La fonction de configuration de modulation automatique dans ce logiciel ne rejettera pas cette configuration de modulation.
- Ce code ne touche pas l'octet "Sync Word" qui permet à Loras de rejeter automatiquement les paquets.
BluePill Dev Board Notes
- La LED PC13 sur la carte Dev "BluePill" a son anode liée à 3,3 volts et sa cathode est attachée à PC13 (pour une raison quelconque). Cela signifie que PC13 doit être tiré bas pour allumer la LED.
- N'essayez pas d'alimenter le SX127X à partir de l'alimentation de 3,3 volts du Bluepill. Le régulateur embarqué ne peut pas accomplir la tâche pendant RX ou TX. Votre SX127X fera brunir et réinitialisera.
USB à UART Notes
- L'utilisation d'une carte Arduino avec la puce USB CH430 vers UART comme appareil USB vers UART n'est pas une tâche simple. Ce qui est étiqueté comme TX sur le PCB (mais est en fait RX du point de vue de l'Arduino) peut être placé dans une broche TX tolérante à 5 volts de votre carte de développement. Voici la partie difficile. Ce qui est laballé en Rx sur le PCB (en fait TX du point de vue de l'Arduino) ne fonctionnera pas si vous le branchez simplement sur la broche RX de votre carte de développement. Vous devez souder directement sur la puce CH430. Consultez la fiche technique pour trouver où se trouve la broche TX du CH430. La lettre à la fin de "CH430" compte beaucoup.
Yee: https://youtu.be/iepv31_e__4
