Turinys:
- 1 žingsnis: kaip viskas veikia: paaiškinami dizaino pasirinkimai
- 2 žingsnis: dalys - smegenys: mikrovaldiklis ir ekranas
- 3 žingsnis: dalys - optika: ieškokite kompromiso
- 4 žingsnis: dalys - konteineris, skirtas juos visus laikyti
- 5 žingsnis: sukurkite protokolą mūsų moduliui
- 6 žingsnis: kodas: ESP32 Side
- 7 žingsnis: kodas: „Android“pusė
- 8 žingsnis: kas toliau?
- 9 žingsnis: Išvada ir ypatingas ačiū
Video: Išmanusis motociklų HUD prototipas (nuosekli navigacija ir dar daugiau): 9 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:44
Sveiki!
Ši instrukcija yra istorija apie tai, kaip aš sukūriau ir sukūriau HUD („Heads-Up Display“) platformą, skirtą montuoti ant motociklų šalmų. Tai buvo parašyta konkurso „žemėlapiai“kontekste. Deja, nesugebėjau iki galo užbaigti šio projekto iki konkurso termino pabaigos, tačiau vis tiek norėjau pasidalinti savo pažanga jį įgyvendinant, taip pat dokumentuoti visus bandymus ir klaidas, kuriuos gavau jį įgyvendindamas.
Šio projekto idėja pirmą kartą kilo man prieš kelerius metus, kai įsėdau į motociklus, ir aš pradėjau ieškoti, kokią įrangą turėčiau nusipirkti, kad mano važiavimas būtų malonesnis. Tuo metu mane glumino tai, kad geriausias būdas gauti pagrindinę GPS navigaciją važiuojant buvo iš esmės prijungti išmanųjį telefoną prie dviračio vairo. Nors aš pats sau manau, kad tikrai gali būti geresnis būdas gauti tokią informaciją skrendant.
Būtent tada aš tai supratau: „heads-up“ekranas gali būti būdas gauti navigaciją važiuojant, neištuštinant telefono baterijos ir neatskleidžiant jos elementų.
Laikui bėgant, ši mintis subrendo mano galvoje, ir aš supratau, kad turėdamas priešais visą laiką HUD, būtų galima naudoti daug daugiau nei paprasta navigacija. Štai kodėl mano planas yra paversti platformą vieša ir moduline, kad kiekvienas galėtų sukurti modulį, kuriame būtų rodoma reikiama informacija savo HUD
Nors yra parduodamų produktų, kurie atlieka šią užduotį, nėra tokių modulinių, kaip mano platforma, ir jie yra šiek tiek brangesni. Bet kokiu atveju, sveiki atvykę į šį projektą.
Kas veikia iki šiol
Kaip minėta, šis projektas vis dar yra vystymosi stadijoje, ir šiuo metu tai veikia.
- Ryšys tarp išmaniojo telefono ir ESP32 pagrįstos plokštės (telefonas pažadintas)
- Atlikta optikos konstrukcija (ilgainiui gali prireikti nedidelių pakeitimų)
- „Android“navigacijos programa naudojant „Mapbox“navigacijos SDK:
- Geba apskaičiuoti ir rodyti vartotojo padėtį žemėlapyje, taip pat maršrutą nuo jo iki paskirties vietos
- Galima prisijungti prie „Bluetooth“įrenginio (įrenginio MAC adresas šiuo metu yra koduotas)
- Galimybė naršyti realiuoju laiku, įskaitant būsimos manevro informacijos išgavimą ir siuntimą naudojant serijinį „Bluetooth“(kol kas palaiko tik posūkius)
Ko reikia dirbti
Šiame sąraše yra elementų, kurie yra absoliučiai būtini numatytam HUD naudojimui, tačiau dar nėra paruošti įgyvendinti.
- Bendras dizainas (šalmo tvirtinimas, atšvaito kampo reguliavimo mechanizmas,..)
- „Android“programa:
- Įdiegti ne maršruto aptikimą ir taisymą
- Galimybė vartotojui įvesti paskirties adresą
- Kelio taškai?
- Ergonomika / estetika
Priedai:
Esminiai dalykai
- Esp32 pagrįsta kūrimo lenta
- Bet kuris šiek tiek naujausias „Android“išmanusis telefonas (įgalintas „Bluetooth“)
- SSD1306 ar kitas įjungtas 96 colių OLED ekranas (mano dydis buvo 128 x 64 pikselių, žr. Dalį „Smegenys: mikrovaldiklis ir ekranas“)
- atšvaitas (tinka bet koks akrilo/stiklo/organinio stiklo gabalas)
- Fresnelio objektyvas (mano F. ilgis buvo apie 13 cm, žr. Dalį „Objektyvo pasirinkimas“)
Įrankiai
- Lituoklis
- Bandomoji Lenta
- Keletas trumpųjų kabelių
- 3D spausdintuvo / 3D spausdinimo paslauga
1 žingsnis: kaip viskas veikia: paaiškinami dizaino pasirinkimai
Pagrindinė „Heads Up Display“idėja yra rodyti vaizdą priešais kažkieno regėjimą, kad jam nereikėtų žvelgti nuo to, ką daro (ar tai būtų lėktuvo pilotavimas, ar motociklo vairavimas, pavyzdinis atvejis).
Optika
Techniškai tai būtų galima pasiekti tiesiai pastatius ekraną prieš vartotojo akis. Tačiau ekranas nėra skaidrus, todėl trukdytų jo naudotojui matyti. Tada galite pastatyti ekraną prieš atspindintį paviršių, kuris atspindėtų ekrano turinį ir būtų pakankamai permatomas, kad vartotojas galėtų pamatyti, kas yra priešais jį.
Tačiau šis požiūris turi didžiulį trūkumą: tikrasis ekranas paprastai yra arčiau vartotojo akių, nei tas, į kurį vartotojas iš tikrųjų turi sutelkti dėmesį (pvz., Kelias priešais jį). Tai reiškia, kad norint skaityti, kas yra atspindinčiame paviršiuje, naudotojo akys turi prisitaikyti prie ekrano atstumo nuo jo akių (tarkime, 20 cm) ir tada vėl prisitaikyti, kad galėtų sutelkti dėmesį į priekį (~ 2/5 metrai). Visas šios operacijos laikas yra brangus laikas, kurį reikia praleisti žiūrint į kelią, ir dažnai prisitaikyti vartotojui gali būti nepatogu po kelių minučių.
Todėl nusprendžiau tarp ekrano ir atšvaito pridėti objektyvą. Atidžiai pasirinkus šį objektyvą, turėtų būti sukurtas virtualus ekrano vaizdas (žr. Aukščiau pateiktą schemą), kuris tada atrodytų esantis toliau nuo vartotojo akių, kaip yra iš tikrųjų, todėl jį reikia mažiau staigiai pritaikyti (arba nė vieno, tobulas scenarijus). Ši konstrukcija leidžia vartotojui greitai pažvelgti į atšvaitą, gauti jam reikalingos informacijos ir akimirksniu atsigręžti į kelią.
Išmaniojo telefono vaidmuo
Kadangi buvo nerealu vien tik ESP32 įdiegti visą navigacijos programą, nusprendžiau sukurti „Android“programą, kuri tuo pasirūpintų. Tada programai tereikia pasakyti ESP32, ką vartotojas turi padaryti, kad pasiektų savo paskirties vietą, o ESP32 perduoda šią informaciją per HUD (žr. Paveikslėlį „Kaip veikia modulis“).
2 žingsnis: dalys - smegenys: mikrovaldiklis ir ekranas
Kaip minėta aukščiau, aš planavau, kad mano modulis rodytų navigacijos informaciją, iš tikrųjų neturėdamas jos apskaičiuoti faktinės padėties nustatymo, sekimo ir navigacijos realiuoju laiku. naudotojo telefonas užmegztų ryšį su moduliu ir atsiųstų jam informaciją, kuri būtų rodoma HUD.
Norėdami palengvinti ryšį tarp vartotojo telefono ir modulio, šiam projektui pasirinkau naudoti ESP32 plokštę. Šį pasirinkimą lėmė šis konkretus modulis, turintis integruotas „Bluetooth“galimybes, taip pat keletas kitų įdomių specifikacijų (paprasta naudoti nepastovią saugyklą, dviejų branduolių procesorių, pakankamai RAM, kad iš tikrųjų būtų galima valdyti OLED ekraną per I2C, …). Sukurti PCB, pagrįstą ESP32, yra gana paprasta, į ką aš atsižvelgiau. Taip pat turiu profesinės patirties naudojant ir kuriant grandines su ESP32, o tai neabejotinai turėjo įtakos mano pasirinkimui.
Ekrano pasirinkimas iš esmės apsiribojo tuo, ką galėčiau rasti, nors aš būčiau pakankamai ryškus, kad galėčiau jį naudoti, ir tuo pačiu kuo mažesnis. Aš labai nesijaudinau dėl ekrano pikselių skaičiaus, nes mano tikslas buvo turėti labai minimalistinę ir paprastą vartotojo sąsają.
Reikėtų pažymėti, kad ekrano tvarkyklę turėtų palaikyti biblioteka, leidžianti atspindėti vaizdus. Taip yra todėl, kad rodomas vaizdas apverčiamas, kai jis prasiskverbia pro objektyvą ir atsiranda ant atšvaito, ir nereikia rankiniu būdu pakeisti to, kas rodoma, yra didžiulis svoris nuo mūsų, kaip statybininkų, pečių.
3 žingsnis: dalys - optika: ieškokite kompromiso
Šio projekto optika buvo gana sunkiai prieinama, nes pirmą kartą pradėjusi šį projektą net neįsivaizdavau, ko aš ieškojau. Po tam tikrų tyrimų supratau, kad noriu padaryti savo OLED ekrano „virtualų vaizdą“, kuris atrodytų nutolęs nuo akių, nei yra iš tikrųjų. Idealus atstumas šiam virtualiam vaizdui susidaryti būtų maždaug 2–5 metrai priešais vairuotoją, o tai atrodo atstumas iki objektų, į kuriuos mes sutelkiame dėmesį vairuodami (kiti automobiliai, nelygumai kelyje ir kt.)).
Kad pasiekčiau šį tikslą, nusprendžiau naudoti „Fresnel“objektyvą, nes jie yra gana dideli ir pigūs, jie, atrodo, siūlo pakankamai gerą židinio nuotolį mano projektui ir gali būti nukirpti paprastomis žirklėmis (o taip nėra rafinuotesnės apvalios formos stiklo lęšiai). Fresnelio lęšiai gali būti pavadinti, pavyzdžiui, „kišeninis didintuvas“arba „skaitymo kortelės didintuvas“, nes jie labai tinka padėti žmonėms, turintiems blogą regėjimą.
Iš esmės triukas buvo susijęs su tinkamo kompromiso paieška tarp:
- Turėti pagrįstą virtualiojo vaizdo atstumą (tai yra, kiek toli HUD atrodys vartotojui arba kiek vartotojas turės pakoreguoti akis, kad pamatytų, kas yra HUD)
- Jei objektyvas (kuris iš esmės yra didintuvas), ekrane esantis tekstas nėra per daug padidintas
- Turint pagrįstą atstumą tarp OLED ekrano ir objektyvo, kitaip būtų gaunamas labai didelis modulis
Aš asmeniškai „Amazon“užsisakiau keletą skirtingų lęšių ir nustatiau atitinkamus židinio nuotolius, prieš pasirinkdamas vieną, kurio F. ilgis yra apie 13 cm. Radau, kad F. ilgis, kurio OLED objektyvo atstumas yra 9 cm, suteikė man malonų vaizdą ant atšvaito (žr. Kelis paskutinius vaizdus aukščiau).
Kaip matysite mano iliustracijose, norėdama tinkamai sutelkti dėmesį į rodomą tekstą, fotoaparatas, naudojamas šioms nuotraukoms daryti, turi prisitaikyti taip, tarsi fokusuotųsi į tolimą objektą, todėl viskas toje pačioje plokštumoje, kurioje yra atšvaitas, atrodo neryškus. Būtent to mes norime savo HUD.
3D objektyvo laikiklio failus galite rasti čia.
4 žingsnis: dalys - konteineris, skirtas juos visus laikyti
Rašydamas šią instrukciją, tikrasis konteineris, kuriame tilps kiekvienas „heads-up“ekrano gabalas, nėra visiškai suprojektuotas. Tačiau turiu keletą idėjų apie jo bendrą formą ir kaip spręsti tam tikras problemas (pvz., Kaip nejudinti atšvaito ir priversti jį atlaikyti 100+ km/h vėją). Tai dar labai daug kuriamas darbas.
5 žingsnis: sukurkite protokolą mūsų moduliui
Kad galėčiau išsiųsti navigacijos instrukcijas iš telefono į kūrimo lentą, turėjau sugalvoti savo bendravimo protokolą, kuris leistų man lengvai išsiųsti reikiamus duomenis iš telefono, taip pat palengvinti jo apdorojimą, kai tik jis bus gautas.
Rašant šią instrukciją, informacija, kurią reikėjo perduoti iš telefono, norint naršyti su moduliu, buvo:
- būsimo manevro tipas (paprastas posūkis, žiedinė sankryža, įvažiavimas į kitą kelią, …)
- tikslios būsimo manevro instrukcijos (priklausomai nuo manevro tipo: posūkis į dešinę/į kairę; kuris išvažiavimas į žiedinę sankryžą, …)
- Iki artėjančio manevro likęs atstumas (kol kas metrais)
Aš nusprendžiau sutvarkyti šiuos duomenis naudodami šią rėmo struktūrą:
: tipas.instrukcijos, atstumas;
Nors tai nėra gražus sprendimas, tai leidžia mums lengvai atskirti ir atskirti kiekvieną mūsų protokolo lauką, o tai palengvino kodavimą ESP32 pusėje.
Svarbu nepamiršti, kad dėl būsimų funkcijų prie šio protokolo gali reikėti pridėti kitos informacijos (pvz., Tikslią dieną ir laiką arba naudotojo telefone leidžiamą muziką), o tai būtų lengva padaryti naudojant tą patį kurti logiką kaip dabar.
6 žingsnis: kodas: ESP32 Side
ESP32 kodas šiuo metu yra gana paprastas. Jame naudojama U8g2lib biblioteka, leidžianti lengvai valdyti OLED ekraną (kartu leidžiant atvaizduoti vaizdą).
Iš esmės viskas, ką ESP32 daro, yra gauti serijinius duomenis per „Bluetooth“, kai programa juos siunčia, išanalizuoja ir parodo šiuos duomenis ar paveikslėlius pagal šiuos duomenis (ty rodydama rodyklę vietoj sakinio „pasukti į kairę/į dešinę“). Štai kodas:
/*Programa, skirta valdyti HUD iš „Android“programos naudojant serijinį „Bluetooth“*/#apima „BluetoothSerial.h“// „Serial Bluetooth“antraštės failą, pagal numatytuosius nustatymus bus pridėta prie „Arduino“#include #include #ifdef U8X8_HAVE_HW_SPI#include#endif# ifdef U8X8_HAVE_HW_I2C #include #endif // OLED bibliotekos konstruktorius, turi būti atitinkamai pakeistas pagal jūsų ekranąU8G2_SSD1306_128X64_ALT0_F_HW_I2C u8g2 (U8G2_MIRROR,/* reset =*/U8X8_PIN_NONE); // Būsenos mašina aptiko_ lauko reikšmes + kintamasis#apibrėžti manevrąLaikas 1#apibrėžti nurodymus 2 laukas#apibrėžti atstumą 3 laukas 3#apibrėžti endOfFrame 4int aptiktas_laukas = endOfFrame; „BluetoothSerial serialBT“; // „Bluetoothchar“įeinančių_ženklų objektas; char manevras [10]; char instrukcijos [10]; char atstumas [10]; char tempManeuver [10]; char tempInstructions [10]; char tempDistance [10]; int nbr_char_maneuver = 0; int nbr_char_instructions = 0; int nbr_char_distance = 0; boolean fullsentence = false; void setup () {Serial.begin (9600); // Paleisti serijinį monitorių 9600 baudų u8g2.begin (); // Init OLED valdymo serialBT.begin ("ESP32_BT"); // „Bluetooth“signalo uždelsimo pavadinimas (20); Serial.println („„ Bluetooth “įrenginys paruoštas susieti“);} void loop () {if (serialBT.available () &&! Fullsentence) // Simboliai, gaunami per „Bluetooth“serijinį {inputing_char = serialBT.read (); Serial.print ("Gauta:"); Serial.println (gaunamas_ženklas); } jungiklis (aptiktas_laukas) {case manevrasField: Serial.println ("Aptiktas laukas: manevras"); jei (gaunamas_ženklas == '.') // Aptiktas kitas laukas {aptiktas_laukas = nurodymaiLaukas; } else {// Užpildykite manevro tipo informacijos masyvo manevrą [nbr_char_maneuver] = gaunamas_ženklas; nbr_char_maneuver ++; } pertrauka; atvejo instrukcijosLapas: Serial.println ("Aptiktas laukas: instrukcijos"); if (gaunamas_ženklas == ',') // Kitas laukas aptiktas {aptiktas_laukas = atstumasLaukas; } else {// Užpildykite instrukcijų informacijos masyvo instrukcijas [nbr_char_instructions] = gaunamas_ženklas; nbr_char_instructions ++; } pertrauka; atveju distanceField: Serial.println ("Aptiktas laukas: atstumas"); if (gaunamas_ženklas == ';') // Aptikta kadro pabaiga {aptiktas_laukas = endOfFrame; Serial.print ("manevras:"); Serial.println (manevras); Serial.print ("instrukcijos:"); Serial.println (instrukcijos); Serial.print ("atstumas:"); Serial.println (atstumas); pilnas sakinys = tiesa; update_Display (); // Gautas visas kadras, išanalizuokite jį ir rodykite imtuvo duomenis} else {// Užpildykite atstumo informacijos masyvo atstumą [nbr_char_distance] = gaunamas_ženklas; nbr_char_distance ++; } pertrauka; atvejis endOfFrame: jei (gaunamas_ženklas == ':') aptiktas_laukas = manevro laukas; // Naujas kadras aptiko pertrauką; numatytasis: // Nieko nesulaužk; } delay (20);} void update_Display () {// Talpykloje išsaugokite kiekvieną simbolių masyvą, kad išvengtumėte galimų konfliktų memcpy (tempManeuver, manevras, nbr_char_maneuver); memcpy (tempInstrukcijos, instrukcijos, nbr_char_instructions); memcpy (tempDistance, distance, nbr_char_distance); parseCache (); // Analizuoti ir apdoroti char masyvus fullsentence = false; // Sakinys apdorotas, paruoštas kitam} void parseCache () {u8g2.clearBuffer (); // išvalyti vidinę atmintį u8g2.setFont (u8g2_font_ncenB10_tr); // pasirinkti tinkamą šriftą // char masyvai -> string privaloma naudoti substring () funkciją String manevrasString = tempManeuver; Styginių instrukcijosString = tempInstructions; // Įgyvendinimo protokolas čia. Kol kas palaiko tik posūkius. if (maneuverString.substring (0, 4) == "turn") {// Patikrinkite, ar nėra manevro tipo Serial.print ("TURN DETECTED"); if (instructionString.substring (0, 5) == "right") {// Patikrinkite konkrečias instrukcijas ir atitinkamai parodykite u8g2.drawStr (5, 15, "-"); } else if (instructionString.substring (0, 4) == "left") {// Patikrinkite konkrečias instrukcijas ir atitinkamai parodykite u8g2.drawStr (5, 15, "<---"); } else u8g2.drawStr (5, 15, "Klaida"); // Netinkamas instrukcijų laukas}/ * Įgyvendinkite kitų tipų manevrus (žiedinės sankryžos ir pan.) * Else if (tempManeuver == "rdbt") { * *] */ u8g2.drawStr (5, 30, tempDistance); // Rodyti likusį atstumą u8g2.sendBuffer (); // perkelti vidinę atmintį į ekraną // Iš naujo nustatyti visus char masyvus prieš kitą skaitymo elementų rinkinį (manevras, 0, 10); memset (instrukcijos, 0, 10); memset (atstumas, 0, 10); memset (tempManeuver, 0, 10); memset (tempInstructions, 0, 10); memset (tempDistance, 0, 10); // Iš naujo nustatyti elementų skaičių masyvuose nbr_char_distance = 0; nbr_char_instructions = 0; nbr_char_maneuver = 0;}
7 žingsnis: kodas: „Android“pusė
Išmaniųjų telefonų programai nusprendžiau naudoti „Mapbox“navigacijos SDK, nes ji siūlo daug naudingų funkcijų, kai reikia kurti navigacijos žemėlapį nuo nulio. Tai taip pat leidžia naudoti daug naudingų klausytojų, kurie neabejotinai padeda užtikrinti, kad šis modulis veiktų. Aš taip pat naudojau „harry1453“„Android“„Bluetooth“serijinę biblioteką, skirtą „Android“, nes tai labai palengvino „Bluetooth“serijinio ryšio kūrimą.
Jei norite sukurti šią programą namuose, turėsite gauti „Mapbox“prieigos raktą, kuris yra nemokamas iki tam tikro užklausų skaičiaus per mėnesį. Turėsite įdėti šį žetoną į kodą ir sukurti programą savo pusėje. Taip pat turėsite koduoti savo ESP32 „Bluetooth“MAC adresu.
Esama programa gali nukreipti jus iš jūsų dabartinės vietos į bet kurią vietą, kurią galite spustelėti žemėlapyje. Tačiau, kaip minėta įžangoje, jis nepalaiko jokių kitų manevrų, išskyrus posūkius, ir dar neapdoroja maršrutų.
Visą šaltinio kodą galite rasti mano „github“.
8 žingsnis: kas toliau?
Dabar, kai programa yra pakankamai funkcionali, kad iš tikrųjų nukreiptų savo vartotoją nustatytu maršrutu (jei nėra nukrypimų nuo nustatyto maršruto), pagrindinis dėmesys bus skiriamas išmaniojo telefono programėlės tobulinimui ir kelių funkcijų, kurios padėtų moduliui įgyvendinti, įgyvendinimui. perspektyvus navigacijos įrenginys. Tai apima „Bluetooth“ryšio įgalinimą iš telefono net tada, kai ekranas yra išjungtas, taip pat kitų tipų manevrų (žiedinių sankryžų, sujungimo ir kt.) Palaikymą. Taip pat įgyvendinsiu maršruto pakeitimo funkciją, jei vartotojas nukryps nuo pradinio maršruto.
Kai visa tai bus padaryta, patobulinsiu konteinerį ir jo tvirtinimo mechanizmą, atspausdinsiu jį 3D ir pabandysiu paimti modulį pirmajam paleidimui.
Jei viskas klostysis gerai, mano ilgalaikis tikslas yra sukurti pritaikytą PCB šio projekto įterptajai elektronikai, kuri sutaupytų daug vietos galutiniam produktui.
Ateityje į šį modulį taip pat galėčiau įtraukti keletą kitų funkcijų, įskaitant laiko rodymą, taip pat telefono pranešimo signalą, kuris gali parodyti piktogramą, kai vartotojas gauna tekstinį pranešimą arba skambina. Galiausiai norėčiau pridėti „Spotify“galimybes prie šio modulio, kaip didžiulis muzikos gerbėjas. Tačiau šiuo metu tai yra tik malonu turėti.
9 žingsnis: Išvada ir ypatingas ačiū
Kaip nurodyta įžangoje, nors šis projektas dar toli gražu nėra baigtas, aš tikrai norėjau juo pasidalyti su pasauliu, tikėdamasis, kad tai gali įkvėpti ką nors kitą. Taip pat norėjau dokumentuoti savo tyrimus šia tema, nes iš tikrųjų nėra didelio mėgėjų susidomėjimo AR ir HUD, o tai, manau, yra gėda.
Noriu padėkoti Awall99 ir Danel Quintana, kurių atitinkamas papildytos realybės projektas mane labai įkvėpė kuriant šį modulį.
Dėkoju visiems už dėmesį, būtinai paskelbsiu atnaujinimą, kai artimiausiu metu šis projektas bus patobulintas. Tuo tarpu iki pasimatymo!
Rekomenduojamas:
„VBScript“pagrindai - scenarijų paleidimas, vėlavimai ir dar daugiau!: 5 žingsniai
„VBScript“pagrindai - scenarijų paleidimas, vėlavimai ir dar daugiau!: Sveiki atvykę į mano pirmąją pamoką, kaip sukurti „VBScripts“naudojant bloknotą. Naudodami.vbs failus galite sukurti juokingų išdaigų ar mirtinų virusų. Šioje pamokoje aš jums parodysiu pagrindines komandas, tokias kaip scenarijaus paleidimas, failų atidarymas ir daug daugiau. Tuo t
Nuostabus šiltnamis su automatiniu laistymu, interneto ryšiu ir dar daugiau: 7 žingsniai (su nuotraukomis)
Nuostabus šiltnamis su automatiniu laistymu, interneto ryšiu ir dar daugiau: Sveiki atvykę į šią instrukciją. Kovo pradžioje buvau sodo parduotuvėje ir pamačiau keletą šiltnamių. Ir kadangi jau seniai norėjau sukurti projektą su augalais ir elektronika, ėmiausi ir nusipirkau: https://www.instagram.com/p
„CovBot“- „WhatsApp“pagrįstas „Chatbot“, skirtas COVID 19 informacijai ir dar daugiau: 7 žingsniai
„CovBot“- „WhatsApp“pagrįstas „Chatbot“, skirtas COVID 19 informacijai ir daugiau: „CoVbot“yra paprastas ir intuityvus „Whatsapp“pagrįstas pokalbių robotas. Pagrindinis roboto bruožas yra toks: jis gali suteikti jums naujausią COVID-19 būseną pasirinktoje šalyje paprastu ir intuityviu būdu. Be to, robotas gali pasiūlyti įdomių užsiėmimų AT H
Auginti daugiau salotų mažesnėje erdvėje arba Salotas auginti erdvėje, (daugiau ar mažiau): 10 žingsnių
Auginti daugiau salotų mažesnėje erdvėje arba … Auginti salotas erdvėje, (daugiau ar mažiau) .: Tai profesionalus pateikimas „Growing Beyond Earth“, „Maker“konkursui, pateiktas per „Instructables“. Aš negalėjau būti labiau susijaudinęs, kad suprojektuosiu kosminių augalų auginimą ir paskelbsiu savo pirmąjį „Instructable“. Norėdami pradėti, konkursas paprašė mūsų
O-R-A RGB LED matricinis sieninis laikrodis ir dar daugiau ** atnaujintas 2019 m. Liepos mėn. **: 6 žingsniai (su nuotraukomis)
O-R-A RGB LED matricinis sieninis laikrodis ir daugiau ** atnaujintas 2019 m. Liepos mėn. **: Sveiki. Štai aš su nauju projektu, pavadintu O-R-AIt yra RGB LED matricos sieninis laikrodis, rodantis: valanda: minutė temperatūra drėgmė dabartinė oro sąlygų piktograma „Google“kalendoriaus įvykiai ir 1 valandos priminimų pranešimai tam tikru laiku, kai ji rodo: