ዝርዝር ሁኔታ:

ዝቅተኛ ዋጋ E32 (sx1278/sx1276) መሣሪያ ለ Arduino ፣ Esp8266 ወይም Esp32: 15 ደረጃዎች ከሎራ 3 ኪ.ሜ እስከ 8 ኪ.ሜ ገመድ አልባ ግንኙነት
ዝቅተኛ ዋጋ E32 (sx1278/sx1276) መሣሪያ ለ Arduino ፣ Esp8266 ወይም Esp32: 15 ደረጃዎች ከሎራ 3 ኪ.ሜ እስከ 8 ኪ.ሜ ገመድ አልባ ግንኙነት

ቪዲዮ: ዝቅተኛ ዋጋ E32 (sx1278/sx1276) መሣሪያ ለ Arduino ፣ Esp8266 ወይም Esp32: 15 ደረጃዎች ከሎራ 3 ኪ.ሜ እስከ 8 ኪ.ሜ ገመድ አልባ ግንኙነት

ቪዲዮ: ዝቅተኛ ዋጋ E32 (sx1278/sx1276) መሣሪያ ለ Arduino ፣ Esp8266 ወይም Esp32: 15 ደረጃዎች ከሎራ 3 ኪ.ሜ እስከ 8 ኪ.ሜ ገመድ አልባ ግንኙነት
ቪዲዮ: የFujitsu Airconditioner የወረዳ ቦርድን በመሞከር ላይ፣ ያ እየበራ አይደለም። 2024, ሀምሌ
Anonim
ዝቅተኛ ዋጋ E32 (sx1278/sx1276) መሣሪያ ለ Arduino ፣ Esp8266 ወይም Esp32 ከሎራ 3 ኪ.ሜ እስከ 8 ኪ.ሜ ገመድ አልባ ግንኙነት
ዝቅተኛ ዋጋ E32 (sx1278/sx1276) መሣሪያ ለ Arduino ፣ Esp8266 ወይም Esp32 ከሎራ 3 ኪ.ሜ እስከ 8 ኪ.ሜ ገመድ አልባ ግንኙነት

በጣም ኃይለኛ ፣ ቀላል እና ርካሽ መሣሪያን በሴሜቴክ ተከታታይ የኤልአርኤ መሣሪያ ላይ በመመርኮዝ EBYTE E32 ን ለማስተዳደር ቤተ -መጽሐፍት እፈጥራለሁ።

የ 3 ኪ.ሜ ሥሪት እዚህ ፣ 8 ኪ.ሜ ሥሪት እዚህ ማግኘት ይችላሉ

ከ 3000 ሜ እስከ 8000 ሜትር ርቀት ላይ መሥራት ይችላሉ ፣ እና እነሱ ብዙ ባህሪዎች እና መለኪያዎች አሏቸው። ስለዚህ አጠቃቀሙን ለማቃለል ይህንን ቤተ -መጽሐፍት እፈጥራለሁ።

ከሜትሮፖሊታን ዳሳሾች መረጃን ለማምጣት ወይም ድሮን ለመቆጣጠር መፍትሄ ነው።

አቅርቦቶች

አርዱዲኖ UNO

ወሞስ ዲ 1 ሚኒ

LoRa E32 TTL 100 3Km ስሪት

LoRa E32 TTL 1W 8 ኪ.ሜ ስሪት

ደረጃ 1 ቤተ -መጽሐፍት

ቤተ -መጽሐፍት
ቤተ -መጽሐፍት

የእኔን ቤተ -መጽሐፍት እዚህ ማግኘት ይችላሉ።

ለማውረድ.

በላይኛው ቀኝ ጥግ ላይ ያለውን የወረደውን ቁልፍ ጠቅ ያድርጉ ፣ ያልተጫነውን አቃፊ LoRa_E32 ን እንደገና ይሰይሙ።

LoRa_E32 አቃፊው LoRa_E32.cpp እና LoRa_E32.h የያዘ መሆኑን ያረጋግጡ።

የ LoRa_E32 ቤተ -መጽሐፍት አቃፊ / ቤተ -መጽሐፍት / አቃፊዎን ያስቀምጡ። የመጀመሪያ ቤተ -መጽሐፍትዎ ከሆነ የቤተ -መጻህፍት ንዑስ አቃፊን መፍጠር ሊያስፈልግዎት ይችላል።

IDE ን እንደገና ያስጀምሩ።

ደረጃ 2: Pinout

ፒኖት
ፒኖት
ፒኖት
ፒኖት
ፒኖት
ፒኖት

እንደሚመለከቱት በ M0 እና M1 ፒኖች በኩል የተለያዩ ሁነቶችን ማዘጋጀት ይችላሉ።

በስታቲስቲክ መንገድ ጥቅም ላይ ሊውሉ የሚችሉ አንዳንድ ፒኖች አሉ ፣ ግን ከማይክሮ መቆጣጠሪያ ጋር ካገናኙት እና በቤተመፃህፍት ውስጥ በአፈጻጸም ውስጥ የሚያገureቸው ከሆነ እና ሁሉንም ሁነታዎች በሶፍትዌር በኩል መቆጣጠር ይችላሉ ፣ ግን እኛ በሚቀጥለው በተሻለ ሁኔታ እናብራራለን።

ደረጃ 3 AUX ፒን

AUX ፒን
AUX ፒን
AUX ፒን
AUX ፒን
AUX ፒን
AUX ፒን

አስቀድሜ እንዳልኩት ሁሉንም ፒን ከማይክሮ መቆጣጠሪያ ተቆጣጣሪ ውፅዓት ጋር ማገናኘት አስፈላጊ አይደለም ፣ የተፈለገውን ውቅረት ለማግኘት M0 እና M1 ፒኖችን ወደ ከፍተኛ ወይም ዝቅ ማድረግ ይችላሉ ፣ እና AUX ን ካላገናኙት እርግጠኛ ለመሆን ቤተ መፃህፍቱ ምክንያታዊ መዘግየት ያዘጋጁ። ክዋኔው እንደተጠናቀቀ።

AUX ፒን

መረጃን ሲያስተላልፍ ውጫዊ MCU ን ለመቀስቀስ እና በውሂብ ማስተላለፍ አጨራረስ ላይ HIGH ን ለመመለስ ሊያገለግል ይችላል።

AUX LOW ሲቀበል እና ቋት ባዶ በሚሆንበት ጊዜ ወደ ከፍተኛ ይመለሱ።

እንዲሁም መደበኛውን ሥራ ወደነበረበት ለመመለስ (በኃይል ማብራት እና በእንቅልፍ/በፕሮግራም ሞድ) ላይ ለራስ ምርመራ ጥቅም ላይ ይውላል።

ደረጃ 4: ሙሉ በሙሉ የተገናኘ መርሃግብር Esp8266

ሙሉ በሙሉ የተገናኘ ዕቅድ Esp8266
ሙሉ በሙሉ የተገናኘ ዕቅድ Esp8266
ሙሉ በሙሉ የተገናኘ ዕቅድ Esp8266
ሙሉ በሙሉ የተገናኘ ዕቅድ Esp8266

esp8266 የግንኙነት መርሃግብር የበለጠ ቀላል ነው ምክንያቱም እሱ በተመሳሳይ የሎጂካዊ ግንኙነቶች (3.3v) ላይ ይሠራል።

ጥሩ መረጋጋት ለማግኘት የሚጎትት ተከላካይ (4 ፣ 7Kohm) ማከል አስፈላጊ ነው።

ደረጃ 5: ሙሉ በሙሉ የተገናኘ መርሃግብር አርዱዲኖ

ሙሉ በሙሉ የተገናኘ መርሃግብር አርዱዲኖ
ሙሉ በሙሉ የተገናኘ መርሃግብር አርዱዲኖ
ሙሉ በሙሉ የተገናኘ መርሃግብር አርዱዲኖ
ሙሉ በሙሉ የተገናኘ መርሃግብር አርዱዲኖ

የአርዱዲኖ የሥራ voltage ልቴጅ 5v ነው ፣ ስለሆነም ጉዳትን ለመከላከል በ RX pin M0 እና M1 በሎራ ሞዱል ላይ የቮልቴጅ መከፋፈያ ማከል አለብን ፣ እዚህ ተጨማሪ መረጃ ማግኘት ይችላሉ የቮልቴጅ መከፋፈያ -ካልኩሌተር እና ትግበራ።

በ RX ላይ ከመገጣጠም የ 2Kohm resistor ን ወደ GND እና 1Kohm ከምልክት መጠቀም ይችላሉ።

ደረጃ 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);

የመጀመሪያው የግንበኛ ስብስብ የ Serial እና ሌሎች ፒኖችን አስተዳደር ወደ ቤተ -መጽሐፍት ለማስተላለፍ የተፈጠሩ ናቸው።

rxPin እና txPin ከ UART ጋር ለመገናኘት ፒን ነው እና እነሱ አስገዳጅ ናቸው።

auxPin የቀዶ ጥገናውን ፣ የማስተላለፉን እና የመቀበሉን ሁኔታ የሚፈትሽ ፒን ነው (ቀጥሎ በተሻለ ሁኔታ እናብራራለን) ፣ ያ ፒን አስገዳጅ አይደለም ፣ ካላዘጋጁት ቀዶ ጥገናውን እንዲያጠናቅቅ መዘግየትን እተገብራለሁ (ከመዘግየት ጋር)።

m0pin እና m1Pin ኦፕሬሽኑን ሞድ ለመለወጥ ካስማዎች ናቸው (የሰንጠረ upperን የላይኛው ክፍል ይመልከቱ) ፣ ይህ በ “ምርት” ውስጥ ያሉት ፒኖች በቀጥታ ከፍ ወይም ዝቅ ብለው የሚገናኙ ይመስለኛል ፣ ግን ለሙከራ በቤተመጽሐፍት ለማስተዳደር ጠቃሚ ናቸው።

bpsRate የሶፍትዌር ሰርቪስ ወሰን በመደበኛነት 9600 ነው (በፕሮግራም/በእንቅልፍ ሁኔታ ውስጥ ብቸኛው የባውድ ተመን)

አንድ ቀላል ምሳሌ ነው

#"LoRa_E32.h" LoRa_E32 e32ttl100 (2, 3) ያካትቱ ፤ // RX ፣ TX // LoRa_E32 e32ttl100 (2 ፣ 3 ፣ 5 ፣ 6 ፣ 7); // RX ፣ TX

ከሌላ ገንቢ ጋር በቀጥታ የሶፍትዌርSerial ን መጠቀም እንችላለን

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);

የመጨረሻው የግንበኛ ስብስብ ከሶፍትዌር ሽፋን ይልቅ የሃርድዌር መሣሪያን ለመጠቀም ፈቃድ መስጠት ነው።

LoRa_E32 (የሶፍትዌር ተከታታይ* ተከታታይ ፣ UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);

LoRa_E32 (የሶፍትዌር ተከታታይ* ተከታታይ ፣ ባይት auxPin ፣ UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);

LoRa_E32 (SoftwareSerial* ተከታታይ ፣ ባይት auxPin ፣ ባይት m0Pin ፣ ባይት m1Pin ፣ UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);

ደረጃ 7: ይጀምሩ

የመነሻ ትዕዛዙ ተከታታይ እና ፒኖችን በግብዓት እና በውጤት ሁኔታ ለማስጀመር ያገለግላል።

ባዶነት መጀመሪያ ();

በማስፈጸም ላይ ነው

// ሁሉንም ፒን እና UART ን ያስጀምሩ

e32ttl100.begin ();

ደረጃ 8 የውቅረት እና የመረጃ ዘዴ

ውቅረትን ለማስተዳደር እና የመሣሪያውን መረጃ ለማግኘት የሚረዱ ዘዴዎች አሉ።

ResponseStructContainer getConfiguration ();

የምላሽ ሁኔታ setConfiguration (የውቅረት ውቅር ፣ PROGRAM_COMMAND saveType = WRITE_CFG_PWR_DWN_LOSE) ፤

ResponseStructContainer getModuleInformation ();

ባዶ ህትመት መለኪያዎች (የመዋቅር ውቅር ውቅር);

የምላሽ ሁኔታ ዳግም ማስጀመሪያ ሞዱል ();

ደረጃ 9 - የምላሽ መያዣ

የምላሹን ማቀናበር ለማቃለል የመያዣ ስብስብ እፈጥራለሁ ፣ ለእኔ በጣም ጠቃሚ ስህተቶችን ለማስተዳደር እና አጠቃላይ መረጃን ለመመለስ።

ምላሽ ሁኔታ

ይህ የሁኔታ መያዣ ነው እና 2 ቀላል የመግቢያ ነጥብ አለው ፣ በዚህ ሁኔታ የሁኔታ ኮድ እና የሁኔታ ኮድ መግለጫን ማግኘት ይችላሉ

Serial.println (c.getResponseDescription ()); // የኮድ መግለጫ

Serial.println (ሐ. ኮድ); // 1 ስኬት ከሆነ

ኮዱ ናቸው

ስኬት = 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

የምላሽ መያዣ

ይህ መያዣ የተፈጠረው የስትሪንግ ምላሽን ለማስተዳደር እና 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

የመጀመሪያው ዘዴ ውቅር ነው ፣ በመሣሪያው ላይ የተከማቸውን ሁሉንም ውሂብ ለማደስ ሊጠቀሙበት ይችላሉ።

ResponseStructContainer getConfiguration ();

የአጠቃቀም ምሳሌ እዚህ አለ።

ResponseStructContainer ሐ;

c = e32ttl100.getConfiguration (); // ከሁሉም ሌሎች ቀዶ ጥገናዎች በፊት የማዋቀሪያ ጠቋሚ ማግኘት አስፈላጊ ነው

የውቅረት ውቅር = *(ውቅር *) c.data;

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

Serial.println (c.status.code);

Serial.println (ውቅር. SPED.getUARTBaudRate ());

የውቅረት አወቃቀር ሁሉም የቅንጅቶች ውሂብ አለው ፣ እና ሁሉንም የነጠላ ውሂብ መግለጫ ለማግኘት ተከታታይ ተግባርን እጨምራለሁ።

config. 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; // የግንኙነት baud ተመን ውቅር ።SED.uartParity = MODE_00_8N1; // የእኩልነት ቢት

ሁሉንም መግለጫ ለማግኘት ለሁሉም ባህሪዎች ተመሳሳይ ተግባር አለዎት-

Serial.print (ኤፍ ("ቻን")); Serial.print (config. CHAN, DEC); Serial.print (" ->"); Serial.println (config.getChannelDescription ()); Serial.println (F ("")); Serial.print (ኤፍ ("SpeedParityBit:")); Serial.print (config. SpED.uartParity ፣ BIN) ፤ Serial.print (" ->") ፤ Serial.println (config. SPED.getUARTParityDescription ()); Serial.print (ኤፍ ("SpeedUARTDatte:")); Serial.print (config. SpED.uartBaudRate ፣ BIN) ፤ Serial.print (" ->") ፤ Serial.println (ውቅር. SPED.getUARTBaudRate ()); Serial.print (ኤፍ ("SpeedAirDataRate:")); Serial.print (config. SpED.airDataRate ፣ BIN) ፤ Serial.print (" ->") ፤ Serial.println (config. SPED.getAirDataRate ()); Serial.print (F ("OptionTrans:")); Serial.print (config. OPTION.fixedTransmission, BIN); Serial.print (" ->"); Serial.println (config. OPTION.getFixedTransmissionDescription ()); Serial.print (F ("OptionPullup:")); Serial.print (config. OPTION.ioDriveMode ፣ BIN) ፤ Serial.print (" ->") ፤ Serial.println (config. OPTION.getIODroveModeDescription ()); Serial.print (ኤፍ ("አማራጭ ዋክ:")); Serial.print (config. OPTION.wirelessWakeupTime, BIN); Serial.print (" ->"); Serial.println (config. OPTION.getWirelessWakeUPTimeDescription ()); Serial.print (F ("OptionFEC:")); Serial.print (config. OPTION.fec, BIN); Serial.print (" ->"); Serial.println (ውቅረት. OPTION.getFEC መግለጫ ()); Serial.print (F ("OptionPower:")); Serial.print (config. OPTION.transmissionPower, BIN); Serial.print (" ->"); Serial.println (config. OPTION.getTransmissionPowerDescription ());

በተመሳሳይ መንገድ setConfiguration ውቅረት strucutre ይፈልጋል ፣ ስለሆነም ውቅረትን ለማስተዳደር የተሻለው መንገድ የአሁኑን ሰርስሮ ማውጣት ፣ የሚያስፈልግዎትን ብቸኛ ለውጥ መተግበር እና እንደገና ማቀናበሩ ይመስለኛል።

የምላሽ ሁኔታ setConfiguration (የውቅረት ውቅር ፣ PROGRAM_COMMAND saveType = WRITE_CFG_PWR_DWN_LOSE) ፤

ውቅሩ ለውጡ ለአሁኑ ክፍለ -ጊዜ ብቻ በቋሚነት የሚከሰት ከሆነ የቾክቲቭ ቅድመ -ትዕይንት ትርኢት ነው።

ResponseStructContainer c; c = e32ttl100.getConfiguration (); // ከሁሉም ሌሎች ክዋኔዎች በፊት የውቅረት ጠቋሚ ማግኘት አስፈላጊ ነው የውቅረት ውቅር = *(ውቅር *) c.data; Serial.println (c.status.getResponseDescription ()); Serial.println (c.status.code); የህትመት መለኪያዎች (ውቅር); config. ADDL = 0x0; config. ADDH = 0x1; config. CHAN = 0x19; config. OPTION.fec = FEC_0_OFF; config. OPTION.fixedTransmission = FT_TRANSPARENT_TRANSMISSION; config. OPTION.ioDriveMode = IO_D_MODE_PUSH_PULLS_PULL_UPS; config. OPTION.transmissionPower = POWER_17; config. OPTION.wirelessWakeupTime = WAKE_UP_1250; ውቅረት. SPED.airDataRate = AIR_DATA_RATE_011_48; ውቅረት. SPED.uartBaudRate = UART_BPS_115200; ውቅረት. SPED.uartParity = MODE_00_8N1; // የቅንብር ውቅር ተቀይሯል እና ውቅሩን እንዳይይዝ ተዘጋጅቷል ResponseStatus rs = e32ttl100.setConfiguration (ውቅረት ፣ WRITE_CFG_PWR_DWN_LOSE) ፤ Serial.println (rs.getResponseDescription ()); Serial.println (rs.code); የህትመት መለኪያዎች (ውቅር);

መለኪያው ሁሉም እንደ ቋሚ የሚተዳደር ነው-

ደረጃ 10 መሠረታዊ የማዋቀር አማራጭ

መሰረታዊ የማዋቀር አማራጭ
መሰረታዊ የማዋቀር አማራጭ

ደረጃ 11: መልእክት ይቀበሉ ይላኩ

በመጀመሪያ አንድ ነገር በተቀባዩ ቋት ውስጥ መኖሩን ለመፈተሽ ቀለል ያለ ግን ጠቃሚ ዘዴን ማስተዋወቅ አለብን

int ይገኛል ();

አሁን ባለው ዥረት ውስጥ ምን ያህል ባይት እንዳለዎት በቀላሉ ይመለሳል።

ደረጃ 12 መደበኛ የማስተላለፊያ ሁናቴ

መደበኛ የማስተላለፍ ሁኔታ
መደበኛ የማስተላለፍ ሁኔታ

መደበኛ/ግልፅ የማስተላለፊያ ሁናቴ ተመሳሳይ አድራሻ እና ሰርጥ ላለው መሣሪያ ሁሉ መልዕክቶችን ለመላክ ያገለግላል።

መልእክት ለመላክ/ለመቀበል ብዙ ዘዴዎች አሉ ፣ እኛ በዝርዝር እናብራራለን-

የምላሽ ሁኔታ (Stringus sendMessage) (const String message);

የምላሽ መያዣ መያዣ መልእክት ();

የመጀመሪያው ዘዴ SendMessage ነው እና በመደበኛ ሁናቴ ውስጥ ሕብረቁምፊን ወደ መሣሪያ ለመላክ ያገለግላል።

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

ሌላኛው መሣሪያ በቀላሉ በሉፕ ላይ ያድርጉት

ከሆነ (e32ttl.available ()> 1) {ResponseContainer rs = e32ttl.receiveMessage (); ሕብረቁምፊ መልእክት = rs.data; // በመጀመሪያ ውሂቡን Serial.println (rs.status.getResponseDescription ()) ያግኙ ፤ Serial.println (መልዕክት); }

ደረጃ 13 - መዋቅርን ያቀናብሩ

እርስዎ ውስብስብ strucuture መላክ ከፈለጉ ይህንን ዘዴ መጠቀም ይችላሉ

ResponseStatus sendMessage (const ባዶነት *መልእክት ፣ const uint8_t መጠን) ፤ ResponseStructContainer receiveMessage (const uint8_t size);

Strucutre ን ለመላክ ያገለግላል ፣ ለምሳሌ ፦

መዋቅራዊ Messaggione {የቻር ዓይነት [5]; የቻር መልእክት [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)); structag Messaggione messaggione = *(Messaggione *) rsc.data; Serial.println (messaggione.message); Serial.println (messaggione.mitico);

ከፊል ጭረት ያንብቡ

ተጨማሪ የ strucutre አይነት ለማስተዳደር የመልእክቱን የመጀመሪያ ክፍል ማንበብ ከፈለጉ ይህንን ዘዴ መጠቀም ይችላሉ።

የምላሽ ኮንቴይነር የመጀመሪያ መልእክት (const uint8_t መጠን) ይቀበላል ፤

የሚጫነውን ስቱክለር ለመለየት በአይነት ወይም በሌላ ሕብረቁምፊ ለመቀበል እፈጥራለሁ።

struct Messaggione {// ከፊደል አጻጻፍ ያለ የጽሕፈት መልእክት [8]; bool mitico; }; የቻር ዓይነት [5]; // የመዋቅር የመጀመሪያ ክፍል ResponseContainer rs = e32ttl.receiveInitialMessage (sizeof (type)); // ሕብረቁምፊን በቻር ድርድር (አያስፈልግም) memcpy (ዓይነት ፣ rs.data.c_str () ፣ መጠን (ዓይነት)); Serial.println ("TYPE ያንብቡ:"); Serial.println (rs.status.getResponseDescription ()); Serial.println (ዓይነት); // የቀረውን መዋቅር ያንብቡ ResponseStructContainer rsc = e32ttl.receiveMessage (sizeof (Messaggione)); struct Messaggione messaggione = *(Messaggione *) rsc.data;

ደረጃ 14 - ከመደበኛ ሞድ ይልቅ ቋሚ ሞድ

በተመሳሳይ ሁኔታ በቋሚ ማስተላለፊያ ለመጠቀም የአሠራር ዘዴን እፈጥራለሁ

ቋሚ ማስተላለፍ

የመላኪያ ዘዴውን ብቻ መለወጥ ያስፈልግዎታል ፣ ምክንያቱም የመድረሻ መሳሪያው በአድራሻ እና በሰርጥ quando settato il ቋሚ ሁነታ መግቢያውን ስለማይቀበል።

ስለዚህ ለ ሕብረቁምፊ መልእክት አለዎት

ResponseStatus sendFixedMessage (ባይት ADDL ፣ byte ADDH ፣ byte CHAN ፣ const String message) ፤ ResponseStatus sendBroadcastFixedMessage (ባይት CHAN ፣ const String መልዕክት);

እና ለመዋቅር አለዎት

ResponseStatus sendFixedMessage (ባይት ADDL ፣ ባይት ADDH ፣ ባይት CHAN ፣ const ባዶ *መልእክት ፣ const uint8_t መጠን) ፤ ResponseStatus sendBroadcastFixedMessage (ባይት CHAN ፣ const ባዶነት *መልእክት ፣ const uint8_t መጠን);

አንድ ቀላል ምሳሌ እዚህ አለ

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); የህትመት መለኪያዎች (ውቅር); config. ADDL = BROADCAST_ADDRESS; config. ADDH = BROADCAST_ADDRESS; // የቅንብር ውቅር ተቀይሯል እና ውቅሩን እንዳይይዝ ተዘጋጅቷል ResponseStatus rs = e32ttl100.setConfiguration (ውቅረት ፣ WRITE_CFG_PWR_DWN_LOSE) ፤ Serial.println (rs.getResponseDescription ()); Serial.println (rs.code); የህትመት መለኪያዎች (ውቅር);

ደረጃ 15: አመሰግናለሁ

አሁን ሥራዎን ለማከናወን ሁሉም መረጃ አለዎት ፣ ግን ሁሉንም እድሎች በተሻለ ሁኔታ ለመረዳት አንዳንድ ተጨባጭ ምሳሌዎችን ማሳየት አስፈላጊ ይመስለኛል።

  1. LoRa E32 መሣሪያ ለ Arduino ፣ esp32 ወይም esp8266: ቅንብሮች እና መሠረታዊ አጠቃቀም
  2. ለ Arduino ፣ esp32 ወይም esp8266: ቤተ -መጽሐፍት LoRa E32 መሣሪያ
  3. ለ Arduino ፣ esp32 ወይም esp8266: LoRa E32 መሣሪያ: ውቅር
  4. ለ Arduino ፣ esp32 ወይም esp8266: LoRa E32 መሣሪያ - ቋሚ ማስተላለፍ
  5. LoRa E32 መሣሪያ ለ Arduino ፣ esp32 ወይም esp8266: ኃይል ቆጣቢ እና የተዋቀረ ውሂብ መላክ

የሚመከር: