

https://downloads.arduino.cc/libraries/logs/github.com/xreef/ebyte_lora_e22_series_library/
여기에서 PCB를 주문할 수 있습니다
가이드의 6 부분에 대한 지침 및 어셈블리 비디오
여기에서 PCB를 주문할 수 있습니다
가이드의 6 부분에 대한 지침 및 어셈블리 비디오
EBYTE E22 시리즈 LORA 장치, 매우 강력하고 단순하고 저렴한 장치를 관리하는 라이브러리를 만듭니다.
LORA 또는 장거리 무선 데이터 원격 측정법은 NRF24L01 (433MHz, 868 MHz 또는 916 MHz 다시 2.4GHz의 경우 433MHz, 868 MHz 또는 916 MHz)보다 낮은 주파수에서 작동하는 SEMTech가 개척 한 기술입니다.
로라 E22
여기에서 Aliexpress (433MHz 4km) -Aliexpress (433MHz 10km)를 찾을 수 있습니다.
업데이트 된 스키마를 얻으려면 내 기사를 참조하십시오
여기에서 내 도서관을 찾을 수 있습니다.
다운로드하려면.
오른쪽 상단의 다운로드 버튼을 클릭하고 압축되지 않은 폴더 LORA_E22의 이름을 바꿉니다.
lora_e22 폴더에 lora_e22.cpp 및 lora_e22.h가 포함되어 있는지 확인하십시오.
LORA_E22 라이브러리 폴더를 / 라이브러리 / 폴더를 놓습니다.
첫 번째 라이브러리 인 경우 라이브러리 서브 폴더를 만들어야 할 수도 있습니다.
IDE를 다시 시작하십시오.
E22
| 핀 번호 | 핀 항목 | 핀 방향 | 핀 응용 프로그램 |
|---|---|---|---|
| 1 | M0 | 입력 (약한 풀업) | M1과의 작업 및 4 가지 작동 모드를 결정하십시오. 플로팅이 허용되지 않으며 접지 될 수 있습니다. |
| 2 | M1 | 입력 (약한 풀업) | M0과의 작업 및 4 가지 작동 모드를 결정하십시오. 플로팅이 허용되지 않으며 접지 될 수 있습니다. |
| 3 | RXD | 입력 | TTL UART 입력은 외부 (MCU, PC) TXD 출력에 연결합니다. 오픈 드레인 또는 풀업 입력으로 구성 할 수 있습니다. |
| 4 | TXD | 산출 | TTL UART 출력은 외부 RXD (MCU, PC) InputPin에 연결됩니다. 오픈 드레인 또는 푸시 풀 출력으로 구성 할 수 있습니다 |
5 | 보조 | 산출 | Indicare lo stato di funzionamento del modulo e riattivare l 'mcu esterno 당. Durante la procedura di inizializziane di autocontrollo, il pin emette una bassa tensione. può essere configurato come uscita open-drain o 출력 푸시 풀 (è consentito non metterlo a terra, ma se hai recipei, ad esempio ti si freeze il dispositivo è piceribile mettere una retistenza di pull-up da 4.7ko meglio collegar al ispositivo). |
| 6 | VCC | 전원 공급 장치 2.3V ~ 5.5V DC | |
| 7 | Gnd | 지면 |
보시다시피 M0 및 M1 핀을 통해 다양한 모드를 설정할 수 있습니다.
| 방법 | M1 | M0 | 설명 |
|---|---|---|---|
| 정상 | 0 | 0 | UART 및 무선 채널이 개방되어 있으며 투명 전송이 켜져 있습니다 (특수 명령을 통해 공기를 통한 구성 지원) |
| WOR 모드 | 0 | 1 | WOR 송신기 및 WOR 수신기로 정의 할 수 있습니다 |
| 구성 모드 | 1 | 0 | 사용자는 직렬 포트를 통해 레지스터에 액세스하여 모듈의 작동 상태를 제어 할 수 있습니다. |
| 깊은 수면 모드 | 1 | 1 | 수면 모드 |
보시다시피 정적 방식으로 사용할 수있는 핀이 있지만, 라이브러리에 연결하면 성능을 얻고 소프트웨어를 통해 모든 모드를 제어 할 수 있지만 다음에 더 잘 설명 할 것입니다.
이미 모든 핀을 마이크로 컨트롤러의 출력에 연결하는 것이 중요하지 않다고 말하면, M0 및 M1 핀을 높거나 낮은 상태로 설정하여 Desidered Configuration 을 연결하지 않으면 라이브러리가 작동이 완료되도록 합리적인 지연을 설정할 수 있습니다 .
데이터를 전송하는 경우 데이터를 사용하여 외부 MCU를 깨우고 데이터 전송 마감에서 높은 리턴을 할 수 있습니다.
전송시 Lora E22 Aux 핀
버퍼가 비어있을 때 보조가 낮아지고 높게 반환 할 때.
리셉션의 Lora E22 Aux 핀
또한 정상 작동 (전원 온 및 수면/프로그램 모드)을 복원하기 위해 자체 점검에 사용됩니다.
Lora E22 자체 점검의 Aux 핀
ESP8266 연결 스키마는 동일한 전압의 논리 통신 (3.3v)에서 작동하기 때문에 더 간단합니다.
LORA E22 TTL 100 WEMOS D1은 완전히 연결되었습니다
우수한 안정성을 얻으려면 풀업 저항 (4,7kohm)을 추가하는 것이 중요합니다.
| E22 | ESP8266 |
|---|---|
| M0 | D7 |
| M1 | D6 |
| TX | 핀 D2 (풀업 4,7kΩ) |
| RX | 핀 D3 (풀업 4,7kΩ) |
| 보조 | 핀 D5 (풀업 4,7kΩ) |
| VCC | 5V (그러나 3.3V에서 더 적은 전력으로 작동) |
| Gnd | Gnd |
ESP32에 대한 유사한 연결 스키마이지만 RX 및 TX의 경우 RX2 및 TX2를 사용합니다. 기본적으로 ESP32에는 소프트웨어가 없지만 3 개의 직렬이 있기 때문입니다.
EBYTE LORA E22 장치 ESP32 DEV 키트 V1 브레드 보드 전체 연결
| E22 | ESP32 |
|---|---|
| M0 | D21 |
| M1 | D19 |
| TX | PIN RX2 (풀업 4,7kΩ) |
| RX | PIN TX3 (풀업 4,7kΩ) |
| 보조 | PIN D18 (풀업 4,7kΩ) |
| VCC | 5V (그러나 3.3V에서 더 적은 전력으로 작동) |
| Gnd | Gnd |
Arduino 작동 전압은 5V이므로 RX PIN M0 및 LORA 모듈의 M1에 전압 분배기를 추가해야합니다.
Rx에 모이는 것보다 신호에서 GND 및 1kohm에 2kohm 저항을 사용할 수 있습니다.
Lora E22 TTL 100 Arduino가 완전히 연결되었습니다
| M0 | 7 (전압 분배기) |
| M1 | 6 (전압 분배기) |
| TX | 핀 2 (풀업 4,7kΩ) |
| RX | PIN 3 (풀업 4,7KΩ 및 전압 분배기) |
| 보조 | 핀 5 (풀업 4,7kΩ) |
| VCC | 5V |
| Gnd | Gnd |
우리는 더 많은 옵션과 상황을 관리 할 수 있기 때문에 매우 수많은 생성자 세트를 만들었습니다.
LoRa_E22 (byte rxPin, byte txPin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E22 (byte rxPin, byte txPin, byte auxPin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E22 (byte rxPin, byte txPin, byte auxPin, byte m0Pin, byte m1Pin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);첫 번째 생성자 세트는 직렬 및 기타 핀 관리를 라이브러리에 위임하기 위해 작성됩니다.
txE22pin 및 rxE22pin 은 UART에 연결하는 핀이며 필수 입니다.auxPin 은 작동, 전송 및 수신 상태를 점검하는 핀입니다 (우리는 다음에 더 잘 설명 할 것입니다), 그 핀 은 필수가 아닙니다 . 설정하지 않으면 작업을 완료하도록 지연 지연을 적용합니다 (대기 시간을 사용하면 고정 장치와 같이 문제가 있으므로 풀업 4.7k 저항 또는 장치에 더 잘 연결해야합니다 ).m0pin 과 m1Pin 작동 모드를 변경하는 핀입니다 (테이블 상단 참조). “프로덕션”의이 핀은 직접적으로 높거나 낮은 연결을 할 것이지만 테스트를 위해 라이브러리에서 유용하게 관리됩니다.bpsRate 는 일반적으로 소프트웨어의 대결입니다.간단한 예는입니다
# include " LoRa_E22.h "
LoRa_E22 e22ttl100 ( 2 , 3 ); // RX, TX
// LoRa_E22 e22ttl100(2, 3, 5, 6, 7); // RX, TX다른 생성자와 함께 소프트웨어를 직접 사용할 수 있습니다
LoRa_E22 (HardwareSerial* serial, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E22 (HardwareSerial* serial, byte auxPin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E22 (HardwareSerial* serial, byte auxPin, byte m0Pin, byte m1Pin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);이 생성자의 예제는 그렇게 할 수 있습니다.
# include < SoftwareSerial.h >
# include " LoRa_E22.h "
SoftwareSerial mySerial ( 2 , 3 ); // RX, TX
LoRa_E22 e22ttl100 (mySerial);
// LoRa_E22 e22ttl100(&mySerial, 5, 7, 6);마지막 생성자 세트는 소프트웨어 대신 하드웨어를 사용하도록 허용하는 것입니다.
LoRa_E22 (SoftwareSerial* serial, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E22 (SoftwareSerial* serial, byte auxPin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E22 (SoftwareSerial* serial, byte auxPin, byte m0Pin, byte m1Pin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);시작 명령은 입력 및 출력 모드에서 직렬 및 핀을 시작하는 데 사용됩니다.
void begin ();실행 중입니다
// Startup all pins and UART
e22ttl100.begin();구성을 관리하고 장치의 정보를 얻기위한 일련의 방법이 있습니다.
ResponseStructContainer getConfiguration ();
ResponseStatus setConfiguration (Configuration configuration, PROGRAM_COMMAND saveType = WRITE_CFG_PWR_DWN_LOSE);
ResponseStructContainer getModuleInformation ();
void printParameters ( struct Configuration configuration);응답 관리를 단순화하기 위해 컨테이너 세트를 만듭니다. 오류를 관리하고 일반 데이터를 반환 할 수 있습니다.
이것은 상태 컨테이너이며 2 개의 간단한 진입 점이 있습니다.이를 사용하면 상태 코드와 상태 코드 설명을 얻을 수 있습니다.
Serial.println(c.getResponseDescription()); // Description of code
Serial.println(c.code); // 1 if Success코드는입니다
E22_SUCCESS = 1 ,
ERR_E22_UNKNOWN,
ERR_E22_NOT_SUPPORT,
ERR_E22_NOT_IMPLEMENT,
ERR_E22_NOT_INITIAL,
ERR_E22_INVALID_PARAM,
ERR_E22_DATA_SIZE_NOT_MATCH,
ERR_E22_BUF_TOO_SMALL,
ERR_E22_TIMEOUT,
ERR_E22_HARDWARE,
ERR_E22_HEAD_NOT_RECOGNIZED이 컨테이너는 문자열 응답을 관리하고 2 개의 진입 점이 있도록 만들어졌습니다.
메시지에서 반환 된 문자열이있는 data 및 status RepsonseStatus 의 인스턴스.
ResponseContainer rs = e22ttl.receiveMessage();
String message = rs.data;
Serial.println(rs.status.getResponseDescription());
Serial.println(message);이것은 더 "복잡한"컨테이너이며, 이것을 구조를 관리하는 데 사용하고, 응답 초기형의 진입 지점을 가지고 있지만 데이터는 복잡한 구조를 관리하는 공간 포인터입니다.
ResponseStructContainer c;
c = e22ttl100.getConfiguration();
// It's important get configuration pointer before all other operation
Configuration configuration = *(Configuration*) c.data;
Serial.println(c.status.getResponseDescription());
Serial.println(c.status.code);
c.close();첫 번째 방법은 getConfiguration입니다.이를 사용하여 장치에 저장된 모든 데이터를 검색 할 수 있습니다.
ResponseStructContainer getConfiguration ();여기서 사용 예.
ResponseStructContainer c;
c = e22ttl100.getConfiguration();
// It's important get configuration pointer before all other operation
Configuration configuration = *(Configuration*) c.data;
Serial.println(c.status.getResponseDescription());
Serial.println(c.status.code);
Serial.println(configuration.SPED.getUARTBaudRate());
c.close();구성 구조에는 모든 설정 데이터가 있으며 단일 데이터에 대한 모든 설명을 얻기 위해 일련의 기능을 추가합니다.
configuration.ADDL = 0x03 ; // First part of address
configuration.ADDH = 0x00 ; // Second part
configuration.NETID = 0x00 ; // NETID used for repeater function
configuration.CHAN = 23 ; // Communication channel
configuration.SPED.uartBaudRate = UART_BPS_9600; // Serial baud rate
configuration.SPED.airDataRate = AIR_DATA_RATE_010_24; // Air baud rate
configuration.SPED.uartParity = MODE_00_8N1; // Parity bit
configuration.OPTION.subPacketSetting = SPS_240_00; // Packet size
configuration.OPTION.RSSIAmbientNoise = RSSI_AMBIENT_NOISE_DISABLED; // Need to send special command
configuration.OPTION.transmissionPower = POWER_22; // Device power
configuration.TRANSMISSION_MODE.enableRSSI = RSSI_DISABLED; // Enable RSSI info
configuration.TRANSMISSION_MODE.fixedTransmission = FT_TRANSPARENT_TRANSMISSION; // Transmission type
configuration.TRANSMISSION_MODE.enableRepeater = REPEATER_DISABLED; // Enable repeater mode
configuration.TRANSMISSION_MODE.enableLBT = LBT_DISABLED; // Check interference
configuration.TRANSMISSION_MODE.WORTransceiverControl = WOR_RECEIVER; // Enable WOR mode
configuration.TRANSMISSION_MODE.WORPeriod = WOR_2000_011; // WOR timing모든 설명을 얻을 수있는 동등한 기능이 있습니다.
DEBUG_PRINT (F( " HEAD : " )); DEBUG_PRINT(configuration.COMMAND, HEX);DEBUG_PRINT( " " );DEBUG_PRINT(configuration.STARTING_ADDRESS, HEX);DEBUG_PRINT( " " );DEBUG_PRINTLN(configuration.LENGHT, HEX);
DEBUG_PRINTLN (F( " " ));
DEBUG_PRINT (F( " AddH : " )); DEBUG_PRINTLN(configuration.ADDH, HEX);
DEBUG_PRINT (F( " AddL : " )); DEBUG_PRINTLN(configuration.ADDL, HEX);
DEBUG_PRINT (F( " NetID : " )); DEBUG_PRINTLN(configuration.NETID, HEX);
DEBUG_PRINTLN (F( " " ));
DEBUG_PRINT (F( " Chan : " )); DEBUG_PRINT(configuration.CHAN, DEC); DEBUG_PRINT( " -> " ); DEBUG_PRINTLN(configuration.getChannelDescription());
DEBUG_PRINTLN (F( " " ));
DEBUG_PRINT (F( " SpeedParityBit : " )); DEBUG_PRINT(configuration.SPED.uartParity, BIN);DEBUG_PRINT( " -> " ); DEBUG_PRINTLN(configuration.SPED.getUARTParityDescription());
DEBUG_PRINT (F( " SpeedUARTDatte : " )); DEBUG_PRINT(configuration.SPED.uartBaudRate, BIN);DEBUG_PRINT( " -> " ); DEBUG_PRINTLN(configuration.SPED.getUARTBaudRateDescription());
DEBUG_PRINT (F( " SpeedAirDataRate : " )); DEBUG_PRINT(configuration.SPED.airDataRate, BIN);DEBUG_PRINT( " -> " ); DEBUG_PRINTLN(configuration.SPED.getAirDataRateDescription());
DEBUG_PRINTLN (F( " " ));
DEBUG_PRINT (F( " OptionSubPacketSett: " )); DEBUG_PRINT(configuration.OPTION.subPacketSetting, BIN);DEBUG_PRINT( " -> " ); DEBUG_PRINTLN(configuration.OPTION.getSubPacketSetting());
DEBUG_PRINT (F( " OptionTranPower : " )); DEBUG_PRINT(configuration.OPTION.transmissionPower, BIN);DEBUG_PRINT( " -> " ); DEBUG_PRINTLN(configuration.OPTION.getTransmissionPowerDescription());
DEBUG_PRINT (F( " OptionRSSIAmbientNo: " )); DEBUG_PRINT(configuration.OPTION.RSSIAmbientNoise, BIN);DEBUG_PRINT( " -> " ); DEBUG_PRINTLN(configuration.OPTION.getRSSIAmbientNoiseEnable());
DEBUG_PRINTLN (F( " " ));
DEBUG_PRINT (F( " TransModeWORPeriod : " )); DEBUG_PRINT(configuration.TRANSMISSION_MODE.WORPeriod, BIN);DEBUG_PRINT( " -> " ); DEBUG_PRINTLN(configuration.TRANSMISSION_MODE.getWORPeriodByParamsDescription());
DEBUG_PRINT (F( " TransModeTransContr: " )); DEBUG_PRINT(configuration.TRANSMISSION_MODE.WORTransceiverControl, BIN);DEBUG_PRINT( " -> " ); DEBUG_PRINTLN(configuration.TRANSMISSION_MODE.getWORTransceiverControlDescription());
DEBUG_PRINT (F( " TransModeEnableLBT : " )); DEBUG_PRINT(configuration.TRANSMISSION_MODE.enableLBT, BIN);DEBUG_PRINT( " -> " ); DEBUG_PRINTLN(configuration.TRANSMISSION_MODE.getLBTEnableByteDescription());
DEBUG_PRINT (F( " TransModeEnableRSSI: " )); DEBUG_PRINT(configuration.TRANSMISSION_MODE.enableRSSI, BIN);DEBUG_PRINT( " -> " ); DEBUG_PRINTLN(configuration.TRANSMISSION_MODE.getRSSIEnableByteDescription());
DEBUG_PRINT (F( " TransModeEnabRepeat: " )); DEBUG_PRINT(configuration.TRANSMISSION_MODE.enableRepeater, BIN);DEBUG_PRINT( " -> " ); DEBUG_PRINTLN(configuration.TRANSMISSION_MODE.getRepeaterModeEnableByteDescription());
DEBUG_PRINT (F( " TransModeFixedTrans: " )); DEBUG_PRINT(configuration.TRANSMISSION_MODE.fixedTransmission, BIN);DEBUG_PRINT( " -> " ); DEBUG_PRINTLN(configuration.TRANSMISSION_MODE.getFixedTransmissionDescription());동시에 SetConfiguration은 구성 Strucutre를 원하기 때문에 구성을 관리하는 더 좋은 방법은 현재 변경 사항을 검색하고 필요한 유일한 변경 사항을 적용하고 다시 설정하는 것입니다.
ResponseStatus setConfiguration (Configuration configuration, PROGRAM_COMMAND saveType = WRITE_CFG_PWR_DWN_LOSE); configuration 은 Strucutre previsiouly 표시이며, 현재 세션에 대해서만 변경 사항이 영구적으로되면 saveType Choiche에 허용됩니다.
ResponseStructContainer c;
c = e32ttl100.getConfiguration();
// It's important get configuration pointer before all other operation
Configuration configuration = *(Configuration*) c.data;
Serial.println(c.status.getResponseDescription());
Serial.println(c.status.code);
printParameters (configuration);
configuration.ADDL = 0x03 ; // First part of address
configuration.ADDH = 0x00 ; // Second part
configuration.NETID = 0x00 ; // NETID used for repeater function
configuration.CHAN = 23 ; // Communication channel
configuration.SPED.uartBaudRate = UART_BPS_9600; // Serial baud rate
configuration.SPED.airDataRate = AIR_DATA_RATE_010_24; // Air baud rate
configuration.SPED.uartParity = MODE_00_8N1; // Parity bit
configuration.OPTION.subPacketSetting = SPS_240_00; // Packet size
configuration.OPTION.RSSIAmbientNoise = RSSI_AMBIENT_NOISE_DISABLED; // Need to send special command
configuration.OPTION.transmissionPower = POWER_22; // Device power
configuration.TRANSMISSION_MODE.enableRSSI = RSSI_DISABLED; // Enable RSSI info
configuration.TRANSMISSION_MODE.fixedTransmission = FT_TRANSPARENT_TRANSMISSION; // Transmission type
configuration.TRANSMISSION_MODE.enableRepeater = REPEATER_DISABLED; // Enable repeater mode
configuration.TRANSMISSION_MODE.enableLBT = LBT_DISABLED; // Check interference
configuration.TRANSMISSION_MODE.WORTransceiverControl = WOR_RECEIVER; // Enable WOR mode
configuration.TRANSMISSION_MODE.WORPeriod = WOR_2000_011; // WOR timing
// Set configuration changed and set to not hold the configuration
ResponseStatus rs = e32ttl100.setConfiguration(configuration, WRITE_CFG_PWR_DWN_LOSE);
Serial.println(rs.getResponseDescription());
Serial.println(rs.code);
printParameters (configuration);
c.close()매개 변수는 모두 상수로 관리됩니다.
| addh | 모듈의 높은 주소 바이트 (기본 00H) | 00H-FFH |
| addl | 모듈의 낮은 주소 바이트 (기본 00H) | 00H-FFH |
| Sped | 데이터 속도 패리티 비트 및 공기 데이터 속도에 대한 정보 | |
| 찬 | Communication Channel (410m + Chan*1m), 기본 17H (433MHz), 433MHz 장치에만 유효합니다. | 00H-1FH |
| 옵션 | 전송 유형, 패킷 크기, 특수 메시지가 허용됩니다 | |
| Transmission_Mode | 전송 모드를 지정하는 많은 매개 변수입니다 |
옵션
전송 유형, 풀업 설정, 모닝 타임, FEC, 전송 전력
UART PARITY BIT : UART 모드는 커뮤니케이션 당사자마다 다를 수 있습니다.
| 4 | 3 | UART 패리티 비트 | 일정한 가치 |
| 0 | 0 | 8n1 (기본값) | Mode_00_8N1 |
| 0 | 1 | 8o1 | Mode_01_8O1 |
| 1 | 0 | 8 E1 | Mode_10_8E1 |
| 1 | 1 | 8n1 (00) | Mode_11_8N1 |
UART BAUD RATE : UART BAUD 비율은 커뮤니케이션 당사자마다 다를 수 있으며 UART Baud 요율은 무선 전송 매개 변수와 관련이 없으며 무선 전송 / 수신 기능에 영향을 미치지 않습니다.
| 7 | 6 | 5 | TTL UART BAUD rate (bps) | 일정한 가치 |
| 0 | 0 | 0 | 1200 | UART_BPS_1200 |
| 0 | 0 | 1 | 2400 | UART_BPS_2400 |
| 0 | 1 | 0 | 4800 | UART_BPS_4800 |
| 0 | 1 | 1 | 9600 (기본값) | UART_BPS_9600 |
| 1 | 0 | 0 | 19200 | UART_BPS_19200 |
| 1 | 0 | 1 | 38400 | UART_BPS_38400 |
| 1 | 1 | 0 | 57600 | UART_BPS_57600 |
| 1 | 1 | 1 | 115200 | UART_BPS_115200 |
공기 데이터 속도 : 공기 데이터 속도가 낮을수록 전송 거리가 길고, 방해 성능이 향상되고, 전송 시간이 길어지면, 공기 데이터 속도는 두 커뮤니케이션 당사자 모두에게 동일하게 유지해야합니다.
| 2 | 1 | 0 | 공기 데이터 속도 (BPS) | 일정한 가치 |
| 0 | 0 | 0 | 0.3k | air_data_rate_000_03 |
| 0 | 0 | 1 | 1.2k | air_data_rate_001_12 |
| 0 | 1 | 0 | 2.4K (기본값) | air_data_rate_010_24 |
| 0 | 1 | 1 | 4.8k | air_data_rate_011_48 |
| 1 | 0 | 0 | 9.6k | air_data_rate_100_96 |
| 1 | 0 | 1 | 19.2k | air_data_rate_101_192 |
| 1 | 1 | 0 | 38.4K | air_data_rate_110_384 |
| 1 | 1 | 1 | 62.5k | air_data_rate_111_625 |
#### 서브 패킷 설정
이것은 패킷의 최대 렌트입니다.
데이터가 서브 패킷 길이보다 작을 때, 수신 끝의 직렬 출력은 중단되지 않은 연속 출력입니다. 데이터가 서브 패킷 길이보다 큰 경우, 수신 최종 직렬 포트가 하위 패킷을 출력합니다.
| 7 | 6 | 패킷 크기 | 일정한 가치 |
| 0 | 0 | 240 바보 (기본값) | SPS_240_00 |
| 0 | 1 | 128 바디 | SPS_128_01 |
| 1 | 0 | 64 비트 | SPS_064_10 |
| 1 | 1 | 32 바디 | SPS_032_11 |
#### RSSI 주변 노이즈 활성화
이 명령은 RSSI의 관리 유형을 활성화/비활성화 할 수 있으며 원격 구성을 관리하는 것이 중요합니다. 메시지의 RSSI 매개 변수가 아닙니다.
활성화되면 C0 C1 C2 C3 명령을 전송 모드로 보내거나 WER 전송 모드로 보내어 레지스터를 읽을 수 있습니다. 레지스터 0x00 : 현재 주변 노이즈 RSSI 레지스터 0x01 : RSSI 데이터가 마지막으로 수신 된 경우 RSSI.
| 5 | RSSI 주변 노이즈 활성화 | 일정한 가치 |
| 0 | 할 수 있게 하다 | rssi_ambient_noise_enabled |
| 1 | 비활성화 (기본값) | rssi_ambient_noise_disabled |
#### 전송 전력
정의와 같은 적용 으로이 상수 세트를 변경할 수 있습니다.
# define E22_22 // default value without set
# define E22_30이 정의로 채널 주파수 OLSO를 구성 할 수 있습니다.
// One of
# define FREQUENCY_433
# define FREQUENCY_170
# define FREQUENCY_470
# define FREQUENCY_868
# define FREQUENCY_915#### RSSI 활성화
활성화되면 모듈은 무선 데이터를 수신하고 직렬 포트 TXD를 통해 출력 후 RSSI 강도 바이트를 따릅니다.
#### 전송 유형
전송 모드 : 고정 된 전송 모드에서 각 사용자 데이터 프레임의 처음 3 바이트는 높은/낮은 주소 및 채널로 사용할 수 있습니다. 모듈은 전송시 주소와 채널을 변경합니다. 프로세스를 완료 한 후 원래 설정으로 되돌아갑니다.
#### 리피터 기능을 활성화합니다
#### 전송 전에 데이터를 모니터링합니다
활성화되면 전송되기 전에 무선 데이터를 모니터링하여 어느 정도 간섭을 피할 수 있지만 데이터 지연을 유발할 수 있습니다.
#### WOR
WER 송신기 : 기능을 수신하고 전송하는 모듈이 켜지고 데이터를 전송할 때 모닝 코드가 추가됩니다. 수신이 켜져 있습니다.
수신기 : 모듈은 데이터를 전송할 수 없으며 모니터링 모드에서 작동합니다. 모니터링 기간은 다음과 같습니다 (WOR 사이클)은 많은 전력을 절약 할 수 있습니다.
#### Wor Cycle
WOR가 전송중인 경우 : WOR 수신기가 무선 데이터를 수신하고 직렬 포트를 통해 출력 한 후에는 1000ms를 기다리기 전에 WOR에 다시 들어갑니다. 사용자는 직렬 포트 데이터를 입력 하고이 기간 동안 무선을 통해 반환 할 수 있습니다. 각 직렬 바이트는 1000ms로 새로 고침됩니다. 사용자는 1000ms 이내에 첫 바이트를 전송해야합니다.
먼저 우리는 수신 버퍼에 무언가가 있는지 확인하기 위해 간단하지만 유용하게 방법을 소개해야합니다.
int available ();그것은 단순히 현재 스트림에 몇 바이트 수를 반환합니다.
정상/투명 전송 모드는 동일한 주소와 채널을 가진 모든 장치에 메시지를 보내는 데 사용됩니다.
LORA E22 전송 시나리오, 라인은 채널입니다
메시지를 보내거나받는 방법이 많이 있습니다. 자세히 설명 할 것입니다.
ResponseStatus sendMessage ( const String message);ResponseContainer receiveMessage ();첫 번째 방법은 sendMessage이며 정상 모드의 장치로 문자열을 보내는 데 사용됩니다.
ResponseStatus rs = e22ttl.sendMessage( " Prova " );
Serial.println(rs.getResponseDescription());다른 장치는 단순히 루프에서 수행합니다
if (e22ttl.available() > 1 ){
ResponseContainer rs = e22ttl. receiveMessage ();
String message = rs. data ;` ` // First ever get the data
Serial. println (rs. status . getResponseDescription ());
Serial. println (message);
}복잡한 스트루큐어를 보내려면이 방법을 사용할 수 있습니다.
ResponseStatus sendMessage ( const void *message, const uint8_t size);
ResponseStructContainer receiveMessage ( const uint8_t size);예를 들어 Strucutre를 보내는 데 사용됩니다.
struct Messaggione {
char type[ 5 ];
char message[ 8 ];
bool mitico;
};
struct Messaggione messaggione = { " TEMP " , " Peple " , true };
ResponseStatus rs = e22ttl.sendMessage(&messaggione, sizeof (Messaggione));
Serial.println(rs.getResponseDescription());그리고 다른 쪽은 메시지를받을 수 있습니다.
ResponseStructContainer rsc = e22ttl.receiveMessage( sizeof (Messaggione));
struct Messaggione messaggione = *(Messaggione*) rsc.data;
Serial.println(messaggione.message);
Serial.println(messaggione.mitico);더 많은 유형의 strucutre를 관리하기 위해 메시지의 첫 번째 부분을 읽으려면이 방법을 사용할 수 있습니다.
ResponseContainer receiveInitialMessage ( const uint8_t size);로드 할 스트루큐어를 식별하기 위해 유형이나 다른 사람의 문자열을 받기 위해 그것을 만듭니다.
struct Messaggione { // Partial strucutre without type
char message[ 8 ];
bool mitico;
};
char type[ 5 ]; // first part of structure
ResponseContainer rs = e22ttl.receiveInitialMessage( sizeof (type));
// Put string in a char array (not needed)
memcpy ( type, rs.data.c_str(), sizeof(type) );
Serial.println( " READ TYPE: " );
Serial.println(rs.status.getResponseDescription());
Serial.println(type);
// Read the rest of structure
ResponseStructContainer rsc = e22ttl.receiveMessage( sizeof (Messaggione));
struct Messaggione messaggione = *(Messaggione*) rsc.data;동일한 방식으로 고정 변속기와 함께 사용할 방법 세트를 만듭니다.
대상 장치는 주소와 채널로 서문을받지 않기 때문에 전송 방법 만 변경해야합니다.
그래서 문자열 메시지의 경우
ResponseStatus sendFixedMessage (byte ADDL, byte ADDH, byte CHAN, const String message);
ResponseStatus sendBroadcastFixedMessage (byte CHAN, const String message);그리고 당신은 구조를 위해
ResponseStatus sendFixedMessage (byte ADDL, byte ADDH, byte CHAN, const void *message, const uint8_t size);
ResponseStatus sendBroadcastFixedMessage (byte CHAN, const void *message, const uint8_t size );여기 간단한 예입니다
ResponseStatus rs = e22ttl.sendFixedMessage( 0 , 0 , 0x17 , &messaggione, sizeof (Messaggione));
// ResponseStatus rs = e22ttl.sendFixedMessage(0, 0, 0x17, "Ciao");고정 전송에는 더 많은 시나리오가 있습니다
LORA E22 전송 시나리오, 라인은 채널입니다
특정 장치 (두 번째 시나리오 고정 전송)로 보내는 경우 Addl, Addh 및 Chan을 추가하여 직접 식별해야합니다.
ResponseStatus rs = e22ttl.sendFixedMessage( 2 , 2 , 0x17 , " Message to a device " );지정된 채널의 모든 장치에 메시지를 보내려면이 메소드를 사용할 수 있습니다.
ResponseStatus rs = e22ttl.sendBroadcastFixedMessage( 0x17 , " Message to a devices of a channel " ); 네트워크에서 모든 방송 메시지를 받으려면 BROADCAST_ADDRESS 로 ADDH 와 ADDL 설정해야합니다.
ResponseStructContainer c;
c = e22ttl100.getConfiguration();
// It's important get configuration pointer before all other operation
Configuration configuration = *(Configuration*) c.data;
Serial.println(c.status.getResponseDescription());
Serial.println(c.status.code);
printParameters (configuration);
configuration.ADDL = BROADCAST_ADDRESS;
configuration.ADDH = BROADCAST_ADDRESS;
// Set configuration changed and set to not hold the configuration
ResponseStatus rs = e22ttl100.setConfiguration(configuration, WRITE_CFG_PWR_DWN_LOSE);
Serial.println(rs.getResponseDescription());
Serial.println(rs.code);
printParameters (configuration);
c.close();### 무선 구성
이 장치는 Sepecial 명령으로 무선 구성을 지원하지만 작동하지 않는 것 같습니다. Ebyte에게 요청하지만 응답은받지 못했습니다.
올바른 방식으로 패킷을 보내는 명령을 구현하지만 (논리 분석기로 테스트) 작동하지 않는 것 같습니다.
그건 그렇고, 먼저 Muset은 다음과 같은 명령을 사용할 수있는 것보다 RSSI 노이즈 환경을 활성화합니다.
Configuration configuration;
configuration.ADDL = 0x13 ;
configuration.ADDH = 0x13 ;
configuration.NETID = 0x00 ;
configuration.CHAN = 23 ;
configuration.SPED.uartBaudRate = UART_BPS_9600;
configuration.SPED.airDataRate = AIR_DATA_RATE_010_24;
configuration.SPED.uartParity = MODE_00_8N1;
configuration.OPTION.subPacketSetting = SPS_240_00;
configuration.OPTION.RSSIAmbientNoise = RSSI_AMBIENT_NOISE_DISABLED;
configuration.OPTION.transmissionPower = POWER_22;
configuration.TRANSMISSION_MODE.enableRSSI = RSSI_DISABLED;
configuration.TRANSMISSION_MODE.fixedTransmission = FT_FIXED_TRANSMISSION;
configuration.TRANSMISSION_MODE.enableRepeater = REPEATER_DISABLED;
configuration.TRANSMISSION_MODE.enableLBT = LBT_DISABLED;
configuration.TRANSMISSION_MODE.WORTransceiverControl = WOR_TRANSMITTER;
configuration.TRANSMISSION_MODE.WORPeriod = WOR_2000_011;이제 당신은 당신의 일을 할 모든 정보를 가지고 있지만, 모든 가능성을 더욱 위상하고 더 나은 현실적인 예를 보여주는 것이 중요하다고 생각합니다.
Arduino, ESP32 또는 ESP8266 용 Ebyte Lora E22 장치 : 설정 및 기본 사용
Arduino, ESP32 또는 ESP8266 용 Ebyte Lora E22 장치 : 라이브러리
Arduino, ESP32 또는 ESP8266 용 Ebyte Lora E22 장치 : 구성
Arduino, ESP32 또는 ESP8266 용 Ebyte Lora E22 장치 : 고정 변속기 및 RSSI
Arduino, ESP32 또는 ESP8266 용 Ebyte Lora E22 장치 : 전력 저장 및 구조화 된 데이터 전송
Arduino, ESP32 또는 ESP8266 용 Ebyte Lora E22 장치 : 리피터 모드 및 원격 설정
Arduino, ESP32 또는 ESP8266 용 Ebyte Lora E22 장치 : WOR 마이크로 컨트롤러 및 Arduino Shield
Arduino, ESP32 또는 ESP8266 용 Ebyte Lora E22 장치 : WOR 마이크로 컨트롤러 및 Wemos D1 Shield
Arduino, ESP32 또는 ESP8266 용 Ebyte Lora E22 장치 : WOR 마이크로 컨트롤러 및 ESP32 DEV V1 SHIELD