Met de groeiende populariteit van Smart Cities is er altijd vraag naar slimme oplossingen voor elk domein. Het IoT heeft de mogelijkheid van Smart Cities mogelijk gemaakt met zijn via internet controlefunctie. Een persoon kan de apparaten die in zijn huis of kantoor zijn geïnstalleerd, overal ter wereld bedienen door gewoon een smartphone of een met internet verbonden apparaat te gebruiken. Er zijn meerdere domeinen in een slimme stad en Smart Parking is een van de populaire domeinen in de Smart City.
De Smart Parking-industrie heeft een aantal innovaties gezien, zoals Smart Parking Management System, Smart Gate Control, Smart Camera's die voertuigtypen kunnen detecteren, ANPR (Automatic Number Plate Recognition), Smart Payment System, Smart Entry System en nog veel meer. Vandaag zal een vergelijkbare aanpak worden gevolgd en zal een slimme parkeeroplossing worden gebouwd die een ultrasone sensor gebruikt om de aanwezigheid van voertuigen te detecteren en het hek automatisch te openen of te sluiten. De ESP8266 NodeMCU wordt hier gebruikt als de hoofdcontroller om alle aangesloten randapparatuur te bedienen.
ESP8266 is de meest populaire controller om IoT-gebaseerde applicaties te bouwen, omdat het ingebouwde ondersteuning heeft voor Wi-Fi om verbinding te maken met internet. We hebben het eerder gebruikt om veel IoT-projecten te bouwen, zoals:
- IOT-gebaseerd beveiligingssysteem
- Slimme aansluitdoos voor domotica
- IOT-gebaseerd controlesysteem voor luchtverontreiniging
- Stuur gegevens naar ThingSpeak
Bekijk hier alle op ESP8266 gebaseerde projecten.
In dit IoT Smart Parking-systeem sturen we gegevens naar de webserver om de beschikbaarheid van ruimte voor het parkeren van voertuigen op te zoeken. Hier gebruiken we firebase als IoT-database om de beschikbare parkeergegevens te krijgen. Hiervoor moeten we het Firebase-hostadres en de geheime sleutel voor autorisatie vinden. Als u al weet hoe u firebase met NodeMCU gebruikt, kunt u verder gaan, anders moet u eerst Google Firebase Console leren gebruiken met ESP8266 NodeMCU om het hostadres en de geheime sleutel te krijgen.
Componenten vereist
- ESP8266 NodeMCU
- Ultrasoon sensor
- DC-servomotor
- IR-sensoren
- 16x2 i2c LCD-scherm
- Truien
Schakelschema
Het schakelschema voor dit op IoT gebaseerde parkeersysteem voor voertuigen wordt hieronder gegeven. Het omvat twee IR-sensoren, twee servomotoren, een ultrasone sensor en een 16x2 LCD.
Hier regelt de ESP8266 het volledige proces en stuurt ook de informatie over de parkeerbeschikbaarheid naar Google Firebase, zodat deze overal ter wereld via internet kan worden gecontroleerd. Twee IR-sensoren worden gebruikt bij het in- en uitgangspoort om de aanwezigheid van een auto te detecteren en het hek automatisch te openen of te sluiten. IR-sensor wordt gebruikt om elk object te detecteren door de IR-stralen te verzenden en te ontvangen, lees hier meer over IR-sensoren.
Twee servo 's fungeren als in- en uitgangspoort en ze draaien om de poort te openen of te sluiten. Ten slotte wordt een ultrasone sensor gebruikt om te detecteren of het parkeerslot beschikbaar of bezet is en de gegevens dienovereenkomstig naar ESP8266 te sturen. Bekijk de video aan het einde van deze tutorial om de volledige werking van het project te begrijpen.
Dit is hoe dit complete prototype van het slimme parkeersysteem eruit zal zien:
Programmering ESP8266 NodeMCU voor slimme parkeeroplossing
Aan het einde van deze tutorial wordt de volledige code met een werkende video gegeven, hier leggen we het volledige programma uit om de werking van het project te begrijpen.
Om NodeMCU te programmeren, sluit u de NodeMCU gewoon aan op de computer met een micro-USB-kabel en opent u Arduino IDE. De bibliotheken zijn vereist voor I2C-display en servomotor. Op het LCD-scherm wordt de beschikbaarheid van parkeerplaatsen weergegeven en de servomotoren worden gebruikt om de in- en uitgangspoorten te openen en te sluiten. De Wire.h- bibliotheek zal worden gebruikt om het LCD-scherm in het i2c-protocol te koppelen. De pinnen voor I2C in de ESP8266 NodeMCU zijn D1 (SCL) en D2 (SDA). De database die hier wordt gebruikt, is Firebase, dus hier nemen we ook de bibliotheek (FirebaseArduino.h) voor op.
# omvatten
Voeg vervolgens de firebase-inloggegevens toe die u van Google Firebase hebt gekregen. Deze bevatten de hostnaam met uw projectnaam en een geheime sleutel. Volg de vorige tutorial over Firebase om deze waarden te vinden.
#define FIREBASE_HOST "smart-parking-7f5b6.firebaseio.com" #define FIREBASE_AUTH "suAkUQ4wXRPW7nA0zJQVsx3H2LmeBDPGmfTMBHCT"
Voeg de Wi-Fi-referenties toe, zoals WiFi SSID en wachtwoord.
#define WIFI_SSID "CircuitDigest" #define WIFI_PASSWORD "circuitdigest101"
Initialiseer I2C LCD met apparaatadres (hier is het 0x27) en type LCD. Omvat ook de servomotoren voor de in- en uitgangspoort.
LiquidCrystal_I2C lcd (0x27, 16, 2); Servo myservo; Servo myservo1;
Start de I2C-communicatie voor I2C LCD.
Wire.begin (D2, D1);
Verbind de ingangs- en uitgangsservomotor met de D5-, D6-pinnen van de NodeMCU.
myservo.attach (D6); myservos.attach (D5);
Selecteer de triggerpen van de ultrasone sensor als uitgang en echopin als ingang. De ultrasone sensor wordt gebruikt om de beschikbaarheid van parkeerplaatsen te detecteren. Als de auto de ruimte heeft ingenomen, zal hij gloeien, anders zal hij niet gloeien.
pinMode (TRIG, OUTPUT); pinMode (ECHO, INPUT);
De twee pinnen D0 en D4 van de NodeMCU worden gebruikt om de IR-sensor uit te lezen. De IR-sensor fungeert als ingangs- en uitgangspoortsensor. Dit zal de aanwezigheid van een auto detecteren.
pinMode (carExited, INPUT); pinMode (carEnter, INPUT);
Maak verbinding met wifi en wacht enige tijd totdat er verbinding is.
WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.print ("Verbinden met"); Serial.print (WIFI_SSID); while (WiFi.status ()! = WL_CONNECTED) { Serial.print ("."); vertraging (500); }
Maak verbinding met Firebase met Host en Secret Key als inloggegevens.
Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);
Begin i2c 16x2 LCD en zet de cursorpositie op de 0 e rij 0 de kolom.
lcd.begin (); lcd.setCursor (0, 0);
Neem de afstand van de ultrasone sensor. Dit wordt gebruikt om de aanwezigheid van het voertuig op de specifieke plek te detecteren. Stuur eerst de 2 microseconde puls en lees daarna de ontvangen puls. Converteer het vervolgens naar de 'cm'. Lees hier meer over het meten van afstanden met een ultrasone sensor.
digitalWrite (TRIG, LOW); delayMicroseconds (2); digitalWrite (TRIG, HIGH); delayMicroseconds (10); digitalWrite (TRIG, LOW); duur = pulseIn (ECHO, HIGH); afstand = (duur / 2) / 29,1;
Lees de IR-sensorpin digitaal uit als ingangssensor en controleer of deze hoog is. Als het hoog is, verhoog dan het aantal invoeren en druk het af op een 16x2 LCD-scherm en ook op een seriële monitor.
int carEntry = digitalRead (carEnter); if (carEntry == HIGH) { countYes ++; Serial.print ("Car Entered ="); Serial.println (countYes); lcd.setCursor (0, 1); lcd.print ("Auto ingevoerd");
Verplaats ook de hoek van de servomotor om de toegangspoort te openen. Verander de hoek volgens uw gebruikssituatie.
voor (pos = 140; pos> = 45; pos - = 1) { myservos.write (pos); vertraging (5); } vertraging (2000); for (pos = 45; pos <= 140; pos + = 1) { // in stappen van 1 graad myservos.write (pos); vertraging (5); }
En stuur de lezing naar firebase met behulp van de pushString- functie van de Firebase-bibliotheek.
Firebase.pushString ("/ Parkeerstatus /", fireAvailable);
Voer dezelfde stappen uit als hierboven voor Exit IR-sensor en Exit servomotor.
int carExit = digitalRead (carExited); if (carExit == HIGH) { countYes--; Serial.print ("Car Exited ="); Serial.println (countYes); lcd.setCursor (0, 1); lcd.print ("Car Exited"); voor (pos1 = 140; pos1> = 45; pos1 - = 1) { myservo.write (pos1); vertraging (5); } vertraging (2000); for (pos1 = 45; pos1 <= 140; pos1 + = 1) { // in stappen van 1 graad myservo.write (pos1); vertraging (5); } Firebase.pushString ("/ Parkeerstatus /", fireAvailable); lcd.clear (); }
Controleer of de auto op de parkeerplaats is aangekomen en of hij is aangekomen dan geeft de glow led het signaal dat de plek vol is.
if (afstand <6) { Serial.println ("Bezet"); digitalWrite (led, HIGH); }
Laat anders zien dat de plek beschikbaar is.
if (afstand> 6) { Serial.println ("Beschikbaar"); digitalWrite (led, LOW); }
Bereken de totale lege ruimte op de parkeerplaats en sla deze op in de string om de gegevens naar Firebase te sturen.
Empty = allSpace - countYes; Available = String ("Available =") + String (Leeg) + String ("/") + String (allSpace); fireAvailable = String ("Available =") + String (Leeg) + String ("/") + String (allSpace); Druk de gegevens ook af op de i2C LCD. lcd.setCursor (0, 0); lcd.print (beschikbaar);
Dit is hoe de beschikbaarheid van parkeerplaatsen online kan worden gevolgd op Firebase, zoals weergegeven in de onderstaande momentopname:
Hiermee is het complete slimme parkeersysteem voltooid met behulp van de ESP8266 NodeMCU-module en verschillende randapparatuur. U kunt ook andere sensoren gebruiken ter vervanging van de ultrasone en IR-sensor. Er is een uitgebreide toepassing van Smart Parking System en er kunnen verschillende producten worden toegevoegd om het slimmer te maken. Reageer hieronder als je twijfelt of neem contact op met ons forum voor meer ondersteuning.