CircuitPython - Driver Ebyte E32 Voir sur GitHub
Introduction
Ce projet est un driver qui vous permet d'interagir avec la série de modules LoRa E32 d'Ebyte dans CircuitPython.
Fonctionnalités
● Prend en charge tous les modules E32 UART standards.
● Support supplémentaire en fonction de la fréquence et de la puissance :
∘ Constantes pour la puissance d'émission.
∘ Calculatrices de taille de paquet maximale. (À FAIRE)
∘ Entièrement facultatif via des modules séparés.
● Versions minifiées pour les appareils avec un espace de stockage réduit :
∘ ~75 % plus petites pour les fichiers .py
∘ ~5 % plus petites pour les fichiers .mpy
Limitations
● Aucune limitation de taille de paquet intégrée :
∘ Varie grandement entre les fréquences et les paramètres d'utilisation.
∘ Pas suffisamment documentée dans les spécifications techniques de LoRA et LoRaWAN.
● Aucun protocole intégré :
∘ Tous les paquets LoRa sont collés les uns aux autres dans un buffer lors de la réception.
∘ Aucun support pour LoRaWAN. (Limitation du module)
● Support avancé manquant pour certains modules :
∘ Modules avec les préfixes 170
, 400
ou 900
. (S'améliorera avec le temps)
Documentation
Toute la documentation de ce projet est disponible sur Github.
Les fiches techniques de tous les modules E32 peuvent également être trouvées sur "files.nibblepoker.lu".
Utilisation
De nombreux exemples d'utilisation peuvent être trouvés sur GitHub dans le sous-dossier "examples/" du projet.
Les exemples couvrent tous les modes de fonctionnement des modules, à l'exception des modes wake-up et power-saving.
Cependant, si vous souhaitez avoir un aperçu rapide, je vous invite à lire le code ci-dessous extrait de l'exemple "transmit_fixed/sender_unicast.py" qui est utilisé pour envoyer un message en mode fixe à un récipient spécifique.
import time
import ebyte_e32
PIN_M0 = board.IO13
PIN_M1 = board.IO12
PIN_RXD = board.IO11 # Pin marked as RX on the module
PIN_TXD = board.IO10 # Pin marked as TX on the module
PIN_AUX = board.IO9
e32 = ebyte_e32.E32Device(PIN_M0, PIN_M1, PIN_AUX, PIN_TXD, PIN_RXD, address=0xBEEF, channel=4)
# Switching to fixed transmission mode.
e32.tx_mode = ebyte_e32.TransmissionMode.TRANSMISSION_FIXED
# Switching to mode 0. (Normal mode)
e32.mode = ebyte_e32.Modes.MODE_NORMAL
# Message content:
# * Receiver's address: 0x1337 (b'\13\x37')
# * Receiver's channel: 4 (b'\x04')
# * Message: b'Hello World !'
message = b'\x13\x37\x04Hello World !'
# Sending message with helper method
e32.send(message)
# The message may be truncated at specific lengths depending on the frequencies used.
# Please check the documentation for more information !
Essais IRL
Des tests ont été effectués avec cette librairie en utilisant un module E32 443T20D émettant à 10 mW / 10 dBm et 2,4 kbps.
La portée maximale observée était d'environ 1,7 km / 1,05 mi avec une ligne de visée dégagée (LOS).
Elle aurait probablement pu être plus grande si nous n'avions pas épuisé nos réserves de bières sur la première partie de la marche, et si nous étions prêts à marcher plus de 8 km jusqu'au prochain point dégagé.
Télechargements
Licence
License MIT