

Arduino Uno Shield
여기에서 PCB를 주문할 수 있습니다
가이드의 6 부분에 대한 지침 및 어셈블리 비디오
WEMOS D1 방패
여기에서 PCB를 주문할 수 있습니다
ESP32 방패
여기에서 PCB를 주문할 수 있습니다
가이드의 6 부분에 대한 지침 및 어셈블리 비디오
EBYTE E32 시리즈 LORA 장치, 매우 강력하고 단순하고 저렴한 장치를 관리하는 라이브러리를 만듭니다.
로라 E32-TTL-100
여기에서 Aliexpress (3km 장치) Aliexpress (8km 장치)를 찾을 수 있습니다.
그들은 3000m ~ 8000m 거리에 걸쳐 작업 할 수 있으며 많은 기능과 매개 변수가 있습니다.
그래서 나는 사용법을 단순화하기 위해이 라이브러리를 만듭니다.
업데이트 된 스키마를 얻으려면 내 기사를 참조하십시오
여기에서 내 도서관을 찾을 수 있습니다.
다운로드하려면.
오른쪽 상단의 다운로드 버튼을 클릭하고 압축되지 않은 폴더 LORA_E32의 이름을 바꿉니다.
lora_e32 폴더에 lora_e32.cpp 및 lora_e32.h가 포함되어 있는지 확인하십시오.
LORA_E32 라이브러리 폴더를 / 라이브러리 / 폴더를 놓습니다.
첫 번째 라이브러리 인 경우 라이브러리 서브 폴더를 만들어야 할 수도 있습니다.
IDE를 다시 시작하십시오.
E32 TTL 100
여기서 Aliexpress를 살 수 있습니다
| 핀 번호 | 핀 항목 | 핀 방향 | 핀 응용 프로그램 |
|---|---|---|---|
| 1 | M0 | 입력 (약한 풀업) | M1과의 작업 및 4 가지 작동 모드를 결정하십시오. 플로팅이 허용되지 않으며 접지 될 수 있습니다. |
| 2 | M1 | 입력 (약한 풀업) | M0과의 작업 및 4 가지 작동 모드를 결정하십시오. 플로팅이 허용되지 않으며 접지 될 수 있습니다. |
| 3 | RXD | 입력 | TTL UART 입력은 외부 (MCU, PC) TXD 출력에 연결합니다. 오픈 드레인 또는 풀업 입력으로 구성 할 수 있습니다. |
| 4 | TXD | 산출 | TTL UART 출력은 외부 RXD (MCU, PC) InputPin에 연결됩니다. 오픈 드레인 또는 푸시 풀 출력으로 구성 할 수 있습니다 |
| 5 | 보조 | 산출 | 모듈의 작동 상태를 나타내고 외부 MCU를 깨우십시오. 자체 점검 초기화 절차 중에 핀은 낮은 레벨을 출력합니다. Open-Drain Output Orpush-Pull 출력 (플로팅 허용)으로 구성 할 수 있습니다. |
| 6 | VCC | 전원 공급 장치 2.3V ~ 5.5V DC | |
| 7 | Gnd | 지면 | 보시다시피 M0 및 M1 핀을 통해 다양한 모드를 설정할 수 있습니다. |
| 방법 | M1 | M0 | 설명 |
|---|---|---|---|
| 정상 | 0 | 0 | UART 및 무선 채널이 좋습니다 |
| wke-up | 0 | 1 | 정상과 동일하지만 수신기를 깨우기 위해 전송 된 데이터에 프리앰블 코드가 추가됩니다. |
| 전력 절약 | 1 | 0 | UART는 비활성화되고 무선이 WOR (Wake on Radio) 모드에 있습니다. 따라서 수신 할 데이터가있을 때 장치가 켜집니다. 전송은 허용되지 않습니다. |
| 잠 | 1 | 1 | 매개 변수를 설정하는 데 사용됩니다. 전송 및 수신 장애. |
보시다시피 정적 방식으로 사용할 수있는 핀이 있지만, 라이브러리에 연결하면 성능을 얻고 소프트웨어를 통해 모든 모드를 제어 할 수 있지만 다음에 더 잘 설명 할 것입니다.
이미 모든 핀을 마이크로 컨트롤러의 출력에 연결하는 것이 중요하지 않다고 말하면, M0 및 M1 핀을 높거나 낮은 상태로 설정하여 Desidered Configuration 을 연결하지 않으면 라이브러리가 작동이 완료되도록 합리적인 지연을 설정할 수 있습니다 .
데이터를 전송하는 경우 데이터를 사용하여 외부 MCU를 깨우고 데이터 전송 마감에서 높은 리턴을 할 수 있습니다.
전송시 Lora E32 Aux 핀
버퍼가 비어있을 때 보조가 낮아지고 높게 반환 할 때.
리셉션의 Lora E32 Aux 핀
또한 정상 작동 (전원 온 및 수면/프로그램 모드)을 복원하기 위해 자체 점검에 사용됩니다.
Lora E32 자체 점검의 Aux 핀
ESP8266 연결 스키마는 동일한 전압의 논리 통신 (3.3v)에서 작동하기 때문에 더 간단합니다.
LORA E32 TTL 100 WEMOS D1은 완전히 연결되었습니다
우수한 안정성을 얻으려면 풀업 저항 (4,7kohm)을 추가하는 것이 중요합니다.
| M0 | D7 |
|---|---|
| M1 | D6 |
| RX | 핀 D2 (풀업 4,7kΩ) |
| TX | 핀 D3 (풀업 4,7kΩ) |
| 보조 | D5 (입력) |
| 3.3v | Gnd |
Arduino 작동 전압은 5V이므로 RX PIN M0 및 LORA 모듈의 M1에 전압 분배기를 추가해야합니다.
Rx에 모이는 것보다 신호에서 GND 및 1kohm에 2kohm 저항을 사용할 수 있습니다.
Lora E32 TTL 100 Arduino가 완전히 연결되었습니다
| M0 | 7 (전압 분배기) |
|---|---|
| M1 | 6 (전압 분배기) |
| RX | PIN D2 (풀업 4,7kΩ 및 전압 분배기) |
| TX | 핀 D3 (풀업 4,7kΩ) |
| 보조 | 5 (입력) |
| VCC | 3.3v |
| Gnd | Gnd |
우리는 더 많은 옵션과 상황을 관리 할 수 있기 때문에 매우 수많은 생성자 세트를 만들었습니다.
LoRa_E32 (byte rxPin, byte txPin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E32 (byte rxPin, byte txPin, byte auxPin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E32 (byte rxPin, byte txPin, byte auxPin, byte m0Pin, byte m1Pin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);첫 번째 생성자 세트는 직렬 및 기타 핀 관리를 라이브러리에 위임하기 위해 작성됩니다.
rxPin 과 txPin 은 UART에 연결하는 핀이며 필수 입니다.
auxPin 은 작업, 전송 및 수신 상태를 점검하는 핀입니다 (다음에 더 잘 설명 할 것입니다). 핀 은 필수가 아닙니다 . 설정하지 않으면 지연을 적용하여 작업 자체가 (대기 시간을 사용하여) 지연을 적용합니다.
m0pin 과 m1Pin 작동 모드를 변경하는 핀입니다 (테이블 상단 참조). “프로덕션”의이 핀은 직접적으로 높거나 낮은 연결을 할 것이지만 테스트를 위해 라이브러리에서 유용하게 관리됩니다.
bpsRate 는 일반적으로 소프트웨어의 대결입니다.
간단한 예는입니다
# include " LoRa_E32.h "
LoRa_E32 e32ttl100 ( 2 , 3 ); // RX, TX
// LoRa_E32 e32ttl100(2, 3, 5, 6, 7); // RX, TX다른 생성자와 함께 소프트웨어를 직접 사용할 수 있습니다
LoRa_E32 (HardwareSerial* serial, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E32 (HardwareSerial* serial, byte auxPin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E32 (HardwareSerial* serial, byte auxPin, byte m0Pin, byte m1Pin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);이 생성자의 예제는 그렇게 할 수 있습니다.
# include < SoftwareSerial.h >
# include " LoRa_E32.h "
SoftwareSerial mySerial ( 2 , 3 ); // RX, TX
LoRa_E32 e32ttl100 (mySerial);
// LoRa_E32 e32ttl100(&mySerial, 5, 7, 6);마지막 생성자 세트는 소프트웨어 대신 하드웨어를 사용하도록 허용하는 것입니다.
LoRa_E32 (SoftwareSerial* serial, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E32 (SoftwareSerial* serial, byte auxPin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E32 (SoftwareSerial* serial, byte auxPin, byte m0Pin, byte m1Pin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);시작 명령은 입력 및 출력 모드에서 직렬 및 핀을 시작하는 데 사용됩니다.
void begin ();실행 중입니다
// Startup all pins and UART
e32ttl100.begin();구성을 관리하고 장치의 정보를 얻기위한 일련의 방법이 있습니다.
ResponseStructContainer getConfiguration ();
ResponseStatus setConfiguration (Configuration configuration, PROGRAM_COMMAND saveType = WRITE_CFG_PWR_DWN_LOSE);
ResponseStructContainer getModuleInformation ();
void printParameters ( struct Configuration configuration);
ResponseStatus resetModule ();응답 관리를 단순화하기 위해 컨테이너 세트를 만듭니다. 오류를 관리하고 일반 데이터를 반환 할 수 있습니다.
이것은 상태 컨테이너이며 2 개의 간단한 진입 점이 있습니다.이를 사용하면 상태 코드와 상태 코드 설명을 얻을 수 있습니다.
Serial.println(c.getResponseDescription()); // Description of code
Serial.println(c.code); // 1 if Success코드는입니다
E32_SUCCESS = 1 ,
ERR_E32_UNKNOWN,
ERR_E32_NOT_SUPPORT,
ERR_E32_NOT_IMPLEMENT,
ERR_E32_NOT_INITIAL,
ERR_E32_INVALID_PARAM,
ERR_E32_DATA_SIZE_NOT_MATCH,
ERR_E32_BUF_TOO_SMALL,
ERR_E32_TIMEOUT,
ERR_E32_HARDWARE,
ERR_E32_HEAD_NOT_RECOGNIZED이 컨테이너는 문자열 응답을 관리하고 2 개의 진입 점이 있도록 만들어졌습니다.
메시지에서 반환 된 문자열이있는 data 및 status RepsonseStatus 의 인스턴스.
ResponseContainer rs = e32ttl.receiveMessage();
String message = rs.data;
Serial.println(rs.status.getResponseDescription());
Serial.println(message);이것은 더 "복잡한"컨테이너이며, 이것을 구조를 관리하는 데 사용하고, 응답 초기형의 진입 지점을 가지고 있지만 데이터는 복잡한 구조를 관리하는 공간 포인터입니다.
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);첫 번째 방법은 getConfiguration입니다.이를 사용하여 장치에 저장된 모든 데이터를 검색 할 수 있습니다.
ResponseStructContainer getConfiguration ();여기서 사용 예.
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);
Serial.println(configuration.SPED.getUARTBaudRate());구성 구조에는 모든 설정 데이터가 있으며 단일 데이터에 대한 모든 설명을 얻기 위해 일련의 기능을 추가합니다.
configuration.ADDL = 0x0 ; // First part of address
configuration.ADDH = 0x1 ; // Second part of address
configuration.CHAN = 0x19 ; // Channel
configuration.OPTION.fec = FEC_0_OFF; // Forward error correction switch
configuration.OPTION.fixedTransmission = FT_TRANSPARENT_TRANSMISSION; // Transmission mode
configuration.OPTION.ioDriveMode = IO_D_MODE_PUSH_PULLS_PULL_UPS; // Pull-up management
configuration.OPTION.transmissionPower = POWER_17; // dBm transmission power
configuration.OPTION.wirelessWakeupTime = WAKE_UP_1250; // Wait time for wake up
configuration.SPED.airDataRate = AIR_DATA_RATE_011_48; // Air data rate
configuration.SPED.uartBaudRate = UART_BPS_115200; // Communication baud rate
configuration.SPED.uartParity = MODE_00_8N1; // Parity bit모든 설명을 얻을 수있는 동등한 기능이 있습니다.
Serial.print(F( " Chan : " )); Serial.print(configuration.CHAN, DEC); Serial.print( " -> " ); Serial.println(configuration.getChannelDescription());
Serial.println(F( " " ));
Serial.print(F( " SpeedParityBit : " )); Serial.print(configuration.SPED.uartParity, BIN);Serial.print( " -> " ); Serial.println(configuration.SPED.getUARTParityDescription());
Serial.print(F( " SpeedUARTDatte : " )); Serial.print(configuration.SPED.uartBaudRate, BIN);Serial.print( " -> " ); Serial.println(configuration.SPED.getUARTBaudRate());
Serial.print(F( " SpeedAirDataRate : " )); Serial.print(configuration.SPED.airDataRate, BIN);Serial.print( " -> " ); Serial.println(configuration.SPED.getAirDataRate());
Serial.print(F( " OptionTrans : " )); Serial.print(configuration.OPTION.fixedTransmission, BIN);Serial.print( " -> " ); Serial.println(configuration.OPTION.getFixedTransmissionDescription());
Serial.print(F( " OptionPullup : " )); Serial.print(configuration.OPTION.ioDriveMode, BIN);Serial.print( " -> " ); Serial.println(configuration.OPTION.getIODroveModeDescription());
Serial.print(F( " OptionWakeup : " )); Serial.print(configuration.OPTION.wirelessWakeupTime, BIN);Serial.print( " -> " ); Serial.println(configuration.OPTION.getWirelessWakeUPTimeDescription());
Serial.print(F( " OptionFEC : " )); Serial.print(configuration.OPTION.fec, BIN);Serial.print( " -> " ); Serial.println(configuration.OPTION.getFECDescription());
Serial.print(F( " OptionPower : " )); Serial.print(configuration.OPTION.transmissionPower, BIN);Serial.print( " -> " ); Serial.println(configuration.OPTION.getTransmissionPowerDescription());동시에 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 = 0x0 ;
configuration.ADDH = 0x1 ;
configuration.CHAN = 0x19 ;
configuration.OPTION.fec = FEC_0_OFF;
configuration.OPTION.fixedTransmission = FT_TRANSPARENT_TRANSMISSION;
configuration.OPTION.ioDriveMode = IO_D_MODE_PUSH_PULLS_PULL_UPS;
configuration.OPTION.transmissionPower = POWER_17;
configuration.OPTION.wirelessWakeupTime = WAKE_UP_1250;
configuration.SPED.airDataRate = AIR_DATA_RATE_011_48;
configuration.SPED.uartBaudRate = UART_BPS_115200;
configuration.SPED.uartParity = MODE_00_8N1;
// 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);매개 변수는 모두 상수로 관리됩니다.
| addh | 모듈의 높은 주소 바이트 (기본 00H) | 00H-FFH |
|---|---|---|
| addl | 모듈의 낮은 주소 바이트 (기본 00H) | 00H-FFH |
| Sped | 데이터 속도 패리티 비트 및 공기 데이터 속도에 대한 정보 | 찬 |
| 통신 채널 (410m + chan*1m), 기본 17H (433MHz), 433MHz 장치에만 유효합니다. | 00H-1FH |
|---|
옵션
전송 유형, 풀업 설정, 모닝 타임, FEC, 전송 전력
UART PARITY BIT : _UART 모드는 커뮤니케이션 당사자마다 다를 수 있습니다.
| 7 | 6 | UART 패리티 비트 | const 값 | | --- | --- | --- | --- --- | --- | | 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 요율은 무선 전송 매개 변수와 관련이 없으며 무선 전송 / 수신 기능에 영향을 미치지 않습니다.
| 5 | 43 | TTL UART BAUD rate (bps) | 일정한 가치 |
|---|---|---|---|
| 0 | 0 | 0 | 1200 |
| 0 | 0 | 1 | 2400 |
| 0 | 1 | 0 | 4800 |
| 0 | 1 | 1 | 9600 (기본값) |
| 1 | 0 | 0 | 19200 |
| 1 | 0 | 1 | 38400 |
| 1 | 1 | 0 | 57600 |
| 1 | 1 | 1 | 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 | 19.2k (101과 동일) | air_data_rate_110_192 |
| 1 | 1 | 1 | 19.2k (101과 동일) | air_data_rate_111_192 |
전송 모드 : 고정 된 전송 모드에서 각 사용자 데이터 프레임의 처음 3 바이트는 높은/낮은 주소 및 채널로 사용할 수 있습니다. 모듈은 전송시 주소와 채널을 변경합니다. 프로세스를 완료 한 후 원래 설정으로 되돌아갑니다.
| 7 | 고정 변속기 활성화 비트 (modbus와 유사) | 일정한 가치 |
|---|---|---|
| 0 | 투명 전송 모드 | ft_transparent_transmission |
| 1 | 고정 전송 모드 | ft_fixed_transmission |
IO 드라이브 모드 :이 비트는 모듈 내부 풀- 업 저항에 사용됩니다. 또한 열린 배수의 경우 레벨의 적응성을 증가시킵니다. 그러나 어떤 경우에는 외부 풀업이 필요할 수 있습니다
저항기.
| 6 | IO 드라이브 모드 (기본 1) | 일정한 가치 |
|---|---|---|
| 1 | TXD 및 AUX 푸시 풀 출력, RXD 풀업 입력 | io_d_mode_push_pulls_pull_ups |
| 0 | TXD ux aux 오픈-컬렉터 출력, RXD 오픈-수집기 입력 | io_d_mode_open_collector |
무선 웨이크 업 시간 : 지연 시간이 유효하지 않고 임의의 값이 될 수있는 Mode 0에서 전송 및 수신 모듈 작동, 모드 1의 송신기는 해당 시간의 프리앰블 코드를 계속 전송할 수 있습니다. 수신기가 모드 2에서 작동 할 때 시간은 모니터 간격 시간 (무선 웨이크 업)을 의미합니다. 모드 1에서 작동하는 송신기의 데이터 만
받았다.
| 5 | 4 | 3 | 무선 웨이크 업 시간 | 일정한 가치 |
|---|---|---|---|---|
| 0 | 0 | 0 | 250ms (기본값) | wake_up_250 |
| 0 | 0 | 1 | 500ms | wake_up_500 |
| 0 | 1 | 0 | 750ms | wake_up_750 |
| 0 | 1 | 1 | 1000ms | wake_up_1000 |
| 1 | 0 | 0 | 1250ms | wake_up_1250 |
| 1 | 0 | 1 | 1500ms | wake_up_1500 |
| 1 | 1 | 0 | 1750ms | wake_up_1750 |
| 1 | 1 | 1 | 2000ms | wake_up_2000 |
FEC : FEC를 끄면 실제 데이터 전송 속도가 증가하는 반면 반 간섭 능력은 감소합니다. 또한 전송 거리가 비교적 짧으므로 두 커뮤니케이션 당사자는 FEC에 대한 동일한 페이지를 유지해야합니다.
| 2 | FEC 스위치 | 일정한 가치 |
|---|---|---|
| 0 | FEC를 끄십시오 | fec_0_off |
| 1 | FEC (기본값) 켜기 | fec_1_on |
전송 전력
정의와 같은 적용 으로이 상수 세트를 변경할 수 있습니다.
# define E32_TTL_100 // default value without set E32-TTL-100, E32-TTL-100S1, E32-T100S2에 적용 할 수 있습니다.
외부 전력은 전류 출력의 250ma 이상의 능력을 확인하고 전원 공급 장치가 100MV 이내에 파열되어야합니다.
저전력 공급 장치로 인해 저전력 변속기가 권장되지 않습니다.
능률.
# define E32_TTL_100 // default value without set| 1 | 0 | 전송 전력 (근사) | 일정한 가치 |
|---|---|---|---|
| 0 | 0 | 20dBm (기본값) | Power_20 |
| 0 | 1 | 17dBm | Power_17 |
| 1 | 0 | 14dbm | Power_14 |
| 1 | 1 | 10dbm | Power_10 |
E32-TTL-500에 적용 가능
외부 전력은 전류 출력의 700mA 이상의 능력을 확인하고 100MV 이내의 전원 공급 장치 파열을 보장해야합니다.
낮은 전원 공급 장치 효율로 인해 저전력 변속기는 권장되지 않습니다.
# define E32_TTL_500| 1 | 0 | 전송 전력 (근사) | 일정한 가치 |
|---|---|---|---|
| 0 | 0 | 27dBM (기본값) | Power_27 |
| 0 | 1 | 24dbm | Power_24 |
| 1 | 0 | 21dbm | Power_21 |
| 1 | 1 | 18dBM | Power_18 |
E32-TTL-1W, E32 (433T30S), E32 (868T30S), E32 (915T30S)에 적용 할 수 있습니다.
외부 전력은 전류 출력의 1A 이상의 능력을 확인하고 전원 공급 장치가 100MV 이내에 파열해야합니다.
저전력 공급 장치로 인해 저전력 변속기가 권장되지 않습니다.
능률.
# define E32_TTL_1W| 1 | 0 | 전송 전력 (근사) | 일정한 가치 |
|---|---|---|---|
| 0 | 0 | 30dbm (기본값) | Power_30 |
| 0 | 1 | 27dBM | Power_27 |
| 1 | 0 | 24dbm | Power_24 |
| 1 | 1 | 21dbm | Power_21 |
이 정의로 채널 주파수 OLSO를 구성 할 수 있습니다.
// One of
# define FREQUENCY_433
# define FREQUENCY_170
# define FREQUENCY_470
# define FREQUENCY_868
# define FREQUENCY_915먼저 우리는 수신 버퍼에 무언가가 있는지 확인하기 위해 간단하지만 유용하게 방법을 소개해야합니다.
int available ();그것은 단순히 현재 스트림에 몇 바이트 수를 반환합니다.
정상/투명 전송 모드는 동일한 주소와 채널을 가진 모든 장치에 메시지를 보내는 데 사용됩니다.
LORA E32 전송 시나리오, 라인은 채널입니다
메시지를 보내거나받는 방법이 많이 있습니다. 자세히 설명 할 것입니다.
ResponseStatus sendMessage ( const String message);ResponseContainer receiveMessage ();첫 번째 방법은 sendMessage이며 정상 모드의 장치로 문자열을 보내는 데 사용됩니다.
ResponseStatus rs = e32ttl.sendMessage( " Prova " );
Serial.println(rs.getResponseDescription());다른 장치는 단순히 루프에서 수행합니다
if (e32ttl.available() > 1 ){
ResponseContainer rs = e32ttl. 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 = e32ttl.sendMessage(&messaggione, sizeof (Messaggione));
Serial.println(rs.getResponseDescription());그리고 다른 쪽은 메시지를받을 수 있습니다.
ResponseStructContainer rsc = e32ttl.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 = e32ttl.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 = e32ttl.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 = e32ttl.sendFixedMessage( 0 , 0 , 0x17 , &messaggione, sizeof (Messaggione));
// ResponseStatus rs = e32ttl.sendFixedMessage(0, 0, 0x17, "Ciao");고정 전송에는 더 많은 시나리오가 있습니다
LORA E32 전송 시나리오, 라인은 채널입니다
특정 장치 (두 번째 시나리오 고정 전송)로 보내는 경우 Addl, Addh 및 Chan을 추가하여 직접 식별해야합니다.
ResponseStatus rs = e32ttl.sendFixedMessage( 2 , 2 , 0x17 , " Message to a device " );지정된 채널의 모든 장치에 메시지를 보내려면이 메소드를 사용할 수 있습니다.
ResponseStatus rs = e32ttl.sendBroadcastFixedMessage( 0x17 , " Message to a devices of a channel " ); 네트워크에서 모든 방송 메시지를 받으려면 BROADCAST_ADDRESS 로 ADDH 와 ADDL 설정해야합니다.
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 = BROADCAST_ADDRESS;
configuration.ADDH = BROADCAST_ADDRESS;
// 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);