Агуулгын хүснэгт:
- Хангамж
- Алхам 1: Номын сан
- Алхам 2: Pinout хийх
- Алхам 3: AUX зүү
- Алхам 4: Бүрэн холбогдсон схем Esp8266
- Алхам 5: Бүрэн холбогдсон схем Arduino
- Алхам 6: Номын сан: Барилгачин
- Алхам 7: Эхлэх
- Алхам 8: Тохиргоо ба мэдээллийн арга
- Алхам 9: Хариултын контейнер
- Алхам 10: Тохиргооны үндсэн сонголт
- Алхам 11: Хүлээн авах зурвас илгээх
- Алхам 12: Дамжуулах ердийн горим
- Алхам 13: Бүтцийг удирдах
- Алхам 14: Ердийн горимын оронд тогтмол горим
- Алхам 15: Баярлалаа
Видео: LoRa Arduino, Esp8266 эсвэл Esp32: 15 алхам бүхий бага зардалтай E32 (sx1278/sx1276) төхөөрөмж бүхий 3 км -ээс 8 км хүртэлх утасгүй холбоо: 15 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:00
Би маш хүчирхэг, энгийн, хямд төхөөрөмж болох LoRa төхөөрөмжийн Semtech цуврал дээр суурилсан EBYTE E32 -ийг удирдах номын сан бий болгодог.
Та энд 3км, 8км хувилбарыг эндээс олж болно
Тэд 3000м -ээс 8000м -ийн зайд ажиллах боломжтой бөгөөд тэдгээр нь маш олон онцлог, параметртэй байдаг. Тиймээс би ашиглалтыг хялбарчлахын тулд энэ номын санг бий болгож байна.
Энэ бол метрополитан мэдрэгчээс мэдээлэл авах эсвэл дроныг удирдах шийдэл юм.
Хангамж
Ардуино НҮБ
Wemos D1 мини
LoRa E32 TTL 100 3км хувилбар
LoRa E32 TTL 1W 8Km хувилбар
Алхам 1: Номын сан
Та миний номын санг эндээс олж болно.
Татаж авах.
Баруун дээд буланд байгаа DOWNLOADS товчлуур дээр дарж шахагдаагүй хавтасны нэрийг LoRa_E32 нэрээр солино уу.
LoRa_E32 фолдерт LoRa_E32.cpp болон LoRa_E32.h байгаа эсэхийг шалгаарай.
LoRa_E32 номын сангийн хавтсыг өөрийн / libraries / хавтсыг байрлуул. Хэрэв таны анхны номын сан бол танд номын сангийн дэд хавтас үүсгэх шаардлагатай болж магадгүй юм.
IDE -г дахин эхлүүлнэ үү.
Алхам 2: Pinout хийх
Таны харж байгаагаар M0 ба M1 тээглүүрээр дамжуулан янз бүрийн горимыг тохируулж болно.
Статик хэлбэрээр ашиглаж болох зарим зүү байдаг, гэхдээ хэрэв та үүнийг микроконтроллерт холбож номын санд тохируулбал та гүйцэтгэлийг нь дээшлүүлж, програм хангамжаар дамжуулан бүх горимыг хянах боломжтой болно, гэхдээ бид дараа нь илүү сайн тайлбарлах болно.
Алхам 3: AUX зүү
Миний хэлснээр, бүх зүүг микроконтроллерийн гаралт руу холбох нь чухал биш, та тохиргоогоо авахын тулд M0 ба M1 тээглүүрийг HIGH эсвэл LOW болгож тохируулж болно, хэрэв та AUX -ийг холбоогүй бол номын сан нь боломжийн хойшлуулна. ажиллагаа дууссан гэсэн үг.
AUX зүү
Өгөгдөл дамжуулахдаа гадны MCU -ийг сэрээж, өгөгдөл дамжуулах явцад HIGH -ийг буцааж өгөх боломжтой.
AUX хүлээн авахдаа LOW руу явж буфер хоосон байхад HIGH буцаана.
Энэ нь мөн хэвийн ажиллагааг сэргээхийн тулд өөрийгөө шалгахад ашиглагддаг (асаах, унтах/програмын горим дээр).
Алхам 4: Бүрэн холбогдсон схем Esp8266
esp8266 холболтын схем нь илүү энгийн, учир нь энэ нь ижил хүчдэлийн логик холболтоор ажилладаг (3.3v).
Сайн тогтвортой байдлыг хангахын тулд татах эсэргүүцэл (4, 7Kohm) нэмэх нь чухал юм.
Алхам 5: Бүрэн холбогдсон схем Arduino
Arduino -ийн ажлын хүчдэл нь 5 в тул эвдрэлээс урьдчилан сэргийлэхийн тулд LoRa модулийн RX зүү M0 ба M1 дээр хүчдэл хуваагч нэмэх шаардлагатай бөгөөд эндээс нэмэлт мэдээлэл авах боломжтой Хүчдэл хуваагч: тооцоолуур ба програм.
Та RX дээр нийлүүлснээс дохиогоор GND ба 1Kohm хүртэл 2Kohm эсэргүүцэл ашиглаж болно.
Алхам 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 нь MODE горимыг өөрчлөх зүү юм (хүснэгтийн дээд хэсгийг үзнэ үү), "үйлдвэрлэл" дэх энэ тээглүүр нь HIGH эсвэл LOW -тэй шууд холбогдоно гэж бодож байна, гэхдээ туршилтын хувьд тэдгээрийг номын сан удирдах боломжтой.
bpsRate нь SoftwareSerial -ийн дууны хурд бөгөөд ихэвчлэн 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: Эхлэх
Эхлүүлэх командыг оролт, гаралтын горимд цуваа болон зүү ажиллуулахад ашигладаг.
void start ();
гүйцэтгэлд байна
// Бүх зүү болон UART -ийг эхлүүлнэ үү
e32ttl100.begin ();
Алхам 8: Тохиргоо ба мэдээллийн арга
Тохиргоог удирдах, төхөөрөмжийн талаар мэдээлэл авах хэд хэдэн арга байдаг.
ResponseStructContainer getConfiguration ();
ResponseStatus setConfiguration (Тохиргооны тохиргоо, PROGRAM_COMMAND saveType = WRITE_CFG_PWR_DWN_LOSE);
ResponseStructContainer getModuleInformation ();
void printParameters (бүтэц Тохиргооны тохиргоо);
ResponseStatus resetModule ();
Алхам 9: Хариултын контейнер
Хариултын менежментийг хялбарчлахын тулд би алдааг удирдах, ерөнхий өгөгдлийг буцааж өгөхөд зориулагдсан контейнер багцыг бий болгодог.
ResponseStatus
Энэ бол статусын контейнер бөгөөд 2 энгийн нэвтрэх цэгтэй тул статус код болон статус кодын тайлбарыг авах боломжтой
Serial.println (c.getResponseDescription ()); // Кодын тодорхойлолт
Serial.println (c. код); // Амжилттай бол 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
ResponseContainer
Энэ контейнер нь String -ийн хариу үйлдлийг удирдахад зориулагдсан бөгөөд 2 орох цэгтэй болно.
мессеж болон статусаас буцаасан мөр бүхий өгөгдөл, RepsonseStatus -ийн жишээ.
ResponseContainer rs = e32ttl.receiveMessage ();
String message = rs.data;
Serial.println (rs.status.getResponseDescription ());
Serial.println (зурвас);
ResponseStructContainer
Энэ бол илүү "төвөгтэй" контейнер юм, би үүнийг бүтцийг удирдахад ашигладаг, ResponseContainer -ийн ижил оролттой боловч өгөгдөл нь нарийн төвөгтэй бүтцийг удирдах хоосон заагч юм.
ResponseStructContainer c;
c = e32ttl100.getConfiguration (); // Бусад бүх үйлдлээс өмнө тохиргооны заагч авах нь чухал юм
Тохиргооны тохиргоо = *(Тохиргоо *) c.data;
Serial.println (c.status.getResponseDescription ());
Serial.println (статус код);
getConfiguration ба setConfiguration
Эхний арга бол getConfiguration бөгөөд та үүнийг төхөөрөмж дээр хадгалагдсан бүх өгөгдлийг сэргээхийн тулд ашиглаж болно.
ResponseStructContainer getConfiguration ();
Хэрэглээний жишээ энд байна.
ResponseStructContainer c;
c = e32ttl100.getConfiguration (); // Бусад бүх үйлдлээс өмнө тохиргооны заагч авах нь чухал юм
Тохиргооны тохиргоо = *(Тохиргоо *) c.data;
Serial.println (c.status.getResponseDescription ());
Serial.println (статус код);
Serial.println (тохиргоо. SPED.getUARTBaudRate ());
Тохиргооны бүтэц нь бүх тохиргооны өгөгдлийг агуулдаг бөгөөд би ганц өгөгдлийн бүх тайлбарыг авахын тулд хэд хэдэн функцийг нэмдэг.
тохиргоо. ADDL = 0x0; // Addressconfiguration -ийн эхний хэсэг. 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; // Parity бит
Бүх тайлбарыг авахын тулд танд бүх атрибуттай тэнцэх функц байна:
Serial.print (F ("Chan:")); Цуваа.хэвлэх (тохиргоо. 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 (тохиргоо. SPED.uartBaudRate, BIN); Serial.print (" ->"); Serial.println (тохиргоо. SPED.getUARTBaudRate ()); Serial.print (F ("SpeedAirDataRate:")); Serial.print (тохиргоо. SPED.airDataRate, BIN); Serial.print (" ->"); Serial.println (тохиргоо. SPED.getAirDataRate ()); Serial.print (F ("OptionTrans:")); Serial.print (тохиргоо. OPTION.fixedTransmission, BIN); Serial.print (" ->"); Serial.println (тохиргоо. OPTION.getFixedTransmissionDescription ()); Serial.print (F ("OptionPullup:")); Serial.print (тохиргоо. OPTION.ioDriveMode, BIN); Serial.print (" ->"); Serial.println (тохиргоо. OPTION.getIODroveModeDescription ()); Serial.print (F ("OptionWakeup:")); Serial.print (тохиргоо. OPTION.wirelessWakeupTime, BIN); Serial.print (" ->"); Serial.println (тохиргоо. OPTION.getWirelessWakeUPTimeDescription ()); Serial.print (F ("OptionFEC:")); Serial.print (тохиргоо. OPTION.fec, BIN); Serial.print (" ->"); Serial.println (тохиргоо. OPTION.getFECDescription ()); Serial.print (F ("OptionPower:")); Serial.print (тохиргоо. OPTION.transmissionPower, BIN); Serial.print (" ->"); Serial.println (тохиргоо. 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 (статус код); printParameters (тохиргоо); тохиргоо. 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; тохиргоо. 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. код); printParameters (тохиргоо);
Параметрүүдийг бүгд тогтмол байдлаар удирддаг.
Алхам 10: Тохиргооны үндсэн сонголт
Алхам 11: Хүлээн авах зурвас илгээх
Эхлээд бид хүлээн авах буфер дотор ямар нэгэн зүйл байгаа эсэхийг шалгах энгийн боловч ашигтай аргыг нэвтрүүлэх ёстой
int available ();
Энэ нь одоогийн урсгалд хэдэн байт байгааг буцааж өгөх явдал юм.
Алхам 12: Дамжуулах ердийн горим
Ердийн/Ил тод дамжуулах горимыг ижил төхөөрөмж, хаягтай бүх төхөөрөмж рүү мессеж илгээхэд ашигладаг.
Зурвас илгээх/хүлээн авах маш олон арга байдаг тул бид нарийвчлан тайлбарлах болно.
ResponseStatus sendMessage (const String зурвас);
ResponseContainer receiveMessage ();
Эхний арга нь sendMessage бөгөөд ердийн горимд төхөөрөмж рүү String илгээхэд ашиглагддаг.
ResponseStatus rs = e32ttl.sendMessage ("Prova"); Serial.println (rs.getResponseDescription ());
Нөгөө төхөөрөмж нь зүгээр л хүрд дээр хийдэг
if (e32ttl.available ()> 1) {ResponseContainer rs = e32ttl.receiveMessage (); String message = rs.data; // Эхлээд Serial.println (rs.status.getResponseDescription ()) өгөгдлийг авах; Serial.println (зурвас); }
Алхам 13: Бүтцийг удирдах
Хэрэв та нарийн төвөгтэй бүтэц хийхийг хүсч байвал энэ аргыг ашиглаж болно
ResponseStatus sendMessage (const void *message, const uint8_t size); ResponseStructContainer receiveMessage (const uint8_t size);
Энэ нь структур илгээхэд ашиглагддаг, жишээлбэл:
бүтэц Messaggione {char төрөл [5]; char мессеж [8]; bool mitico; }; бүтэц Messaggione messaggione = {"TEMP", "Peple", үнэн}; 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 хүлээн авахInitialMessage (const uint8_t size);
Би үүнийг ачаалах бүтэцийг тодорхойлохын тулд төрөл эсвэл бусад тэмдэгт мөрийг хүлээн авахын тулд үүсгэдэг.
бүтэц Messaggione {// Typechar зурвасгүй хэсэгчилсэн бүтэц [8]; bool mitico; }; char төрөл [5]; // ResponseContainer бүтцийн эхний хэсэг rs = e32ttl.receiveInitialMessage (sizeof (төрөл)); // мөрийг char массивт оруулах (шаардлагагүй) memcpy (төрөл, rs.data.c_str (), sizeof (төрөл)); Serial.println ("READ TYPE:"); Serial.println (rs.status.getResponseDescription ()); Serial.println (төрөл); // ResponseStructContainer бусад бүтцийг уншина уу rsc = e32ttl.receiveMessage (sizeof (Messaggione))); бүтэц Messaggione messaggione = *(Messaggione *) rsc.data;
Алхам 14: Ердийн горимын оронд тогтмол горим
Үүний нэгэн адил би тогтмол дамжуулалтаар ашиглах олон аргыг бий болгодог
Тогтмол дамжуулалт
Та зөвхөн илгээж буй аргыг өөрчлөх хэрэгтэй, учир нь очих төхөөрөмж нь тогтоосон горимоор Хаяг, сувгийн тохиргооны оршил хүлээн авдаггүй.
Тиймээс танд String мессеж байна
ResponseStatus sendFixedMessage (ADDL байт, ADDH байт, CHAN байт, const String зурвас); ResponseStatus sendBroadcastFixedMessage (байт CHAN, const String зурвас);
мөн танд байгаа бүтцийн хувьд
ResponseStatus sendFixedMessage (ADDL байт, ADDH байт, CHAN байт, const void *мессеж, const uint8_t хэмжээ); ResponseStatus sendBroadcastFixedMessage (байт CHAN, const void *мессеж, 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 (статус код); printParameters (тохиргоо); тохиргоо. ADDL = BROADCAST_ADDRESS; тохиргоо. ADDH = BROADCAST_ADDRESS; // Тохиргоог өөрчилж, тохиргоог хийхгүй байхаар тохируулсан ResponseStatus rs = e32ttl100.setConfiguration (тохиргоо, WRITE_CFG_PWR_DWN_LOSE); Serial.println (rs.getResponseDescription ()); Serial.println (rs. код); printParameters (тохиргоо);
Алхам 15: Баярлалаа
Одоо танд ажлаа хийх бүх мэдээлэл байгаа боловч бүх боломжийг илүү сайн ойлгохын тулд бодит жишээг үзүүлэх нь чухал гэж би бодож байна.
- Arduino, esp32 эсвэл esp8266 -д зориулсан LoRa E32 төхөөрөмж: тохиргоо ба үндсэн хэрэглээ
- Arduino, esp32 эсвэл esp8266 -д зориулсан LoRa E32 төхөөрөмж: номын сан
- Arduino, esp32 эсвэл esp8266 -д зориулсан LoRa E32 төхөөрөмж: тохиргоо
- Arduino, esp32 эсвэл esp8266 -д зориулсан LoRa E32 төхөөрөмж: тогтмол дамжуулалт
- Arduino, esp32 эсвэл esp8266 -д зориулсан LoRa E32 төхөөрөмж: эрчим хүч хэмнэх, бүтэцлэгдсэн өгөгдлийг илгээх
Зөвлөмж болгож буй:
Бага зардалтай реометр: 11 алхам (зурагтай)
Бага зардалтай реометр: Энэхүү зааварчилгааны зорилго нь шингэний зуурамтгай чанарыг туршилтаар олохын тулд хямд өртөгтэй реометрийг бий болгох явдал юм. Энэхүү төслийг Браун их сургуулийн бакалавр, бакалаврын оюутнуудын баг Механик системийн чичиргээ ангид бүтээжээ
Бага зардалтай MR тоглоомын демо: 9 алхам
Бага зардалтай MR тоглоомын демо: http://www.bilibili.com/video/av7937721/ (хятадын эх газрын видео url) Дээд талд нь харах: Хоёр тэнхлэг эзэмшигч дээр тэмдэг тавих зураг , Хэрэглэгч үүнийг картоноор харах Тоглоомын ертөнцөд тэд бие биенээ бууддаг. AR -ийг ашиглан өнцөг бооцоогоо олж мэдээрэй
Бага орон зайд илүү их шанцайны ургамал ургадаг эсвэл Сансарт огторгуйд ургадаг, (их эсвэл бага).: 10 алхам
Бага орон зайд илүү их шанцайны ургамал ургуулах, эсвэл … Сансарт огторгуй ургуулах, (их эсвэл бага). Энэ бол Дэлхийгээс гадна өсөн нэмэгдэж буй бүтээгчдийн уралдаанд мэргэжлийн зааварчилгаагаар ирүүлсэн бүтээл юм. Сансрын ургацын үйлдвэрлэлийг зохион бүтээж, анхны зааварчилгаагаа нийтэлж байгаад би илүү их баярлаж чадахгүй байлаа. Эхлэхийн тулд уралдаан биднээс
Бага зардалтай DIY цахилгаан хангамж: 5 алхам
Бага зардалтай DIY цахилгаан хангамж: Цахилгаан хангамж нь зохистой электрон лабораторид байдаг. Бага оврын гэрийн лаборатори хийх зорилгынхоо хүрээнд бид хувийн цахилгаан хангамжийг өөрийн гараар хийхээр шийдсэн бөгөөд энэ нь зардлын хувьд эдийн засгийн хувьд төдийгүй, бас
Удаан хугацааны утасгүй усны түвшний дохиолол бүхий дохиолол - 1 км хүртэлх зай - Долоон түвшин: 7 алхам
Удаан хугацааны утасгүй усны түвшний дохиолол бүхий дохиолол | 1 км хүртэлх зай | Долоон түвшин: Үүнийг Youtube дээрээс үзээрэй: https://youtu.be/vdq5BanVS0Y Та утастай болон утасгүй усны түвшин шалгуур үзүүлэлтийг 100-200 метр хүртэл хангах олон үзүүлэлтийг үзсэн байх. Гэхдээ энэ зааварчилгаанд та урт түвшний утасгүй усны түвшинг харах болно