Բովանդակություն:
- Պարագաներ
- Քայլ 1: Գրադարան
- Քայլ 2: Պինոուտ
- Քայլ 3: AUX քորոց
- Քայլ 4. Լիովին կապված սխեմա Esp8266
- Քայլ 5. Լիովին միացված Arduino սխեմա
- Քայլ 6: Գրադարան. Կառուցող
- Քայլ 7: Սկսեք
- Քայլ 8: Կազմաձևում և տեղեկատվության մեթոդ
- Քայլ 9: Արձագանքման տարա
- Քայլ 10: Հիմնական կազմաձևման տարբերակ
- Քայլ 11: Ուղարկեք ստացման հաղորդագրություն
- Քայլ 12: Նորմալ փոխանցման ռեժիմ
- Քայլ 13: Կառավարեք կառուցվածքը
- Քայլ 14: Ֆիքսված ռեժիմ Նորմալ ռեժիմի փոխարեն
- Քայլ 15: Շնորհակալություն
Video: LoRa 3 կմ -ից 8 կմ անլար հաղորդակցություն ցածր գնով E32 (sx1278/sx1276) սարք Arduino- ի, Esp8266- ի կամ Esp32- ի համար ՝ 15 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:45
Ես ստեղծում եմ գրադարան ՝ 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: Պինոուտ
Ինչպես տեսնում եք, կարող եք տարբեր ռեժիմներ սահմանել M0 և M1 կապումներով:
Կան որոշ քորոցներ, որոնք կարող են օգտագործվել ստատիկ եղանակով, բայց եթե այն միացնում եք միկրոկառավարիչին և դրանք կարգավորում եք գրադարանում, դուք ձեռք եք բերում արդյունավետություն, և կարող եք վերահսկել բոլոր ռեժիմները ծրագրային ապահովման միջոցով, բայց հաջորդը ավելի լավ կբացատրենք:
Քայլ 3: AUX քորոց
Ինչպես արդեն ասացի, կարևոր չէ միացնել բոլոր միակցիչները միկրոկառավարիչի ելքին, կարող եք տեղադրել M0 և M1 կապերը HIGH կամ LOW ՝ ցանկալի կազմաձևում ստանալու համար, իսկ AUX- ը չկապելու դեպքում գրադարանն ապահովում է ողջամիտ ուշացում: որ վիրահատությունն ավարտված է:
AUX քորոց
Տվյալների փոխանցման ժամանակ կարող է օգտագործվել արտաքին MCU- ն արթնացնելու և տվյալների փոխանցման ավարտին HIGH վերադարձնելու համար:
Երբ AUX- ը ստանում են OWԱOWՐ և վերադառնում բարձր, երբ բուֆերը դատարկ է:
Այն նաև օգտագործվում է ինքնուրույն ստուգման համար `նորմալ աշխատանքը վերականգնելու համար (միացման և քնի/ծրագրի ռեժիմում):
Քայլ 4. Լիովին կապված սխեմա Esp8266
esp8266 կապի սխեման ավելի պարզ է, քանի որ այն աշխատում է տրամաբանական հաղորդակցության միևնույն լարման դեպքում (3.3v):
Լավ կայունություն ստանալու համար կարևոր է ավելացնել ձգվող դիմադրություն (4, 7 Կմ):
Քայլ 5. Լիովին միացված 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: Շնորհակալություն
Այժմ դուք ունեք ամբողջ տեղեկատվությունը ձեր աշխատանքը կատարելու համար, բայց ես կարծում եմ, որ կարևոր է ցույց տալ որոշ իրատեսական օրինակներ ՝ ավելի լավ հասկանալու բոլոր հնարավորությունները:
- LoRa E32 սարք Arduino- ի համար, esp32 կամ esp8266. Կարգավորումներ և հիմնական օգտագործում
- LoRa E32 սարք Arduino- ի համար, esp32 կամ esp8266: գրադարան
- LoRa E32 սարք Arduino- ի համար, esp32 կամ esp8266: կազմաձևում
- LoRa E32 սարք Arduino- ի համար, esp32 կամ esp8266. Ֆիքսված փոխանցում
- LoRa E32 սարք Arduino- ի, esp32- ի կամ esp8266- ի համար. Էներգախնայողություն և համակարգված տվյալների ուղարկում
Խորհուրդ ենք տալիս:
Ինչպես կառուցել ցածր գնով ԷՍԳ սարք. 26 քայլ
Ինչպես կառուցել ցածր գնով ԷՍԳ սարք. Բարև բոլորին: Իմ անունը Մարիանո է, և ես կենսաբժշկական ինժեներ եմ: Որոշ հանգստյան օրեր անցկացրեցի ՝ նախագծելու և իրականացնելու ԷՍԳ էժան սարքի նախատիպը ՝ հիմնված Arduino տախտակի վրա, որը Bluetooth- ով միացված է Android սարքին (սմարթֆոն կամ պլանշետ): Ես
The 'Sup - մուկ `քառակողմ ունեցող մարդկանց համար` ցածր գնով և բաց կոդով. 12 քայլ (նկարներով)
«Sup - մուկ ՝ քառատիկ բարդությամբ տառապող մարդկանց համար. Նրանք ունեն մի ընկեր ՝ Ալենին, ով քառակողմ տառապում է լեռնային հեծանվով վթարի հետևանքով: Ես և Ֆելիքսը (իմ ընկերը) արագ հետազոտություններ կատարեցինք
ARUPI - ցածր գնով ավտոմատ ձայնագրման միավոր/ինքնագրող ձայնագրման միավոր (ARU) Soundscape էկոլոգների համար. 8 քայլ (նկարներով)
ARUPI - -ածր ծախսերի ավտոմատ ձայնագրման միավոր/ինքնավար ձայնագրման միավոր (ARU) Soundscape բնապահպանների համար. Այս հրահանգը գրվել է Էնթոնի Թերների կողմից: Նախագիծը մշակվել է Քենթի համալսարանի հաշվողական դպրոցի Shed- ի մեծ օգնությամբ (պարոն Դանիել Նոքսը մեծ օգնություն էր): Այն ձեզ ցույց կտա, թե ինչպես կարելի է կառուցել ավտոմատ ձայնագրիչ U
Անլար հաղորդակցություն ՝ օգտագործելով NRF24L01 հաղորդիչ մոդուլը Arduino- ի վրա հիմնված նախագծերի համար. 5 քայլ (նկարներով)
Անլար հաղորդակցություն ՝ օգտագործելով NRF24L01 հաղորդիչ մոդուլը Arduino- ի վրա հիմնված նախագծերի համար. Սա իմ երկրորդ ուսանելի ձեռնարկն է ռոբոտների և միկրոկարգավորիչների մասին: Իսկապես զարմանալի է տեսնել ձեր ռոբոտին կենդանի և աշխատած սպասվածի պես: Հավատացեք ինձ, ավելի զվարճալի կլինի, եթե արագ և արագ կառավարեք ձեր ռոբոտին կամ անլար այլ իրերին:
E32-433T LoRa մոդուլի ձեռնարկ - DIY Breakout Board E32 մոդուլի համար. 6 քայլ
E32-433T LoRa մոդուլի ձեռնարկ | DIY Breakout Board E32 մոդուլի համար. Այ, ինչ կա, տղերք: Akarsh այստեղ CETech- ից: Իմ այս նախագիծը ավելի շատ ուսուցման կոր է `հասկանալու E32 LoRa մոդուլի աշխատանքը eByte- ից, որը բարձր հզորության 1 վտ հաղորդիչ մոդուլ է: Երբ մենք հասկանանք աշխատանքը, ես դիզայն ունեմ