Turinys:
- 1 veiksmas: prijunkite „NodeMCU“prie „Wi-Fi“
- 2 veiksmas: paprašykite duomenų iš HTTPS iš ANWB.nl
- 3 žingsnis: paverskite duomenis tinkama informacija
- 4 žingsnis: įdiekite trigerį
- 5 žingsnis: dizaino grįžtamasis ryšys
- 6 veiksmas: paleiskite kodą
Video: Eismo ataskaitų tikrinimas (NL) su durų kilimėliu: 6 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:47
Šioje instrukcijoje aprašysiu, kaip sukurti durų kilimėlį, kuris patikrins Olandijos greitkelių eismo ataskaitas. Kai išeisite lauke ant savo durų kilimėlio ir jūsų kelyje bus kamštis, kilimėlis įgaus raudoną spalvą. Kai nėra kamščio, kilimėlis taps žalias.
Aš dirbsiu su „NodeMCU 1.0“(ESP0-12E modulis). Šio projekto kodas gali veikti ir kituose įrenginiuose (pvz., „Arduino“plokštėse). Šis projektas pagrįstas Olandijos eismo ataskaitų šaltiniu ANWB.
Ko mums reikia šiam projektui:
- „NodeMCU“- jungiamieji laidai - LED lemputė arba juostelė - analoginis jutiklis (aliuminio folija, kempinė) - „Wi -Fi“ryšys - durų kilimėlis
Veiksmai, kurių turime imtis:
1. Prijunkite „NodeMCu“prie „Wi-Fi“.
1 veiksmas: prijunkite „NodeMCU“prie „Wi-Fi“
Šis žingsnis parodys, kaip sėkmingai atlikti „HTTPSRequest“ir sužinoti, ar įrenginys prijungtas prie interneto.
Pirmiausia įdiekite ESP8266 biblioteką „Arduino IDE“. Atidarykite pavyzdžius ESP8266>
Kodo viršuje užpildykite „Wi-Fi“prisijungimo duomenis, kaip parodyta žemiau:
const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASS";
Įkelkite kodą į savo įrenginį ir patikrinkite, ar „NodeMCU“prisijungia prie interneto. „HTTPSRequest“pavyzdys naudoja „Github“kaip numatytąjį, kad gautų informaciją. Kai „HTTPSRequest“pavyko, serijiniame monitoriuje gaunate „Github“duomenis.
2 veiksmas: paprašykite duomenų iš HTTPS iš ANWB.nl
Atlikdami šį antrąjį veiksmą, pakeiskite duomenų šaltinį iš numatytojo į šaltinį, reikalingą šiam projektui: ANWB.nl.
Kodo viršuje pakeiskite char* host į www.anwb.nl (arba kitą šaltinį, iš kurio norite gauti duomenis):
const char* host = "www.anwb.nl";!! Jei naudojate kitą šaltinį, 3 veiksmas skirsis nuo mano kodo. 3 veiksmui reikia specifinio kodavimo, kad būtų galima gauti naudingą informaciją!
Tada pakeiskite eilutės URL funkcijos sąrankoje į „/feeds/gethf“- kelią, iš kurio paimta informacija:
Eilutės URL = "/feeds/gethf";!! Jei naudojate kitą šaltinį, naudokite kelią į šaltinį!
Įkeldami kodą turėtumėte gauti atsakymą su visais duomenimis iš www.anwb.nl/feeds/gethf. Šis kodas išsaugomas eilutėje, pavadintoje eilute.
3 žingsnis: paverskite duomenis tinkama informacija
Iki šiol kodas buvo paleistas tik tada, kai „NodeMCU“buvo paleistas arba iš naujo nustatytas, nes visas kodas yra sąrankos funkcijoje. Norėdami nustatyti aktyviklį nuolatiniam kodo paleidimui, turite pakeisti kodo, kuris vykdo HTTPS užklausą, vietą. Po ciklo funkcija pridedate kitą funkciją. Pavadinau jį negaliojančiu ekstraktu
extractData () {
}
Nukopijuokite kodo dalį iš sąrankos funkcijos į ExtractData (). Pradėkite nuo šios eilutės iki sąrankos funkcijos pabaigos:
if (! client.connect (priegloba, Kodas dabar yra jūsų naujoje funkcijoje, todėl pašalinkite nukopijuotą kodą iš sąrankos funkcijos.
Tada iškvieskite funkciją „extractData“ciklo funkcijoje ir pridėkite šiek tiek vėlavimo, kad „nodeMCU“suteiktų laiko pailsėti:
void loop () {
extractData (); vėlavimas (30000); // tai bus pašalinta vėliau, kai turėsime analoginį jutiklį}
Kadangi gauti duomenys saugomi eilutėje ir reikia tik šios eilutės dalių, turite parašyti porą kilpų.
Pirmiausia patikrinkite visas žodžio „kelias“pozicijas. Po žodžio „kelias“bus kelio pavadinimas (A1, A2 ir kt.).
Prieš pradėdami rašyti kilpas, turite deklaruoti kai kuriuos kintamuosius, kuriuos ketinate naudoti:
int noOfPos = 0;
loginis hasRunOnce = false; int nuo = 0; int roadArray [20];
Dabar atėjo laikas parašyti keletą kilpų. Funkcijos „extractData“apačioje parašiau kilpas. Bandžiau jį suskirstyti į atskiras funkcijas, bet nepavyko.
1 kilpa: suraskite žodžio kelias pozicijas eilutės eilutėje:
for (int i = 0; i <line.length (); i ++) {int pos = line.indexOf ("road \": ", from); roadArray [noOfPos] = poz; noOfPos+= 1; from = pos + 1; if (hasRunOnce == true && pos == line.indexOf ("road \": ")) {i = line.length (); } hasRunOnce = tiesa; }
Tada patikrinkite, kuriuose keliuose yra spūstis, naudodami for kilpa iš viršaus. Kelių pavadinimo padėtis visada yra ta pati ir prasideda 7 simboliais ir baigiasi 10 simbolių po žodžio kelias.
Dabar mes apibrėžiame masyvo pavadinimąOfRoadArray, kuris bus užpildytas toliau ciklui:
Stygos pavadinimasOfRoadArray [20];
2 kilpa: Raskite visus kelių pavadinimus su įvestimi iš kilpos Nr. 1
už (int k = 0; k <20; k ++) {int pos = roadArray [k]; int positionOfRoadName = pos + 7; int endOfPositionOfRoadName = pos + 10; nameOfRoadArray [k] = line.substring (positionOfRoadName, endOfPositionOfRoadName); }
Masyvo pavadinimasOfRoudArray turi būti užpildytas visais praneštais eismo kamščiais.
Toliau jūs tikrinsite, ar jūsų kelias yra kelių, kuriuose yra kamštis, masyvas. Išspausdinkite „nameOfRoadArray“pavadinimą, kad gautumėte keliuose duomenis. Padarykite tai pridėdami Serial.println (nameOfRoadArray [k]); į 2 ciklą, kaip:
už (int k = 0; k <20; k ++) {int pos = roadArray [k]; int positionOfRoadName = pos + 7; int endOfPositionOfRoadName = pos + 10; nameOfRoadArray [k] = line.substring (positionOfRoadName, endOfPositionOfRoadName); Serial.println (nameOfRoadArray [k]); }
Jei tai teisinga, serijiniame monitoriuje matysite visus kelius su spūstimi.
Prieš rašydami paskutinį „For“ciklą, turite deklaruoti loginį reikšmę kaip visuotinį kintamąjį. Būklė, vadinama „trafficJam“, pagal nutylėjimą yra klaidinga ir pasikeis, jei funkcija „extractData“grąžins „true“eismui. Šis kodas yra.ino failo viršuje:
loginis srautasJam = false;
3 kilpa: patikrinkite, ar kelias, šiuo atveju A1, yra kamščių sąraše.
(int l = 0; l <20; l ++) {if (nameOfRoadArray [l] == "A1 \" ")) {// pakeisti A1 į jūsų naudai skirtą kelią trafficJam = true;}
Jei serijiniame monitoriuje spausdinate „trafficJam“, žinote, ar A1 yra kamštis, ar ne.
Įdėkite šį kodą funkcijos „extractData“apačioje:
Serial.println (trafficJam); // pažiūrėkite, ar nėra kamščio
Turėdami šią informaciją, mes toliau dirbsime prie sistemos atsiliepimų atlikdami 5 veiksmą.
4 žingsnis: įdiekite trigerį
Kadangi dabar galime sėkmingai gauti duomenis iš šaltinio, atėjo laikas sukurti jutiklį, kuris suaktyvins „nodeMCU“paleisti funkciją „extractData“. Aš nusprendžiau padaryti analoginį jutiklį iš savo kilimėlio. Galite pakeisti gaiduką naudodami kitą jutiklį.
Analoginio jutiklio kūrimas
Aš naudojau 2 gabalus aliuminio folijos, du trumpiklius ir kempinę.
Išgręžkite skylę kempinėje, tai yra vieta, kur liečiasi aliuminio folija. Klijuokite aliuminio foliją iš abiejų kempinės pusių. Prijunkite trumpiklius prie aliuminio folijos. Prijunkite jungiamuosius laidus prie mazgoMCU. Viena pusė prie A0 kaiščio, kita-prie V3 kaiščio. Padėkite kempinę po savo kilimėliu ir ką tik pakeitėte savo kilimėlį į jutiklį. Nuostabu!
Kodas nuskaityti vertę iš jutiklio, kad pamatytumėte, ar kas nors stovi ant durų kilimėlio:
int sensorValue = analogRead (A0);
if (sensorValue == 1024) {extractData (); }
Kai aliuminio folija liečiasi (kai kas nors stovi ant kilimėlio), sensorValue yra 1024. Dėl to funkcija „extractData ()“įsijungia. Ir būtent tai mes norime, kad sistema padarytų.
5 žingsnis: dizaino grįžtamasis ryšys
Naudodamas LED juostelę, norėjau pateikti atsiliepimą vartotojui. Kai susidaro kamštis, lemputė bus raudona. Kai kelias bus geras, jis taps žalias. LED juostelės valdymui naudojau adafruit neopikselių biblioteką.
Įrašykite šį kodą failo viršuje, kad įsitikintumėte, jog LED juostelė yra apibrėžta:
#įtraukti
#define PIXEL_PIN D5 #define PIXEL_COUNT 10 #define PIXEL_TYPE NEO_GRB + NEO_KHZ800 Adafruit_NeoPixel pixels = Adafruit_NeoPixel (PIXEL_COUNT, PIXEL_PIN, PIXEL_TYPE);
Įrašykite kitą kodą sąrankos funkcijoje:
// neopikselis
pixels.begin (); pixels.show ();
Ir šis kodas ciklo funkcijoje:
if (trafficJam == true) {
(int i; i <PIXEL_COUNT; i ++) {pixels.setPixelColor (i, 255, 0, 0); // raudoni pikseliai.show (); vėlavimas (200); }} else {for (int i; i <PIXEL_COUNT; i ++) {pixels.setPixelColor (i, 0, 255, 0); // žalieji pikseliai.show (); vėlavimas (200); }
Aukščiau esančiame kode yra funkcija „if/else“. Kai funkcija „extractData“grąžina spūstį, LED juostelė pasidarys raudona. Jei ne, LED juostelė taps žalia.
6 veiksmas: paleiskite kodą
Jei dabar paleisime visą kodą, jutiklis ir lemputė turėtų veikti. Kai stovėsite ant durų kilimėlio, jutiklis prisijungs ir veiks „extractData“funkcija. Kai kelių pavadinimų masyve yra mūsų ieškomas kelias, šviesos diodų juostelė pasidarys raudona, rodydama spūstį. Jei to nėra masyve, LED juostelė taps žalia ir žinosite, kad jums tinka!
Saugios kelionės ir ačiū, kad skaitote. Tikiuosi, kad radote įkvėpimo ar informacijos. Jei turite atsiliepimų, nedvejodami atsakykite!
Rekomenduojamas:
BGA rentgeno tikrinimas- sužinokite, kaip patikrinti?: 7 žingsniai
BGA rentgeno spindulių tikrinimas-sužinokite, kaip tikrinti?: Ši instrukcija mokys jus, kaip paruošti naudojimą ir 2D rentgeno sistemą BGA apžiūrai, taip pat keletą patarimų, į ką atkreipti dėmesį atliekant BGA rentgeno tyrimą reikės: rentgeno sistemos, galinčios laikyti PCBPCBESD smockESD riešo dirželį
Individualizuotas durų kilimėlis, įjungtas durų varpas: 6 žingsniai
Individualizuotas durų kilimėlis, įjungtas durų varpas: Sveiki! Mano vardas Justinas, aš esu jaunesnysis vidurinėje mokykloje, ir ši instrukcija parodys, kaip padaryti skambutį, kuris suveikia, kai kas nors užlipa ant jūsų durų kilimėlio, ir gali būti bet kokia melodija ar daina! Kadangi durų kilimėlis paleidžia duris
„TouchFree“: automatinis temperatūros tikrinimas ir kaukės aptikimo kioskas: 5 žingsniai
„TouchFree“: automatinis temperatūros tikrinimas ir kaukių aptikimo kioskas: kai pasaulio šalys vėl pradeda veikti, gyvenimas su nauju koronavirusu tampa nauju gyvenimo būdu. Tačiau norėdami sustabdyti viruso plitimą, turime atskirti koronavirusu sergančius žmones nuo kitų. Remiantis CDC, karščiavimas yra
Pasukite laidinį durų skambutį į išmanųjį durų skambutį naudodami IFTTT: 8 žingsniai
Paverskite laidinį durų skambutį į išmanųjį durų skambutį naudodami IFTTT: „WiFi“durų skambutis paverčia esamą laidinį skambutį į išmanųjį durų skambutį. https://www.fireflyelectronix.com/product/wifidoor
Automatiniai žibintai, prijungti prie durų ir durų stebėjimo: 5 žingsniai
Automatiniai žibintai, prijungti prie durų ir durų stebėjimo: atrodo, kad tamsoje labai sunku rasti jungiklių plokštę, tačiau šis projektas tikrai padeda išspręsti šią problemą. Atlikite toliau nurodytus veiksmus, kad sužinotumėte šios problemos sprendimą