

Para instalar a biblioteca, execute o seguinte comando:
pip install ebyte-lora-e220-circuitpythonAqui, um exemplo de construtor, você deve passar na interface UART e (se quiser, mas é recomendado) o pino aux, M0 e 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 )O resultado
----------------------------------------
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)
----------------------------------------
Você pode definir apenas o parâmetro desidenciado, o outro será definido como o valor padrão.
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 )Eu crio uma classe de constantes para cada parâmetro, aqui uma lista: AirDatarato, Uartbaudrate, Uartparity, TransmissionPower, ForwardErrorCorrectionSwitch, Wirelesswakeuptime, iodrivemode, FixerTransmission
Aqui um exemplo de dados de envio, você pode passar uma string
lora . send_transparent_message ( 'pippo' ) lora . send_fixed_message ( 0 , 2 , 23 , 'pippo' )Aqui o código do receptor
while True :
if lora . available () > 0 :
code , value = lora . receive_message ()
print ( ResponseStatusCode . get_description ( code ))
print ( value )
time . sleep ( 2 )Se você deseja receber RSSI, você deve habilitá -lo na configuração
configuration_to_set . TRANSMISSION_MODE . enableRSSI = RssiEnableByte . RSSI_ENABLEDe defina o sinalizador como true no método Receber_message
code , value , rssi = lora . receive_message ( True )Resultado
Success!
pippo
Aqui um exemplo de envio de dados, você pode passar um dicionário
lora . send_transparent_dict ({ 'pippo' : 'fixed' , 'pippo2' : 'fixed2' }) lora . send_fixed_dict ( 0 , 0x01 , 23 , { 'pippo' : 'fixed' , 'pippo2' : 'fixed2' })Aqui o código do receptor
while True :
if lora . available () > 0 :
code , value = lora . receive_dict ()
print ( ResponseStatusCode . get_description ( code ))
print ( value )
print ( value [ 'pippo' ])
time . sleep ( 2 )Se você deseja receber RSSI, você deve habilitá -lo na configuração
configuration_to_set . TRANSMISSION_MODE . enableRSSI = RssiEnableByte . RSSI_ENABLEDe defina o sinalizador como true no método Receber_dict
code , value , rssi = lora . receive_dict ( True )Resultado
Success!
{'pippo': 'fixed', 'pippo2': 'fixed2'}
fixed
O Lora Smart Home (LLCC68) é um transceptor de RF Sub-GHZ Lora® para aplicações internas e internas para externas a médio alcance. Interface SPI. O pino a pino é compatível com SX1262. SX1261, SX1262, SX1268 e LLCC68 são projetados para uma longa duração da bateria com apenas 4,2 mA de consumo atual de recebimento ativo. O SX1261 pode transmitir até +15 dBm e o SX1262, SX1268 e LLCC68 podem transmitir até +22 dBm com amplificadores de potência integrados altamente eficientes.
Esses dispositivos suportam a modulação LORA para casos de uso de LPWAN e (g) modulação FSK para casos de uso herdado. Os dispositivos são altamente configuráveis para atender aos diferentes requisitos de aplicativos para uso do consumidor. O dispositivo fornece modulação LORA compatível com transceptores Semtech usados pela especificação Lorawan® divulgada pelo Lora Alliance®. O rádio é adequado para sistemas direcionados à conformidade com os regulamentos de rádio, incluindo, entre outros, o ETSI EN 300 220, o FCC CFR 47 Parte 15, os requisitos regulatórios da China e o Arib T-108 japonês. A cobertura de frequência contínua de 150MHz a 960MHz permite o suporte de todas as principais bandas de ISM de sub-GHZ em todo o mundo.
| LLCC68 | SX1278-SX1276 | |
|---|---|---|
| Distância | > 11 km | 8 km |
| Taxa (Lora) | 1,76kbps - 62,5kbps | 0,3kbps - 19,2kbps |
| Consumo de energia do sono | 2µA | 5µA |
Biblioteca para o dispositivo Ebyte Lora E220 LLCC68 para Arduino, ESP32 ou ESP8266.
| PIN No. | Item de pino | Direção do pino | Aplicação PIN |
|---|---|---|---|
| 1 | M0 | Entrada (Pull-up fraca) | Trabalhe com M1 e decida os quatro modos operacionais. Flutuar não é permitido; pode ser moído. |
| 2 | M1 | Entrada (Pull-up fraca) | Trabalhe com M0 e decida os quatro modos de operação. Flutuar não é permitido; pode ser moído. |
| 3 | Rxd | Entrada | As entradas TTL UART conectam -se ao pino de saída externo (MCU, PC). Ele pode ser configurado como entrada de drenagem aberta ou pull-up. |
| 4 | Txd | Saída | As saídas TTL UART conectam -se ao pino de entrada RXD externo (MCU, PC). Pode ser configurado como saída de drenagem aberta ou push-pull |
5 | Aux | Saída | Para indicar o status de funcionamento do módulo e acordar o MCU externo. Durante o procedimento de inicialização de auto-verificação, o pino gera um nível baixo. Ele pode ser configurado como saída de drenagem aberta ou push-pull (é permitido flutuante). |
| 6 | VCC | Fonte de alimentação 3V ~ 5,5V DC | |
| 7 | Gnd | Chão |
Como você pode ver, você pode definir vários modos via pinos M0 e M1.
| Modo | M1 | M0 | Explicação |
|---|---|---|---|
| Normal | 0 | 0 | Os canais UART e sem fio estão abertos e a transmissão transparente está ligada |
| Transmissor wor | 0 | 1 | Transmissor wor |
| Receptor wor | 1 | 0 | Receptor WOR (suporta o Wake Up Over Air) |
| Modo de suspensão profunda | 1 | 1 | O módulo vai dormir (acorde automaticamente ao configurar parâmetros) |
Alguns pinos podem ser usados estaticamente, mas se você os conectar ao microcontrolador e configurá -los na biblioteca, você ganha desempenho e poderá controlar todos os modos via software. Ainda assim, vamos explicar melhor a seguir.
Como já disse, não é essencial conectar todos os pinos à saída do microcontrolador; Você pode colocar os pinos M0 e M1 em alta ou baixa para obter a configuração desejada. Se você não conectar o AUX, a biblioteca definirá um atraso razoável para garantir que a operação seja concluída ( se você tiver problemas com o congelamento do dispositivo, você deverá colocar um resistor de 4,7k de pull-up ou se conectar melhor ao dispositivo. ).
Ao transmitir dados, pode ser usado para acordar o MCU externo e retornar alto no acabamento da transferência de dados.
Ao receber, Aux fica baixo e retorna alto quando o buffer está vazio.
Também é usado para a auto-verificação para restaurar a operação regular (no modo de energia e sono/programa).
O esquema de conexão ESP8266 é mais direto porque funciona com a mesma tensão de comunicações lógicas (3.3V).
É essencial adicionar um resistor de pull-up (4,7kohm) para obter uma boa estabilidade.
| E22 | ESP8266 |
|---|---|
| M0 | D7 |
| M1 | D6 |
| Tx | Pino D2 (pullup 4,7kΩ) |
| Rx | Pino D3 (pullup 4,7kΩ) |
| Aux | Pino D5 (pullup 4,7kΩ) |
| VCC | 5V (mas trabalhe com menos energia em 3.3V) |
| Gnd | Gnd |
Esquema de conexão semelhante para ESP32, mas para RX e TX, usamos RX2 e TX2 porque, por padrão, o ESP32 não possui softwareserial, mas tem 3 serial.
| E22 | Esp32 |
|---|---|
| M0 | D21 |
| M1 | D19 |
| Tx | Pino rx2 (pullup 4.7kΩ) |
| Rx | Pino tx3 (pullup 4,7kΩ) |
| Aux | Pino D18 (pullup 4,7kΩ) (D15 para acordar) |
| VCC | 5V (mas trabalhe com menos energia em 3.3V) |
| Gnd | Gnd |
| M0 | 2 (divisor de tensão) |
| M1 | 3 (divisor de tensão) |
| Tx | Pino 14 TX (pullup 4,7kΩ) |
| Rx | Pino 13 rx (pullup 4,7kΩ) |
| Aux | Pino 1 (pullup 4,7kΩ) |
| VCC | 5V |
| Gnd | Gnd |
Você pode pedir o PCB aqui
Vídeo de instrução e montagem em 6 parte do guia
Você pode pedir o PCB aqui
Vídeo de instrução e montagem em 6 parte do guia
A telemetria de dados sem fio Lora ou de longo alcance é uma tecnologia pioneira pela Semtech que opera com uma frequência mais baixa que NRF24L01 (433 MHz, 868 MHz ou 916 MHz contra 2,4 GHz para o NRF24L01), mas a mais de 5000m a 11000m).
| Nome | Descrição | Endereço |
|---|---|---|
| Addh | Byte de endereço alto do módulo (o padrão 00H) | 00H |
| Addl | Byte de endereço baixo do módulo (o padrão 00H) | 01h |
| Acelerou | Informações sobre a taxa de paridade da taxa de dados e taxa de dados aéreos | 02H |
| OPÇÃO | Tipo de transmissão, tamanho do pacote, permita a mensagem especial | 03H |
| Chan | Canal de comunicação (410m + chan*1m), padrão 17h (433MHz), válido apenas para 433MHz , verifique abaixo para verificar a frequência correta do seu dispositivo | 04H |
| OPÇÃO | Tipo de transmissão, tamanho do pacote, permita a mensagem especial | 05h |
| Transmission_mode | Muitos parâmetros que especificam a modalidade de transmissão | 06h |
| CRIPTA | Criptografia para evitar a interceptação | 07H |
Bit de paridade UART: o modo UART pode ser diferente entre as partes de comunicação
| Bit de paridade uart | Valor constante |
|---|---|
| 8n1 (padrão) | Mode_00_8n1 |
| 8o1 | Mode_01_8o1 |
| 8e1 | Mode_10_8e1 |
| 8n1 (igual a 00) | Mode_11_8n1 |
Taxa de transmissão UART: a taxa de transmissão UART pode ser diferente entre as partes da comunicação (mas não recomendadas). A taxa de transmissão UART não tem nada a ver com parâmetros de transmissão sem fio e não afetará os recursos de transmissão/recebimento sem fio.
| TTL UART BAUD Taxa (BPS) | Valor constante |
|---|---|
| 1200 | UART_BPS_1200 |
| 2400 | UART_BPS_2400 |
| 4800 | UART_BPS_4800 |
| 9600 (padrão) | UART_BPS_9600 |
| 19200 | UART_BPS_19200 |
| 38400 | UART_BPS_38400 |
| 57600 | UART_BPS_57600 |
| 115200 | UART_BPS_115200 |
Taxa de dados do ar: quanto menor a taxa de dados do ar, maior a distância de transmissão, melhor desempenho anti-interferência e tempo de transmissão mais longo; A taxa de dados aéreos deve ser constante para ambas as partes da comunicação.
| Taxa de dados aéreos (BPS) | Valor constante |
|---|---|
| 2.4k | AIR_DATA_RATE_000_24 |
| 2.4k | AIR_DATA_RATE_001_24 |
| 2.4K (padrão) | 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 |
Este é o comprimento máximo do pacote.
Quando os dados são menores que o comprimento do subpacket, a saída serial da extremidade receptora é uma saída contínua ininterrupta. A porta serial final do recebimento será lançada o subpacket quando os dados forem maiores que o comprimento do subpacket.
| Tamanho do pacote | Valor constante |
|---|---|
| 200bytes (padrão) | Sps_200_00 |
| 128 Bytes | Sps_128_01 |
| 64 Bytes | Sps_064_10 |
| 32Bytes | Sps_032_11 |
Este comando pode ativar/desativar o tipo de gerenciamento de RSSI e é essencial gerenciar a configuração remota. Preste atenção não é o parâmetro RSSI na mensagem.
Quando ativado, os comandos C0, C1, C2, C3 podem ser enviados no modo de transmissão ou no modo de transmissão Wor para ler o registro. REGISTRA 0X00: REGISTRO ABIENTE ABIENTE RSSI REGISTRO 0X01: RSSI Quando os dados foram recebidos da última vez.
| RSSI Ruído ambiente habilitado | Valor constante |
|---|---|
| Habilitar | Rssi_ambient_noise_enabled |
| Desativar (padrão) | Rssi_ambient_noise_disabled |
Você pode alterar esse conjunto de constantes aplicando uma definição como assim:
#Define E220_22 // Valor padrão sem definição
Aplicável para E220 com 22dBM como MAX Power.
A transmissão de baixa energia não é recomendada devido à sua baixa eficiência da fonte de alimentação.
| Poder de transmissão (aproximação) | Valor constante |
|---|---|
| 22dBM (padrão) | Power_22 |
| 17DBM | Power_17 |
| 13DBM | Power_13 |
| 10dBM | Power_10 |
Aplicável ao E220 com 30dBM como potência máxima.
A transmissão de baixa energia não é recomendada devido à sua baixa eficiência da fonte de alimentação.
#Define E220_30
| Poder de transmissão (aproximação) | Valor constante |
|---|---|
| 30dbm (padrão) | Power_30 |
| 27DBM | Power_27 |
| 24dBM | Power_24 |
| 21DBM | Power_21 |
Você pode configurar a frequência do canal também com isso definir:
// um de #Define Frequency_433 #Define Frequency_170 #Define Frequency_470 #Define Frequency_868 #Define Frequency_915
Quando ativado, o módulo recebe dados sem fio e seguirá um byte de força RSSI após a produção através da porta serial TXD
| Ativar RSSI | Valor constante |
|---|---|
| Habilitar | Rssi_enabled |
| Desativar (padrão) | Rssi_disabled |
Modo de transmissão: Os três primeiros bytes do quadro de dados de cada usuário podem ser usados como endereço e canal alto/baixo no modo de transmissão fixa. O módulo altera seu endereço e canal quando transmitido. E ele voltará para a configuração original após a conclusão do processo.
| Bit de transmissão fixa que habilita | Valor constante |
|---|---|
| Modo de transmissão fixo | Ft_fixed_transmission |
| Modo de transmissão transparente (padrão) | Ft_transparent_transmission |
Quando ativado, os dados sem fio serão monitorados antes de serem transmitidos, evitando interferências até certo ponto, mas podem causar atraso nos dados.
| LBT Ativar byte | Valor constante |
|---|---|
| Habilitar | Lbt_enabled |
| Desativar (padrão) | Lbt_disabled |
Se o WOR estiver transmitindo: depois que o receptor Wor receber os dados sem fio e o produzirá através da porta serial, ele aguardará 1000ms antes de entrar no We. Os usuários podem inserir os dados da porta serial e retorná -los via sem fio durante esse período. Cada byte em série será atualizado por 1000ms. Os usuários devem transmitir o primeiro byte dentro de 1000ms.
| Tempo de despertar sem fio | Valor constante |
|---|---|
| 500ms | Wake_up_500 |
| 1000ms | Wake_up_1000 |
| 1500ms | Wake_Up_1500 |
| 2000ms (padrão) | Wake_up_2000 |
| 2500ms | Wake_Up_2500 |
| 3000ms | Wake_up_3000 |
| 3500ms | Wake_Up_3500 |
| 4000ms | Wake_up_4000 |
Primeiro, devemos introduzir um método simples, mas prático, para verificar se algo está no buffer de recebimento.
int disponível ();
É simples retornar quantos bytes você tem no fluxo atual.
O modo de transmissão normal/transparente envia mensagens para todos os dispositivos com o mesmo endereço e canal.
A transmissão fixa tem mais cenários
Agora você tem todas as informações para fazer seu trabalho, mas acho importante mostrar alguns exemplos reais para entender melhor todas as possibilidades.
Biblioteca Github