ዝርዝር ሁኔታ:

የትራፊክ ሪፖርት ፍተሻ (ኤን.ኤል.) ከበር በር ጋር: 6 ደረጃዎች
የትራፊክ ሪፖርት ፍተሻ (ኤን.ኤል.) ከበር በር ጋር: 6 ደረጃዎች

ቪዲዮ: የትራፊክ ሪፖርት ፍተሻ (ኤን.ኤል.) ከበር በር ጋር: 6 ደረጃዎች

ቪዲዮ: የትራፊክ ሪፖርት ፍተሻ (ኤን.ኤል.) ከበር በር ጋር: 6 ደረጃዎች
ቪዲዮ: Хакасия: пока ещё дёшево — Отчёт разведки 2024, ሀምሌ
Anonim
የትራፊክ ሪፖርት ቼክ (ኤን.ኤል.) ከዶርማት ጋር
የትራፊክ ሪፖርት ቼክ (ኤን.ኤል.) ከዶርማት ጋር

በዚህ መመሪያ ውስጥ የደች አውራ ጎዳናዎችን የትራፊክ ሪፖርቶችን የሚፈትሽ የበሩን በር እንዴት እንደሚሠራ እገልጻለሁ። አንዴ በበርዎ ላይ ወደ ውጭ ወጥተው በመንገድዎ ላይ የትራፊክ መጨናነቅ ካለ ፣ ምንጣፉ ወደ ቀይ ቀለም ይለወጣል። የትራፊክ መጨናነቅ በማይኖርበት ጊዜ ምንጣፉ አረንጓዴ ይሆናል።

በ NodeMCU 1.0 (ESP0-12E ሞዱል) ላይ እሰራለሁ። የዚህ ፕሮጀክት ኮድ በሌሎች መሣሪያዎች ላይም ሊሠራ ይችላል (ለምሳሌ አርዱዲኖ ቦርዶች)። ይህ ፕሮጀክት በትራፊክ ሪፖርቶች ፣ ኤኤንኤቢ ላይ በደች ምንጭ ላይ የተመሠረተ ነው።

ለዚህ ፕሮጀክት የሚያስፈልጉን-

- NodeMCU - ዝላይ ሽቦዎች - የ LED መብራት ወይም ስትሪፕ - የአናሎግ ዳሳሽ (አልሙኒዩም ፎይል ፣ ስፖንጅ) - የ Wi -Fi ግንኙነት - በር

ልንወስዳቸው የሚገቡ እርምጃዎች ፦

1. NodeMCu ን ከ Wi-Fi ጋር ያገናኙ 2. በኤችቲቲፒኤስ በኩል መረጃን ከኤኤንቢቢኤንኤል ይጠይቁ 3. ውሂቡን ወደ ሊጠቅም የሚችል መረጃ ይለውጡ 4. ቀስቅሴውን ይጫኑ 5. የንድፍ ግብረመልስ

ደረጃ 1 NodeMCU ን ከ Wi-Fi ጋር ያገናኙ

ይህ እርምጃ መሣሪያው ከበይነመረቡ ጋር የተገናኘ መሆኑን ለማየት የተሳካ HTTPSRequest ን እንዴት ማድረግ እንደሚቻል ያሳያል።

በመጀመሪያ ፣ የ ESP8266 ቤተመፃሕፍት በአርዱዲኖ አይዲኢ ውስጥ ይጫኑ። ከምሳሌዎች ESP8266> HTTPSRequest ይክፈቱ።

ከዚህ በታች እንደሚታየው በኮድዎ አናት ላይ የ Wi-Fi ምስክርነቶችዎን ይሙሉ

const char* ssid = "YOUR_SSID";

const char* password = "YOUR_PASS";

ኮዱን ወደ መሣሪያዎ ይስቀሉ እና NodeMCU ከበይነመረቡ ጋር እየተገናኘ መሆኑን ያረጋግጡ። የ HTTPSRequest ምሳሌ መረጃን ለማግኘት Github ን እንደ ነባሪው ይጠቀማል። HTTPSRequest ሲሳካ ፣ በተከታታይ ማሳያ ውስጥ የ Github ውሂብ ይቀበላሉ።

ደረጃ 2 ከኤች ቲ ቲ ፒ ኤስ መረጃን ከ ANWB.nl ይጠይቁ

በዚህ ሁለተኛ ደረጃ ፣ የውሂብ ምንጭን ከነባሪ ወደዚህ ፕሮጀክት ወደሚፈለገው ምንጭ ይለውጣሉ - ANWB.nl.

በኮድዎ አናት ላይ ቻር* አስተናጋጁን ወደ www.anwb.nl (ወይም የእርስዎን ውሂብ እንዲያገኙ የሚፈልጉት ሌላ ምንጭ) ፦

const char* host = "www.anwb.nl";!! ሌላ ምንጭ የሚጠቀሙ ከሆነ ደረጃ 3 ከኮድዬ የተለየ ይሆናል። ደረጃ 3 ጥቅም ላይ ሊውል የሚችል መረጃን ለማግኘት የተወሰነ ኮድ ይፈልጋል!

በመቀጠል ፣ በተግባሩ ቅንብር ውስጥ የሕብረቁምፊ ዩአርኤል ወደ//ምግቦች/gethf ፣ መረጃው የተወሰደበትን መንገድ ይለውጡ

ሕብረቁምፊ url = "/ምግቦች/gethf";!! ሌላ ምንጭ የሚጠቀሙ ከሆነ ወደ ምንጭዎ የሚወስደውን መንገድ ይጠቀሙ!

ኮዱን ሲሰቅሉ ከ www.anwb.nl/feeds/gethf ከሁሉም መረጃዎች ጋር ምላሽ ማግኘት አለብዎት። ይህ ኮድ መስመር ተብሎ በሚጠራ ሕብረቁምፊ ውስጥ ይቀመጣል።

ደረጃ 3 መረጃን ወደ ጥቅም ላይ ወደሚለው መረጃ ይለውጡ

እስካሁን ድረስ ኮዱ የሄደው NodeMCU ሲጀመር ወይም ዳግም ሲጀመር ብቻ ነው ፣ ምክንያቱም ሁሉም ኮዱ በማዋቀር ተግባር ውስጥ ነው። ኮዱን ያለማቋረጥ ለማስኬድ ቀስቅሴውን ለማዘጋጀት የኤችቲቲፒኤስ ጥያቄን የሚያከናውን የኮድ አቀማመጥ መለወጥ አለብዎት። ከሉፕ ተግባሩ በታች ፣ ሌላ ተግባር ያክላሉ። እኔ ባዶ አወጣጥ (Data Extract) ብየዋለሁ

extractData () {

}

የኮዱን ክፍል ከማዋቀሩ ተግባር ወደ ExtractData () ይቅዱ። የማዋቀሪያው ተግባር እስኪያልቅ ድረስ በሚከተለው መስመር ይጀምሩ።

ከሆነ (! client.connect (አስተናጋጅ ፣

ኮዱ አሁን በአዲሱ ተግባርዎ ውስጥ ነው ፣ ስለዚህ የተቀዳውን ኮድ ከማዋቀሩ ተግባር ያስወግዱ።

በመቀጠል ፣ በ loop ተግባር ውስጥ የ extractData ተግባርን ይደውሉ እና የ nodeMCU ለማረፍ ጊዜ ለመስጠት የተወሰነ መዘግየት ይጨምሩ

ባዶነት loop () {

extractData (); መዘግየት (30000); // የአናሎግ ዳሳሽ ሲኖረን ይህ በኋላ ይወገዳል}

የተቀበሉት ውሂብ በአንድ ሕብረቁምፊ ውስጥ ስለሚከማች እና የዚህ ሕብረቁምፊ ክፍሎች ብቻ ስለሚያስፈልጉ ፣ ሁለት ቀለበቶችን ለመፃፍ አለብዎት።

በመጀመሪያ ፣ ‹መንገድ› የሚለውን ቃል ሁሉንም አቀማመጥ ይፈትሹ። 'መንገድ' ከሚለው ቃል በኋላ የመንገዱ ስም ይከተላል (A1 ፣ A2 ፣ ወዘተ)።

ለሉፕስ መጻፍ ከመጀመርዎ በፊት ሊጠቀሙባቸው የሚገቡትን አንዳንድ ተለዋዋጮች ማወጅ አለብዎት-

int noOfPos = 0;

ቡሊያን hasRunOnce = ሐሰት; int ከ = 0; int roadArray [20];

አንዳንድ ቀለበቶችን ለመጻፍ ጊዜው አሁን ነው። እኔ በ ExtractData ተግባር ታችኛው ክፍል ውስጥ ላሉት loops ፃፍኩ። እኔ ወደ ተለያዩ ተግባራት ለመከፋፈል ሞከርኩ ፣ ግን ወደ ሥራ ማግኘት አልቻልኩም።

ለሉፕ ቁጥር 1 የቃላት መንገድን በገመድ መስመር ውስጥ ይፈልጉ

ለ (int i = 0; i <line.length (); i ++) {int pos = line.indexOf ("road \": ", from); roadArray [noOfPos] = pos; noOfPos+= 1; from = pos + 1; ከሆነ (hasRunOnce == true && pos == line.indexOf ("road \": ")) {i = line.length (); } RunRoOnce = እውነት ነው ፤ }

በመቀጠልም የመንገዱን አቀማመጥ ከላይ በኩል በመጠቀም የትራፊክ መጨናነቅ እንዳለባቸው ያረጋግጡ። የመንገዶቹ ስም አቀማመጥ ሁል ጊዜ አንድ ነው እና 7 ቁምፊዎችን ይጀምሩ እና ከቃሉ መንገድ በኋላ 10 ቁምፊዎችን ያበቃል።

አሁን ለሉፕ በሚቀጥለው ውስጥ የሚሞላው የ ‹RoadArray ›ድርድር ስም እንገልፃለን-

ሕብረቁምፊ ስምOfRoadArray [20];

ለሉፕ ቁጥር 2 - ከሉፕ ቁ. 2018-05-01 እልልልልልልልልልልልልልልልልልልል

ለ (int k = 0; k <20; k ++) {int pos = roadArray [k]; int positionOfRoadName = pos + 7; int endOfPositionOfRoadName = pos + 10; nameOfRoadArray [k] = line.substring (positionOfRoadName, endOfPositionOfRoadName); }

የድርድር ስምOfRoudArray በሁሉም የትራፊክ መጨናነቅ ምልክት በተሞላበት መሞላት አለበት።

በመቀጠል ፣ መንገድዎ በትራፊክ መጨናነቅ በመንገዶች ድርድር ውስጥ መሆኑን ያረጋግጡ። በውሂቡ ውስጥ ያሉትን መንገዶች ለማግኘት የOfRoadArray ስም ያትሙ። Serial.println (nameOfRoadArray [k]) በማከል ይህንን ያድርጉ ፤ ለሉፕ እንደ 2 ኛ

ለ (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]); }

ትክክል ከሆነ በ Serial Monitor ውስጥ የትራፊክ መጨናነቅ ያለባቸውን መንገዶች ሁሉ ያያሉ።

የመጨረሻውን ከመፃፍዎ በፊት loop ፣ ቡሊያን እንደ ዓለም አቀፍ ተለዋዋጭ ማወጅ አለብዎት። ትራፊክ ጃም ተብሎ የሚጠራው ቡሊያን ፣ በነባሪ ሐሰት ነው ፣ እና የውጤት ማውጫው ለትራፊክ መጨናነቅ እውነት ከተመለሰ ይለወጣል። የሚከተለው ኮድ በ.ino ፋይል አናት ላይ ይሄዳል

ቡሊያን ትራፊክ ጃም = ሐሰት;

ለሉፕ ቁጥር 3 - መንገዱ ፣ በዚህ ሁኔታ A1 ፣ በትራፊክ መጨናነቅ ዝርዝር ውስጥ ካለ ያረጋግጡ።

ለ (int l = 0; l <20; l ++) {ከሆነ (nameOfRoadArray [l] == "A1 \" ") {// A1 ን ወደ ሞገስዎ መንገድ ይለውጡ ጃም = እውነት ፤}

በተከታታይ ማሳያ ውስጥ ትራፊክ ጃምን ካተሙ ፣ በ A1 ላይ የትራፊክ መጨናነቅ ወይም አለመኖሩን ያውቃሉ።

ይህንን ኮድ በማውጣት የውሂብ ተግባር ታችኛው ክፍል ላይ ያድርጉት

Serial.println (trafficJam); // የትራፊክ መጨናነቅ ካለ ይመልከቱ

በዚህ መረጃ በደረጃ 5 ላይ በስርዓቱ ግብረመልስ ላይ የበለጠ እንሰራለን።

ደረጃ 4 ቀስቅሴውን ይጫኑ

ቀስቅሴውን ይጫኑ
ቀስቅሴውን ይጫኑ
ቀስቅሴውን ይጫኑ
ቀስቅሴውን ይጫኑ
ቀስቅሴውን ይጫኑ
ቀስቅሴውን ይጫኑ

አሁን ውሂቡን ከምንጩ በተሳካ ሁኔታ ማምጣት ስለምንችል የውጤት ማውጫውን ውሂብ ለማስኬድ nodeMCU ን የሚቀሰቅስ ዳሳሽ ለመገንባት ጊዜው አሁን ነው። እኔ ከመግቢያ ቤቴ ውስጥ የአናሎግ ዳሳሽ ለመሥራት መረጥኩ። ሌላ አነፍናፊ በመጠቀም ቀስቅሴውን መለወጥ ይችላሉ።

የአናሎግ ዳሳሽ መገንባት

እኔ የአሉሚኒየም ወረቀት 2 ቁርጥራጮችን ፣ ሁለት የጃምፐር ሽቦዎችን እና ስፖንጅ ተጠቅሜ ነበር።

በስፖንጅ ውስጥ ቀዳዳ ይከርሙ ፣ ይህ የአሉሚኒየም ፊውሎች ግንኙነት የሚያደርጉበት ቦታ ነው። በስፖንጅ በሁለቱም በኩል የአሉሚኒየም ፊሻ ሙጫ። የአሉሚኒየም ሽቦዎችን ከአሉሚኒየም ፎይል ጋር ያገናኙ። የ jumper ገመዶችን ከ nodeMCU ጋር ያገናኙ። አንድ ጎን ወደ A0-pin እና ሌላኛው ወደ V3-pin። ስፖንጅውን ከመጋረጃዎ ስር ያስቀምጡት እና እርስዎ አሁን የበሩን በርዎን ወደ ዳሳሽ ቀይረዋል። ደስ የሚል!

አንድ ሰው በበሩ በር ላይ ቆሞ እንደሆነ ለማየት ከአነፍናፊው እሴት ለማንበብ ኮዱ

int sensorValue = analogRead (A0);

ከሆነ (sensorValue == 1024) {extractData (); }

የአሉሚኒየም ፎይል ግንኙነት ሲያደርግ (አንድ ሰው ምንጣፉ ላይ ሲቆም) ፣ ዳሳሽ ቫልዩ 1024 ነው። እናም ሥርዓቱ እንዲያደርግ የምንፈልገው ያ ነው።

ደረጃ 5 የዲዛይን ግብረመልስ

ለተጠቃሚው ግብረመልስ ለመስጠት የ LEDstrip ን ተጠቅሜያለሁ። የትራፊክ መጨናነቅ በሚኖርበት ጊዜ ብርሃኑ ቀይ ይሆናል። መንገዱ ጥሩ በሚሆንበት ጊዜ አረንጓዴ ይሆናል። እኔ LEDstrip ን ለመቆጣጠር የ adafruit neopixel ቤተ -መጽሐፍትን እጠቀም ነበር።

የ LEDstrip መግለፁን ለማረጋገጥ ይህንን ኮድ በፋይልዎ አናት ላይ ይፃፉ

#ያካትቱ

#ጥራት PIXEL_PIN D5 #ጥራት PIXEL_COUNT 10 #ጥራት PIXEL_TYPE NEO_GRB + NEO_KHZ800 Adafruit_NeoPixel pixels = Adafruit_NeoPixel (PIXEL_COUNT ፣ PIXEL_PIN ፣ PIXEL_TYPE);

በማዋቀር ተግባር ውስጥ ቀጣዩን ኮድ ይፃፉ

// ኒዮፒክስል

pixels.begin (); pixels.show ();

እና በሉፕ ተግባር ውስጥ የሚከተለው ኮድ

ከሆነ (trafficJam == እውነት) {

ለ (int i; i <PIXEL_COUNT; i ++) {pixels.setPixelColor (i, 255, 0, 0); // ቀይ ፒክስሎች። አሳይ (); መዘግየት (200); }} ሌላ {ለ (int i; i <PIXEL_COUNT; i ++) {pixels.setPixelColor (i ፣ 0 ፣ 255 ፣ 0) ፤ // አረንጓዴ ፒክሰሎች. አሳይ (); መዘግየት (200); }

ከላይ ባለው ኮድ ውስጥ አንድ/ሌላ ተግባር አለ። የተግባር ማውጫው ዳታ የትራፊክ መጨናነቅ መኖሩን ሲመልስ የ LEDstrip ቀይ ይሆናል። ካልሆነ ፣ የ LEDstrip አረንጓዴ ይለወጣል።

ደረጃ 6: ኮዱን ያሂዱ

አሁን ሙሉ ኮዱን የምናከናውን ከሆነ አነፍናፊው እና መብራቱ መሥራት አለባቸው። በበሩ በር ላይ ሲቆሙ አነፍናፊው ይገናኛል እና የማውጣት ዳታ ተግባሩ ይሠራል። በመንገድ ስሞች ድርድር ውስጥ ፣ እኛ የምንፈልገው መንገድ ሲገኝ ፣ የ LEDstrip የትራፊክ መጨናነቅን የሚያመለክት ቀይ ይሆናል። በድርድር ውስጥ ካልሆነ ፣ የ LEDstrip አረንጓዴ ይለወጣል እና እርስዎ ለመሄድ ጥሩ እንደሆኑ ያውቃሉ!

ደህና ጉዞ ይኑርዎት እና ለንባብ እናመሰግናለን። አንዳንድ መነሳሻ ወይም መረጃ እንዳገኙ ተስፋ አደርጋለሁ። አንዳንድ ግብረመልስ ካገኙ ፣ መልስ ለመስጠት ነፃነት ይሰማዎ!

የሚመከር: