Sisukord:
- Samm: ühendage NodeMCU WiFi-ga
- 2. toiming: taotlege HTTPS -lt andmeid saidilt ANWB.nl
- Samm: muutke andmed kasutatavaks teabeks
- Samm: paigaldage päästik
- 5. samm: kujunduse tagasiside
- Samm: käivitage kood
Video: Liiklusaruande kontroll (NL) uksematiga: 6 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:48
Selles juhendis kirjeldan, kuidas ehitada uksematt, mis kontrollib Hollandi maanteede liiklusaruandeid. Kui astute oma uksematil õue ja teie marsruudil on ummik, muutub matt punaseks. Kui ummikuid pole, muutub matt roheliseks.
Töötan NodeMCU 1.0 (ESP0-12E moodul) kallal. Selle projekti kood võib töötada ka teistes seadmetes (nt Arduino tahvlid). See projekt põhineb Hollandi liiklusaruannete allikal ANWB.
Mida me selle projekti jaoks vajame:
- NodeMCU - hüppaja juhtmed - LED -valgus või riba - analoogandur (alumiiniumfoolium, käsn) - Wi -Fi -ühendus - uksematt
Sammud, mida peame tegema:
1. Ühendage NodeMCu WiFi-ga. 2. Andmete taotlemine HTTPS-i kaudu saidilt ANWB.nl 3. Muutke andmed kasutatavaks teabeks 4. Installige päästik 5. Disaini tagasiside
Samm: ühendage NodeMCU WiFi-ga
See samm näitab, kuidas teha edukas HTTPSRequest, et näha, kas seade on Internetiga ühendatud.
Esmalt installige ESP8266 raamatukogu Arduino IDE -sse. Avage näidetest ESP8266>
Sisestage oma koodi ülaosas oma WiFi-mandaadid, nagu allpool näidatud.
const char* ssid = "YOUR_SSID";
const char* parool = "YOUR_PASS";
Laadige kood oma seadmesse üles ja kontrollige, kas NodeMCU loob Interneti -ühenduse. HTTPSRequest näites kasutatakse teabe hankimiseks vaikimisi Githubi. Kui HTTPSRequest õnnestus, saate Githubi andmed jadamonitoris.
2. toiming: taotlege HTTPS -lt andmeid saidilt ANWB.nl
Selles teises etapis muudate andmeallika vaikevalikust selle projekti jaoks vajalikuks allikaks: ANWB.nl.
Muutke koodi ülaosas char* host aadressiks www.anwb.nl (või muust allikast, kust soovite oma andmeid hankida):
const char* host = "www.anwb.nl";!! Kui kasutate mõnda muud allikat, erineb 3. samm minu koodist. 3. samm vajab kasutatava teabe hankimiseks spetsiifilist kodeerimist!
Seejärel muutke funktsiooni häälestuse stringi URL -iks "/feeds/gethf", tee, kust teave võetakse:
Stringi URL = "/feeds/gethf";!! Kui kasutate mõnda muud allikat, kasutage oma allika teed!
Koodi üleslaadimisel peaksite saama vastuse kõigi andmetega saidilt www.anwb.nl/feeds/gethf. See kood salvestatakse stringiks, mida nimetatakse reaks.
Samm: muutke andmed kasutatavaks teabeks
Siiani töötas kood ainult siis, kui NodeMCU käivitati või lähtestati, sest kogu kood on seadistusfunktsioonis. Päästiku seadistamiseks koodi pidevaks käitamiseks peate muutma HTTPS -i päringut käivitava koodi asukohta. Tsükli funktsiooni alla lisate veel ühe funktsiooni. Ma nimetasin seda tühiseks väljavõtteks Andmed:
extractData () {
}
Kopeerige osa koodi häälestusfunktsioonist väljaandesse extractData (). Alustage järgmise reaga kuni seadistusfunktsiooni lõpuni:
if (! client.connect (host, Kood on nüüd uues funktsioonis, nii et eemaldage kopeeritud kood häälestusfunktsioonist.
Seejärel kutsuge silmusefunktsioonis funktsioon extractData ja lisage viivitus, et anda nodeMCU -le aeg puhata:
void loop () {
extractData (); viivitus (30000); // see eemaldatakse hiljem, kui meil on analoogandur}
Kuna saadud andmed salvestatakse stringina ja vaja on ainult selle stringi osi, peate silmuste jaoks kirjutama paar.
Kõigepealt kontrollige sõna „tee” kõiki positsioone. Pärast sõna 'tee' järgneb tee nimi (A1, A2 jne).
Enne silmuste jaoks kirjutamise alustamist peate deklareerima mõned muutujad, mida kavatsete kasutada:
int noOfPos = 0;
boolean hasRunOnce = vale; int alates = 0; int roadArray [20];
Nüüd on aeg kirjutada mõned silmused. Olen kirjutanud silmuste jaoks funktsiooni ExtractData põhja. Üritasin seda eraldi funktsioonideks jagada, kuid ei saanud seda tööle.
Silmus nr 1: otsige sõna tee positsioonid stringirealt:
for (int i = 0; i <line.length (); i ++) {int pos = line.indexOf ("road \": ", from); roadArray [noOfPos] = pos; noOfPos+= 1; from = pos + 1; if (hasRunOnce == true && pos == line.indexOf ("road \": ")) {i = line.length (); } hasRunOnce = tõsi; }
Järgmisena kontrollige, millistel teedel on ummik, kasutades ülevalt for -silmuse positsioone. Teede nime asukoht on alati sama ja algab 7 märki ja lõpeb 10 märki pärast sõna tee.
Nüüd määratleme massiivi nimeOfRoadArray, mis täidetakse järgmiseks tsükli jaoks:
String nameOfRoadArray [20];
Silmus nr 2: otsige üles kõik teede nimed, mille sisend on silmusele nr. 1
jaoks (int k = 0; k <20; k ++) {int pos = roadArray [k]; int positionOfRoadName = pos + 7; int endOfPositionOfRoadName = pos + 10; nameOfRoadArray [k] = line.substring (positionOfRoadName, endOfPositionOfRoadName); }
Massiivi nimiOfRoudArray tuleb täita kõigi märgistatud liiklusummikutega.
Järgmisena kontrollite, kas teie tee on ummikutega. Printige nimiOfRoadArray, et saada teede andmed. Tehke seda, lisades Serial.println (nameOfRoadArray [k]); teisele ringile, näiteks:
jaoks (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]); }
Kui see on õige, näete jadamonitoris kõiki ummikuga teid.
Enne viimase For -tsükli kirjutamist peate deklareerima loogika globaalse muutujana. Boolean, mida nimetatakse trafficJamiks, on vaikimisi vale ja muutub, kui funktsioon extractData tagastab liiklusummiku korral tõese.. Ino -faili peale läheb järgmine kood:
loogiline liiklusJam = vale;
Silmus nr 3: kontrollige, kas tee, antud juhul A1, on ummikute loendis.
jaoks (int l = 0; l <20; l ++) {if (nameOfRoadArray [l] == "A1 \" ")) {// muuda A1 oma eelistatud teele trafficJam = true;}
Kui prindite seeriamonitoris trafficJami, teate, kas A1 -l on ummik või mitte.
Pange see kood funktsiooni ExtractData allossa:
Serial.println (trafficJam); // vaata, kas seal on ummik
Selle teabe abil jätkame süsteemi tagasiside kallal 5. sammus.
Samm: paigaldage päästik
Kuna nüüd saame andmed allikast edukalt alla laadida, on aeg ehitada andur, mis käivitab sõlme MCU funktsiooni extractData käivitamiseks. Valisin oma uksematist analooganduri valmistamise. Päästikut saate muuta teise anduri abil.
Analooganduri ehitamine
Kasutasin 2 tükki alumiiniumfooliumi, kahte hüppaja traati ja käsna.
Puurige käsnale auk, see on koht, kus alumiiniumfooliumid kokku puutuvad. Liimige käsna mõlemale küljele alumiiniumfoolium. Ühendage hüppaja juhtmed alumiiniumfooliumiga. Ühendage hüppaja juhtmed sõlmega MCU. Üks külg A0-kontakti ja teine V3-kontakti poole. Pange käsn oma uksematti alla ja olete just vahetanud oma uksematti anduriks. Vinge!
Kood andurilt väärtuse lugemiseks, et näha, kas keegi seisab uksematil:
int sensorValue = analogRead (A0);
if (sensorValue == 1024) {extractData (); }
Kui alumiiniumfoolium puutub kokku (kui keegi seisab matil), on sensorValue 1024. Selle tulemusel käivitub funktsioon extractData (). Ja just seda me tahame, et süsteem teeks.
5. samm: kujunduse tagasiside
Kasutajale tagasiside andmiseks kasutasin LED -riba. Kui on ummik, muutub tuli punaseks. Kui tee on hea minna, muutub see roheliseks. Kasutasin oma LED -riba juhtimiseks adafruit neopixeliteeki.
Kirjutage see kood faili ülaossa veendumaks, et LED -riba on määratletud.
#kaasake
#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);
Kirjutage häälestusfunktsiooni järgmine kood:
// neopiksel
pixels.begin (); pixels.show ();
Ja silmusfunktsioonis järgmine kood:
if (trafficJam == true) {
jaoks (int i; i <PIXEL_COUNT; i ++) {pixels.setPixelColor (i, 255, 0, 0); // punased pikslid.show (); viivitus (200); }} else {for (int i; i <PIXEL_COUNT; i ++) {pixels.setPixelColor (i, 0, 255, 0); // rohelised pikslid.show (); viivitus (200); }
Ülaltoodud koodis on funktsioon if/else. Kui funktsioon extractData tagastab liiklusummiku olemasolu, muutub LED -riba punaseks. Kui ei, siis muutub LED -riba roheliseks.
Samm: käivitage kood
Kui käivitame nüüd täieliku koodi, peaksid andur ja valgus töötama. Kui seisate uksematil, ühendub andur ja funktsioon extractData töötab. Kui teede nimede massiivis on otsitav tee olemas, muutub LED -riba punaseks, andes märku liiklusummikust. Kui seda pole massiivis, muutub LED -riba roheliseks ja teate, et olete valmis minema!
Turvalist reisi ja tänan teid lugemise eest. Loodan, et leidsite inspiratsiooni või teavet. Kui olete tagasisidet saanud, vastake julgelt!
Soovitan:
Kassitoidu juurdepääsu kontroll (ESP8266 + servomootor + 3D -printimine): 5 sammu (koos piltidega)
Kassitoidu juurdepääsu kontroll (ESP8266 + servomootor + 3D -printimine): see projekt hõlmab protsessi, mida kasutasin oma eaka diabeetilise kassi Chazi jaoks automatiseeritud kassitoidu kausi loomisel. Vaadake, ta peab enne insuliini saamist hommikusööki sööma, kuid ma unustan sageli enne magamaminekut tema toidunõu kätte võtta, mis
Mõistlikkuse kontroll: 5 sammu (piltidega)
Tervislikkuse kontroll: see projekt on seotud mõistusega või selle regulaarse kontrollimisega. Parim viis selle saavutamiseks on ehitada mask, mis särab juhuslikult silmad punaseks. Piisavalt sageli, nii et see on märgatav, kuid piisavalt hõre, et panna inimesi kahtlema
Kontroll De Gás E Poeira Com O NodeMCU: 5 sammu
Kontroll De Gás E Poeira Com O NodeMCU: Este foi um trabalho para medir n í veis de poeira e g á s num dado ambiente, e compartilhar estes dados nas nuvens e em seu celular, incluindo disparar um e-mail de alerta caso os valores lidos sejam Regardrados altos
Kontroll -LED vilgub potentsiomeetri ja OLED -ekraaniga: 6 sammu
LED -i vilkumise juhtimine potentsiomeetri ja OLED -ekraaniga
Puutetundlik: automaatne temperatuuri kontroll ja maski tuvastamise kiosk: 5 sammu
Puutetundlik: automaatne temperatuurikontroll ja maskide tuvastamise kiosk: Kuna riigid üle maailma on taasavamas, on uue eluviisiga saamine koos uue koroonaviirusega. Kuid viiruse leviku peatamiseks peame eraldama koroonaviirusega inimesed ülejäänud inimestest. CDC andmetel on palavik