Sadržaj:
- Korak 1: Povežite NodeMCU na Wi-Fi
- Korak 2: Zatražite podatke od HTTPS -a od ANWB.nl
- Korak 3: Pretvorite podatke u korisne podatke
- Korak 4: Instalirajte okidač
- Korak 5: Povratne informacije o dizajnu
- Korak 6: Pokrenite kôd
Video: Provjera izvješća o prometu (NL) s otiračem: 6 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:36
U ovom uputstvu opisat ću kako izgraditi otirač koji će provjeravati izvještaje o prometu nizozemskih autocesta. Nakon što izađete na otirač i na vašoj ruti dođe do gužve, prostirka će postati crvena. Kad nema zastoja, prostirka će postati zelena.
Radit ću na NodeMCU 1.0 (ESP0-12E Modul). Kod za ovaj projekt mogao bi raditi i na drugim uređajima (npr. Arduino ploče). Ovaj se projekt temelji na nizozemskom izvoru za izvješća o prometu, ANWB.
Ono što nam je potrebno za ovaj projekt:
- NodeMCU - Žice za kratkospojnike - LED svjetlo ili traka - Analogni senzor (aluminijska folija, spužva) - Wi -Fi veza - otirač
Koraci koje moramo poduzeti:
1. Spojite NodeMCu na Wi-Fi 2. Zatražite podatke putem HTTPS-a od ANWB.nl 3. Pretvorite podatke u korisne informacije 4. Instalirajte okidač 5. Povratne informacije o dizajnu
Korak 1: Povežite NodeMCU na Wi-Fi
Ovaj korak će pokazati kako izvršiti uspješan HTTPSRequest da biste vidjeli je li uređaj spojen na internet.
Najprije instalirajte ESP8266 knjižnicu u Arduino IDE. Otvorite iz primjera ESP8266>
Ispunite svoje vjerodajnice za Wi-Fi pri vrhu koda, kao što je prikazano u nastavku:
const char* ssid = "YOUR_SSID";
const char* lozinka = "YOUR_PASS";
Prenesite kôd na svoj uređaj i provjerite je li NodeMCU spojen na internet. Primjer HTTPSRequest koristi Github kao zadanu vrijednost za dobivanje informacija. Kad je HTTPSRequest uspio, primit ćete Github podatke u serijski monitor.
Korak 2: Zatražite podatke od HTTPS -a od ANWB.nl
U ovom drugom koraku mijenjate izvor podataka sa zadanog na izvor potreban za ovaj projekt: ANWB.nl.
Pri vrhu koda promijenite char* host u www.anwb.nl (ili iz drugog izvora iz kojeg želite dobiti podatke):
const char* host = "www.anwb.nl";!! Ako koristite drugi izvor, korak 3 će se razlikovati od mog koda. Korak 3 treba posebno kodiranje za dohvat upotrebljivih informacija!
Zatim promijenite URL niza u postavci funkcije na "/feeds/gethf", put s kojeg se uzimaju podaci:
String url = "/feeds/gethf";!! Ako koristite drugi izvor, upotrijebite put do svog izvora!
Kada učitate kôd, trebali biste dobiti odgovor sa svim podacima s www.anwb.nl/feeds/gethf. Ovaj kôd sprema se u niz koji se naziva line.
Korak 3: Pretvorite podatke u korisne podatke
Do sada se kôd pokretao samo kada je NodeMCU pokrenut ili resetiran, jer je sav kôd u funkciji postavljanja. Da biste postavili okidač za kontinuirano pokretanje koda, morate promijeniti položaj koda koji pokreće HTTPS zahtjev. Ispod funkcije petlje dodajete drugu funkciju. Nazvao sam to void ekstraktPodaci:
ExtraData () {
}
Kopirajte dio koda iz funkcije postavljanja u ExtraData (). Počnite sa sljedećim retkom do kraja funkcije postavljanja:
if (! client.connect (host, Kôd je sada u vašoj novoj funkciji, pa uklonite kopirani kôd iz funkcije postavljanja.
Zatim pozovite funkciju ExtraData u funkciji petlje i dodajte malo kašnjenja kako biste nodeMCU -u dali vremena za odmor:
void loop () {{100} {101}
extraData (); kašnjenje (30000); // ovo će se ukloniti kasnije kada budemo imali analogni senzor}
Budući da su podaci koje primate pohranjeni u nizu i potrebni su samo dijelovi ovog niza, morate napisati nekoliko for petlji.
Prvo provjerite sve položaje riječi 'cesta'. Nakon riječi 'cesta' slijedi naziv ceste (A1, A2 itd.).
Prije nego počnete pisati for petlje, morate deklarirati neke varijable koje ćete koristiti:
int noOfPos = 0;
boolean hasRunOnce = false; int od = 0; int roadArray [20];
Sada je vrijeme da napišete neke petlje. Napisao sam petlje for na dnu funkcije extraData. Pokušao sam ga podijeliti u zasebne funkcije, ali nisam uspio.
Za petlju br. 1: pronađite položaje riječi cesta u retku niza:
for (int i = 0; i <line.length (); i ++) {int pos = line.indexOf ("cesta \": ", od); roadArray [noOfPos] = poz; noOfPos+= 1; from = poz + 1; if (hasRunOnce == true && pos == line.indexOf ("cesta \": ")) {i = line.length (); } hasRunOnce = true; }
Zatim provjerite na kojim cestama postoji prometna gužva, koristeći položaje for petlje odozgo. Položaj naziva cesta uvijek je isti i počinje 7 znakova, a završava 10 znakova iza riječi cesta.
Sada definiramo naziv poljaOfRoadArray, koji će se popuniti u sljedećoj for petlji:
Naziv nizaOfRoadArray [20];
Za petlju br. 2: Pronađite sve nazive cesta s unosom iz for petlje br. 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); }
Naziv poljaOfRoudArray trebao bi biti ispunjen svim signaliziranim prometnim gužvama.
Zatim ćete provjeriti nalazi li se vaša cesta u nizu cesta s gužvom u prometu. Ispišite nazivOfRoadArray da biste dobili ceste u podacima. Učinite to dodavanjem Serial.println (nameOfRoadArray [k]); u drugu for petlju poput:
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]); }
Ako je to ispravno, na serijskom monitoru vidjet ćete sve ceste s gužvom u prometu.
Prije nego što napišete zadnju petlju For, morate deklarirati boolean kao globalnu varijablu. Logički naziv, koji se naziva trafficJam, prema zadanim je postavkama netočan i promijenit će se ako funkcija extraData vrati vrijednost true za prometnu gužvu. Sljedeći kôd ide iznad.ino datoteke:
boolean trafficJam = false;
Za petlju br. 3: Provjerite je li cesta, u ovom slučaju A1, na popisu prometnih gužvi.
for (int l = 0; l <20; l ++) {if (nameOfRoadArray [l] == "A1 \" ") {// promijenite A1 u cestu u svoju korist trafficJam = true;}
Ako ispisujete trafficJam na serijskom monitoru, znate postoji li zastoj na A1 ili ne.
Stavite ovaj kôd na dno funkcije extraData:
Serial.println (trafficJam); // vidjeti postoji li prometna gužva
S ovim podacima nastavit ćemo dalje raditi na povratnim informacijama sustava u koraku 5.
Korak 4: Instalirajte okidač
Budući da sada možemo uspješno dohvatiti podatke iz izvora, vrijeme je za izgradnju senzora koji će pokrenuti nodeMCU za pokretanje funkcije ExtractData. Odlučio sam napraviti analogni senzor od otirača. Okidač možete promijeniti pomoću drugog senzora.
Izrada analognog senzora
Koristio sam 2 komada aluminijske folije, dvije kratkospojne žice i spužvu.
Izbušite rupu u spužvi, to je mjesto gdje će aluminijske folije doći u kontakt. Zalijepite aluminijsku foliju s obje strane spužve. Spojite kratkospojnike na aluminijsku foliju. Spojite žice kratkospojnika na čvorMCU. Jedna strana na A0-pin, a druga na V3-pin. Stavite spužvu ispod otirača i upravo ste promijenili otirač u senzor. Super!
Kôd za očitavanje vrijednosti sa senzora da biste vidjeli stoji li netko na otiraču:
int sensorValue = analogRead (A0);
if (sensorValue == 1024) {extraData (); }
Kad aluminijska folija dolazi u kontakt (kad netko stoji na prostirci), vrijednost osjetnika je 1024. To rezultira aktiviranjem funkcije extraData (). I upravo to želimo da sustav učini.
Korak 5: Povratne informacije o dizajnu
Koristio sam LED traku za povratne informacije. Kad dođe do gužve u prometu, svjetlo će postati crveno. Kad je cesta dobra, postat će zelena. Koristio sam adafruit neopixel biblioteku za kontrolu LED trake.
Napišite ovaj kôd na vrh datoteke kako biste bili sigurni da je LED traka definirana:
#uključi
#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);
U funkciju postavljanja upišite sljedeći kôd:
// neopixel
pikseli.begin (); pikseli.show ();
I sljedeći kod u funkciji petlje:
if (trafficJam == true) {
za (int i; i <PIXEL_COUNT; i ++) {piksela.setPixelColor (i, 255, 0, 0); // crveni pikseli.show (); kašnjenje (200); }} else {for (int i; i <PIXEL_COUNT; i ++) {pixels.setPixelColor (i, 0, 255, 0); // zeleni pikseli.show (); kašnjenje (200); }
U gornjem kodu postoji funkcija if/else. Kad funkcija ExtraData vrati prisutnost prometne gužve, LED traka će postati crvena. Ako nije, LED traka će postati zelena.
Korak 6: Pokrenite kôd
Ako sada pokrenemo cijeli kôd, senzor i svjetlo bi trebali raditi. Kada stojite na otiraču, senzor će se spojiti i pokrenut će se funkcija ExtraData. Kada je u nizu naziva cesta prisutna cesta koju tražimo, LED traka će postati crvena, signalizirajući prometnu gužvu. Ako nije u nizu, LED traka će postati zelena i znate da ste spremni!
Sretno vam putovanje i hvala na čitanju. Nadam se da ste pronašli inspiraciju ili informaciju. Ako imate povratne informacije, slobodno odgovorite!
Preporučeni:
Provjera razumnosti: 5 koraka (sa slikama)
Provjera razumnosti: Ovaj projekt se bavi zdravim razumom ili redovitom provjerom. Najbolji način da se to dogodi je izgradnja maske koja nasumično svijetli očima. Dovoljno često da je to uočljivo, ali rijetko da izazove sumnju
AvoRipe - provjera je li vaš avokado zreo: 8 koraka (sa slikama)
AvoRipe - Provjera je li vaš avokado zreo: To se dogodilo svima, kupite avokado, još nije zreo. Prođe nekoliko dana, a dok sazri, već ste zaboravili na to … i za nekoliko dana, može vam se pokvariti! Srećom po vas, dizajnirali smo i napravili AvoRipe, uređaj koji provjerava vaš avokado
CPC provjera zagađenja klase: 10 koraka
CPC Class Prolution Checker: Zdravo, student sam iz Belgije i ovo je moj prvi veliki projekt za moju prvostupničku diplomu! Ovaj Instructable govori o tome kako napraviti mjerač zračnog zagađenja za zatvorene prostorije, posebno učionice! Čujem vas kako razmišljate zašto ovaj projekt? Pa sve je sta
Provjera vrata hladnjaka: 5 koraka
Provjera vrata hladnjaka: Uvod: U današnje vrijeme ljudi imaju " pametan " hladnjak koji vam može pokazati temperaturu hladnjaka. Neki hladnjaci također imaju alarme koji podsjećaju korisnika da vrata nisu blizu. Međutim, nemaju svi ovakvu vrstu " pametnog & q
Provjera broja okretaja za mini motor DC: 11 koraka (sa slikama)
Kontrola broja okretaja za mini motor Dc: Obrtaj u minuti, ukratko je brzina rotacije izražena u okretajima u minuti. alati za mjerenje broja okretaja obično koriste tahometar. Prije prošle godine pronašao sam zanimljiv projekt koji je napravio electro18, i to je moja inspiracija, bio je lud