Sisällysluettelo:
- Vaihe 1: Yhdistä NodeMCU Wi-Fi-verkkoon
- Vaihe 2: Pyydä tietoja HTTPS: ltä ANWB.nl: ltä
- Vaihe 3: Muuta tiedot käyttökelpoisiksi tiedoiksi
- Vaihe 4: Asenna liipaisin
- Vaihe 5: Suunnittelun palaute
- Vaihe 6: Suorita koodi
Video: Liikenneraporttien tarkistus (NL) kynnysmatolla: 6 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:02
Tässä ohjeessa kuvailen kuinka rakentaa kynnysmatto, joka tarkistaa Hollannin moottoriteiden liikenneilmoitukset. Kun astut ulos kotiovellesi ja reitilläsi on ruuhkaa, matto muuttuu punaiseksi. Jos ruuhkaa ei ole, matto muuttuu vihreäksi.
Työskentelen NodeMCU 1.0: n (ESP0-12E-moduuli) parissa. Tämän projektin koodi voi toimia myös muilla laitteilla (esim. Arduino -levyt). Tämä projekti perustuu hollantilaiseen liikenneraporttien lähteeseen, ANWB: hen.
Mitä tarvitsemme tähän projektiin:
- NodeMCU - Hyppyjohdot - LED -valo tai nauha - Analoginen anturi (alumiinikalvo, sieni) - Wi -Fi -yhteys - Ovimatto
Vaiheet, jotka meidän on otettava:
1. Yhdistä NodeMCu Wi-Fi-verkkoon 2. Pyydä tietoja HTTPS: n kautta ANWB.nl: ltä 3. Muuta tiedot käyttökelpoisiksi tiedoiksi 4. Asenna liipaisin 5. Suunnittelupalaute
Vaihe 1: Yhdistä NodeMCU Wi-Fi-verkkoon
Tämä vaihe näyttää, kuinka onnistunut HTTPSRequest -pyyntö selvittää, onko laite yhteydessä Internetiin.
Asenna ensin ESP8266 -kirjasto Arduino IDE: hen. Avaa esimerkeistä ESP8266>
Kirjoita Wi-Fi-kirjautumistietosi koodin yläosaan alla olevan kuvan mukaisesti:
const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASS";
Lataa koodi laitteellesi ja tarkista, muodostaako NodeMCU yhteyden Internetiin. HTTPSRequest -esimerkki käyttää Githubia oletuksena saadakseen tietoja. Kun HTTPSRequest onnistui, saat Github -tiedot sarjamonitoriin.
Vaihe 2: Pyydä tietoja HTTPS: ltä ANWB.nl: ltä
Tässä toisessa vaiheessa muutat tietolähteen oletusarvoisesta tämän projektin lähteeksi: ANWB.nl.
Vaihda koodin yläosassa char* isäntä osoitteeseen www.anwb.nl (tai muu lähde, josta haluat saada tietosi):
const char* isäntä = "www.anwb.nl";!! Jos käytät toista lähdettä, vaihe 3 eroaa koodistani. Vaihe 3 tarvitsee erityistä koodausta käyttökelpoisten tietojen hakemiseksi!
Muuta seuraavaksi funktion asetusten merkkijonon URL -osoitteeksi "/feeds/gethf", polku, josta tiedot on otettu:
Merkkijono url = "/feeds/gethf";!! Jos käytät toista lähdettä, käytä polkua lähteeseesi!
Kun lähetät koodin, saat vastauksen ja kaikki tiedot osoitteesta www.anwb.nl/feeds/gethf. Tämä koodi tallennetaan merkkijonoksi, jota kutsutaan riviksi.
Vaihe 3: Muuta tiedot käyttökelpoisiksi tiedoiksi
Tähän asti koodi toimi vain, kun NodeMCU käynnistettiin tai nollattiin, koska kaikki koodit ovat asennustoiminnossa. Jos haluat asettaa liipaisimen suorittamaan koodin jatkuvasti, sinun on muutettava HTTPS -pyyntöä suorittavan koodin sijaintia. Lisää silmukkafunktion alle toinen toiminto. Olen kutsunut sitä void otteeksi
extractData () {
}
Kopioi osa koodista asennustoiminnosta otteeseen (). Aloita seuraavalla rivillä asennustoiminnon loppuun asti:
if (! client.connect (isäntä, Koodi on nyt uudessa toiminnossasi, joten poista kopioitu koodi asennustoiminnosta.
Kutsu seuraavaksi silmukatoiminnon extractData -funktio ja lisää viivettä, jotta nodeMCU: lle annetaan lepoaika:
void loop () {
oteTiedot (); viive (30000); // tämä poistetaan myöhemmin, kun meillä on analoginen anturi}
Koska vastaanottamasi tiedot tallennetaan merkkijonoon ja tarvitaan vain osia tästä merkkijonosta, sinun on kirjoitettava pari silmukkaa.
Tarkista ensin sanan "road" kaikki sijainnit. Tie -sanan jälkeen seuraa tien nimi (A1, A2 jne.).
Ennen kuin aloitat silmukoiden kirjoittamisen, sinun on ilmoitettava joitain muuttujia, joita aiot käyttää:
int noOfPos = 0;
boolean hasRunOnce = epätosi; int alkaen = 0; int roadArray [20];
Nyt on aika kirjoittaa silmukoita. Olen kirjoittanut for -silmukoille extractData -funktion alareunaan. Yritin jakaa sen erillisiin toimintoihin, mutta en saanut sitä toimimaan.
Silmukka nro 1: etsi sanan tie sijainnit merkkijonoriviltä:
for (int i = 0; i <line.length (); i ++) {int pos = line.indexOf ("road \": ", from); roadArray [noOfPos] = pos; noOfPos+= 1; from = pos + 1; jos (hasRunOnce == true && pos == line.indexOf ("road \": ")) {i = line.length (); } hasRunOnce = tosi; }
Tarkista seuraavaksi, millä teillä on ruuhka, käyttämällä for -silmukan asentoa ylhäältä. Teiden nimen sijainti on aina sama ja alkaa 7 merkkiä ja päättyy 10 merkkiä sanan tie jälkeen.
Määritämme nyt taulukon nimenOfRoadArray, joka täytetään seuraavassa silmukassa:
Merkkijonon nimiOfRoadArray [20];
Silmukka nro 2: Etsi kaikki niiden teiden nimet, joissa on silmukan nro. 1
for (int k = 0; k <20; k ++) {int pos = roadArray [k]; int positionOfRoadName = pos + 7; int endOfPositionOfRoadName = pos + 10; nameOfRoadArray [k] = line.substring (positionOfRoadName, endOfPositionOfRoadName); }
Ryhmän nimiOfRoudArray tulee täyttää kaikki ilmoitetut liikenneruuhkat.
Seuraavaksi aiot tarkistaa, onko tiesi liikenneruuhkan sisältävien teiden joukossa. Tulosta nimiOfRoadArray saadaksesi tiet tietollesi. Tee tämä lisäämällä Serial.println (nameOfRoadArray [k]); toiseen silmukkaan, kuten:
for (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]); }
Jos se on oikein, näet kaikki tiet, joissa on ruuhkaa, sarjamittarissa.
Ennen kuin kirjoitat viimeisen For -silmukan, sinun on ilmoitettava boolean globaalimuuttujana. Boolean, nimeltään trafficJam, on oletuksena epätosi ja muuttuu, jos toiminto extractData palauttaa true ruuhkalle. Seuraava koodi tulee.ino -tiedoston päälle:
boolean trafficJam = epätosi;
Silmukka nro 3: Tarkista, onko tie, tässä tapauksessa A1, liikenneruuhkien luettelossa.
for (int l = 0; l <20; l ++) {if (nameOfRoadArray [l] == "A1 \" ")) {// muuta A1 tieksi, joka suosii liikennettäJam = true;}
Jos tulostat liikenneruuhkan sarjamonitoriin, tiedät, onko A1: ssä liikenneruuhka vai ei.
Laita tämä koodi extractData -toiminnon alareunaan:
Sarja.println (trafficJam); // katso onko ruuhkaa
Näiden tietojen avulla aiomme jatkaa järjestelmän palautteen käsittelyä vaiheessa 5.
Vaihe 4: Asenna liipaisin
Koska voimme nyt hakea tiedot onnistuneesti lähteestä, on aika rakentaa anturi, joka käynnistää nodeMCU: n suorittamaan funktion extractData. Päätin tehdä analogisen anturin kynnysmatostani. Voit vaihtaa liipaisimen käyttämällä toista anturia.
Analogisen anturin rakentaminen
Käytin 2 kpl alumiinifoliota, kaksi hyppyjohtoa ja sientä.
Poraa sieneen reikä, tämä on paikka, jossa alumiinifolio koskettaa. Liimaa alumiinifolio sienen molemmille puolille. Liitä hyppyjohdot alumiinifolioon. Kytke hyppyjohtimet solmuun MCU. Toinen puoli A0-nastaiseen ja toinen V3-nastaiseen. Laita sieni kynnysmaton alle ja olet juuri vaihtanut ovimaton anturiksi. Mahtava!
Koodi arvon lukemiseksi anturista nähdäkseen, seisoiko joku ovimatolla:
int sensorValue = analoginenLue (A0);
if (sensorValue == 1024) {extractData (); }
Kun alumiinifolio koskettaa (kun joku seisoo matolla), sensorValue on 1024. Tästä seuraa, että toiminto extractData () syttyy. Ja juuri sitä haluamme järjestelmän tekevän.
Vaihe 5: Suunnittelun palaute
Käytin LED -nauhaa antaakseni palautetta käyttäjälle. Liikenneruuhkan sattuessa valo muuttuu punaiseksi. Kun tie on hyvä mennä, se muuttuu vihreäksi. Käytin adafruit neopixel -kirjastoa LED -nauhan hallintaan.
Kirjoita tämä koodi tiedoston yläosaan varmistaaksesi, että LED -nauha on määritetty:
#sisältää
#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);
Kirjoita seuraava koodi asetustoimintoon:
// neopikseli
pixels.begin (); pixels.show ();
Ja seuraava koodi silmukkafunktiossa:
jos (trafficJam == true) {
for (int i; i <PIXEL_COUNT; i ++) {pixels.setPixelColor (i, 255, 0, 0); // punaiset pikselit.show (); viive (200); }} else {for (int i; i <PIXEL_COUNT; i ++) {pixels.setPixelColor (i, 0, 255, 0); // vihreät pikselit.show (); viive (200); }
Yllä olevassa koodissa on if/else -funktio. Kun toiminto extractData palauttaa liikenneruuhkan, LED -nauha muuttuu punaiseksi. Jos ei, LED -nauha muuttuu vihreäksi.
Vaihe 6: Suorita koodi
Jos suoritamme koko koodin nyt, anturin ja valon pitäisi toimia. Kun seisot ovimatolla, anturi muodostaa yhteyden ja extractData -toiminto käynnistyy. Kun etsimäsi tie on läsnä tien nimiryhmässä, LED -nauha muuttuu punaiseksi merkiksi liikenneruuhkasta. Jos se ei ole taulukossa, LED -nauha muuttuu vihreäksi ja tiedät, että olet valmis lähtemään!
Turvallista matkaa ja kiitos lukemisesta. Toivottavasti löysit inspiraatiota tai tietoa. Jos saat palautetta, vastaa rohkeasti!
Suositeltava:
CPC -luokan likaisuuden tarkistus: 10 vaihetta
CPC Class Polution Checker: Hei, olen belgialainen opiskelija ja tämä on ensimmäinen iso projektini kandidaatin tutkinnolleni! Tässä ohjeessa kerrotaan kuinka tehdä ilmamäärämittari suljettuihin tiloihin, etenkin luokkahuoneisiin! Kuulen, että ajattelet miksi tämä projekti? No, kaikki on
TouchFree: Automaattinen lämpötilan tarkistus ja maskin tunnistuskioski: 5 vaihetta
TouchFree: Automaattinen lämpötilan tarkistus ja naamioiden tunnistuskioski: Kun maat ympäri maailmaa avautuvat uudelleen, uuden koronaviruksen kanssa elämisestä on tulossa uusi elämäntapa. Mutta viruksen leviämisen pysäyttämiseksi meidän on erotettava koronavirustartunnan saaneet ihmiset muista. CDC: n mukaan kuume on
DIY taskuilman lämpötilan tarkistus: 6 vaihetta
DIY taskuilman lämpötilan tarkistus: Käytämme Nokia 5110 -näyttöä, digitaalista lämpötilamoduulia ja Arduino Unoa tämän tekemiseen. Tarvitaan myös 9 V: n liitin, jossa on johdot, ei piippu, sekä kytkin ja johdot
Jääkaapin oven tarkistus: 5 vaihetta
Jääkaapin oven tarkistus: Johdanto: Nykyään ihmisillä on " älykäs " jääkaappi, joka näyttää jääkaapin lämpötilan. Joissakin jääkaappeissa on myös hälytyksiä, jotka muistuttavat käyttäjää siitä, että ovi ei ole kiinni. Kaikilla ei kuitenkaan ole tällaista "älykästä"
Akun tarkistus lämpötilan ja akun valinnan kanssa: 23 vaihetta (kuvien kanssa)
Akun tarkistus Lämpötilan ja akun valinnalla: Akun kapasiteettimittari Tällä laitteella voit tarkistaa 18650 akun, hapon ja muiden kapasiteetin (suurin testattu akku on 6 V: n happoakku 4,2A). Testin tulos on milliampeereja/tunti. Luon tämän laitteen, koska sitä tarvitaan tarkistamaan