Obsah:
- Krok 1: Připojte NodeMCU k Wi-Fi
- Krok 2: Vyžádejte si data od HTTPS od ANWB.nl
- Krok 3: Proměňte data v použitelné informace
- Krok 4: Nainstalujte spoušť
- Krok 5: Zpětná vazba k návrhu
- Krok 6: Spusťte kód
Video: Kontrola hlášení provozu (NL) s rohožkou: 6 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:22
V tomto pokynu popíšu, jak postavit rohožku, která bude kontrolovat dopravní hlášení nizozemských dálnic. Jakmile vystoupíte na rohožku a na vaší trase bude dopravní zácpa, podložka se změní na červenou. Pokud nedojde k dopravní zácpě, podložka zezelená.
Budu pracovat na NodeMCU 1.0 (modul ESP0-12E). Kód pro tento projekt by mohl fungovat i na jiných zařízeních (např. Desky Arduino). Tento projekt vychází z nizozemského zdroje dopravních zpráv ANWB.
Co pro tento projekt potřebujeme:
- NodeMCU - propojovací vodiče - LED světlo nebo pásek - analogový senzor (hliníková fólie, houba) - připojení Wi -Fi - rohožka
Kroky, které musíme udělat:
1. Připojte NodeMCu k Wi-Fi 2. Vyžádejte si data přes HTTPS z ANWB.nl 3. Proměňte data v použitelné Informace 4. Nainstalujte spoušť 5. Navrhněte zpětnou vazbu
Krok 1: Připojte NodeMCU k Wi-Fi
Tento krok ukáže, jak úspěšně provést HTTPSRequest, abyste zjistili, zda je zařízení připojeno k internetu.
Nejprve nainstalujte knihovnu ESP8266 do Arduino IDE. Otevřete z příkladů ESP8266>
Vyplňte přihlašovací údaje k Wi-Fi v horní části kódu, jak je uvedeno níže:
const char* ssid = "YOUR_SSID";
const char* heslo = "YOUR_PASS";
Nahrajte kód do svého zařízení a zkontrolujte, zda se NodeMCU připojuje k internetu. Příklad HTTPSRequest používá jako výchozí pro získávání informací Github. Když je HTTPSRequest úspěšný, obdržíte data Github na sériovém monitoru.
Krok 2: Vyžádejte si data od HTTPS od ANWB.nl
V tomto druhém kroku změníte zdroj dat z výchozího na zdroj potřebný pro tento projekt: ANWB.nl.
V horní části kódu změňte char* host na www.anwb.nl (nebo jiný zdroj, ze kterého chcete získat data):
const char* host = "www.anwb.nl";!! Pokud použijete jiný zdroj, krok 3 se bude lišit od mého kódu. Krok 3 vyžaduje specifické kódování k získání použitelných informací!
Dále změňte adresu URL řetězce v nastavení funkce na "/feeds/gethf", cestu, odkud jsou informace převzaty:
Řetězec url = "/feeds/gethf";!! Pokud používáte jiný zdroj, použijte cestu ke svému zdroji!
Když nahrajete kód, měli byste dostat odpověď se všemi údaji z www.anwb.nl/feeds/gethf. Tento kód je uložen do řetězce s názvem line.
Krok 3: Proměňte data v použitelné informace
Až dosud kód běžel pouze při spuštění nebo resetování NodeMCU, protože veškerý kód je ve funkci nastavení. Chcete -li nastavit spouštěč pro nepřetržité spouštění kódu, musíte změnit pozici kódu, který spouští požadavek HTTPS. Pod funkci smyčky přidáte další funkci. Nazval jsem to neplatný výpisData:
extractData () {
}
Zkopírujte část kódu z funkce nastavení do extractData (). Začněte následujícím řádkem až do konce funkce nastavení:
if (! client.connect (host, Kód je nyní ve vaší nové funkci, takže zkopírujte kód z funkce nastavení.
Dále zavolejte funkci extractData ve funkci smyčky a přidejte nějaké zpoždění, aby měl nodeMCU čas na odpočinek:
prázdná smyčka () {
extractData (); zpoždění (30 000); // toto bude později odstraněno, až budeme mít analogový senzor}
Vzhledem k tomu, že přijímaná data jsou uložena v řetězci a jsou potřeba pouze části tohoto řetězce, musíte napsat několik smyček pro.
Nejprve zkontrolujte všechny polohy slova „silnice“. Za slovem „silnice“bude následovat název silnice (A1, A2 atd.).
Než začnete psát smyčky for, musíte deklarovat některé proměnné, které budete používat:
int noOfPos = 0;
boolean hasRunOnce = false; int od = 0; int roadArray [20];
Nyní je čas napsat několik smyček. Ve spodní části funkce extractData jsem napsal smyčky for. Zkoušel jsem to rozdělit na samostatné funkce, ale nepodařilo se mi to.
Pro smyčku č. 1: najděte pozice slova silnice v řetězci:
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 = true; }
Dále zkontrolujte, jaké silnice mají dopravní zácpu, pomocí poloh smyčky for shora. Pozice názvu silnic je vždy stejná a začíná 7 znaky a končí 10 znaky za slovem silnice.
Nyní definujeme název poleOfRoadArray, který bude vyplněn v další smyčce for:
Název řetězceOfRoadArray [20];
Pro smyčku č. 2: Najděte všechny názvy silnic zadáním od pro smyčku č. 1
pro (int k = 0; k <20; k ++) {int pos = roadArray [k]; int poziceOfRoadName = pos + 7; int endOfPositionOfRoadName = pos + 10; nameOfRoadArray [k] = line.substring (positionOfRoadName, endOfPositionOfRoadName); }
Název poleOfRoudArray by měl být vyplněn všemi signalizovanými zácpami.
Dále zkontrolujete, zda je vaše silnice v řadě silnic se zácpou. Vytiskněte nameOfRoadArray, abyste získali silnice v datech. To provedete přidáním Serial.println (nameOfRoadArray [k]); do 2. smyčky pro jako:
pro (int k = 0; k <20; k ++) {int pos = roadArray [k]; int poziceOfRoadName = pos + 7; int endOfPositionOfRoadName = pos + 10; nameOfRoadArray [k] = line.substring (positionOfRoadName, endOfPositionOfRoadName); Serial.println (nameOfRoadArray [k]); }
Pokud je to správné, uvidíte na sériovém monitoru všechny silnice s dopravní zácpou.
Před napsáním poslední smyčky For musíte deklarovat boolean jako globální proměnnou. Boolean, nazvaný trafficJam, je ve výchozím nastavení false a změní se, pokud funkce extractData vrátí true pro dopravní zácpu. Následující kód přejde na začátek souboru.ino:
boolean trafficJam = false;
Pro smyčku č. 3: Zkontrolujte, zda je silnice, v tomto případě A1, v seznamu dopravních zácp.
for (int l = 0; l <20; l ++) {if (nameOfRoadArray [l] == "A1 \" ") {// změňte A1 na silnici ve svůj prospěch trafficJam = true;}
Pokud tisknete trafficJam na sériovém monitoru, víte, zda je na A1 dopravní zácpa nebo ne.
Vložte tento kód do dolní části funkce extractData:
Serial.println (trafficJam); // podívejte se, jestli není dopravní zácpa
S těmito informacemi budeme dále pracovat na zpětné vazbě systému v kroku 5.
Krok 4: Nainstalujte spoušť
Protože nyní můžeme data úspěšně načíst ze zdroje, je na čase postavit senzor, který spustí nodeMCU ke spuštění funkce extractData. Rozhodl jsem se vyrobit analogový senzor z rohožky. Spoušť můžete změnit pomocí jiného senzoru.
Budování analogového senzoru
Použil jsem 2 kusy hliníkové fólie, dva propojovací vodiče a houbu.
Do houbičky vyvrtejte otvor, to je místo, kde dojde ke kontaktu hliníkových fólií. Na obě strany houby přilepte hliníkovou fólii. Připojte propojovací vodiče k hliníkové fólii. Připojte propojovací vodiče k nodeMCU. Jedna strana na pin A0 a druhá na pin V3. Vložte houbu pod rohožku a právě jste změnili rohožku na senzor. Skvělý!
Kód pro čtení hodnoty ze senzoru, aby se zjistilo, zda někdo stojí na rohožce:
int sensorValue = analogRead (A0);
if (sensorValue == 1024) {extractData (); }
Když hliníková fólie naváže kontakt (když někdo stojí na podložce), hodnota sensorValue je 1024. Výsledkem je spuštění funkce extractData (). A přesně to chceme, aby systém dělal.
Krok 5: Zpětná vazba k návrhu
Použil jsem LEDstrip k poskytnutí zpětné vazby uživateli. Pokud dojde k dopravní zácpě, kontrolka bude mít červenou barvu. Když je dobré jít, zezelená. K ovládání LEDstripu jsem použil knihovnu adafruit neopixel.
Napište tento kód do horní části souboru, abyste se ujistili, že je LEDstrip definován:
#zahrnout
#define PIXEL_PIN D5 #define PIXEL_COUNT 10 #define PIXEL_TYPE NEO_GRB + NEO_KHZ800 Adafruit_NeoPixel pixely = Adafruit_NeoPixel (PIXEL_COUNT, PIXEL_PIN, PIXEL_TYPE);
Napište další kód do funkce nastavení:
// neopixel
pixely.begin (); pixely.show ();
A následující kód ve funkci smyčky:
if (trafficJam == true) {
pro (int i; i <PIXEL_COUNT; i ++) {pixely.setPixelColor (i, 255, 0, 0); // červené pixely.show (); zpoždění (200); }} else {for (int i; i <PIXEL_COUNT; i ++) {pixels.setPixelColor (i, 0, 255, 0); // zelené pixely.show (); zpoždění (200); }
V kódu výše je funkce if/else. Když funkce extractData vrátí přítomnost dopravní zácpy, pruh LED zčervená. Pokud ne, LED pás se změní na zelenou.
Krok 6: Spusťte kód
Pokud nyní spustíme kompletní kód, senzor a světlo by měly fungovat. Když se postavíte na rohožku, senzor se připojí a spustí se funkce extrahovat data. Když je v řadě názvů silnic hledaná silnice, LEDstrip se rozsvítí červeně, což signalizuje dopravní zácpu. Pokud není v poli, LEDstrip se rozsvítí zeleně a vy víte, že je dobré jít!
Šťastnou cestu a děkuji za přečtení. Doufám, že jste našli inspiraci nebo informace. Pokud máte nějakou zpětnou vazbu, neváhejte odpovědět!
Doporučuje:
Kyberneticko-fyzické zabezpečení inteligentního parkování a řízení provozu: 6 kroků
Kyberneticko-fyzické zabezpečení inteligentního parkování a řízení provozu: Internet roste s miliardami zařízení, včetně automobilů, senzorů, počítačů, serverů, ledniček, mobilních zařízení a mnoha dalších, nebývalým tempem. To přináší více rizik a zranitelností v infrastruktuře, provozu a
Automatizované zařízení pro řízení provozu: 20 kroků
Automatizované zařízení pro řízení provozu: Varování: Před zahájením stavebního procesu se ujistěte, že používáte správné OOP a dodržujete bezpečnostní předpisy OSHA. Používejte bezpečnostní vybavení, jako jsou ochranné brýle, ucpávky do uší a nárazové rukavice. Požadované díly: 1 " x 1 " čtvercová trubka - 5
Kartonový robot pro řízení provozu: 8 kroků
Cardboard Traffic Control Robot: Jsem v soutěži o lepenku. Pokud se vám můj návod líbí, hlasujte pro něj! Po prostudování tohoto návodu se naučíte navrhovat a používat Cruizmo Cis. Cruizmo Cis je inteligentní robot, který řídí provoz. Ovládá oba vozy
SMART MAKE HATC - domácí řízení letového provozu se 4x RTL -SDR (50 $): 7 kroků
SMART MAKE HATC - domácí řízení letového provozu se 4x RTL -SDR (50 $): Důkaz koncepce levných HATC - domácí letový provoz ControlBelow je jednoduše sbírka informací o příjmu letového provozu, odkaz na nějaký software, který má být použit a návrh na důkaz koncepce hardwarového systému
Jak uvést tento starý počítač do provozu: 8 kroků
Jak dát ten starý počítač do užívání: ČEKEJTE! Nevyhazujte ten starý notebook nebo stolní počítač. Můžete jim dát nový život. Stačí se podívat na můj Instructable