ด้วยความนิยมที่เพิ่มขึ้นของเมืองอัจฉริยะจึงมีความต้องการโซลูชันอัจฉริยะสำหรับทุกโดเมนอยู่เสมอ IoT ได้เปิดใช้งานความเป็นไปได้ของเมืองอัจฉริยะด้วยคุณสมบัติการควบคุมอินเทอร์เน็ต บุคคลสามารถควบคุมอุปกรณ์ที่ติดตั้งในบ้านหรือที่ทำงานได้จากทุกที่ในโลกโดยใช้สมาร์ทโฟนหรืออุปกรณ์ที่เชื่อมต่ออินเทอร์เน็ต เมืองอัจฉริยะมีหลายโดเมนและที่จอดรถอัจฉริยะเป็นหนึ่งในโดเมนยอดนิยมในเมืองอัจฉริยะ
อุตสาหกรรมที่จอดรถอัจฉริยะได้เห็นนวัตกรรมมากมายเช่นระบบจัดการที่จอดรถอัจฉริยะ, การควบคุมประตูอัจฉริยะ, กล้องอัจฉริยะที่สามารถตรวจจับประเภทของยานพาหนะ, ANPR (การจดจำป้ายทะเบียนอัตโนมัติ), ระบบการชำระเงินอัจฉริยะ, ระบบการเข้าออกอย่างชาญฉลาด วันนี้วิธีการที่คล้ายจะตามมาและวิธีการแก้ปัญหาที่จอดรถสมาร์ทจะถูกสร้างขึ้นซึ่งจะใช้เซ็นเซอร์อัลตราโซนิกการตรวจสอบสถานะของยานพาหนะและเรียกประตูเพื่อเปิดหรือปิดโดยอัตโนมัติESP8266 NodeMCU จะถูกใช้ที่นี่เป็นตัวควบคุมหลักในการควบคุมอุปกรณ์ต่อพ่วงทั้งหมดที่ต่ออยู่
ESP8266 เป็นคอนโทรลเลอร์ที่ได้รับความนิยมมากที่สุดในการสร้างแอปพลิเคชันที่ใช้ IoT เนื่องจากมีการรองรับ Wi-Fi ในตัวเพื่อเชื่อมต่ออินเทอร์เน็ต ก่อนหน้านี้เราใช้มันสร้างโครงการ IoT มากมายเช่น:
- ระบบรักษาความปลอดภัยที่ใช้ IOT
- กล่องแยกอัจฉริยะสำหรับระบบอัตโนมัติในบ้าน
- ระบบตรวจสอบมลพิษทางอากาศที่ใช้ IOT
- ส่งข้อมูลไปยัง ThingSpeak
ตรวจสอบโครงการที่ใช้ ESP8266 ทั้งหมดที่นี่
ในIoT Smart Parking Systemนี้เราจะส่งข้อมูลไปยังเว็บเซิร์ฟเวอร์เพื่อค้นหาความพร้อมของพื้นที่จอดรถ ที่นี่เรากำลังใช้ firebase เป็นฐานข้อมูล Iot เพื่อรับข้อมูลความพร้อมที่จอดรถ สำหรับสิ่งนี้เราจำเป็นต้องค้นหาที่อยู่โฮสต์ Firebase และรหัสลับสำหรับการให้สิทธิ์ หากคุณรู้จักการใช้ firebase กับ NodeMCU แล้วคุณสามารถก้าวไปข้างหน้าได้ก่อนอื่นคุณควรเรียนรู้การใช้Google Firebase Console กับ ESP8266 NodeMCUเพื่อรับที่อยู่โฮสต์และรหัสลับ
ส่วนประกอบที่จำเป็น
- ESP8266 NodeMCU
- อัลตราโซนิกเซนเซอร์
- DC เซอร์โวมอเตอร์
- เซนเซอร์ IR
- จอ LCD 16x2 i2c
- จัมเปอร์
แผนภูมิวงจรรวม
แผนภาพวงจรสำหรับระบบจอดรถที่ใช้ IoTนี้แสดงไว้ด้านล่าง ประกอบด้วยเซ็นเซอร์ IR สองตัวเซอร์โวมอเตอร์สองตัวเซ็นเซอร์อัลตราโซนิกหนึ่งตัวและจอ LCD 16x2 หนึ่งตัว
ที่นี่ ESP8266 จะควบคุมกระบวนการทั้งหมดและยังส่งข้อมูลความพร้อมที่จอดรถไปยัง Google Firebase เพื่อให้สามารถตรวจสอบได้จากทุกที่ในโลกผ่านอินเทอร์เน็ต ใช้เซ็นเซอร์ IR สองตัวที่ประตูทางเข้าและทางออกเพื่อตรวจจับการมีอยู่ของรถและเปิดหรือปิดประตูโดยอัตโนมัติ IR Sensor ใช้เพื่อตรวจจับวัตถุใด ๆ โดยการส่งและรับรังสี IR เรียนรู้เพิ่มเติมเกี่ยวกับเซ็นเซอร์ IR ที่นี่
เซอร์โวสองตัวจะทำหน้าที่เป็นประตูทางเข้าและทางออกและพวกมันจะหมุนเพื่อเปิดหรือปิดประตู ในที่สุดเซ็นเซอร์อัลตราโซนิกจะถูกใช้เพื่อตรวจจับว่าช่องจอดว่างหรือว่างอยู่และส่งข้อมูลไปยัง ESP8266 ตามนั้น ตรวจสอบวิดีโอที่ให้ไว้ในตอนท้ายของบทช่วยสอนนี้เพื่อทำความเข้าใจการทำงานทั้งหมดของโครงการ
นี่คือลักษณะของต้นแบบระบบจอดรถอัจฉริยะที่สมบูรณ์นี้:
การเขียนโปรแกรม ESP8266 NodeMCU สำหรับโซลูชันที่จอดรถอัจฉริยะ
โค้ดที่สมบูรณ์พร้อมวิดีโอที่ใช้งานได้จะได้รับในตอนท้ายของบทช่วยสอนนี้เรากำลังอธิบายโปรแกรมทั้งหมดเพื่อทำความเข้าใจการทำงานของโครงการ
สำหรับการเขียนโปรแกรม NodeMCU เพียงแค่เสียบ NodeMCU เข้ากับคอมพิวเตอร์ด้วยสาย Micro USB และเปิด Arduino IDE ไลบรารีจำเป็นสำหรับ I2C Display และ Servo Motor จอ LCD จะแสดงความพร้อมใช้งานของ Parking Spaces และเซอร์โวมอเตอร์จะถูกใช้เพื่อเปิดและปิดประตูทางเข้าและทางออก Wire.h ห้องสมุดจะนำไปใช้อินเตอร์เฟซ LCD ในโปรโตคอล I2C พินสำหรับ I2C ใน ESP8266 NodeMCU คือ D1 (SCL) และ D2 (SDA) ฐานข้อมูลที่ใช้จะเป็น Firebase ดังนั้นเราจึงรวมไลบรารี (FirebaseArduino.h) ไว้ด้วยเช่นกัน
# รวม
จากนั้นรวมข้อมูลรับรอง firebase ที่ได้รับจาก Google Firebase ซึ่งจะรวมถึงชื่อโฮสต์ที่มีชื่อโปรเจ็กต์ของคุณและคีย์ลับ หากต้องการค้นหาค่าเหล่านี้ให้ทำตามบทแนะนำก่อนหน้าเกี่ยวกับ Firebase
# กำหนด FIREBASE_HOST "smart-parking-7f5b6.firebaseio.com" #define FIREBASE_AUTH "suAkUQ4wXRPW7nA0zJQVsx3H2LmeBDPGmfTMBHCT"
รวมข้อมูลรับรอง Wi-Fi เช่น WiFi SSID และรหัสผ่าน
#define WIFI_SSID "CircuitDigest" #define WIFI_PASSWORD "circuitdigest101"
เริ่มต้น I2C LCD พร้อมที่อยู่อุปกรณ์ (ในที่นี้คือ 0x27) และประเภทของ LCD รวม Servo Motors สำหรับประตูทางเข้าและทางออก
LiquidCrystal_I2C จอแอลซีดี (0x27, 16, 2); เซอร์โว myservo; เซอร์โว myservo1;
เริ่มการสื่อสาร I2C สำหรับ I2C LCD
Wire.begin (D2, D1);
เชื่อมต่อ Servo Motor เข้าและออกกับ D5, D6 Pins ของ NodeMCU
myservo.attach (D6); myservos.attach (D5);
เลือก Trigger Pin ของ Ultrasonic sensor เป็น Output และ Echo Pin เป็น Input เซ็นเซอร์อัลตราโซนิกจะถูกใช้เพื่อตรวจจับความพร้อมของจุดจอดรถ หากรถครอบครองพื้นที่แล้วจะเรืองแสงมิฉะนั้นจะไม่เรืองแสง
pinMode (TRIG, เอาท์พุท); pinMode (ECHO, อินพุต);
หมุดสองตัว D0 และ D4 ของ NodeMCU ใช้ในการอ่านเซ็นเซอร์ IR เซ็นเซอร์ IR จะทำหน้าที่เป็นเซ็นเซอร์ประตูทางเข้าและออก สิ่งนี้จะตรวจจับการมีอยู่ของรถ
pinMode (carExited, INPUT); pinMode (carEnter, INPUT);
เชื่อมต่อกับ WiFi และรอสักครู่จนกว่าจะเชื่อมต่อ
WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.print ("กำลังเชื่อมต่อกับ"); Serial.print (WIFI_SSID); ในขณะที่ (WiFi.status ()! = WL_CONNECTED) { Serial.print ("."); ล่าช้า (500); }
เริ่มการเชื่อมต่อกับ Firebase โดยมีโฮสต์และคีย์ลับเป็นข้อมูลรับรอง
Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);
เริ่มต้น LCD 16x2 I2C และตำแหน่งของเคอร์เซอร์ชุดที่ 0 THแถว 0 THคอลัมน์
lcd.begin (); lcd.setCursor (0, 0);
ใช้ระยะห่างจากเซ็นเซอร์อัลตราโซนิก สิ่งนี้จะใช้เพื่อตรวจจับการมีอยู่ของรถในจุดนั้น ๆ ขั้นแรกให้ส่งพัลส์ 2 ไมโครวินาทีจากนั้นอ่านพัลส์ที่ได้รับ จากนั้นแปลงเป็น 'cm' เรียนรู้เพิ่มเติมเกี่ยวกับการวัดระยะทางโดยใช้เซ็นเซอร์อัลตราโซนิกที่นี่
digitalWrite (TRIG, LOW); delayMicroseconds (2); digitalWrite (TRIG, สูง); delayMicroseconds (10); digitalWrite (TRIG, LOW); ระยะเวลา = pulseIn (ECHO, สูง); ระยะทาง = (ระยะเวลา / 2) / 29.1;
อ่านพินเซ็นเซอร์ IR แบบดิจิทัลเป็นเซ็นเซอร์ทางเข้าและตรวจสอบว่าสูงหรือไม่ หากมีค่าสูงให้เพิ่มจำนวนรายการและพิมพ์เป็นจอ LCD 16x2 และไปยังจอภาพอนุกรม
int carEntry = digitalRead (carEnter); ถ้า (carEntry == สูง) { countYes ++; Serial.print ("รถเข้า ="); Serial.println (count ใช่); lcd.setCursor (0, 1); lcd.print ("รถเข้า");
ย้ายมุมเซอร์โวมอเตอร์เพื่อเปิดประตูทางเข้าด้วย เปลี่ยนมุมตามกรณีการใช้งานของคุณ
สำหรับ (pos = 140; pos> = 45; pos - = 1) { myservos.write (pos); ล่าช้า (5); } ล่าช้า (2000); สำหรับ (pos = 45; pos <= 140; pos + = 1) { // ในขั้นตอนที่ 1 องศา myservos.write (pos); ล่าช้า (5); }
และส่งการอ่านไปยัง firebase โดยใช้ฟังก์ชัน pushString ของไลบรารี Firebase
Firebase.pushString ("/ สถานะการจอดรถ /", fireAvailable);
ทำขั้นตอนเดียวกันกับด้านบนสำหรับเซนเซอร์ Exit IR และเซอร์โวมอเตอร์ออก
int carExit = digitalRead (carExited); ถ้า (carExit == สูง) { countYes--; Serial.print ("รถออก ="); Serial.println (count ใช่); lcd.setCursor (0, 1); lcd.print ("รถออก"); สำหรับ (pos1 = 140; pos1> = 45; pos1 - = 1) { myservo.write (pos1); ล่าช้า (5); } ล่าช้า (2000); สำหรับ (pos1 = 45; pos1 <= 140; pos1 + = 1) { // ในขั้นตอนที่ 1 องศา myservo.write (pos1); ล่าช้า (5); } Firebase.pushString ("/ สถานะการจอดรถ /", fireAvailable); lcd.clear (); }
ตรวจสอบว่ารถมาถึงจุดจอดแล้วหรือยังและถ้ามาถึงแล้วไฟ LED เรืองแสงให้สัญญาณว่าจุดจอดเต็ม
ถ้า (ระยะ <6) { Serial.println ("ครอบครอง"); digitalWrite (นำสูง); }
อื่นแสดงว่าจุดนั้นใช้ได้
ถ้า (ระยะทาง> 6) { Serial.println ("Available"); digitalWrite (led, LOW); }
คำนวณพื้นที่ว่างทั้งหมดภายในที่จอดรถและบันทึกลงในสตริงเพื่อส่งข้อมูลไปยัง firebase
Empty = allSpace - count ใช่; Available = String ("Available =") + String (ว่าง) + String ("/") + String (allSpace); fireAvailable = String ("Available =") + String (ว่าง) + String ("/") + String (allSpace); พิมพ์ข้อมูลไปยัง i2C LCD ด้วย lcd.setCursor (0, 0); lcd.print (มีจำหน่าย);
นี่คือวิธีติดตามความพร้อมของที่จอดรถออนไลน์บน Firebaseตามที่แสดงในภาพรวมด้านล่าง:
นี่เป็นการเสร็จสิ้นระบบจอดรถอัจฉริยะที่สมบูรณ์โดยใช้ ESP8266 NodeMCU Moduleและอุปกรณ์ต่อพ่วงต่างๆ คุณสามารถใช้เซ็นเซอร์อื่นแทนเซ็นเซอร์อัลตราโซนิกและ IR ได้ มีแอปพลิเคชั่นระบบจอดรถอัจฉริยะมากมายและสามารถเพิ่มผลิตภัณฑ์ต่าง ๆ เพื่อให้ฉลาดยิ่งขึ้น แสดงความคิดเห็นด้านล่างหากคุณมีข้อสงสัยหรือไปที่ฟอรัมของเราเพื่อรับการสนับสนุนเพิ่มเติม