EByte LoRa E32 & MicroPython: specifiche, panoramica e primo utilizzo – 1


L’Internet delle Cose (IoT) è diventato sempre più popolare, creando una domanda per tecnologie di comunicazione a lunga distanza e a basso consumo energetico.

EByte LoRa E32 e MicroPython: specifiche, panoramica e primo utilizzo
EByte LoRa E32 e MicroPython: specifiche, panoramica e primo utilizzo

LoRa (Long Range) è una tecnologia di rete a larga area a bassa potenza (LPWAN) progettata per soddisfare queste esigenze, rendendola ideale per applicazioni IoT. Uno dei dispositivi che utilizza la tecnologia LoRa è la serie Ebyte LoRa E32, una collezione di moduli trasceiver wireless. In questa serie di articoli, esploreremo il dispositivo Ebyte LoRa E32 e la sua integrazione con MicroPython. Questo primo articolo si concentrerà sulle specifiche e sull’uso di base del dispositivo.

Dettaglio EByte LoRa E32
Dettaglio EByte LoRa E32

Ecco la mia selezione di dispositivi LoRa E32 AliExpress (433MHz 5Km) - AliExpress (433MHz 8Km) - AliExpress (433MHz 16Km) - AliExpress (868MHz 915MHz 5.5Km) - AliExpress (868MHz 915MHz 8Km)

Stiamo per testare l’E32-433T20D che è un modulo, che si interconnette tramite seriale, wireless basato sul chip RF SX1278 di Semtech (livello TTL), prevede una modalità di trasmissione trasparente, funzionante nella banda di frequenza 410-441MHz (predefinita 433MHz), utilizzando la tecnologia a spettro espanso LoRa.

Il SX1278 è un modulo LoRa che supporta la tecnologia a spettro espanso, offrendo numerosi vantaggi per applicazioni di comunicazione a bassa velocità. Con la sua lunga distanza di comunicazione, robuste capacità anti-interferenza e forte riservatezza, il SX1278 è diventato una scelta popolare in vari settori. Questo articolo discuterà delle caratteristiche chiave, dei vantaggi e delle applicazioni del modulo LoRa SX1278.

Panoramica SX1278

Il modulo LoRa SX1278 è progettato per prestazioni ottimali in applicazioni di comunicazione a bassa velocità. Ha una velocità di trasmissione aria predefinita di 2,4 kbps e una potenza di trasmissione di 20 dBm. Il modulo incorpora un oscillatore a cristallo di grado industriale, garantendo stabilità, coerenza e un’accuratezza inferiore a 10 ppm. Attualmente, il SX1278 è in produzione di massa stabile ed è ampiamente utilizzato nell’industria, nella trasformazione IoT e nelle applicazioni di mobili intelligenti.

Vantaggi del modulo LoRa SX1278

  1. Tecnologia a Spettro Espanso: Il SX1278 supporta la modulazione LoRa avanzata, offrendo vantaggi di lunga distanza e anti-interferenza rispetto alla tecnologia GFSK tradizionale.
  2. Distanza di Comunicazione: In condizioni ideali, la distanza di comunicazione può raggiungere fino a 3 km.
  3. Modalità di trasmissione: Il modulo supporta la trasmissione punto-punto, la trasmissione broadcast e il monitoraggio del canale.
  4. Risveglio Aereo: La funzione di consumo energetico ultra-basso rende SX1278 adatto per applicazioni alimentate a batteria.
  5. Correzione degli errori in avanti (FEC): Il modulo supporta FEC per migliorare la stabilità della comunicazione.
  6. Potenza di trasmissione regolabile: La potenza di trasmissione massima è di 100 mW, con diversi livelli regolabili tramite software.
  7. Banda di frequenza: SX1278 opera nella banda di frequenza globale senza licenza ISM 433 MHz.
  8. Velocità di trasmissione dati: Il modulo supporta velocità di trasmissione dati che variano da 0,3 kbps a 19,2 kbps.
  9. Alimentazione: È supportata un’alimentazione da 2,3 – 5,5 V, con oltre 3,3 V che garantisce prestazioni ottimali.
  10. Design di grado industriale: SX1278 è progettato per un uso a lungo termine a temperature comprese tra -40°C e +85°C.
  11. Antenna: L’interfaccia SMA-K consente un facile collegamento di un cavo coassiale o di un’antenna esterna.

Sicurezza e compressione dei dati

Il modulo SX1278 offre funzioni di crittografia e compressione dei dati, fornendo una comunicazione sicura. I dati trasmessi via etere sono casualizzati e algoritmi rigorosi di crittografia e decrittografia rendono i dati intercettati incomprensibili. La funzione di compressione dei dati aiuta a ridurre il tempo di trasmissione, abbassa la probabilità di interferenze e migliora l’affidabilità e l’efficienza della trasmissione.

Certificazioni

Il modulo E32-433T20D, che incorpora SX1278, aderisce alle specifiche di progettazione FCC, CE e CCC, nonché ad altri standard nazionali e internazionali. Rispetta varie certificazioni RF e requisiti di esportazione.

Tipo di funzionamento e trasmissione

Questo dispositivo ha alcune funzioni interessanti:

Trasmissione

Scenario di trasmissione LoRa E32

Trasmissione trasparente

Questo può essere considerato una “Modalità Demo”, di default, puoi inviare messaggi a tutti i dispositivi con lo stesso indirizzo e canale configurati.

Trasmissione fissa

In questo tipo di trasmissione, puoi specificare un indirizzo e un canale dove vuoi inviare il messaggio.
Puoi inviare un messaggio a un:

  • Dispositivo specifico con un Address Low, Address High e Canale predefiniti.
LoRa E32 Messaggio fisso a un dispositivo specifico
  • Inviare un messaggio in broadcast su un canale predefinito.
Messaggi broadcast a un insieme di dispositivi di canale

Modalità normale

Invia semplicemente un messaggio.

Modalità sveglia e modalità risparmio energetico

Come puoi intendere, se un dispositivo è in modalità sveglia può “svegliare” uno o più dispositivi che sono in modalità risparmio energetico con una comunicazione preliminare.

Modalità programma/sonno

Con questa configurazione, puoi cambiare la configurazione del tuo dispositivo.

Specifiche

Ecco le specifiche per il modulo:

  • Dimensioni modulo: 21*36mm
  • Tipo di antenna: SMA-K (impedenza 50Ω)
  • Distanza di trasmissione: 3000m (max)
  • Potenza massima: 2dB(100mW)
  • Velocità d’aria: 2.4Kbps (6 livelli opzionali (0.3, 1.2, 2.4, 4.8, 9.6, 19.2kbps))
  • Lunghezza emissione: 512Byte
  • Lunghezza ricezione: 512Byte
  • Interfaccia di comunicazione: UART – 8N1, 8E1, 8O1, otto tipi di baud rate UART, da 1200 a 115200bps (Default: 9600)
  • Supporto RSSI: No (Elaborazione intelligente integrata)
  • Frequenza di lavoro: 410MHz-441MHz (Default 433MHz), Canale: 32
Parametro elettronicoMin.MediaMax.Unità
Alimentazione2.33.35.5V
Livello di comunicazione3.03.33.6V
Corrente in trasmissione102110118mA
Corrente in ricezione121518mA
Corrente in sonno358μA
Temperatura di funzionamento-4020+85
Umidità operativa106090%
Temperatura di conservazione-4020+125

Devi prestare attenzione al livello di comunicazione che differisce dall’alimentazione, il secondo può ricevere tensione come 3.3v e 5v, ma il primo richiede un 3.3v.

Schema dei pin

sx1278 sx1276 wireless lora uart module serial 3000m arduino 433 rf
Nr. PinElemento PinDirezione PinApplicazione Pin
1M0Input(debole pull-up)Lavora con M1 e decide le quattro modalità operative. Non è permesso lasciarlo flottante, può essere collegato a terra.
2M1Input(debole pull-up)Lavora con M0 e decide le quattro modalità operative. Non è permesso lasciarlo flottante, può essere collegato a terra.
3RXDInputGli ingressi TTL UART si collegano al pin di output TXD esterno (MCU, PC). Può essere configurato come ingresso open-drain o pull-up.
4TXDOutputGli output TTL UART si collegano al pin di ingresso RXD esterno (MCU, PC). Può essere configurato come output open-drain o push-pull.

5

AUX

Output
Per indicare lo stato di funzionamento del modulo e svegliare l’MCU esterno. Durante la procedura di inizializzazione del controllo automatico, il pin emette un livello basso. Può essere configurato come output open-drain o push-pull (è consentito flottante).
6VCCAlimentazione da 2,3V a 5,5V DC
7GNDTerra

Come puoi vedere, puoi impostare varie modalità tramite i pin M0 e M1.

ModalitàM1M0Spiegazione
Normale00UART e il canale wireless sono pronti all’uso
Sveglia01Stesso del normale, ma viene aggiunto un codice preambolo ai dati trasmessi per svegliare il ricevitore.
Risparmio energetico10UART è disabilitato e il wireless è in modalità WOR (sveglia su radio), il che significa che il dispositivo si accenderà quando ci sono dati da ricevere. La trasmissione non è consentita.
Sonno11Utilizzato per impostare i parametri. Trasmissione e ricezione disabilitate.

Per il prossimo semplice test, useremo la modalità Normale.

Cablaggio

STM32

STM32 STM32F411 STM32F411CEU6 pinout low resolution
STM32 STM32F411 STM32F411CEU6 pinout low resolution

Ecco la mia selezione di STM32 STM32F103C8T6 STM32F401 STM32F411 ST-Link v2 ST-Link v2 official

Per mettere in funzione la trasmissione trasparente, possiamo mettere M0 e M1 a GND.

STM32F4 EByte LoRa Exx normal mode
STM32F4 EByte LoRa Exx normal mode

Puoi rimuovere il cablaggio AUX per questo test, ma è meglio se lo colleghi.

E32STM32F4
M0GND (Set normal mode)
M1GND (Set normal mode)
RXPA10 (PullUP 4,7KΩ)
TXPA9 (PullUP 4,7KΩ)
AUXNon collegato (meglio se imposti un pin, ma non necessario per questo test)
VCC5v
GNDGND

esp32

ESP32 DOIT DEV KIT v1 pinout
ESP32 DOIT DEV KIT v1 pinout

Ecco la mia selezione di esp32 ESP32 Dev Kit v1 - TTGO T-Display 1.14 ESP32 - NodeMCU V3 V2 ESP8266 Lolin32 - NodeMCU ESP-32S - WeMos Lolin32 - WeMos Lolin32 mini - ESP32-CAM programmer - ESP32-CAM bundle - ESP32-WROOM-32 - ESP32-S

Lo schema di cablaggio è abbastanza semplice e per ora ho collegato M0 e M1 direttamente a GND per il test.

Ebyte LoRa E32 E22 E220 ESP32 DEV KIT V1 modalità normale su breadboard
Ebyte LoRa E32 E22 E220 ESP32 DEV KIT V1 modalità normale su breadboard
E32esp32
M0GND (Imposta modalità normale)
M1GND (Imposta modalità normale)
RXTX2 (PullUP 4,7KΩ)
TXRX2 (PullUP 4,7KΩ)
AUXNon collegato (meglio se imposti un pin, ma non necessario per questo test)
VCC5v
GNDGND

Raspberry Pi Pico

Schema dei pin del Raspberry Pi Pico rp2040 a bassa risoluzione
Schema dei pin del Raspberry Pi Pico rp2040 a bassa risoluzione

Qui la selezione di rp2040 Official Pi Pico - Official Pi Pico W - Waveshare rp2040-zero - WeAct Studio rp2040

E qui c’è lo schema di collegamento. Per questo test, è possibile rimuovere il collegamento del pin AUX. Si può anche vedere che utilizzo una porta seriale predefinita diversa poiché differisce dall’ambiente Arduino.

Modalità normale di Raspberry Pi Pico EByte LoRa E32 E220
Modalità normale di Raspberry Pi Pico EByte LoRa E32 E220

Presta attenzione, UART(1) usa pin diversi in MicroPython rispetto all’ambiente seriale Serial1 di Arduino

E32rp2040
M0GND (Imposta modalità normale)
M1GND (Imposta modalità normale)
RXTX1 GPIO4 (PullUP 4,7KΩ)
TXRX1 GPIO5 (PullUP 4,7KΩ)
AUX2 (meglio se imposti un pin, ma non necessario per questo test)
VCC5v
GNDGND

Per lo schema dei pin standard di Arduino, devi cambiare la dichiarazione UART così
uart2 = UART(1, rx=Pin(9), tx=Pin(8))

Semplice sketch di comunicazione

Ora, andremo a fare uno sketch semplice, senza alcuna libreria, che trasferisce un messaggio utilizzando la trasmissione trasparente che è l’impostazione predefinita per questi dispositivi LoRa.

#############################
#
# Simple send receive test
#
# by Renzo Mischianti
# www.mischianti.org
#
#############################

from machine import UART, Pin
import utime

# UART configuration Raspberry Pi Pico (Arduino)
uart1 = UART(1, 9600, rx=Pin(9), tx=Pin(8))
# UART configuration Raspberry Pi Pico (MicroPython)
# uart1 = UART(1, 9600)
# UART configuration ESP32
# uart1 = UART(2, 9600)

print("Hi, I'm going to send message!")

uart1.write("Hello, world?")
utime.sleep_ms(500)

while True:
    if uart1.any():
        char = uart1.read(1).decode('utf-8')
        print(char, end='')

Ecco la stampa del primo dispositivo avviato

Ciao, sto per inviare un messaggio!
13
Ciao, mondo?

Libreria

Ora facciamo lo stesso esempio con la libreria MicroPython ebyte-lora-e32. Naturalmente, questo è un esempio banale e non puoi capire il potenziale della libreria, ma puoi capire come usarla.

Per installare la libreria, puoi scaricarla da questo repository GitHub:

Oppure puoi installarla tramite Pypi con il comando:

pip install ebyte-lora-e32

Su Thonny IDE, puoi usare Strumenti --> Gestisci plug-in... .

EByte LoRa E32 MicroPython: pypi, pip library Thonny
EByte LoRa E32 MicroPython: PyPi, pip library Thonny

Schema di comunicazione con la libreria

Ora facciamo l’esempio precedente con la libreria.

#############################
#
# Simple send receive test
# with the micropython library
# pip install ebyte-lora-e32
#
# by Renzo Mischianti
# www.mischianti.org
#
#############################

from lora_e32 import LoRaE32, print_configuration, Configuration
from lora_e32_operation_constant import ResponseStatusCode
from machine import UART, Pin

# Initialize the LoRaE32 module
# UART configuration Raspberry Pi Pico (Arduino)
uart1 = UART(1, 9600, rx=Pin(9), tx=Pin(8))
# UART configuration Raspberry Pi Pico (MicroPython)
# uart1 = UART(1, 9600)
# UART configuration ESP32
# uart1 = UART(2, 9600)

lora = LoRaE32('433T20D', uart1)
code = lora.begin()
print("Initialization: ", ResponseStatusCode.get_description(code))

# Send a string message (transparent)
message = 'Hello, world!'
code = lora.send_transparent_message(message)
print("Send message: ", ResponseStatusCode.get_description(code))

# Receive a string message (transparent)
while True:
    if lora.available() > 0:
        code, value = lora.receive_message()
        print(ResponseStatusCode.get_description(code))

        print(value)

Il risultato nella REPL console è:

Initialization:  Success
Send message:  Success
Success
Hello, world!

Grazie


Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *