Orodha ya maudhui:
- Hatua ya 1: Unganisha NodeMCU na Wi-Fi
- Hatua ya 2: Omba Takwimu Kutoka kwa HTTPS Kutoka ANWB.nl
- Hatua ya 3: Badili data kuwa Habari inayoweza kutumika
- Hatua ya 4: Sakinisha Trigger
- Hatua ya 5: Maoni ya Kubuni
- Hatua ya 6: Endesha Msimbo
Video: Ripoti ya Trafiki Angalia (NL) Pamoja na Doormat: Hatua 6
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:52
Katika maelezo haya nitaelezea jinsi ya kujenga mlango ambao utakagua ripoti za trafiki za barabara kuu za Uholanzi. Mara tu unapotoka nje kwenye mlango wako wa mlango na kuna msongamano wa trafiki kwenye njia yako, mkeka utageuka kuwa rangi nyekundu. Wakati hakuna msongamano wa magari, mkeka utageuka kuwa kijani.
Nitafanya kazi kwenye NodeMCU 1.0 (Moduli ya ESP0-12E). Nambari ya mradi huu inaweza kufanya kazi kwenye vifaa vingine pia (kwa mfano bodi za Arduino). Mradi huu unategemea chanzo cha Uholanzi cha ripoti za trafiki, ANWB.
Tunachohitaji kwa mradi huu:
- NodeMCU - waya za Jumper - Mwangaza wa LED au ukanda - sensa ya Analog (Aluminiuim foil, Sponge) - Uunganisho wa Wi-Fi - Doormat
Hatua tunazopaswa kuchukua:
1. Unganisha NodeMCu kwa Wi-Fi 2. Omba data kupitia HTTPS kutoka ANWB.nl 3. Badilisha data iwe Habari inayoweza kutumika 4. Sakinisha kichocheo 5. Maoni ya muundo
Hatua ya 1: Unganisha NodeMCU na Wi-Fi
Hatua hii itaonyesha jinsi ya kufanya HTTPSRequest iliyofanikiwa ili kuona ikiwa kifaa kimeunganishwa kwenye wavuti.
Kwanza, weka maktaba ya ESP8266 katika Arduino IDE. Fungua kutoka kwa mifano ESP8266>
Jaza hati zako za Wi-Fi juu ya nambari yako, kama inavyoonyeshwa hapa chini:
const char * ssid = "YAKO_SSID";
const char * password = "YOUR_PASS";
Pakia nambari kwenye kifaa chako na angalia ikiwa NodeMCU inaunganisha kwenye mtandao. Mfano wa HTTPSRequest hutumia Github kama chaguo-msingi kupata habari kutoka. Wakati HTTPSRequest ilifanikiwa, unapokea data ya Github kwenye mfuatiliaji wa serial.
Hatua ya 2: Omba Takwimu Kutoka kwa HTTPS Kutoka ANWB.nl
Katika hatua hii ya pili, unabadilisha chanzo cha data kutoka chaguomsingi kwenda chanzo kinachohitajika kwa mradi huu: ANWB.nl.
Juu ya nambari yako, badilisha mwenyeji wa char * kuwa www.anwb.nl (au chanzo kingine ungependa kupata data yako kutoka):
const char * mwenyeji = "www.anwb.nl";!! Ikiwa unatumia chanzo kingine, hatua ya 3 itakuwa tofauti na nambari yangu. Hatua ya 3 inahitaji usimbuaji maalum ili kupata habari inayoweza kutumika!
Ifuatayo, badilisha url ya kamba katika usanidi wa kazi kuwa "/ feeds / gethf", njia ambayo habari imechukuliwa kutoka:
Kamba url = "/ feeds / gethf";!! Ikiwa unatumia chanzo kingine tumia njia ya chanzo chako!
Unapopakia nambari hiyo unapaswa kupata majibu na data zote kutoka www.anwb.nl/feeds/gethf. Nambari hii imehifadhiwa kwenye kamba inayoitwa laini.
Hatua ya 3: Badili data kuwa Habari inayoweza kutumika
Hadi sasa, nambari hiyo iliendesha tu wakati NodeMCU ilianzishwa au kuwekwa upya, kwa sababu nambari yote iko katika kazi ya usanidi. Ili kuweka kichocheo cha kuendesha nambari kila wakati, lazima ubadilishe msimamo wa nambari inayoendesha ombi la HTTPS. Chini ya kazi ya kitanzi, unaongeza kazi nyingine. Nimeiita batiliData:
dondooData () {
}
Nakili sehemu ya nambari kutoka kwa kazi ya usanidi kwenye dondooData (). Anza na mstari ufuatao hadi mwisho wa kazi ya usanidi:
ikiwa (! mteja.connect (mwenyeji, Nambari iko katika kazi yako mpya, kwa hivyo ondoa nambari iliyonakiliwa kutoka kwa kazi ya usanidi.
Ifuatayo, piga kazi ya dondooData katika kazi ya kitanzi na uongeze kuchelewesha ili kutoa nodeMCU muda wa kupumzika:
kitanzi batili () {
dondooData (); kuchelewesha (30000); // hii itaondolewa baadaye wakati tunayo sensa ya analogi}
Kwa kuwa data unayopokea imehifadhiwa kwenye kamba na sehemu tu za kamba hii zinahitajika, lazima uandike vitanzi kadhaa.
Kwanza, angalia nafasi zote za neno 'barabara'. Baada ya neno 'barabara', jina la barabara litafuata (A1, A2, n.k.).
Kabla ya kuanza kuandika matanzi, lazima utangaze anuwai ambazo utatumia:
int noOfPos = 0;
boolean hasRunOnce = uwongo; int kutoka = 0; int roadArray [20];
Sasa ni wakati wa kuandika vitanzi. Nimeandika kwa matanzi chini ya kazi ya ExtractData. Nilijaribu kuigawanya katika kazi tofauti, lakini sikuweza kuifanya ifanye kazi.
Kwa kitanzi namba 1: pata nafasi za neno barabara kwenye laini ya kamba:
kwa (int i = 0; i <line.length (); i ++) {int pos = line.indexOf ("barabara \": ", kutoka); roadArray [noOfPos] = pos; noOfPos + = 1; from = pos + 1; ikiwa (hasRunOnce == kweli && pos == line.indexOf ("barabara \": ")) {i = line.length (); } hasRunOnce = kweli; }
Ifuatayo, angalia ni barabara gani zina msongamano wa trafiki, kwa kutumia nafasi za kitanzi kutoka juu. Msimamo wa jina la barabara huwa sawa kila wakati na huanza herufi 7 na kumaliza herufi 10 baada ya neno barabara.
Sasa tunafafanua jina la safuOfRoadArray, ambalo litajazwa kwa kitanzi kifuatacho:
Kamba jinaOfRoadArray [20];
Kwa kitanzi namba 2: Tafuta majina yote ya barabara na pembejeo kutoka kwa kitanzi no. 1
kwa (int k = 0; k <20; k ++) {int pos = roadArray [k]; int positionOfRoadName = pos + 7; int endOfPositionOfRoadName = pos + 10; nameOfRoadArray [k] = line.substring (nafasiOfRoadName, endOfPositionOfRoadName); }
Jina la safu yaOfRoudArray inapaswa kujazwa na foleni zote za trafiki zilizoonyeshwa.
Ifuatayo, utaangalia ikiwa barabara yako iko katika safu ya barabara na msongamano wa trafiki. Chapisha jinaOfRoadArray kupata barabara kwenye data. Fanya hivi kwa kuongeza Serial.println (nameOfRoadArray [k]); ndani ya 2 kwa kitanzi kama:
kwa (int k = 0; k <20; k ++) {int pos = roadArray [k]; int positionOfRoadName = pos + 7; int endOfPositionOfRoadName = pos + 10; nameOfRoadArray [k] = line.substring (nafasiOfRoadName, endOfPositionOfRoadName); Serial.println (jinaOfRoadArray [k]); }
Ikiwa ni sawa utaona barabara zote zilizo na msongamano wa trafiki kwenye mfuatiliaji wa serial.
Kabla ya kuandika kitanzi cha mwisho cha mwisho, lazima utangaze boolean kama utofauti wa ulimwengu. Boolean, inayoitwa trafikiJam kwa uwongo ni ya uwongo na itabadilika ikiwa dondoo ya kazi itarudi kweli kwa msongamano wa trafiki. Nambari ifuatayo inaendelea juu ya faili ya.ino:
trafiki ya booleanJam = uwongo;
Kwa kitanzi namba 3: Angalia ikiwa barabara, katika kesi hii A1, iko katika orodha ya foleni za trafiki.
kwa (int l = 0; l <20; l ++) {if (nameOfRoadArray [l] == "A1 \" ") {// badilisha A1 kuwa barabara ya upendeleo wako trafikiJam = kweli;}
Ikiwa unachapisha trafikiJam kwenye mfuatiliaji wa serial, unajua ikiwa kuna msongamano wa trafiki kwenye A1 au la.
Weka nambari hii chini ya kazi ya dondooData:
Serial.println (trafikiJam); // angalia ikiwa kuna msongamano wa trafiki
Kwa habari hii tutafanya kazi zaidi juu ya maoni ya mfumo katika hatua ya 5.
Hatua ya 4: Sakinisha Trigger
Kwa kuwa sasa tunaweza kupata data vizuri kutoka kwa chanzo, ni wakati wa kujenga sensa ambayo itasababisha nodeMCU kuendesha dondoo la kazi. Nilichagua kutengeneza sensa ya analog nje ya mlango wangu. Unaweza kubadilisha kichocheo kwa kutumia sensa nyingine.
Kujenga sensorer ya analog
Nilitumia vipande 2 vya karatasi ya aluminium, waya mbili za kuruka na sifongo.
Piga shimo kwenye sifongo, hapa ndio mahali ambapo foil za alumini zitawasiliana. Gundi karatasi ya alumini pande zote mbili za sifongo. Unganisha waya za jumper kwenye foil ya aluminium. Unganisha waya za kuruka kwenye nodeMCU. Upande mmoja kwa pini ya A0 na nyingine kwa pini ya V3. Weka sifongo chini ya mlango wako na umebadilisha mlango wako kuwa sensa. Ajabu!
Nambari ya kusoma thamani kutoka kwa sensa ili kuona ikiwa mtu amesimama kwenye mlango wa mlango:
sensor ya ndaniValue = AnalogRead (A0);
ikiwa (sensorValue == 1024) {extractData (); }
Wakati karatasi ya alumini inapowasiliana (wakati mtu amesimama kwenye mkeka), sensorValue ni 1024. Hii inasababisha kazi ya dondooData () kupiga kazi. Na hiyo ndio tunataka mfumo ufanye.
Hatua ya 5: Maoni ya Kubuni
Nilitumia LEDstrip kutoa maoni kwa mtumiaji. Wakati kuna msongamano wa magari, taa hiyo itakuwa na rangi nyekundu. Wakati barabara ni nzuri kwenda, itageuka kijani. Nilitumia maktaba ya neopixel ya adafruit kudhibiti LED yangu.
Andika nambari hii juu ya faili yako ili kuhakikisha kuwa LED inaelezewa:
# pamoja
#fafanua PIXEL_PIN D5 #fasili PIXEL_COUNT 10 #fafanua PIXEL_TYPE NEO_GRB + NEO_KHZ800 Adafruit_NeoPixel pixels = Adafruit_NeoPixel (PIXEL_COUNT, PIXEL_PIN, PIXEL_TYPE);
Andika nambari inayofuata katika kazi ya usanidi:
// neopikseli
saizi. anza (); saizi. onyesha ();
Na nambari ifuatayo katika kazi ya kitanzi:
ikiwa (trafikiJam == kweli) {
kwa (int i; i <PIXEL_COUNT; i ++) {pixels.setPixelColor (i, 255, 0, 0); // saizi nyekundu. onyesha (); kuchelewesha (200); }} mwingine {for (int i; i <PIXEL_COUNT; i ++) {pixels.setPixelColor (i, 0, 255, 0); // saizi za kijani. onyesha (); kuchelewesha (200); }
Katika nambari hapo juu kuna kazi ya if / else. Wakati kazi dondooData inarudi uwepo wa msongamano wa trafiki LEDstrip itageuka kuwa nyekundu. Ikiwa sivyo, taa ya LED itageuka kuwa kijani.
Hatua ya 6: Endesha Msimbo
Ikiwa tunaendesha nambari kamili sasa, sensa na taa inapaswa kufanya kazi. Unaposimama kwenye mlango wa mlango, sensor itaunganisha na kazi ya ExtractData itaendesha. Wakati katika safu ya majina ya barabara, barabara tunayotafuta iko, LEDstrip itageuka kuwa nyekundu, ikiashiria msongamano wa trafiki. Ikiwa haiko katika safu, LEDstrip itageuka kuwa kijani na unajua uko vizuri kwenda!
Kuwa na safari salama na asante kwa kusoma. Natumaini umepata msukumo au habari. Ikiwa umepata maoni, jisikie huru kujibu!
Ilipendekeza:
Ripoti ya Mara kwa Mara ya Excel: Hatua 6
Ripoti ya Mara kwa Mara ya Excel: Hapa kuna vidokezo vyangu vya ripoti za matumizi ya mara kwa mara katika Excel 2010. Katika video ya mafunzo hapa chini, ripoti hii inatuambia juu ya matumizi maalum ya umeme, maji, oksijeni, nitrojeni kwa tani ya bidhaa zilizomalizika, kulingana na kila wiki, kila mwezi, robo
Loactor na Ikiwa Ripoti ya Moja kwa Moja Inatumia Bot Bot: Hatua 4
Loactor na Ikiwa Ripoti ya Moja kwa Moja Inatumia Bot Bot: Kupitia WhatsApp, pata vigeuzi (mahali, urefu, shinikizo …) kutoka kwa NodeMCU kama inavyoombwa au tuma maagizo kwa NodeMCU kupitia API ya Twilio. Kwa wiki chache, nimekuwa nikifanya kazi na API ya Twilio, haswa kwa ujumbe wa WhatsApp, na hata imeundwa ap
Ripoti ya Moja kwa moja ya Covid Kutumia Raspberry Pi: Hatua 6
Ripoti ya Moja kwa moja ya Covid Kutumia Raspberry Pi: Kama tunavyojua ulimwengu wote unaathiriwa na janga la COVID-19 na karibu kila mtu anafanya kazi kutoka nyumbani. Sote tunapaswa kutumia muda huu vizuri, kuboresha ufundi wetu au kuandika maandishi mazuri ya Pythonic. Wacha tuone chatu rahisi
Mradi wa Taa ya Trafiki ya Arduino [Pamoja na Kuvuka kwa Watembea kwa miguu]: Hatua 3
Mradi wa Taa ya Trafiki ya Arduino [Pamoja na Kuvuka kwa Watembea kwa miguu]: Ikiwa unatafuta kitu rahisi, rahisi na wakati huo huo unataka kumvutia kila mtu na Arduino yako basi mradi wa taa ya trafiki labda ni chaguo bora haswa wakati wewe ni mwanzoni ulimwenguni ya Arduino.Tutaona kwanza
Ripoti ya Hali ya Hewa Kutumia ThingSpeak MQTT na IFTTT Applets: Hatua 8
Ripoti ya Hali ya Hewa Kutumia ThingSpeak MQTT na IFTTT Applets: Utangulizi Maombi ya hali ya hewa inayotegemea wingu kutoa ripoti za hali ya hewa ya kila siku kama arifa ya barua pepe. Kiwango hiki cha Maombi ya Wavuti Joto na Unyevu kwa kutumia SHT25 na Adafruit Huzzah ESP8266. Inatupatia Joto la Wakati Halisi na Humidit