

Um die Bibliothek zu installieren, führen Sie den folgenden Befehl aus:
pip install ebyte-lora-e220-circuitpythonHier ein Beispiel für Konstruktor müssen Sie die UART -Schnittstelle übergeben und (wenn Sie möchten, aber es wird empfohlen) den Aux -Pin M0 und M1.
from lora_e220 import LoRaE220
import busio
import board
uart2 = busio . UART ( board . TX2 , board . RX2 , baudrate = 9600 )
lora = LoRaE220 ( '400T22D' , uart2 , aux_pin = board . D15 , m0_pin = board . D21 , m1_pin = board . D19 ) 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 )Das Ergebnis
----------------------------------------
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)
----------------------------------------
Sie können nur den entscheiderten Parameter festlegen, der andere wird auf den Standardwert festgelegt.
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 )Ich erstelle eine Konstantenklasse für jeden Parameter, hier eine Liste: Airdatarate, uartbardrate, uartparity, getriebepower, ForwardErrorcorrection -Witch, WirelessWakeeupime, Iodrivemode, FixedTransmission
Hier ein Beispiel für Daten senden können Sie eine Zeichenfolge übergeben
lora . send_transparent_message ( 'pippo' ) lora . send_fixed_message ( 0 , 2 , 23 , 'pippo' )Hier der Empfängercode
while True :
if lora . available () > 0 :
code , value = lora . receive_message ()
print ( ResponseStatusCode . get_description ( code ))
print ( value )
time . sleep ( 2 )Wenn Sie RSSI erhalten möchten, müssen Sie es in der Konfiguration aktivieren
configuration_to_set . TRANSMISSION_MODE . enableRSSI = RssiEnableByte . RSSI_ENABLEDund setzen
code , value , rssi = lora . receive_message ( True )Ergebnis
Success!
pippo
Hier ein Beispiel für Senden von Daten können Sie ein Wörterbuch übergeben
lora . send_transparent_dict ({ 'pippo' : 'fixed' , 'pippo2' : 'fixed2' }) lora . send_fixed_dict ( 0 , 0x01 , 23 , { 'pippo' : 'fixed' , 'pippo2' : 'fixed2' })Hier der Empfängercode
while True :
if lora . available () > 0 :
code , value = lora . receive_dict ()
print ( ResponseStatusCode . get_description ( code ))
print ( value )
print ( value [ 'pippo' ])
time . sleep ( 2 )Wenn Sie RSSI erhalten möchten, müssen Sie es in der Konfiguration aktivieren
configuration_to_set . TRANSMISSION_MODE . enableRSSI = RssiEnableByte . RSSI_ENABLEDund setzen
code , value , rssi = lora . receive_dict ( True )Ergebnis
Success!
{'pippo': 'fixed', 'pippo2': 'fixed2'}
fixed
Lora Smart Home (LLCC68) ist ein Sub-GHz LORA® RF-Transceiver für Innen- und drahtlose Innen- und Außenanwendungen. SPI -Schnittstelle. Pin-to-Pin ist mit SX1262 kompatibel. SX1261, SX1262, SX1268 und LLCC68 sind für eine lange Akkulaufzeit mit nur 4,2 mA aktivem Empfangsverbrauch ausgelegt. Der SX1261 kann bis zu +15 dBm übertragen, und die SX1262, SX1268 und LLCC68 können bis zu +22 dBm mit hocheffizienten integrierten Leistungsverstärkern übertragen.
Diese Geräte unterstützen die LORA -Modulation für LPWAN -Anwendungsfälle und (g) FSK -Modulation für Legacy -Anwendungsfälle. Die Geräte sind sehr konfigurierbar, um unterschiedliche Anwendungsanforderungen für die Verwendung von Verbrauchern zu erfüllen. Das Gerät bietet eine LORA -Modulation, die mit den von der Lorawan® -Spezifikation verwendeten Semtech -Transceivern kompatibel ist, die von der LORA Alliance® veröffentlicht wurde. Das Radio ist für Systeme geeignet, die die Einhaltung von Funkvorschriften abzielen, einschließlich, aber nicht beschränkt auf ETSI EN 300 220, FCC CFR 47 TEIL 15, China-Regulierungsanforderungen und die japanische Arib T-108. Die kontinuierliche Frequenzabdeckung von 150 MHz bis 960 MHz ermöglicht die Unterstützung aller wichtigen Sub-GHz-ISM-Bänder auf der ganzen Welt.
| LLCC68 | SX1278-SX1276 | |
|---|---|---|
| Distanz | > 11 km | 8 km |
| Rate (Lora) | 1,76 kbps - 62,5 Kbit / s | 0,3 Kbit / s - 19,2 Kbit / s |
| Schlafkraftverbrauch | 2 µA | 5 um |
Bibliothek für EBYTE LORA E220 LLCC68 Gerät für Arduino, ESP32 oder ESP8266.
| Pin -Nr. | PIN Item | Stiftrichtung | PIN -Anwendung |
|---|---|---|---|
| 1 | M0 | Eingabe (schwacher Pull-up) | Arbeiten Sie mit M1 zusammen und entscheiden Sie die vier Betriebsmodi. Schwimmen ist nicht erlaubt; Es kann gemahlen werden. |
| 2 | M1 | Eingabe (schwacher Pull-up) | Arbeiten Sie mit M0 zusammen und entscheiden Sie die vier Betriebsmodi. Schwimmen ist nicht erlaubt; Es kann gemahlen werden. |
| 3 | Rxd | Eingang | TTL UART -Eingänge verbinden TXD -Ausgangsstift (MCU, PC). Es kann als Open-Drain- oder Pull-up-Eingang konfiguriert werden. |
| 4 | Txd | Ausgabe | TTL UART -Ausgänge verbinden eine Verbindung zum externen RXD (MCU, PC) Eingangspin. Kann als Open-Drain- oder Push-Pull-Ausgang konfiguriert werden |
5 | Aux | Ausgabe | Um den Arbeitsstatus des Moduls anzuzeigen und die externe MCU aufzuwecken. Während des Verfahrens der Selbstprüfungsinitialisierung gibt der PIN einen niedrigen Niveau aus. Es kann als Open-Drain- oder Push-Pull-Ausgang konfiguriert werden (schwebend ist erlaubt). |
| 6 | VCC | Netzteil 3 V ~ 5,5 V Gleichstrom | |
| 7 | GND | Boden |
Wie Sie sehen können, können Sie verschiedene Modi über M0- und M1 -Stifte festlegen.
| Modus | M1 | M0 | Erläuterung |
|---|---|---|---|
| Normal | 0 | 0 | UART- und drahtlose Kanäle sind geöffnet, und die transparente Übertragung ist eingeschaltet |
| Schlimmer Sender | 0 | 1 | Schlimmer Sender |
| Schlimmer Empfänger | 1 | 0 | Schlimmer Empfänger (Unterstützt wach über Luft auf) |
| Tiefschläfungsmodus | 1 | 1 | Das Modul geht in den Schlaf (wachen Sie beim Konfigurieren von Parametern automatisch auf) |
Einige Stifte können statisch verwendet werden. Wenn Sie sie jedoch an den Mikrocontroller anschließen und in der Bibliothek konfigurieren, erhalten Sie Leistung und können alle Modi über Software steuern. Trotzdem werden wir als nächstes besser erklären.
Wie ich bereits sagte, ist es nicht wichtig, alle Stifte mit dem Ausgang des Mikrocontrollers zu verbinden. Sie können M0- und M1 -Stifte auf hoher oder niedrigem Stiften setzen, um die gewünschte Konfiguration zu erhalten. Wenn Sie Aux nicht anschließen, legt die Bibliothek eine angemessene Verzögerung fest, um sicherzustellen, dass der Vorgang abgeschlossen ist ( wenn Sie Probleme mit dem Einfrieren des Geräts haben, müssen Sie einen Pull-up-4,7K-Widerstand oder besser an das Gerät anschließen. ).
Bei der Übertragung von Daten können zum Aufwachen der externen MCU und zum hohen Datenübertragungsverlauf verwendet werden.
Beim Empfangen geht Aux niedrig und kehrt hoch, wenn der Puffer leer ist.
Es wird auch zum Selbstversenden verwendet, um den regelmäßigen Betrieb wiederherzustellen (im Power-On- und Schlaf-/Programmmodus).
Das ESP8266 -Verbindungsschema ist einfacher, da es bei derselben Spannung logischer Kommunikation (3,3 V) funktioniert.
Es ist wichtig, einen Pull-up-Widerstand (4,7KOHM) hinzuzufügen, um eine gute Stabilität zu erhalten.
| E22 | ESP8266 |
|---|---|
| M0 | D7 |
| M1 | D6 |
| Tx | Pin D2 (Pullup 4,7k Ω) |
| Rx | Pin D3 (Pullup 4,7k Ω) |
| Aux | Pin D5 (Pullup 4,7k Ω) |
| VCC | 5 V (aber mit weniger Leistung in 3,3 V arbeiten) |
| GND | GND |
Ähnliches Verbindungsschema für ESP32, aber für RX und TX verwenden wir RX2 und TX2, da ESP32 standardmäßig keinen Software -Sachwareser hat, sondern 3 Serien hat.
| E22 | ESP32 |
|---|---|
| M0 | D21 |
| M1 | D19 |
| Tx | Pin RX2 (Pullup 4,7k Ω) |
| Rx | Pin TX3 (Pullup 4,7k Ω) |
| Aux | Pin D18 (Pullup 4,7k Ω) (D15 aufwachen) |
| VCC | 5 V (aber mit weniger Leistung in 3,3 V arbeiten) |
| GND | GND |
| M0 | 2 (Spannungsteiler) |
| M1 | 3 (Spannungsteiler) |
| Tx | Pin 14 TX (Pullup 4,7k Ω) |
| Rx | Pin 13 RX (Pullup 4,7k Ω) |
| Aux | Pin 1 (Pullup 4,7k Ω) |
| VCC | 5v |
| GND | GND |
Sie können die PCB hier bestellen
Anweisungs- und Montagevideo auf 6 Teil des Leitfadens
Sie können die PCB hier bestellen
Anweisungs- und Montagevideo auf 6 Teil des Leitfadens
Lora oder Langstrecken -Wireless -Data -Telemetrie ist eine von Semtech pionierende Technologie, die mit einer niedrigeren Frequenz als NRF24L01 (433 MHz, 868 MHz oder 916 MHz gegen 2,4 GHz für Nrf24L01) arbeitet, jedoch mit drei Jahren (von 5000 m bis 11000 m).
| Name | Beschreibung | Adresse |
|---|---|---|
| Addh | Hoches Adressbyte des Moduls (der Standard 00H) | 00H |
| Addl | Niedrig Adressbyte des Moduls (der Standard 00H) | 01H |
| Sped | Informationen zu Datenrate Paritätsbit- und Luftdatenrate | 02H |
| OPTION | Art der Übertragung, Paketgröße, die spezielle Nachricht zulassen | 03H |
| Chan | Kommunikationskanal (410 m + Chan*1m), Standard 17H (433 MHz), nur für 433 MHz -Geräteprüfung nachstehend gültig , um die korrekte Frequenz Ihres Geräts zu überprüfen | 04H |
| OPTION | Art der Übertragung, Paketgröße, die spezielle Nachricht zulassen | 05H |
| Transmission_Mode | Viele Parameter, die die Übertragungsmodalität angeben | 06H |
| KRYPTA | Verschlüsselung, um Abfangen zu vermeiden | 07H |
UART Parity Bit: Der UART -Modus kann zwischen Kommunikationsparteien unterschiedlich sein
| UART Parity Bit | Konstanter Wert |
|---|---|
| 8n1 (Standard) | Modus_00_8n1 |
| 8o1 | Modus_01_8o1 |
| 8e1 | Modus_10_8e1 |
| 8n1 (gleich 00) | Modus_11_8n1 |
UART -Baud -Rate: Die UART -Baudrate kann zwischen Kommunikationsparteien unterschiedlich sein (aber nicht empfangen). Die UART -Baud -Rate hat nichts mit drahtlosen Übertragungsparametern zu tun und wirkt sich nicht auf die Merkmale der drahtlosen Übertragung/Empfang aus.
| TTL UART Baud Rate (BPS) | Konstanter Wert |
|---|---|
| 1200 | UART_BPS_1200 |
| 2400 | UART_BPS_2400 |
| 4800 | UART_BPS_4800 |
| 9600 (Standard) | UART_BPS_9600 |
| 19200 | UART_BPS_19200 |
| 38400 | UART_BPS_38400 |
| 57600 | UART_BPS_57600 |
| 115200 | UART_BPS_115200 |
Luftdatenrate: Je niedriger die Luftdatenrate ist, desto länger die Sendungsentfernung, eine bessere Anti-Interferenz-Leistung und längere Übertragungszeit; Die Luftdatenrate muss für beide Kommunikationsparteien konstant sein.
| Luftdatenrate (BPS) | Konstanter Wert |
|---|---|
| 2,4K | Air_Data_Rate_000_24 |
| 2,4K | Air_Data_Rate_001_24 |
| 2,4K (Standard) | 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 |
Dies ist die maximale Länge des Pakets.
Wenn die Daten kleiner als die Unterpackungslänge sind, ist die serielle Ausgabe des Empfangsende eine ununterbrochene kontinuierliche Ausgabe. Der serielle Anschluss des empfangenen Endes gibt die Unterpackung aus, wenn die Daten größer als die Unterpackungslänge sind.
| Paketgröße | Konstanter Wert |
|---|---|
| 200 Bytes (Standard) | SPS_200_00 |
| 128 BYTES | SPS_128_01 |
| 64Bytes | SPS_064_10 |
| 32Bytes | SPS_032_11 |
Dieser Befehl kann den Verwaltungsart von RSSI aktivieren/deaktivieren, und es ist wichtig, die Remote -Konfiguration zu verwalten. Achtung ist nicht der RSSI -Parameter in der Nachricht.
Bei Aktivierung können die Befehle C0, C1, C2, C3 im Sendungsmodus oder im schlimmsten Sendungsmodus gesendet werden, um das Register zu lesen. Register 0x00: Aktuelles Umgebungsgeräusch -RSSI -Register 0x01: RSSI, wenn die Daten beim letzten Mal empfangen wurden.
| RSSI -Umgebungsgeräusche ermöglichen | Konstanter Wert |
|---|---|
| Aktivieren | Rssi_ambient_noise_enabled |
| Deaktivieren (Standard) | Rssi_ambient_noise_disabled |
Sie können diesen Satz von Konstanten ändern, indem Sie wie SO ein Definieren anwenden:
#define e220_22 // Standardwert ohne festgelegt
Anwendbar für E220 mit 22 dBm als maximaler Strom.
Aufgrund der geringen Stromversorgungseffizienz wird keine geringe Stromversorgung empfohlen.
| Übertragungsleistung (Näherung) | Konstanter Wert |
|---|---|
| 22dbm (Standard) | Power_22 |
| 17dbm | Power_17 |
| 13dbm | Power_13 |
| 10dbm | Power_10 |
Anwendbar für E220 mit 30 dBm als maximaler Strom.
Aufgrund der geringen Stromversorgungseffizienz wird keine geringe Stromversorgung empfohlen.
#define e220_30
| Übertragungsleistung (Näherung) | Konstanter Wert |
|---|---|
| 30 dbm (Standard) | Power_30 |
| 27 dbm | Power_27 |
| 24 dbm | Power_24 |
| 21dbm | Power_21 |
Sie können die Kanalfrequenz auch mit dieser Definition konfigurieren:
// einer von #define Frequency_433 #define Frequency_170 #define Frequency_470 #define Frequenz_868 #define Frequency_915
Wenn das Modul aktiviert ist, empfängt das Modul drahtlose Daten und folgt einem RSSI -Festigkeitsbyte nach Ausgang über den seriellen Port TXD
| Aktivieren Sie RSSI | Konstanter Wert |
|---|---|
| Aktivieren | Rssi_enabled |
| Deaktivieren (Standard) | Rssi_disabled |
Übertragungsmodus: Die ersten drei Bytes des Datenrahmens jedes Benutzers können als hohe/niedrige Adresse und Kanal im festen Übertragungsmodus verwendet werden. Das Modul ändert seine Adresse und Kanal, wenn sie übertragen wird. Und es wird nach Abschluss des Vorgangs zur ursprünglichen Einstellung zurückgeführt.
| Festgelegtes Bit -Aktivierungsbit festgelegt | Konstanter Wert |
|---|---|
| Behobener Übertragungsmodus | Ft_fixed_transmission |
| Transparenter Übertragungsmodus (Standard) | Ft_transparent_transmission |
Wenn es aktiviert ist, werden drahtlose Daten überwacht, bevor sie übertragen werden, wodurch Störungen bis zu einem gewissen Grad vermieden werden, kann jedoch zu einer Datenverzögerung führen.
| LBT aktivieren Byte | Konstanter Wert |
|---|---|
| Aktivieren | LBT_Enabled |
| Deaktivieren (Standard) | Lbt_disabled |
Wenn Wors übersetzt wird: Nach dem Erhalt des Weltempfängers die drahtlosen Daten erhalten und über den seriellen Anschluss ausgibt, wartet er auf 1000 ms, bevor er erneut in die Schlacht eintritt. Benutzer können die seriellen Portdaten eingeben und sie während dieses Zeitraums über Wireless zurückgeben. Jedes serielle Byte wird für 1000 ms aktualisiert. Benutzer müssen das erste Byte innerhalb von 1000 ms übertragen.
| Drahtlose Weckzeit | Konstanter Wert |
|---|---|
| 500 ms | WAKE_UP_500 |
| 1000 ms | WAKE_UP_1000 |
| 1500 ms | WAKE_UP_1500 |
| 2000 ms (Standard) | WAKE_UP_2000 |
| 2500 ms | WAKE_UP_2500 |
| 3000 ms | WAKE_UP_3000 |
| 3500 ms | WAKE_UP_3500 |
| 4000 ms | WAKE_UP_4000 |
Zunächst müssen wir eine einfache, aber praktische Methode einführen, um zu überprüfen, ob sich im Empfangspuffer etwas befindet.
int verfügbar ();
Es ist einfach, zurückzugeben, wie viele Bytes Sie im aktuellen Strom haben.
Normal/transparenter Übertragungsmodus sendet Nachrichten mit derselben Adresse und demselben Kanal an alle Geräte.
Das feste Übertragung hat mehr Szenarien
Jetzt haben Sie alle Informationen, um Ihre Arbeit zu erledigen, aber ich denke, es ist wichtig, einige echte Beispiele zu zeigen, um besser alle Möglichkeiten zu verstehen.
Github -Bibliothek