![Provjera izvještaja o saobraćaju (NL) sa otiračem: 6 koraka Provjera izvještaja o saobraćaju (NL) sa otiračem: 6 koraka](https://i.howwhatproduce.com/images/006/image-16284-21-j.webp)
Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-23 14:37
![Provjera izvještaja o saobraćaju (NL) sa otiračem Provjera izvještaja o saobraćaju (NL) sa otiračem](https://i.howwhatproduce.com/images/006/image-16284-22-j.webp)
U ovom uputstvu ću opisati kako izgraditi otirač koji će provjeravati izvještaje o saobraćaju holandskih autoputeva. Nakon što izađete na otirač i na vašoj ruti dođe do gužve, prostirka će postati crvena. Kada 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 projekt se temelji na holandskom izvoru za izvještaje o prometu, ANWB.
Šta nam je potrebno za ovaj projekat:
- NodeMCU - Žice za kratkospojnike - LED svjetlo ili traka - Analogni senzor (aluminijska folija, spužva) - Wi -Fi veza - otirač
Koraci koje moramo preduzeti:
1. Povežite 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 napraviti uspješan HTTPSRequest da vidite je li uređaj spojen na internet.
Prvo instalirajte ESP8266 biblioteku u Arduino IDE. Otvorite iz primjera ESP8266>
Popunite svoje vjerodajnice za Wi-Fi na vrhu koda, kao što je prikazano u nastavku:
const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASS";
Otpremite kôd na svoj uređaj i provjerite povezuje li se NodeMCU s internetom. Primjer HTTPSRequest koristi Github kao zadanu vrijednost za dobivanje informacija. Kada je HTTPSRequest uspio, primate 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 zahtijeva posebno kodiranje za preuzimanje korisnih informacija!
Zatim promijenite URL niza u postavci funkcije na "/feeds/gethf", put s kojeg se preuzimaju informacije:
String url = "/feeds/gethf";!! Ako koristite drugi izvor, koristite put do vašeg izvora!
Kada učitate kôd, trebali biste dobiti odgovor sa svim podacima sa www.anwb.nl/feeds/gethf. Ovaj kôd se sprema u niz koji se naziva line.
Korak 3: Pretvorite podatke u korisne informacije
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 ExtractData:
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 vrijeme za odmor:
void loop () {{100} {101}
extraData (); kašnjenje (30000); // ovo će biti uklonjeno 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'. Iza 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 for petlje na dnu funkcije extraData. Pokušao sam to podijeliti u zasebne funkcije, ali nisam uspio.
Za petlju br. 1: pronađite položaje riječi cesta u nizu:
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 ("road \": ")) {i = line.length (); } hasRunOnce = true; }
Zatim provjerite na kojim cestama postoji zastoj, 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 ime nizaOfRoadArray, koji će se popuniti u sljedećoj for petlji:
String nameOfRoadArray [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 = poz + 7; int endOfPositionOfRoadName = pos + 10; nameOfRoadArray [k] = line.substring (positionOfRoadName, endOfPositionOfRoadName); }
Ime nizaOfRoudArray treba popuniti svim signaliziranim gužvama u prometu.
Zatim ćete provjeriti nalazi li se vaša cesta na nizu cesta s gužvom u prometu. Odštampajte nazivOfRoadArray da biste dobili podatke o putevima. 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 = poz + 7; int endOfPositionOfRoadName = pos + 10; nameOfRoadArray [k] = line.substring (positionOfRoadName, endOfPositionOfRoadName); Serial.println (nameOfRoadArray [k]); }
Ako je ispravno, na serijskom monitoru vidjet ćete sve ceste sa zastojem u prometu.
Prije pisanja posljednje For petlje, morate deklarirati boolean kao globalnu varijablu. Logičko ime, koje se naziva trafficJam, prema zadanim postavkama je false i promijenit će se ako funkcija ExtraData vrati true za prometnu gužvu. Sljedeći kod 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 put koji vam odgovara 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 ima li zastoja
S ovim informacijama ćemo dalje raditi na povratnim informacijama sistema u koraku 5.
Korak 4: Instalirajte okidač
![Instalirajte okidač Instalirajte okidač](https://i.howwhatproduce.com/images/006/image-16284-23-j.webp)
![Instalirajte okidač Instalirajte okidač](https://i.howwhatproduce.com/images/006/image-16284-24-j.webp)
![Instalirajte okidač Instalirajte okidač](https://i.howwhatproduce.com/images/006/image-16284-25-j.webp)
Budući da sada možemo uspješno dohvatiti podatke iz izvora, vrijeme je za izgradnju senzora koji će pokrenuti nodeMCU za pokretanje funkcije extraData. Odlučio sam napraviti analogni senzor od otirača. Okidač možete promijeniti pomoću drugog senzora.
Izgradnja 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 kratkospojnike na čvor mCU. Jedna strana na A0-pin, a druga na V3-pin. Stavite spužvu ispod otirača i upravo ste promijenili otirač u senzor. Awesome!
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 (); }
Kada aluminijska folija dolazi u kontakt (kada netko stoji na prostirci), vrijednost senzora je 1024. To rezultira aktiviranjem funkcije extraData (). I upravo to želimo da sistem uradi.
Korak 5: Povratne informacije o dizajnu
Koristio sam LED traku za povratne informacije. Kada dođe do zastoja, svjetlo će postati crveno. Kad put bude dobro krenuo, postat će zelen. 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:
#include
#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
pixels.begin (); pixels.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. Kada funkcija ExtraData vrati prisutnost zastoja, 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 funkcija ExtractData će se pokrenuti. Kada je u nizu naziva cesta, put koji tražimo prisutan, LED traka će postati crvena, signalizirajući prometnu gužvu. Ako nije u nizu, LED traka će postati zelena i znate da ste spremni!
Ugodno putovanje i hvala na čitanju. Nadam se da ste pronašli inspiraciju ili informaciju. Ako imate povratne informacije, slobodno odgovorite!
Preporučuje se:
Provjera razumnosti: 5 koraka (sa slikama)
![Provjera razumnosti: 5 koraka (sa slikama) Provjera razumnosti: 5 koraka (sa slikama)](https://i.howwhatproduce.com/images/002/image-3617-19-j.webp)
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 primjetno, ali dovoljno rijetko da izazove sumnju
AvoRipe - provjera je li vaš avokado zreo: 8 koraka (sa slikama)
![AvoRipe - provjera je li vaš avokado zreo: 8 koraka (sa slikama) AvoRipe - provjera je li vaš avokado zreo: 8 koraka (sa slikama)](https://i.howwhatproduce.com/images/005/image-14765-j.webp)
AvoRipe - Provjera je li vaš avokado zreo: To se svakome dogodilo, kupite avokado, još nije sazrio. Prođe nekoliko dana, a dok sazri, već ste zaboravili na to … i za nekoliko dana, može vam poći po zlu! Na sreću za vas smo dizajnirali i napravili AvoRipe, uređaj koji provjerava vaš avokado
CPC provjera zagađenja klase: 10 koraka
![CPC provjera zagađenja klase: 10 koraka CPC provjera zagađenja klase: 10 koraka](https://i.howwhatproduce.com/images/007/image-18730-j.webp)
CPC Class Prolution Checker: Zdravo, student sam iz Belgije i ovo je moj prvi veliki projekat za moju 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 broja okretaja za mini motor DC: 11 koraka (sa slikama)
![Provjera broja okretaja za mini motor DC: 11 koraka (sa slikama) Provjera broja okretaja za mini motor DC: 11 koraka (sa slikama)](https://i.howwhatproduce.com/images/004/image-11387-j.webp)
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 ljut
Arduino filmska kamera Provjera zatvarača: 4 koraka
![Arduino filmska kamera Provjera zatvarača: 4 koraka Arduino filmska kamera Provjera zatvarača: 4 koraka](https://i.howwhatproduce.com/images/006/image-16125-20-j.webp)
Arduino Filter Camera Shutter Checker: Nedavno sam kupio dvije polovne, stare filmske kamere. Nakon što sam ih očistio, shvatio sam da brzina zatvarača može biti manja zbog prašine, korozije ili nedostatka ulja, pa sam odlučio napraviti nešto za mjerenje stvarnog vremena ekspozicije bilo koje kamere, jer, po m