Mit der wachsenden Beliebtheit von Smart Cities besteht immer eine Nachfrage nach intelligenten Lösungen für jede Domain. Das IoT hat die Möglichkeit von Smart Cities mit seiner Funktion zur Steuerung über das Internet ermöglicht. Eine Person kann die in ihrem Haus oder Büro installierten Geräte von überall auf der Welt aus steuern, indem sie nur ein Smartphone oder ein mit dem Internet verbundenes Gerät verwendet. In einer Smart City gibt es mehrere Domains, und Smart Parking ist eine der beliebtesten Domains in der Smart City.
In der Smart Parking-Branche gab es eine Reihe von Innovationen wie das Smart Parking Management System, die Smart Gate Control, Smart Cameras, die Fahrzeugtypen erkennen können, ANPR (Automatic Number Plate Recognition), das Smart Payment System, das Smart Entry System und viele mehr. Heute wird ein ähnlicher Ansatz verfolgt und eine intelligente Parklösung entwickelt, die mithilfe eines Ultraschallsensors das Vorhandensein des Fahrzeugs erkennt und das Tor automatisch zum Öffnen oder Schließen auslöst. Die ESP8266 NodeMCU wird hier als Hauptcontroller zur Steuerung aller daran angeschlossenen Peripheriegeräte verwendet.
ESP8266 ist der beliebteste Controller zum Erstellen von IoT-basierten Anwendungen, da Wi-Fi für die Verbindung zum Internet integriert ist. Wir haben es zuvor verwendet, um viele IoT-Projekte zu erstellen, wie:
- IOT-basiertes Sicherheitssystem
- Smart Junction Box für die Heimautomation
- IOT-basiertes Luftreinhaltungssystem
- Senden Sie Daten an ThingSpeak
Überprüfen Sie hier alle ESP8266-basierten Projekte.
In diesem IoT Smart Parking System senden wir Daten an den Webserver, um die Verfügbarkeit von Parkplätzen zu überprüfen. Hier verwenden wir Firebase als Iot-Datenbank, um die Parkverfügbarkeitsdaten abzurufen. Dazu müssen wir die Firebase-Hostadresse und den geheimen Schlüssel für die Autorisierung finden. Wenn Sie bereits wissen, wie Sie Firebase mit NodeMCU verwenden, können Sie fortfahren. Andernfalls sollten Sie zunächst lernen, Google Firebase Console mit ESP8266 NodeMCU zu verwenden, um die Hostadresse und den geheimen Schlüssel abzurufen.
Erforderliche Komponenten
- ESP8266 NodeMCU
- Ultraschallsensor
- DC-Servomotor
- IR-Sensoren
- 16x2 i2c LCD-Anzeige
- Jumper
Schaltplan
Der Schaltplan für dieses IoT-basierte Fahrzeugparksystem ist unten angegeben. Es handelt sich um zwei IR-Sensoren, zwei Servomotoren, einen Ultraschallsensor und ein 16x2-LCD.
Hier steuert der ESP8266 den gesamten Prozess und sendet die Informationen zur Parkverfügbarkeit an Google Firebase, damit sie von überall auf der Welt über das Internet überwacht werden können. Zwei IR-Sensoren werden am Ein- und Ausgangstor verwendet, um das Vorhandensein eines Fahrzeugs zu erkennen und das Tor automatisch zu öffnen oder zu schließen. Der IR-Sensor wird verwendet, um jedes Objekt durch Senden und Empfangen der IR-Strahlen zu erkennen. Weitere Informationen zum IR-Sensor finden Sie hier.
Zwei Servos fungieren als Ein- und Ausgangstor und drehen sich, um das Tor zu öffnen oder zu schließen. Schließlich wird ein Ultraschallsensor verwendet, um zu erkennen, ob der Parkplatz verfügbar oder belegt ist, und um die Daten entsprechend an ESP8266 zu senden. Überprüfen Sie das Video am Ende dieses Tutorials, um die vollständige Funktionsweise des Projekts zu verstehen.
So wird dieser komplette Prototyp eines intelligenten Parksystems aussehen:
Programmierung ESP8266 NodeMCU für Smart Parking Solution
Der vollständige Code mit einem Arbeitsvideo finden Sie am Ende dieses Tutorials. Hier erklären wir das vollständige Programm, um die Funktionsweise des Projekts zu verstehen.
Um NodeMCU zu programmieren, schließen Sie die NodeMCU einfach mit einem Micro-USB-Kabel an den Computer an und öffnen Sie die Arduino IDE. Die Bibliotheken werden für I2C-Display und Servomotor benötigt. Das LCD zeigt die Verfügbarkeit von Parkplätzen an und die Servomotoren werden zum Öffnen und Schließen der Ein- und Ausgangstore verwendet. Die Wire.h- Bibliothek wird verwendet, um LCD im i2c-Protokoll zu verbinden. Die Pins für I2C in der ESP8266 NodeMCU sind D1 (SCL) und D2 (SDA). Die hier verwendete Datenbank wird Firebase sein, daher schließen wir hier auch die Bibliothek (FirebaseArduino.h) für dieselbe ein.
#einschließen
Geben Sie dann die von Google Firebase erhaltenen Firebase-Anmeldeinformationen an. Dazu gehören der Hostname, der Ihren Projektnamen und einen geheimen Schlüssel enthält. Um diese Werte zu finden, folgen Sie dem vorherigen Tutorial zu Firebase.
#define FIREBASE_HOST "smart-parking-7f5b6.firebaseio.com" #define FIREBASE_AUTH "suAkUQ4wXRPW7nA0zJQVsx3H2LmeBDPGmfTMBHCT"
Geben Sie die Wi-Fi-Anmeldeinformationen wie WiFi-SSID und Kennwort an.
#define WIFI_SSID "CircuitDigest" #define WIFI_PASSWORD "Circuitdigest101"
Initialisieren Sie das I2C-LCD mit der Geräteadresse (hier 0x27) und dem LCD-Typ. Enthalten sind auch die Servomotoren für das Ein- und Ausgangstor.
LiquidCrystal_I2C lcd (0x27, 16, 2); Servo Myservo; Servo myservo1;
Starten Sie die I2C-Kommunikation für das I2C-LCD.
Wire.begin (D2, D1);
Verbinden Sie den Eingangs- und Ausgangs-Servomotor mit den D5- und D6-Pins der NodeMCU.
myservo.attach (D6); myservos.attach (D5);
Wählen Sie den Trigger-Pin des Ultraschallsensors als Ausgang und den Echo-Pin als Eingang. Der Ultraschallsensor wird verwendet, um die Verfügbarkeit von Parkplätzen zu erfassen. Wenn das Auto den Raum belegt hat, leuchtet es, sonst leuchtet es nicht.
PinMode (TRIG, OUTPUT); pinMode (ECHO, INPUT);
Die beiden Pins D0 und D4 der NodeMCU werden verwendet, um den IR-Sensor abzulesen. Der IR-Sensor fungiert als Ein- und Ausgangssensor. Dadurch wird die Anwesenheit des Fahrzeugs erkannt.
pinMode (carExited, INPUT); pinMode (carEnter, INPUT);
Stellen Sie eine Verbindung zu WLAN her und warten Sie einige Zeit, bis die Verbindung hergestellt ist.
WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.print ("Herstellen einer Verbindung zu"); Serial.print (WIFI_SSID); while (WiFi.status ()! = WL_CONNECTED) { Serial.print ("."); Verzögerung (500); }}
Beginnen Sie die Verbindung mit Firebase mit Host und geheimem Schlüssel als Anmeldeinformationen.
Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);
Begin I2C 16x2 LCD und SET Cursorposition bei 0 - te Zeile 0 - te Spalte.
lcd.begin (); lcd.setCursor (0, 0);
Nehmen Sie den Abstand zum Ultraschallsensor. Dies wird verwendet, um die Fahrzeugpräsenz an der bestimmten Stelle zu erfassen. Senden Sie zuerst den 2-Mikrosekunden-Impuls und lesen Sie dann den empfangenen Impuls. Konvertieren Sie es dann in 'cm'. Erfahren Sie hier mehr über die Entfernungsmessung mit dem Ultraschallsensor.
digitalWrite (TRIG, LOW); delayMicroseconds (2); digitalWrite (TRIG, HIGH); delayMicroseconds (10); digitalWrite (TRIG, LOW); Dauer = PulsIn (ECHO, HIGH); Entfernung = (Dauer / 2) / 29,1;
Lesen Sie den IR-Sensorstift als Eingangssensor digital ab und prüfen Sie, ob er hoch ist. Wenn es hoch ist, erhöhen Sie die Anzahl der Einträge und drucken Sie es auf das 16x2-LCD-Display und auch auf den seriellen Monitor.
int carEntry = digitalRead (carEnter); if (carEntry == HIGH) { countYes ++; Serial.print ("Car Entered ="); Serial.println (countYes); lcd.setCursor (0, 1); lcd.print ("Auto eingegeben");
Bewegen Sie auch den Servomotorwinkel, um das Eingangstor zu öffnen. Ändern Sie den Winkel entsprechend Ihrem Anwendungsfall.
für (pos = 140; pos> = 45; pos - = 1) { myservos.write (pos); Verzögerung (5); } delay (2000); für (pos = 45; pos <= 140; pos + = 1) { // in Schritten von 1 Grad myservos.write (pos); Verzögerung (5); }}
Senden Sie den Messwert mithilfe der pushString- Funktion der Firebase-Bibliothek an firebase .
Firebase.pushString ("/ Parkstatus /", fireAvailable);
Führen Sie ähnliche Schritte wie oben für den IR-Sensor und den Servomotor aus.
int carExit = digitalRead (carExited); if (carExit == HIGH) { countYes--; Serial.print ("Car Exited ="); Serial.println (countYes); lcd.setCursor (0, 1); lcd.print ("Auto verlassen"); für (pos1 = 140; pos1> = 45; pos1 - = 1) { myservo.write (pos1); Verzögerung (5); } delay (2000); für (pos1 = 45; pos1 <= 140; pos1 + = 1) { // in Schritten von 1 Grad myservo.write (pos1); Verzögerung (5); } Firebase.pushString ("/ Parkstatus /", fireAvailable); lcd.clear (); }}
Überprüfen Sie, ob das Auto auf dem Parkplatz angekommen ist und ob es angekommen ist. Die LED leuchtet und gibt das Signal, dass der Platz voll ist.
if (Entfernung <6) { Serial.println ("besetzt"); digitalWrite (LED, HIGH); }}
Andernfalls zeigen Sie, dass der Platz verfügbar ist.
if (Entfernung> 6) { Serial.println ("Verfügbar"); digitalWrite (LED, LOW); }}
Berechnen Sie den gesamten leeren Platz auf dem Parkplatz und speichern Sie ihn in der Zeichenfolge, um die Daten an firebase zu senden.
Leer = allSpace - countYes; Available = String ("Available =") + String (leer) + String ("/") + String (allSpace); fireAvailable = String ("Available =") + String (leer) + String ("/") + String (allSpace); Drucken Sie die Daten auch auf das i2C-LCD. lcd.setCursor (0, 0); lcd.print (verfügbar);
Auf diese Weise kann die Verfügbarkeit von Parkplätzen online auf Firebase verfolgt werden, wie im folgenden Schnappschuss gezeigt:
Damit ist das komplette Smart-Parking-System mit dem ESP8266 NodeMCU-Modul und verschiedenen Peripheriegeräten fertig. Sie können auch andere Sensoren als Ersatz für Ultraschall- und IR-Sensoren verwenden. Es gibt eine umfangreiche Anwendung von Smart Parking System und verschiedene Produkte können hinzugefügt werden, um es intelligenter zu machen. Kommentieren Sie unten, wenn Sie Zweifel haben oder unser Forum für weitere Unterstützung erreichen.