Sisukord:
- Tarvikud
- Samm: raamatukogu
- Samm 2: Pinout
- 3. samm: AUX -tihvt
- 4. samm: täielikult ühendatud skeem Esp8266
- Samm: täielikult ühendatud skeem Arduino
- 6. samm: raamatukogu: konstruktor
- Samm: alustage
- 8. samm: seadistamis- ja teabemeetod
- 9. toiming: reageerimiskonteiner
- Samm 10: põhikonfiguratsiooni valik
- Samm 11: Saada vastuvõtu sõnum
- 12. samm: tavaline edastusrežiim
- 13. samm: struktuuri haldamine
- 14. samm: tavarežiimi asemel fikseeritud režiim
- Samm: aitäh
Video: LoRa 3–8 km traadita side ja odav E32 (sx1278/sx1276) seade Arduino, Esp8266 või Esp32 jaoks: 15 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:46
Loon EBYTE E32 haldamiseks raamatukogu, mis põhineb LoRa seadme Semtech seerial, mis on väga võimas, lihtne ja odav seade.
3Km versiooni leiate siit, 8Km versiooni siit
Nad võivad töötada 3000–8000 m kaugusel ning neil on palju funktsioone ja parameetreid. Nii et loon selle teegi kasutamise lihtsustamiseks.
See on lahendus suurlinna anduritelt andmete hankimiseks või drooni juhtimiseks.
Tarvikud
Arduino UNO
Wemos D1 mini
LoRa E32 TTL 100 3Km versioon
LoRa E32 TTL 1W 8Km versioon
Samm: raamatukogu
Minu raamatukogu leiate siit.
Alla laadida.
Klõpsake paremas ülanurgas nuppu DOWNLOADS, laadige tihendamata kaust ümber LoRa_E32.
Veenduge, et kaust LoRa_E32 sisaldab LoRa_E32.cpp ja LoRa_E32.h.
Asetage LoRa_E32 raamatukogu kaust oma / libraries / kausta. Teil võib tekkida vajadus luua raamatukogude alamkaust, kui see on teie esimene kogu.
Taaskäivitage IDE.
Samm 2: Pinout
Nagu näete, saate M0 ja M1 tihvtide kaudu määrata erinevaid režiime.
On mõned nööpnõelad, mida saab kasutada staatilisel viisil, kuid kui ühendate selle mikrokontrolleriga ja konfigureerite need raamatukogus, saate jõudluse ja saate kõiki režiime tarkvara abil juhtida, kuid me selgitame järgnevalt paremini.
3. samm: AUX -tihvt
Nagu ma juba ütlen, ei ole oluline ühendada kogu tihvti mikrokontrolleri väljundiga, saate seadistada konfiguratsiooni saamiseks M0 ja M1 kontaktid HIGH või LOW ja kui te ei ühenda AUX -d, määrake raamatukogu mõistliku viivituse et toiming on lõpule viidud.
AUX tihvt
Andmete edastamisel saab äratada välise MCU ja naasta andmete edastamise lõppedes HIGH.
AUX vastuvõtmisel läheb LOW ja naaseb HIGH, kui puhver on tühi.
Seda kasutatakse ka enesekontrolliks normaalse töö taastamiseks (sisselülitamisel ja unerežiimis/programmirežiimis).
4. samm: täielikult ühendatud skeem Esp8266
esp8266 ühendusskeem on lihtsam, kuna see töötab loogilise side sama pingega (3.3v).
Hea stabiilsuse saavutamiseks on oluline lisada tõmbetakisti (4, 7Kohm).
Samm: täielikult ühendatud skeem Arduino
Arduino tööpinge on 5v, seega peame kahjustuste vältimiseks lisama LoRa mooduli RX -pin M0 ja M1 pingejaguri, lisateavet leiate siit Pingejagur: kalkulaator ja rakendus.
Võite kasutada 2Kohm takisti GND -le ja 1Kohm signaalilt kui RX -il kokku panna.
6. samm: raamatukogu: konstruktor
Tegin päris paljude konstruktorite komplekti, sest meil on rohkem võimalusi ja olukordi hallata.
LoRa_E32 (bait rxPin, bait txPin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E32 (bait rxPin, bait txPin, bait auxPin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600); LoRa_E32 (bait rxPin, bait txPin, bait auxPin, bait m0Pin, bait m1Pin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
Esimene konstruktorikomplekt luuakse, et delegeerida jada- ja muude tihvtide haldamine kogule.
rxPin ja txPin on tihvt UART -iga ühenduse loomiseks ja need on kohustuslikud.
auxPin on tihvt, mis kontrollib toimimist, edastamist ja vastuvõtmist (me selgitame järgnevalt paremini), see tihvt See pole kohustuslik, kui te seda ei määra, rakendan viivitust, et toiming saaks ennast lõpule viia (latentsusega).
m0pin ja m1Pin on tihvtid, mis muudavad töörežiimi MODE (vt tabeli ülaosa), ma arvan, et need tootmises olevad tihvtid ühendavad otse HIGH või LOW, kuid testimiseks on neid kasulik raamatukogu hallata.
bpsRate on SoftwareSeriali boudraat tavaliselt 9600 (ainus edastuskiirus programmin/unerežiimis)
Lihtne näide on
#include "LoRa_E32.h" LoRa_E32 e32ttl100 (2, 3); // RX, TX // LoRa_E32 e32ttl100 (2, 3, 5, 6, 7); // RX, TX
Võime kasutada tarkvarakonsooli otse teise konstruktoriga
LoRa_E32 (HardwareSerial* seeria, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E32 (HardwareSerial* jada, bait auxPin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E32 (HardwareSerial* jada, bait auxPin, bait m0Pin, bait m1Pin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
Selle konstruktori ülemine näide võib olla nii tehtud.
#include #include "LoRa_E32.h"
SoftwareSerial mySerial (2, 3); // RX, TX
LoRa_E32 e32ttl100 (& mySerial);
// LoRa_E32 e32ttl100 (& mySerial, 5, 7, 6);
Viimane konstruktorikomplekt lubab kasutada SoftwareSeriali asemel HardwareSerialit.
LoRa_E32 (SoftwareSerial* jada, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E32 (SoftwareSerial* jada, bait auxPin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E32 (SoftwareSerial* jada, bait auxPin, bait m0Pin, bait m1Pin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
Samm: alustage
Käsklust Start kasutatakse seeria ja nööpnõelte käivitamiseks sisend- ja väljundrežiimis.
tühine algus ();
täitmisel on
// Käivitamine kõik tihvtid ja UART
e32ttl100.begin ();
8. samm: seadistamis- ja teabemeetod
Seadete haldamiseks ja seadme kohta teabe hankimiseks on olemas mitmeid meetodeid.
ResponseStructContainer getConfiguration ();
ResponseStatus setConfiguration (konfiguratsiooni konfiguratsioon, PROGRAM_COMMAND saveType = WRITE_CFG_PWR_DWN_LOSE);
ResponseStructContainer getModuleInformation ();
void printParameters (struktuuri konfiguratsiooni konfiguratsioon);
ResponseStatus resetModule ();
9. toiming: reageerimiskonteiner
Vastuse haldamise lihtsustamiseks loon konteineri komplekti, mis on minu jaoks väga kasulik vigade haldamiseks ja üldandmete tagastamiseks.
ResponseStatus
See on olekukonteiner ja sellel on kaks lihtsat sisenemispunkti, mille abil saate olekukoodi ja olekukirjelduse
Serial.println (c.getResponseDescription ()); // Koodi kirjeldus
Serial.println (c.code); // 1 kui edu
Kood on
EDU = 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
See konteiner on loodud Stringi vastuse haldamiseks ja sellel on 2 sisenemispunkti.
andmed, mille string tagastab sõnumi ja oleku RepsonseStatus eksemplari.
ResponseContainer rs = e32ttl.receptMessage ();
String sõnum = rs.data;
Serial.println (rs.status.getResponseDescription ());
Serial.println (sõnum);
ResponseStructContainer
See on keerulisem konteiner, ma kasutan seda struktuuri haldamiseks, sellel on sama ResponseContaineri sisenemispunkt, kuid andmed on tühi osuti keeruka struktuuri haldamiseks.
ResponseStructContainer c;
c = e32ttl100.getConfiguration (); // Oluline on enne kõiki muid toiminguid hankida konfiguratsiooninäit
Konfiguratsiooni konfiguratsioon = *(Configuration *) c.data;
Serial.println (c.status.getResponseDescription ());
Serial.println (c.status.code);
getConfiguration ja setConfiguration
Esimene meetod on getConfiguration, saate selle abil hankida kõik seadmesse salvestatud andmed.
ResponseStructContainer getConfiguration ();
Siin on näide kasutamisest.
ResponseStructContainer c;
c = e32ttl100.getConfiguration (); // Oluline on enne kõiki muid toiminguid hankida konfiguratsiooninäit
Konfiguratsiooni konfiguratsioon = *(Configuration *) c.data;
Serial.println (c.status.getResponseDescription ());
Serial.println (c.status.code);
Serial.println (configuration. SPED.getUARTBaudRate ());
Konfiguratsioonistruktuuril on kõik seadete andmed ja lisan üksikute andmete kirjeldamiseks terve rea funktsioone.
konfiguratsioon. ADDL = 0x0; // Aadressikonfiguratsiooni esimene osa. ADDH = 0x1; // Aadressi konfiguratsiooni teine osa. CHAN = 0x19; // Kanali konfiguratsioon. OPTION.fec = FEC_0_OFF; // Edasi veaparanduslüliti konfiguratsioon. OPTION.fixedTransmission = FT_TRANSPARENT_TRANSMISSION; // Ülekanderežiimi konfiguratsioon. OPTION.ioDriveMode = IO_D_MODE_PUSH_PULLS_PULL_UPS; // Tõmbehalduse konfiguratsioon. OPTION.transmissionPower = POWER_17; // dBm edastusvõimsuse konfiguratsioon. OPTION.wirelessWakeupTime = WAKE_UP_1250; // Ooteaeg ärkamise seadistamiseks. SPED.airDataRate = AIR_DATA_RATE_011_48; // Õhu andmeedastuskiiruse seadistamine. SPED.uartBaudRate = UART_BPS_115200; // Side edastuskiiruse konfiguratsioon. SPED.uartParity = MODE_00_8N1; // Paarsuse bitt
Kõigi kirjelduste saamiseks on teil kõigi atribuutide jaoks samaväärne funktsioon:
Serial.print (F ("Chan:")); Serial.print (konfiguratsioon. 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 ());
Samamoodi soovib setConfiguration konfiguratsioonistruktuuri, seega arvan, et parem viis konfiguratsiooni haldamiseks on praeguse hankimine, ainsa vajaliku muudatuse rakendamine ja uuesti seadistamine.
ResponseStatus setConfiguration (konfiguratsiooni konfiguratsioon, PROGRAM_COMMAND saveType = WRITE_CFG_PWR_DWN_LOSE);
konfiguratsioon on eelvaates näidatud, saveType lubab teil valida, kui muudatus muutub püsivalt ainult praeguse seansi jaoks.
ResponseStructContainer c; c = e32ttl100.getConfiguration (); // Oluline on hankida konfiguratsiooninäit enne kõiki muid toiminguid Configuration configuration = *(Configuration *) c.data; Serial.println (c.status.getResponseDescription ()); Serial.println (c.status.code); printParameters (konfiguratsioon); konfiguratsioon. ADDL = 0x0; konfiguratsioon. ADDH = 0x1; konfiguratsioon. 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; // Määra konfiguratsiooni muudetud ja seadista konfiguratsiooni mitte hoidma ResponseStatus rs = e32ttl100.setConfiguration (konfiguratsioon, WRITE_CFG_PWR_DWN_LOSE); Serial.println (rs.getResponseDescription ()); Serial.println (rs.code); printParameters (konfiguratsioon);
Kõiki parameetreid hallatakse konstantsena:
Samm 10: põhikonfiguratsiooni valik
Samm 11: Saada vastuvõtu sõnum
Kõigepealt peame tutvustama lihtsat, kuid kasulikku meetodit, et kontrollida, kas vastuvõtvas puhvris on midagi
int saadaval ();
See lihtsalt tagastab, mitu baiti teil praeguses voos on.
12. samm: tavaline edastusrežiim
Tavalist/läbipaistvat edastusrežiimi kasutatakse sõnumite saatmiseks kõigile sama aadressi ja kanaliga seadmetele.
Sõnumite saatmiseks/vastuvõtmiseks on palju meetodeid, me selgitame üksikasjalikult:
ResponseStatus sendMessage (const String sõnum);
ResponseContainer ReceiveMessage ();
Esimene meetod on sendMessage ja seda kasutatakse stringi saatmiseks seadmesse tavarežiimis.
ResponseStatus rs = e32ttl.sendMessage ("Prova"); Serial.println (rs.getResponseDescription ());
Teine seade teeb seda lihtsalt silmuse peal
if (e32ttl.available ()> 1) {ResponseContainer rs = e32ttl.receptionMessage (); String sõnum = rs.data; // Hankige esmakordselt andmed Serial.println (rs.status.getResponseDescription ()); Serial.println (sõnum); }
13. samm: struktuuri haldamine
Kui soovite saata keeruka struktuuri, saate seda meetodit kasutada
ResponseStatus sendMessage (const void *message, const uint8_t size); ResponseStructContainer ReceiveMessage (const uint8_t size);
Seda kasutatakse strucutre saatmiseks, näiteks:
struktuuri Sõnumid {char tüüp [5]; char sõnum [8]; bool mitico; }; structure Messaggione messaggione = {"TEMP", "Peple", true}; ResponseStatus rs = e32ttl.sendMessage (& messaggione, sizeof (Messaggione)); Serial.println (rs.getResponseDescription ());
ja teisel poolel saate sõnumi vastu võtta
ResponseStructContainer rsc = e32ttl.receptMessage (sizeof (Messaggione)); struk Messaggione messaggione = *(Messaggione *) rsc.data; Serial.println (messaggione.message); Serial.println (messaggione.mitico);
Lugege osalist struktuuri
Kui soovite lugeda sõnumi esimest osa, et hallata rohkem tüüpi struktuure, saate seda meetodit kasutada.
ResponseContainer ReceiveInitialMessage (const uint8_t size);
Loon selle, et saada string või muud tüüpi, et tuvastada laaditav struktuur.
strukt Messaggione {// Osaline strucutre ilma trükikirjata [8]; bool mitico; }; sümbolitüüp [5]; // struktuuri esimene osa ResponseContainer rs = e32ttl.receptInitialMessage (sizeof (tüüp)); // Pane string char massiivi (pole vaja) memcpy (type, rs.data.c_str (), sizeof (type)); Serial.println ("LUGEGE TÜÜP:"); Serial.println (rs.status.getResponseDescription ()); Serial.println (tüüp); // Loe ülejäänud struktuuri ResponseStructContainer rsc = e32ttl.receptMessage (sizeof (Messaggione)); structure Messaggione messaggione = *(Messaggione *) rsc.data;
14. samm: tavarežiimi asemel fikseeritud režiim
Samal viisil loon fikseeritud ülekandega kasutatava meetodi
Fikseeritud ülekanne
Peate muutma ainult saatmismeetodit, kuna sihtkoha seade ei saa preambulit aadressi ja kanali fikseeritud režiimis.
Nii et teil on Stringi sõnum
ResponseStatus sendFixedMessage (bait ADDL, bait ADDH, bait CHAN, const String sõnum); ResponseStatus sendBroadcastFixedMessage (bait CHAN, const String sõnum);
ja teie struktuuri jaoks
ResponseStatus sendFixedMessage (bait ADDL, bait ADDH, bait CHAN, const void *sõnum, const uint8_t suurus); ResponseStatus sendBroadcastFixedMessage (bait CHAN, const void *message, const uint8_t size);
Siin on lihtne näide
ResponseStatus rs = e32ttl.sendFixedMessage (0, 0, 0x17, & messaggione, sizeof (Messaggione)); // ResponseStatus rs = e32ttl.sendFixedMessage (0, 0, 0x17, "Ciao");
Fikseeritud edastusel on rohkem stsenaariume
Kui saadate kindlale seadmele (teise stsenaariumi fikseeritud edastus), peate selle otse tuvastamiseks lisama ADDL, ADDH ja CHAN.
ResponseStatus rs = e32ttl.sendFixedMessage (2, 2, 0x17, "Sõnum seadmesse");
Kui soovite sõnumi saata kõigile määratud kanali seadmetele, saate seda meetodit kasutada.
ResponseStatus rs = e32ttl.sendBroadcastFixedMessage (0x17, "Sõnum kanali seadmetele");
Kui soovite saada kõiki võrgus edastatavaid sõnumeid, peate määrama oma ADDH ja ADDL väärtuseks BROADCAST_ADDRESS.
ResponseStructContainer c; c = e32ttl100.getConfiguration (); // Oluline on hankida konfiguratsiooninäit enne kõiki muid toiminguid Configuration configuration = *(Configuration *) c.data; Serial.println (c.status.getResponseDescription ()); Serial.println (c.status.code); printParameters (konfiguratsioon); configuration. ADDL = BROADCAST_ADDRESS; konfiguratsioon. ADDH = BROADCAST_ADDRESS; // Määra konfiguratsiooni muudetud ja seadista konfiguratsiooni mitte hoidma ResponseStatus rs = e32ttl100.setConfiguration (konfiguratsioon, WRITE_CFG_PWR_DWN_LOSE); Serial.println (rs.getResponseDescription ()); Serial.println (rs.code); printParameters (konfiguratsioon);
Samm: aitäh
Nüüd on teil oma töö tegemiseks kogu teave, kuid minu arvates on oluline näidata mõningaid realistlikke näiteid, et kõiki võimalusi paremini mõista.
- LoRa E32 seade Arduino, esp32 või esp8266 jaoks: seaded ja põhikasutus
- LoRa E32 seade Arduino, esp32 või esp8266 jaoks: kogu
- LoRa E32 seade Arduino, esp32 või esp8266 jaoks: konfiguratsioon
- LoRa E32 seade Arduino, esp32 või esp8266 jaoks: fikseeritud ülekanne
- LoRa E32 seade Arduino, esp32 või esp8266 jaoks: energiasääst ja struktureeritud andmete saatmine
Soovitan:
ASS-seade (antisotsiaalne sotsiaalne seade): 7 sammu
ASS-seade (antisotsiaalne sotsiaalne seade): öelge, et olete selline inimene, kellele meeldib inimeste läheduses viibida, kuid kellele ei meeldi, et nad liiga lähedale tulevad. Te olete ka rahvale meeldiv ja teil on raske inimestele ei öelda. Nii et te ei tea, kuidas käskida neil tagasi astuda. Noh, sisestage - ASS -seade! Y
Pikamaa, 1,8 km, Arduino kuni Arduino traadita side HC-12-ga: 6 sammu (piltidega)
Pikamaa, 1,8 km, Arduino-Arduino traadita side HC-12-ga: Selles juhendis saate teada, kuidas suhelda Arduinode vahel pikal, kuni 1,8 km kaugusel vabas õhus. HC-12 on traadita jadaport kommunikatsioonimoodul, mis on väga kasulik, äärmiselt võimas ja hõlpsasti kasutatav. Kõigepealt leiad
Traadita side NRF24L01 transiiverimooduli abil Arduino -põhiste projektide jaoks: 5 sammu (piltidega)
Traadita side NRF24L01 transiiverimooduli abil Arduino-põhiste projektide jaoks: see on minu teine juhendatav õpetus robotite ja mikrokontrollerite kohta. On tõesti hämmastav näha teie robotit elusana ja ootuspäraselt töötamas ning uskuge mind, et on lõbusam, kui juhite oma robotit või muid asju juhtmevabalt kiire ja
E32-433T LoRa mooduli õpetus - DIY Breakout Board E32 moodulile: 6 sammu
E32-433T LoRa mooduli õpetus | DIY Breakout Board E32 moodulile: Hei, mis toimub, poisid! Akarsh siin CETechist. See minu projekt on pigem õppimiskõver, et mõista eByte'i E32 LoRa mooduli tööd, mis on suure võimsusega 1-vatti transiiverimoodul. Kui me töötamisest aru saame, on mul disain
Häkkige traadita uksekell traadita häirelülitisse või sisse/välja lülitisse: 4 sammu
Häkkige traadita uksekell traadita häirelülitisse või sisse/välja lülitisse: ehitasin hiljuti häiresüsteemi ja paigaldasin selle oma majja. Ma kasutasin ustel magnetlüliteid ja ühendasin need pööningu kaudu. Aknad olid teine lugu ja kõva juhtmestik ei olnud valik. Vajasin traadita lahendust ja see on