

Pour installer la bibliothèque, exécutez la commande suivante:
pip install ebyte-lora-e220Ici, un exemple de constructeur, vous devez passer l'interface UART et (si vous le souhaitez, mais il est recommandé) la broche AUX, M0 et M1.
from lora_e220 import LoRaE220
from machine import UART
uart2 = UART ( 2 )
lora = LoRaE220 ( '400T22D' , uart2 , aux_pin = 15 , m0_pin = 21 , m1_pin = 19 ) code = lora . begin ()
print ( "Initialization: {}" , ResponseStatusCode . get_description ( code )) from lora_e220 import LoRaE220 , print_configuration
from lora_e220_operation_constant import ResponseStatusCode
code , configuration = lora . get_configuration ()
print ( "Retrieve configuration: {}" , ResponseStatusCode . get_description ( code ))
print_configuration ( configuration )Le résultat
----------------------------------------
Initialization: {} Success
Retrieve configuration: {} Success
----------------------------------------
HEAD : 0xc1 0x0 0x8
AddH : 0x0
AddL : 0x0
Chan : 23 -> 433
SpeedParityBit : 0b0 -> 8N1 (Default)
SpeedUARTDatte : 0b11 -> 9600bps (default)
SpeedAirDataRate : 0b10 -> 2.4kbps (default)
OptionSubPacketSett: 0b0 -> 200bytes (default)
OptionTranPower : 0b0 -> 22dBm (Default)
OptionRSSIAmbientNo: 0b0 -> Disabled (default)
TransModeWORPeriod : 0b11 -> 2000ms (default)
TransModeEnableLBT : 0b0 -> Disabled (default)
TransModeEnableRSSI: 0b0 -> Disabled (default)
TransModeFixedTrans: 0b0 -> Transparent transmission (default)
----------------------------------------
Vous ne pouvez définir que le paramètre desidées, l'autre sera défini sur la valeur par défaut.
configuration_to_set = Configuration ( '400T22D' )
configuration_to_set . ADDL = 0x02
configuration_to_set . ADDH = 0x01
configuration_to_set . CHAN = 23
configuration_to_set . SPED . airDataRate = AirDataRate . AIR_DATA_RATE_100_96
configuration_to_set . SPED . uartParity = UARTParity . MODE_00_8N1
configuration_to_set . SPED . uartBaudRate = UARTBaudRate . BPS_9600
configuration_to_set . OPTION . transmissionPower = TransmissionPower ( '400T22D' ).
get_transmission_power (). POWER_10
# or
# configuration_to_set.OPTION.transmissionPower = TransmissionPower22.POWER_10
configuration_to_set . OPTION . RSSIAmbientNoise = RssiAmbientNoiseEnable . RSSI_AMBIENT_NOISE_ENABLED
configuration_to_set . OPTION . subPacketSetting = SubPacketSetting . SPS_064_10
configuration_to_set . TRANSMISSION_MODE . fixedTransmission = FixedTransmission . FIXED_TRANSMISSION
configuration_to_set . TRANSMISSION_MODE . WORPeriod = WorPeriod . WOR_1500_010
configuration_to_set . TRANSMISSION_MODE . enableLBT = LbtEnableByte . LBT_DISABLED
configuration_to_set . TRANSMISSION_MODE . enableRSSI = RssiEnableByte . RSSI_ENABLED
configuration_to_set . CRYPT . CRYPT_H = 1
configuration_to_set . CRYPT . CRYPT_L = 1
# Set the new configuration on the LoRa module and print the updated configuration to the console
code , confSetted = lora . set_configuration ( configuration_to_set )Je crée une classe de constantes pour chaque paramètre, ici une liste: AirDatarate, Uartbaudrate, UartParity, Transmissionpower, ForwardErrorCorrectionSwitch, WirelesswakeUptime, iodriveMode, FixedTransmission
Ici un exemple d'envoi de données, vous pouvez passer une chaîne
lora . send_transparent_message ( 'pippo' ) lora . send_fixed_message ( 0 , 2 , 23 , 'pippo' )Ici, le code du récepteur
while True :
if lora . available () > 0 :
code , value = lora . receive_message ()
print ( ResponseStatusCode . get_description ( code ))
print ( value )
utime . sleep_ms ( 2000 )Si vous souhaitez recevoir RSSI, vous devez également l'activer dans la configuration
configuration_to_set . TRANSMISSION_MODE . enableRSSI = RssiEnableByte . RSSI_ENABLEDet définissez l'indicateur sur true dans la méthode reçoit
code , value , rssi = lora . receive_message ( True )Résultat
Success!
pippo
Ici un exemple d'envoi de données, vous pouvez passer un dictionnaire
lora . send_transparent_dict ({ 'pippo' : 'fixed' , 'pippo2' : 'fixed2' }) lora . send_fixed_dict ( 0 , 0x01 , 23 , { 'pippo' : 'fixed' , 'pippo2' : 'fixed2' })Ici, le code du récepteur
while True :
if lora . available () > 0 :
code , value = lora . receive_dict ()
print ( ResponseStatusCode . get_description ( code ))
print ( value )
print ( value [ 'pippo' ])
utime . sleep_ms ( 2000 )Si vous souhaitez recevoir RSSI, vous devez également l'activer dans la configuration
configuration_to_set . TRANSMISSION_MODE . enableRSSI = RssiEnableByte . RSSI_ENABLEDet définir le drapeau sur true dans la méthode reçoit_dict
code , value , rssi = lora . receive_dict ( True )Résultat
Success!
{'pippo': 'fixed', 'pippo2': 'fixed2'}
fixed
Lora Smart Home (LLCC68) est un émetteur-récepteur LORA® RF de sous-GHZ pour les applications sans fil intérieures et intérieures à l'intérieur à l'intérieur à l'extérieur. Interface SPI. Pin-To-Pin est compatible avec SX1262. SX1261, SX1262, SX1268 et LLCC68 sont conçus pour une longue durée de vie de la batterie avec seulement 4,2 mA de consommation active active. Le SX1261 peut transmettre jusqu'à +15 dBm, et les SX1262, SX1268 et LLCC68 peuvent transmettre jusqu'à +22 dBm avec des amplificateurs de puissance intégrés très efficaces.
Ces dispositifs prennent en charge la modulation LORA pour les cas d'utilisation LPWAN et (g) la modulation FSK pour les cas d'utilisation hérités. Les appareils sont hautement configurables pour répondre à différentes exigences d'application pour l'utilisation des consommateurs. Le dispositif fournit une modulation LORA compatible avec les émetteurs-récepteurs SemTech utilisés par la spécification Lorawan® publié par Lora Alliance®. La radio convient aux systèmes ciblant la conformité aux réglementations radio, notamment, mais sans s'y limiter, ETSI EN 300 220, FCC CFR 47 partie 15, exigences réglementaires en Chine et ARB japonais T-108. La couverture en fréquence continue de 150 MHz à 960 MHz permet le soutien de toutes les principales bandes ISM de sous-GHz dans le monde.
| Llcc68 | SX1278-SX1276 | |
|---|---|---|
| Distance | > 11 km | 8 km |
| Taux (Lora) | 1,76 kbps - 62,5 kbps | 0,3 kbps - 19,2 kbps |
| Consommation d'énergie du sommeil | 2µA | 5µA |
Bibliothèque pour EBYTE LORA E220 LLCC68 Device pour Arduino, ESP32 ou ESP8266.
| PIN N ° | Épingle | Direction | Application PIN |
|---|---|---|---|
| 1 | M0 | Entrée (Pull-up faible) | Travaillez avec M1 et décidez des quatre modes de fonctionnement. Floating n'est pas autorisé; Cela peut être au sol. |
| 2 | M1 | Entrée (Pull-up faible) | Travaillez avec M0 et décidez des quatre modes de fonctionnement. Floating n'est pas autorisé; Cela peut être au sol. |
| 3 | Rxd | Saisir | Les entrées TTL UART se connectent à la broche de sortie TXD externe (MCU, PC). Il peut être configuré comme entrée à drain ouvert ou à pull-up. |
| 4 | Txd | Sortir | Les sorties TTL UART se connectent à la broche d'entrée RXD (MCU, PC) externe. Peut être configuré comme sortie de drain ouvert ou push-pull |
5 | Aux | Sortir | Pour indiquer l'état de travail du module et réveiller le MCU externe. Au cours de la procédure d'initialisation de l'auto-vérification, la PIN étend un niveau bas. Il peut être configuré en tant que sortie à drain ouvert ou push-pull (les flottants sont autorisés). |
| 6 | VCC | Alimentation 3V ~ 5,5 V CC | |
| 7 | GND | Sol |
Comme vous pouvez le voir, vous pouvez définir divers modes via des broches M0 et M1.
| Mode | M1 | M0 | Explication |
|---|---|---|---|
| Normale | 0 | 0 | Les canaux UART et sans fil sont ouverts et la transmission transparente est sur |
| Émetteur WOR | 0 | 1 | Émetteur WOR |
| Récepteur | 1 | 0 | Récepteur WOR (supporte le réveil sur l'air) |
| Mode de sommeil profond | 1 | 1 | Le module s'endort (se réveille automatiquement lors de la configuration des paramètres) |
Certaines broches peuvent être utilisées statiquement, mais si vous les connectez au microcontrôleur et les configurez dans la bibliothèque, vous gagnez en performances et pouvez contrôler tous les modes via le logiciel. Pourtant, nous allons expliquer mieux ensuite.
Comme je l'ai déjà dit, il n'est pas essentiel de connecter toutes les broches à la sortie du microcontrôleur; Vous pouvez mettre les broches M0 et M1 à haut ou bas pour obtenir la configuration souhaitée. Si vous ne connectez pas AUX, la bibliothèque définit un délai raisonnable pour vous assurer que l'opération est terminée ( si vous avez des problèmes avec la congélation de l'appareil, vous devez mettre une résistance de 4,7k pull-up ou mieux se connecter à l'appareil. ).
Lors de la transmission de données, des données peuvent être utilisées pour réveiller le MCU externe et retourner haut sur la finition de transfert de données.
Lors de la réception, Aux est bas et revient de haut lorsque le tampon est vide.
Il est également utilisé pour l'auto-vérification pour restaurer un fonctionnement régulier (en mode Power-On et Sleep / Program).
Le schéma de connexion ESP8266 est plus simple car il fonctionne à la même tension de communications logiques (3,3 V).
Il est essentiel d'ajouter une résistance de traction (4,7 kohms) pour obtenir une bonne stabilité.
| E22 | ESP8266 |
|---|---|
| M0 | D7 |
| M1 | D6 |
| TX | Broche D2 (pullup 4,7KΩ) |
| Rx | Broche D3 (pullup 4,7KΩ) |
| Aux | Broche D5 (pullup 4,7KΩ) |
| VCC | 5V (mais travaillez avec moins de puissance en 3,3 V) |
| GND | GND |
Schéma de connexion similaire pour ESP32, mais pour Rx et Tx, nous utilisons RX2 et TX2 car, par défaut, ESP32 n'a pas de logiciel mais a 3 sérial.
| E22 | ESP32 |
|---|---|
| M0 | D21 |
| M1 | D19 |
| TX | Broche rx2 (pullup 4,7KΩ) |
| Rx | Épingle TX3 (pullup 4,7KΩ) |
| Aux | PIN D18 (Pullup 4,7KΩ) (D15 pour réveiller) |
| VCC | 5V (mais travaillez avec moins de puissance en 3,3 V) |
| GND | GND |
| M0 | 2 (diviseur de tension) |
| M1 | 3 (diviseur de tension) |
| TX | Broche 14 TX (pullup 4,7KΩ) |
| Rx | Broche 13 Rx (pullup 4,7KΩ) |
| Aux | Broche 1 (pullup 4,7KΩ) |
| VCC | 5V |
| GND | GND |
Vous pouvez commander le PCB ici
Vidéo d'instruction et d'assemblage sur 6 parties du guide
Vous pouvez commander le PCB ici
Vidéo d'instruction et d'assemblage sur 6 parties du guide
La télémétrie de données sans fil LORA ou à longue portée est une technologie lancée par SEMTECH qui fonctionne à une fréquence plus faible que NRF24L01 (433 MHz, 868 MHz ou 916 MHz contre 2,4 GHz pour le NRF24L01) mais à la distance (de 5000 m à 11000m).
| Nom | Description | Adresse |
|---|---|---|
| Addition | Octet d'adresse élevée du module (la valeur par défaut) | 00h |
| Addl | Octet de faible adresse du module (la valeur par défaut) | 01h |
| Vomir | Informations sur le bit de parité de données et le débit de données aérien | 02h |
| OPTION | Type de transmission, taille de paquet, permettez le message spécial | 03h |
| Chan | Canal de communication (410m + chan * 1m), par défaut 17h (433 MHz), valide uniquement pour la vérification du périphérique 433 MHz ci-dessous pour vérifier la fréquence correcte de votre appareil | 04h |
| OPTION | Type de transmission, taille de paquet, permettez le message spécial | 05h |
| Transmission_mode | Beaucoup de paramètres qui spécifient la modalité de transmission | 06h |
| CRYPTE | Cryptage pour éviter l'interception | 07h |
Bit de parité UART: le mode UART peut être différent entre les parties de communication
| Bit de parité UART | Valeur constante |
|---|---|
| 8n1 (par défaut) | Mode_00_8n1 |
| 8O1 | Mode_01_8o1 |
| 8e1 | Mode_10_8e1 |
| 8N1 (égal à 00) | Mode_11_8n1 |
Taux de bauds UART: le taux de bauds UART peut être différent entre les parties de communication (mais non recommandées). Le taux de bauds UART n'a rien à voir avec les paramètres de transmission sans fil et n'affectera pas les fonctionnalités de transmission / réception sans fil.
| TTL UART BAUD TAUX (BPS) | Valeur constante |
|---|---|
| 1200 | UART_BPS_1200 |
| 2400 | UART_BPS_2400 |
| 4800 | UART_BPS_4800 |
| 9600 (par défaut) | UART_BPS_9600 |
| 19200 | UART_BPS_19200 |
| 38400 | UART_BPS_38400 |
| 57600 | UART_BPS_57600 |
| 115200 | UART_BPS_115200 |
Débit de données de l'air: plus le débit de données de l'air est faible, plus la distance de transmission, de meilleures performances anti-ingérence et le temps de transmission plus long; Le débit de données de l'air doit être constant pour les deux parties de communication.
| Taux de données de l'air (BPS) | Valeur constante |
|---|---|
| 2.4k | AIR_DATA_RATE_000_24 |
| 2.4k | AIR_DATA_RATE_001_24 |
| 2.4k (par défaut) | AIR_DATA_RATE_010_24 |
| 4.8k | AIR_DATA_RATE_011_48 |
| 9,6k | AIR_DATA_RATE_100_96 |
| 19.2k | Air_data_rate_101_192 |
| 38,4k | AIR_DATA_RATE_110_384 |
| 62,5k | Air_data_Rate_111_625 |
Ceci est la longueur maximale du paquet.
Lorsque les données sont plus petites que la longueur du sous-packet, la sortie série de l'extrémité de réception est une sortie continue ininterrompue. Le port série de fin de réception sortira le sous-packet lorsque les données sont plus grandes que la longueur du sous-packet.
| Paquet | Valeur constante |
|---|---|
| 200 bytes (par défaut) | SPS_200_00 |
| 128 bytes | SPS_128_01 |
| 64 bytes | SPS_064_10 |
| 32 bytes | SPS_032_11 |
Cette commande peut activer / désactiver le type de gestion de RSSI, et il est essentiel de gérer la configuration distante. Faites attention n'est pas le paramètre RSSI dans le message.
Lorsqu'elles sont activées, les commandes C0, C1, C2, C3 peuvent être envoyées en mode de transmission ou mode de transmission WOR pour lire le registre. Registre 0x00: Rester RSSI Ambient Noise RSSI Current 0x01: RSSI lorsque les données ont été reçues la dernière fois.
| RSSI AMPORT AMPORT | Valeur constante |
|---|---|
| Activer | RSSI_AMBIENT_NOISE_ENABLEAD |
| Désactiver (par défaut) | RSSI_AMBIENT_NOISE_DISABLEAD |
Vous pouvez modifier cet ensemble de constantes en appliquant une définition comme tel:
#define e220_22 // Valeur par défaut sans définir
Applicable pour E220 avec 22 dbm comme puissance maximale.
Une faible transmission de puissance n'est pas recommandée en raison de sa faible efficacité d'alimentation électrique.
| Puissance de transmission (approximation) | Valeur constante |
|---|---|
| 22 dbm (par défaut) | Power_22 |
| 17 dbm | Power_17 |
| 13dbm | Power_13 |
| 10 dbm | Power_10 |
Applicable pour E220 avec 30 dbm en puissance maximale.
Une faible transmission de puissance n'est pas recommandée en raison de sa faible efficacité d'alimentation électrique.
#define e220_30
| Puissance de transmission (approximation) | Valeur constante |
|---|---|
| 30 dBm (par défaut) | Power_30 |
| 27 dbm | Power_27 |
| 24 dbm | Power_24 |
| 21 dbm | Power_21 |
Vous pouvez également configurer la fréquence des canaux avec cette définition:
// l'un des #define fréquence_433 #define fréquence_170 #define fréquence_470 #define fréquence_868 #define fréquence_915
Lorsqu'il est activé, le module reçoit des données sans fil, et elle suivra un octet de résistance RSSI après la sortie via le port série TXD
| Activer RSSI | Valeur constante |
|---|---|
| Activer | RSSI_ENABLED |
| Désactiver (par défaut) | Rssi_disabled |
Mode de transmission: les trois premiers octets de la trame de données de chaque utilisateur peuvent être utilisés comme adresse et canal élevés / bas en mode de transmission fixe. Le module modifie son adresse et son canal lors de la transmission. Et il reviendra au paramètre d'origine après avoir terminé le processus.
| Bit d'autorisation de transmission fixe | Valeur constante |
|---|---|
| Mode de transmission fixe | Ft_fixed_transmission |
| Mode de transmission transparente (par défaut) | Ft_transparent_transmission |
Lorsqu'ils sont activés, les données sans fil seront surveillées avant qu'elles ne soient transmises, en évitant les interférences dans une certaine mesure, mais peuvent entraîner un retard de données.
| LBT Activer l'octet | Valeur constante |
|---|---|
| Activer | Lbt_enabled |
| Désactiver (par défaut) | Lbt_disabled |
Si WOR est transmis: après que le récepteur WOR a reçu les données sans fil et les sortira via le port série, il attendra 1000 ms avant de pénétrer à nouveau dans le WOR. Les utilisateurs peuvent saisir les données du port série et les renvoyer via Wireless pendant cette période. Chaque octet de série sera actualisé pendant 1000 ms. Les utilisateurs doivent transmettre le premier octet dans les 1000 ms.
| Temps de réveil sans fil | Valeur constante |
|---|---|
| 500 ms | Wake_up_500 |
| 1000 ms | Wake_up_1000 |
| 1500 ms | Wake_up_1500 |
| 2000 ms (par défaut) | Wake_up_2000 |
| 2500 ms | Wake_up_2500 |
| 3000 ms | Wake_up_3000 |
| 3500 ms | Wake_up_3500 |
| 4000 ms | Wake_up_4000 |
Tout d'abord, nous devons introduire une méthode simple mais pratique pour vérifier si quelque chose se trouve dans le tampon de réception.
int disponible ();
Il est simple de retourner le nombre d'octets que vous avez dans le flux actuel.
Le mode de transmission normal / transparent envoie des messages à tous les appareils avec la même adresse et le même canal.
La transmission fixe a plus de scénarios
Maintenant, vous avez toutes les informations pour faire votre travail, mais je pense qu'il est important de montrer quelques exemples réels pour mieux comprendre toutes les possibilités.
Bibliothèque GitHub