- Components necessaris
- Esquema de connexions
- Programació ESP8266 NodeMCU per a la solució Smart Parking
Amb la creixent popularitat de les ciutats intel·ligents, sempre hi ha una demanda de solucions intel·ligents per a tots els dominis. L’IoT ha permès la possibilitat de Smart Cities amb la funció de control d’Internet. Una persona pot controlar els dispositius instal·lats a casa seva o a l'oficina des de qualsevol lloc del món només mitjançant un telèfon intel·ligent o qualsevol dispositiu connectat a Internet. Hi ha diversos dominis en una ciutat intel·ligent i Smart Parking és un dels dominis més populars de la ciutat intel·ligent.
La indústria de l’aparcament intel·ligent ha vist diverses innovacions, com ara el sistema de gestió d’estacionaments intel·ligents, el control de portes intel·ligents, les càmeres intel·ligents que poden detectar tipus de vehicles, l’ANPR (reconeixement automàtic de matrícules), el sistema de pagament intel·ligent, el sistema d’entrada intel·ligent i molts altres. Avui es seguirà un enfocament similar i es crearà una solució d’estacionament intel·ligent que utilitzarà un sensor d’ultrasons per detectar la presència del vehicle i activar la porta per obrir-se o tancar-se automàticament. Aquí s’utilitzarà l’ESP8266 NodeMCU com a controlador principal per controlar tots els perifèrics connectats.
ESP8266 és el controlador més popular per construir aplicacions basades en IoT, ja que té suport integrat per a Wi-Fi per connectar-se a Internet. Abans l’utilitzàvem per construir molts projectes IoT com:
- Sistema de seguretat basat en IOT
- Smart Junction Box per a la domòtica
- Sistema de control de la contaminació atmosfèrica basat en IOT
- Envia dades a ThingSpeak
Consulteu aquí tot el Projecte basat en ESP8266.
En aquest sistema d’aparcament intel·ligent IoT, enviarem dades al servidor web per buscar la disponibilitat d’espai per aparcar vehicles. Aquí fem servir Firebase com a base de dades Iot per obtenir les dades de disponibilitat d’aparcament. Per a això, hem de trobar l'adreça d'amfitrió de Firebase i la clau secreta per a l'autorització. Si ja sabeu utilitzar Firebase amb NodeMCU, podeu avançar; en primer lloc, heu d'aprendre a fer servir Google Firebase Console amb ESP8266 NodeMCU per obtenir l'adreça d'amfitrió i la clau secreta.
Components necessaris
- ESP8266 NodeMCU
- Sensor d'ultrasons
- Servomotor de CC
- Sensors IR
- Pantalla LCD i2c de 16x2
- Saltadors
Esquema de connexions
A continuació es mostra el diagrama de circuits d’aquest sistema d’aparcament de vehicles basat en l’IoT. Inclou dos sensors IR, dos servomotors, un sensor ultrasònic i un LCD 16x2.
Aquí l’ESP8266 controlarà el procés complet i també enviarà la informació de disponibilitat d’estacionament a Google Firebase perquè es pugui controlar des de qualsevol lloc del món a través d’Internet. S'utilitzen dos sensors IR a la porta d'entrada i sortida per detectar la presència del cotxe i obrir o tancar automàticament la porta. El sensor IR es fa servir per detectar qualsevol objecte enviant i rebent els rajos IR. Obteniu més informació sobre el sensor IR.
Dos servos actuaran com a porta d’entrada i sortida i giren per obrir o tancar la porta. Finalment, s’utilitza un sensor d’ultrasons per detectar si la ranura d’estacionament està disponible o està ocupada i enviar les dades a l’ESP8266 en conseqüència. Consulteu el vídeo que es dóna al final d’aquest tutorial per entendre el funcionament complet del projecte.

Així serà aquest prototip complet del sistema d’aparcament intel·ligent:

Programació ESP8266 NodeMCU per a la solució Smart Parking
Al final d’aquest tutorial es dóna un codi complet amb un vídeo de treball; aquí expliquem el programa complet per entendre el funcionament del projecte.
Per programar NodeMCU, només cal que connecteu el NodeMCU a l'ordinador amb un cable micro USB i obriu l'IDE Arduino. Les biblioteques són necessàries per a la pantalla I2C i el motor servo. La pantalla LCD mostrarà la disponibilitat d’espais d’aparcament i els servomotors s’utilitzaran per obrir i tancar les portes d’entrada i sortida. La biblioteca Wire.h s'utilitzarà per a la interfície LCD en protocol i2c. Els pins per a I2C de l’ESP8266 NodeMCU són D1 (SCL) i D2 (SDA). La base de dades aquí utilitzada serà Firebase, de manera que aquí també incloem la biblioteca (FirebaseArduino.h) per a la mateixa.
#incloure
A continuació, incloeu les credencials de Firebase obtingudes de Google Firebase. Inclouran el nom de l’amfitrió que conté el nom del projecte i una clau secreta. Per trobar aquests valors, seguiu el tutorial anterior a Firebase.
#define FIREBASE_HOST "smart-parking-7f5b6.firebaseio.com" #define FIREBASE_AUTH "suAkUQ4wXRPW7nA0zJQVsx3H2LmeBDPGmfTMBHCT"
Incloeu les credencials Wi-Fi, com ara SSID WiFi i contrasenya.
#define WIFI_SSID "CircuitDigest" #define WIFI_PASSWORD "circuitdigest101"
Inicialitzeu la pantalla LCD I2C amb l'adreça del dispositiu (aquí és 0x27) i el tipus de pantalla LCD. Incloeu també els servomotors per a la porta d’entrada i sortida.
LiquidCrystal_I2C lcd (0x27, 16, 2); Servo miservo; Servo myservo1;
Inicieu la comunicació I2C per a la pantalla LCD I2C.
Wire.begin (D2, D1);
Connecteu el motor servo d'entrada i sortida als pins D5 i D6 del NodeMCU.
myservo.attach (D6); myservos.attach (D5);
Seleccioneu el disparador del sensor d'ultrasons com a sortida i el ressò com a entrada. El sensor d'ultrasons s'utilitzarà per detectar la disponibilitat de places d'aparcament. Si el cotxe ha ocupat l'espai, brillarà en cas contrari, no brillarà.
pinMode (TRIG, OUTPUT); pinMode (ECHO, INPUT);
Els dos pins D0 i D4 del NodeMCU s’utilitzen per agafar la lectura del sensor IR. El sensor IR actuarà com a sensor de porta d’entrada i sortida. Això detectarà la presència del cotxe.
pinMode (carExited, INPUT); pinMode (carEnter, INPUT);
Connecteu-vos a WiFi i espereu un temps fins que es connecti.
WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.print ("Connexió a"); Serial.print (WIFI_SSID); while (WiFi.status ()! = WL_CONNECTED) { Serial.print ("."); retard (500); }
Comenceu la connexió amb Firebase amb amfitrió i clau secreta com a credencials.
Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);
Comenceu l'i2c 16x2 LCD i configureu la posició del cursor a la 0a fila 0a columna.
lcd.begin (); lcd.setCursor (0, 0);
Prengui la distància del sensor d'ultrasons. S’utilitzarà per detectar la presència del vehicle al lloc concret. Primer envieu el pols de 2 microsegons i després llegiu el pols rebut. A continuació, converteix-lo a "cm". Obteniu més informació sobre com mesurar la distància mitjançant el sensor d’ultrasons aquí.
digitalWrite (TRIG, LOW); delayMicroseconds (2); digitalWrite (TRIG, HIGH); delayMicroseconds (10); digitalWrite (TRIG, LOW); durada = pulseIn (ECHO, HIGH); distància = (durada / 2) / 29,1;
Llegiu digitalment el pin del sensor IR com a sensor d’entrada i comproveu si és alt. Si és alt, incrementeu el nombre d’entrades i imprimiu-lo a la pantalla LCD de 16x2 i també al monitor sèrie.
int carEntry = DigitalRead (carEnter); if (carEntry == HIGH) { countYes ++; Serial.print ("Cotxe introduït ="); Serial.println (countYes); lcd.setCursor (0, 1); lcd.print ("Cotxe introduït");
Mou també l’angle del servomotor per obrir la porta d’entrada. Canvieu l’angle segons el cas d’ús.
per a (pos = 140; pos> = 45; pos - = 1) { myservos.write (pos); retard (5); } demora (2000); for (pos = 45; pos <= 140; pos + = 1) { // en passos d'1 grau myservos.write (pos); retard (5); }
I envieu la lectura a firebase mitjançant la funció pushString de la biblioteca Firebase.
Firebase.pushString ("/ Parking Status /", fireAvailable);
Feu els passos similars a l'anterior per al sensor IR de sortida i el servomotor Exit.
int carExit = digitalRead (carExited); if (carExit == HIGH) { countYes--; Serial.print ("Cotxe sortit ="); Serial.println (countYes); lcd.setCursor (0, 1); lcd.print ("Cotxe sortit"); per a (pos1 = 140; pos1> = 45; pos1 - = 1) { myservo.write (pos1); retard (5); } demora (2000); per a (pos1 = 45; pos1 <= 140; pos1 + = 1) { // en passos d'1 grau myservo.write (pos1); retard (5); } Firebase.pushString ("/ Parking Status /", fireAvailable); lcd.clear (); }
Comproveu si el cotxe ha arribat al lloc d’aparcament i si ha arribat, aleshores s’encén donant el senyal que el lloc està ple.
if (distància <6) { Serial.println ("Ocupat"); digitalWrite (led, HIGH); }
Altrament, demostren que l’espot està disponible.
if (distància> 6) { Serial.println ("Disponible"); digitalWrite (led, BAIX); }
Calculeu l'espai buit total dins de l'aparcament i deseu-lo a la cadena per enviar les dades a Firebase.
Buit = allSpace - countSí; Disponible = Cadena ("Disponible =") + Cadena (buida) + Cadena ("/") + Cadena (allSpace); fireAvailable = Cadena ("Disponible =") + Cadena (buida) + Cadena ("/") + Cadena (allSpace); També imprimiu les dades a la pantalla LCD i2C. lcd.setCursor (0, 0); lcd.print (disponible);


Així es pot fer un seguiment de la disponibilitat d’aparcament en línia a Firebase, tal com es mostra a la instantània següent:

Amb això s’acaba el sistema d’aparcament intel·ligent complet mitjançant el mòdul ESP8266 NodeMCU i diferents perifèrics. Podeu utilitzar altres sensors també en substitució del sensor d'ultrasons i IR. Hi ha una gran aplicació del Smart Parking System i es poden afegir diferents productes per fer-lo més intel·ligent. Comenta a continuació si tens cap dubte o contacta amb el nostre fòrum per obtenir més assistència.
