Բովանդակություն:

LoRa 3 կմ -ից 8 կմ անլար հաղորդակցություն ցածր գնով E32 (sx1278/sx1276) սարք Arduino- ի, Esp8266- ի կամ Esp32- ի համար ՝ 15 քայլ
LoRa 3 կմ -ից 8 կմ անլար հաղորդակցություն ցածր գնով E32 (sx1278/sx1276) սարք Arduino- ի, Esp8266- ի կամ Esp32- ի համար ՝ 15 քայլ

Video: LoRa 3 կմ -ից 8 կմ անլար հաղորդակցություն ցածր գնով E32 (sx1278/sx1276) սարք Arduino- ի, Esp8266- ի կամ Esp32- ի համար ՝ 15 քայլ

Video: LoRa 3 կմ -ից 8 կմ անլար հաղորդակցություն ցածր գնով E32 (sx1278/sx1276) սարք Arduino- ի, Esp8266- ի կամ Esp32- ի համար ՝ 15 քայլ
Video: How to install outdoor LTE with MikroTik 2024, Հունիսի
Anonim
LoRa 3 կմ -ից 8 կմ անլար հաղորդակցություն ցածր գնով E32 (sx1278/sx1276) սարք Arduino- ի, Esp8266- ի կամ Esp32- ի համար
LoRa 3 կմ -ից 8 կմ անլար հաղորդակցություն ցածր գնով E32 (sx1278/sx1276) սարք Arduino- ի, Esp8266- ի կամ Esp32- ի համար

Ես ստեղծում եմ գրադարան ՝ EBYTE E32- ը կառավարելու համար ՝ LoRa սարքի Semtech շարքի հիման վրա, շատ հզոր, պարզ և էժան սարք:

Այստեղ կարող եք գտնել 3 կմ տարբերակ, 8 կմ ՝ այստեղ

Նրանք կարող են աշխատել 3000 մ -ից 8000 մ հեռավորության վրա, և նրանք ունեն բազմաթիվ առանձնահատկություններ և պարամետրեր: Այսպիսով, ես ստեղծում եմ այս գրադարանը `օգտագործումը պարզեցնելու համար:

Դա լուծում է մետրոպոլիտենի տվիչներից տվյալների ստացման կամ անօդաչու թռչող սարքի կառավարման համար:

Պարագաներ

Arduino UNO

Wemos D1 մինի

LoRa E32 TTL 100 3 կմ տարբերակ

LoRa E32 TTL 1W 8Km տարբերակ

Քայլ 1: Գրադարան

Գրադարան
Գրադարան

Իմ գրադարանը կարող եք գտնել այստեղ:

Բեռնելու.

Կտտացրեք «Ներբեռնել» կոճակը վերևի աջ անկյունում և անվանափոխեք չսեղմված թղթապանակը LoRa_E32:

Ստուգեք, որ LoRa_E32 պանակը պարունակում է LoRa_E32.cpp և LoRa_E32.h:

Տեղադրեք LoRa_E32 գրադարանի թղթապանակը ձեր / գրադարաններ / թղթապանակում: Հնարավոր է, որ անհրաժեշտ լինի ստեղծել գրադարանների ենթապարկը, եթե դա ձեր առաջին գրադարանն է:

Վերագործարկեք IDE- ն:

Քայլ 2: Պինոուտ

Pinout
Pinout
Pinout
Pinout
Pinout
Pinout

Ինչպես տեսնում եք, կարող եք տարբեր ռեժիմներ սահմանել M0 և M1 կապումներով:

Կան որոշ քորոցներ, որոնք կարող են օգտագործվել ստատիկ եղանակով, բայց եթե այն միացնում եք միկրոկառավարիչին և դրանք կարգավորում եք գրադարանում, դուք ձեռք եք բերում արդյունավետություն, և կարող եք վերահսկել բոլոր ռեժիմները ծրագրային ապահովման միջոցով, բայց հաջորդը ավելի լավ կբացատրենք:

Քայլ 3: AUX քորոց

AUX քորոց
AUX քորոց
AUX քորոց
AUX քորոց
AUX քորոց
AUX քորոց

Ինչպես արդեն ասացի, կարևոր չէ միացնել բոլոր միակցիչները միկրոկառավարիչի ելքին, կարող եք տեղադրել M0 և M1 կապերը HIGH կամ LOW ՝ ցանկալի կազմաձևում ստանալու համար, իսկ AUX- ը չկապելու դեպքում գրադարանն ապահովում է ողջամիտ ուշացում: որ վիրահատությունն ավարտված է:

AUX քորոց

Տվյալների փոխանցման ժամանակ կարող է օգտագործվել արտաքին MCU- ն արթնացնելու և տվյալների փոխանցման ավարտին HIGH վերադարձնելու համար:

Երբ AUX- ը ստանում են OWԱOWՐ և վերադառնում բարձր, երբ բուֆերը դատարկ է:

Այն նաև օգտագործվում է ինքնուրույն ստուգման համար `նորմալ աշխատանքը վերականգնելու համար (միացման և քնի/ծրագրի ռեժիմում):

Քայլ 4. Լիովին կապված սխեմա Esp8266

Լիովին միացված սխեմա Esp8266
Լիովին միացված սխեմա Esp8266
Լիովին միացված սխեմա Esp8266
Լիովին միացված սխեմա Esp8266

esp8266 կապի սխեման ավելի պարզ է, քանի որ այն աշխատում է տրամաբանական հաղորդակցության միևնույն լարման դեպքում (3.3v):

Լավ կայունություն ստանալու համար կարևոր է ավելացնել ձգվող դիմադրություն (4, 7 Կմ):

Քայլ 5. Լիովին միացված Arduino սխեմա

Լիովին միացված սխեմա Arduino
Լիովին միացված սխեմա Arduino
Լիովին միացված սխեմա Arduino
Լիովին միացված սխեմա Arduino

Arduino- ի աշխատանքային լարումը 5 վ է, ուստի մենք պետք է ավելացնենք լարման բաժանարար LoRa մոդուլի RX կապի M0 և M1- ի վրա `վնասը կանխելու համար, լրացուցիչ տեղեկություններ կարող եք ստանալ այստեղ Լարման բաժանարար` հաշվիչ և կիրառություն:

Դուք կարող եք օգտագործել 2 Կմ դիմադրություն GND- ին և ազդանշանից 1 Կմ, քան միասին տեղադրել RX- ում:

Քայլ 6: Գրադարան. Կառուցող

Ես պատրաստել եմ բավականին շատ կոնստրուկտորների շարք, քանի որ մենք կարող ենք ավելի շատ տարբերակներ և իրավիճակներ կառավարել:

LoRa_E32 (բայթ rxPin, բայթ txPin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);

LoRa_E32 (բայթ rxPin, բայթ txPin, բայթ auxPin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600); LoRa_E32 (բայթ rxPin, բայթ txPin, բայթ auxPin, բայթ m0Pin, բայթ m1Pin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);

Կոնստրուկտորների առաջին հավաքածուն ստեղծվում է `սերիական և այլ կապերի կառավարումը գրադարանին փոխանցելու համար:

rxPin- ը և txPin- ը UART- ին միանալու քորոցն են, և դրանք պարտադիր են:

auxPin- ը քորոց է, որը ստուգում է աշխատանքի, փոխանցման և ստացման կարգավիճակը (հաջորդիվ ավելի լավ կբացատրենք), այդ քորոցը Պարտադիր չէ, եթե այն չդնես, ես հետաձգում եմ գործողությունը ինքնուրույն ավարտելու համար (ուշացումով):

m0pin- ը և m1Pin- ը գործողության ռեժիմը փոխելու կապում են (տես աղյուսակի վերևը): Կարծում եմ, որ «արտադրության» այս կապումներն ուղղակիորեն կապվելու են բարձր կամ ցածր, բայց փորձարկման համար դրանք օգտակար կլինի կառավարել գրադարանը:

bpsRate- ը Sրագրային ապահովման բորդրատ է, որը սովորաբար կազմում է 9600 (ծրագրավորման/քնի ռեժիմում միակ բաուդ արագությունը)

Պարզ օրինակ է

#ներառել «LoRa_E32.h» LoRa_E32 e32ttl100 (2, 3); // RX, TX // LoRa_E32 e32ttl100 (2, 3, 5, 6, 7); // RX, TX

Մենք կարող ենք ուղղակիորեն օգտագործել SoftwareSerial- ը մեկ այլ կոնստրուկտորի հետ

LoRa_E32 (HardwareSerial* սերիա, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);

LoRa_E32 (HardwareSerial* սերիա, բայթ auxPin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);

LoRa_E32 (HardwareSerial* սերիա, բայթ auxPin, բայթ m0Pin, բայթ m1Pin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);

Այս կոնստրուկտորի վերին օրինակը կարող է նման լինել:

#ներառել #ներառել «LoRa_E32.h»

SoftwareSerial mySerial (2, 3); // RX, TX

LoRa_E32 e32ttl100 (& mySerial);

// LoRa_E32 e32ttl100 (& mySerial, 5, 7, 6);

Կոնստրուկտորի վերջին հավաքածուն թույլ է տալիս օգտագործել SoftwareSerial- ի փոխարեն HardwareSerial- ը:

LoRa_E32 (SoftwareSerial* սերիա, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);

LoRa_E32 (SoftwareSerial* սերիա, բայթ auxPin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);

LoRa_E32 (SoftwareSerial* սերիա, բայթ auxPin, բայթ m0Pin, բայթ m1Pin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);

Քայլ 7: Սկսեք

Start հրամանը օգտագործվում է Serial- ը գործարկելու և մուտքի և ելքի ռեժիմում կապում:

դատարկ սկիզբ ();

կատարման մեջ է

// Գործարկել բոլոր կապումներն ու UART- ը

e32ttl100. սկսել ();

Քայլ 8: Կազմաձևում և տեղեկատվության մեթոդ

Կա մի շարք մեթոդներ ՝ կազմաձևումը կառավարելու և սարքի մասին տեղեկատվություն ստանալու համար:

ResponseStructContainer getConfiguration ();

ResponseStatus setConfiguration (Կազմաձևի կազմաձևում, PROGRAM_COMMAND saveType = WRITE_CFG_PWR_DWN_LOSE);

ResponseStructContainer getModuleInformation ();

void printParameters (strukt Կազմաձևման կազմաձևում);

ResponseStatus resetModule ();

Քայլ 9: Արձագանքման տարա

Պատասխանի կառավարումը պարզեցնելու համար ես ստեղծում եմ տարայի հավաքածու, որն ինձ համար շատ օգտակար կլինի ՝ սխալները կառավարելու և ընդհանուր տվյալները վերադարձնելու համար:

ResponseStatus

Սա կարգավիճակի կոնտեյներ է և ունի 2 պարզ մուտքի կետ, դրանով դուք կարող եք ստանալ կարգավիճակի կոդը և կարգավիճակի ծածկագրի նկարագրությունը

Serial.println (c.getResponseDescription ()); // Կոդի նկարագրություն

Serial.println (ծածկագիր); // 1 Եթե հաջողություն

Կոդն են

ՀԱ SUՈՈԹՅՈՆ = 1, ERR_UNKNOWN, ERR_NOT_SUPPORT, ERR_NOT_IMPLEMENT, ERR_NOT_INITIAL, ERR_INVALID_PARAM, ERR_DATA_SIZE_NOT_MATCH, ERR_BUF_TOO_SMALL, ERR_TIMEOUT, ERR_HARDWARE, ERR_HEAD_NOT_RECOGNIZED

ResponseContainer

Այս կոնտեյները ստեղծվել է String արձագանքը կառավարելու և մուտքի 2 կետ ունենալու համար:

տողով տվյալները հաղորդագրությունից և կարգավիճակից վերադարձվել են RepsonseStatus- ի օրինակ:

ResponseContainer rs = e32ttl.receiveMessage ();

Լարային հաղորդագրություն = rs.data;

Serial.println (rs.status.getResponseDescription ());

Serial.println (հաղորդագրություն);

ResponseStructContainer

Սա ավելի «բարդ» տարա է, որն օգտագործում եմ կառուցվածքը կառավարելու համար: Այն ունի ResponseContainer- ի նույն մուտքի կետը, բայց տվյալները դատարկ ցուցիչ են `բարդ կառուցվածքը կառավարելու համար:

ResponseStructContainer գ;

c = e32ttl100.getConfiguration (); // Բոլոր մյուս գործողություններից առաջ կարևոր է ստանալ կոնֆիգուրացիայի ցուցիչ

Կազմաձևման կազմաձևում = *(Կազմաձևում *) c.data;

Serial.println (c.status.getResponseDescription ());

Serial.println (c.status.code);

getConfiguration և setConfiguration

Առաջին մեթոդը getConfiguration- ն է, այն կարող եք օգտագործել սարքում պահված բոլոր տվյալները առբերելու համար:

ResponseStructContainer getConfiguration ();

Ահա օգտագործման օրինակ.

ResponseStructContainer գ;

c = e32ttl100.getConfiguration (); // Բոլոր մյուս գործողություններից առաջ կարևոր է ստանալ կոնֆիգուրացիայի ցուցիչ

Կազմաձևման կազմաձևում = *(Կազմաձևում *) c.data;

Serial.println (c.status.getResponseDescription ());

Serial.println (c.status.code);

Serial.println (configuration. SPED.getUARTBaudRate ());

Կազմաձևման կառուցվածքում կան պարամետրերի բոլոր տվյալները, և ես մի շարք գործառույթներ եմ ավելացնում ՝ մեկ տվյալների ամբողջական նկարագրությունը ստանալու համար:

configuration. ADDL = 0x0; // Հասցեի կազմաձևման առաջին մասը. ADDH = 0x1; // Հասցեի կազմաձևման երկրորդ մասը. CHAN = 0x19; // Ալիքի կազմաձևում: OPTION.fec = FEC_0_OFF; // Փոխանցել սխալի ուղղման անջատիչի կոնֆիգուրացիա: OPTION.fixedTransmission = FT_TRANSPARENT_TRANSMISSION; // Փոխանցման ռեժիմի կոնֆիգուրացիա. OPTION.ioDriveMode = IO_D_MODE_PUSH_PULLS_PULL_UPS; // Քաշեք կառավարման կոնֆիգուրացիա. OPTION.transmissionPower = POWER_17; // dBm փոխանցման հզորության կոնֆիգուրացիա. OPTION.wirelessWakeupTime = WAKE_UP_1250; // Սպասեք ժամանակը արթնանալու կոնֆիգուրացիայի համար: SPED.airDataRate = AIR_DATA_RATE_011_48; // Օդի տվյալների արագության կազմաձևում. SPED.uartBaudRate = UART_BPS_115200; // Կապի արագության արագության կոնֆիգուրացիա. SPED.uartParity = MODE_00_8N1; // Պարիտետային բիթ

Դուք ունեք բոլոր հատկանիշների համարժեք գործառույթը ՝ բոլոր նկարագրությունները ստանալու համար.

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- ը ցանկանում է կոնֆիգուրացիայի կառուցվածք, ուստի ես կարծում եմ, որ կոնֆիգուրացիան կառավարելու ավելի լավ միջոցը ընթացիկն առբերելն է, կիրառել ձեզ անհրաժեշտ միակ փոփոխությունը և այն նորից դնելը:

ResponseStatus setConfiguration (Կազմաձևի կազմաձևում, PROGRAM_COMMAND saveType = WRITE_CFG_PWR_DWN_LOSE);

կոնֆիգուրացիան նախապես ցուցադրվող, saveType- ն է, որը թույլ է տալիս ընտրել, եթե փոփոխությունը մշտապես լինի միայն ընթացիկ նստաշրջանի համար:

ResponseStructContainer c; c = e32ttl100.getConfiguration (); // Կարևոր է ստանալ կոնֆիգուրացիայի ցուցիչ նախքան մնացած բոլոր գործողությունները Կազմաձևման կազմաձևում = *(Կազմաձևում *) c.data; Serial.println (c.status.getResponseDescription ()); Serial.println (c.status.code); printParameters (կազմաձևում); configuration. ADDL = 0x0; կազմաձևում. ADDH = 0x1; կոնֆիգուրացիա. 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; // Սահմանել կազմաձևը փոխվել է և սահմանվել այնպես, որ այն չպահի ResponseStatus rs = e32ttl100.setConfiguration կոնֆիգուրացիան (կազմաձևում, WRITE_CFG_PWR_DWN_LOSE); Serial.println (rs.getResponseDescription ()); Serial.println (rs.code); printParameters (կազմաձևում);

Բոլոր պարամետրերը կառավարվում են որպես հաստատուն.

Քայլ 10: Հիմնական կազմաձևման տարբերակ

Հիմնական կազմաձևման տարբերակ
Հիմնական կազմաձևման տարբերակ

Քայլ 11: Ուղարկեք ստացման հաղորդագրություն

Սկզբում մենք պետք է ներկայացնենք մի պարզ, բայց օգտակար մեթոդ `ստուգելու, արդյոք ինչ -որ բան ընդունող բուֆերում է

int հասանելի ();

Պարզապես վերադարձեք, թե քանի բայթ ունեք ընթացիկ հոսքում:

Քայլ 12: Նորմալ փոխանցման ռեժիմ

Նորմալ փոխանցման ռեժիմ
Նորմալ փոխանցման ռեժիմ

Նորմալ/Թափանցիկ փոխանցման ռեժիմը օգտագործվում է հաղորդագրություններ ուղարկելու բոլոր հասցեներով և նույն ալիքով:

Հաղորդագրություն ուղարկելու/ստանալու բազմաթիվ եղանակներ կան, մենք մանրամասնորեն կբացատրենք.

ResponseStatus sendMessage (const Լարային հաղորդագրություն);

ResponseContainer دریافتMessage ();

Առաջին մեթոդը sendMessage է և օգտագործվում է Նորմալ ռեժիմում String սարքին ուղարկելու համար:

ResponseStatus rs = e32ttl.sendMessage ("Prova"); Serial.println (rs.getResponseDescription ());

Մյուս սարքը պարզապես կատարում է հանգույցը

if (e32ttl.available ()> 1) {ResponseContainer rs = e32ttl.receiveMessage (); Լարային հաղորդագրություն = rs.data; // Առաջին անգամ ստացեք տվյալները Serial.println (rs.status.getResponseDescription ()); Serial.println (հաղորդագրություն); }

Քայլ 13: Կառավարեք կառուցվածքը

Եթե ցանկանում եք ուղարկել բարդ կառուցվածք, կարող եք օգտագործել այս մեթոդը

ResponseStatus sendMessage (const void *message, const uint8_t size); ResponseStructContainer دریافتMessage (const uint8_t չափը);

Այն օգտագործվում է ուղեցույց ուղարկելու համար, օրինակ ՝

struct Messaggione {նշանի տեսակը [5]; char հաղորդագրություն [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);

Կարդացեք մասնակի կառուցվածք

Եթե ցանկանում եք կարդալ հաղորդագրության առաջին մասը `ավելի շատ տեսակի կառավարում կառավարելու համար, կարող եք օգտագործել այս մեթոդը:

ResponseContainer ReceInitialMessage (const uint8_t չափը);

Ստեղծում եմ It ՝ տիպի կամ այլ տող ստանալու համար ՝ բեռնման համար նախատեսված կառուցվածքը որոշելու համար:

struct Messaggione {// Մասնակի խափանում առանց գրամեքենայի հաղորդագրության [8]; bool mitico; }; ածխածնի տեսակը [5]; // ResponseContainer կառուցվածքի առաջին մասը rs = e32ttl.receiveInitialMessage (չափը (տեսակը)); // Տող տեղադրեք char զանգվածում (անհրաժեշտ չէ) memcpy (տիպ, rs.data.c_str (), sizeof (տեսակ)); Serial.println («ԿԱՐԴԱԵՔ ՏԵՍԱԿԸ.»); Serial.println (rs.status.getResponseDescription ()); Serial.println (տեսակը); // Կարդացեք մնացած կառուցվածքը ResponseStructContainer rsc = e32ttl.receiveMessage (sizeof (Messaggione)); struct Messaggione messaggione = *(Messaggione *) rsc.data;

Քայլ 14: Ֆիքսված ռեժիմ Նորմալ ռեժիմի փոխարեն

Միևնույն ժամանակ, ես ստեղծում եմ մի շարք մեթոդներ, որոնք օգտագործվում են ֆիքսված փոխանցման միջոցով

Ֆիքսված փոխանցում

Դուք պետք է փոխեք միայն ուղարկելու եղանակը, քանի որ նպատակակետ սարքը նախաբանը չի ստանում հասցեով և ալիքով և կարգավորվում է ֆիքսված ռեժիմով:

Այսպիսով, String հաղորդագրության համար ունեք

ResponseStatus sendFixedMessage (բայթ ADDL, բայթ ADDH, բայթ CHAN, const Լարային հաղորդագրություն); ResponseStatus sendBroadcastFixedMessage (բայթ CHAN, const Լարային հաղորդագրություն);

իսկ կառուցվածքի համար դուք ունեք

ResponseStatus sendFixedMessage (բայթ ADDL, բայթ ADDH, բայթ CHAN, const void *message, const uint8_t size); ResponseStatus sendBroadcastFixedMessage (բայթ 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");

Ֆիքսված փոխանցումը ավելի շատ սցենարներ ունի

Եթե ուղարկում եք որոշակի սարքի (երկրորդ սցենարներն են ՝ ֆիքսված փոխանցում), ապա այն ուղղակիորեն նույնականացնելու համար պետք է ավելացնեք ADDL, ADDH և CHAN:

ResponseStatus rs = e32ttl.sendFixedMessage (2, 2, 0x17, «Հաղորդագրություն սարքին»);

Եթե ցանկանում եք հաղորդագրություն ուղարկել նշված ալիքի բոլոր սարքերին, կարող եք օգտագործել այս մեթոդը:

ResponseStatus rs = e32ttl.sendBroadcastFixedMessage (0x17, «Հաղորդագրություն ալիքի սարքերին»);

Եթե ցանկանում եք ցանցում ստանալ բոլոր հեռարձակվող հաղորդագրությունները, ապա պետք է սահմանեք ձեր ADDH և ADDL- ը BROADCAST_ADDRESS- ով:

ResponseStructContainer c; c = e32ttl100.getConfiguration (); // Կարևոր է ստանալ կոնֆիգուրացիայի ցուցիչ նախքան մնացած բոլոր գործողությունները Կազմաձևման կոնֆիգուրացիա = *(Կազմաձևում *) c.data; Serial.println (c.status.getResponseDescription ()); Serial.println (c.status.code); printParameters (կազմաձևում); configuration. ADDL = BROADCAST_ADDRESS; configuration. ADDH = BROADCAST_ADDRESS; // Սահմանել կազմաձևը փոխվել է և սահմանվել այնպես, որ այն չպահի ResponseStatus rs = e32ttl100.setConfiguration կոնֆիգուրացիան (կազմաձևում, WRITE_CFG_PWR_DWN_LOSE); Serial.println (rs.getResponseDescription ()); Serial.println (rs.code); printParameters (կազմաձևում);

Քայլ 15: Շնորհակալություն

Այժմ դուք ունեք ամբողջ տեղեկատվությունը ձեր աշխատանքը կատարելու համար, բայց ես կարծում եմ, որ կարևոր է ցույց տալ որոշ իրատեսական օրինակներ ՝ ավելի լավ հասկանալու բոլոր հնարավորությունները:

  1. LoRa E32 սարք Arduino- ի համար, esp32 կամ esp8266. Կարգավորումներ և հիմնական օգտագործում
  2. LoRa E32 սարք Arduino- ի համար, esp32 կամ esp8266: գրադարան
  3. LoRa E32 սարք Arduino- ի համար, esp32 կամ esp8266: կազմաձևում
  4. LoRa E32 սարք Arduino- ի համար, esp32 կամ esp8266. Ֆիքսված փոխանցում
  5. LoRa E32 սարք Arduino- ի, esp32- ի կամ esp8266- ի համար. Էներգախնայողություն և համակարգված տվյալների ուղարկում

Խորհուրդ ենք տալիս: