- Componentes requeridos
- Diagrama de circuito
- Programación de ESP8266 NodeMCU para una solución de estacionamiento inteligente
Con la creciente popularidad de las ciudades inteligentes, siempre existe una demanda de soluciones inteligentes para todos los dominios. El IoT ha habilitado la posibilidad de Smart Cities con su función de control a través de Internet. Una persona puede controlar los dispositivos instalados en su hogar u oficina desde cualquier parte del mundo con solo usar un teléfono inteligente o cualquier dispositivo conectado a Internet. Hay varios dominios en una ciudad inteligente y Smart Parking es uno de los dominios populares en Smart City.
La industria del estacionamiento inteligente ha visto una serie de innovaciones, como el sistema de gestión de estacionamiento inteligente, el control de puerta inteligente, cámaras inteligentes que pueden detectar tipos de vehículos, ANPR (reconocimiento automático de matrículas), sistema de pago inteligente, sistema de entrada inteligente y muchos más. Hoy se seguirá un enfoque similar y se construirá una solución de estacionamiento inteligente que utilizará un sensor ultrasónico para detectar la presencia del vehículo y activar la puerta para que se abra o se cierre automáticamente. El ESP8266 NodeMCU se utilizará aquí como el controlador principal para controlar todos los periféricos conectados a él.
ESP8266 es el controlador más popular para crear aplicaciones basadas en IoT, ya que tiene soporte incorporado para Wi-Fi para conectarse a Internet. Anteriormente lo usamos para construir muchos proyectos de IoT como:
- Sistema de seguridad basado en IOT
- Caja de conexiones inteligente para domótica
- Sistema de monitoreo de contaminación del aire basado en IOT
- Enviar datos a ThingSpeak
Consulte todo el proyecto basado en ESP8266 aquí.
En este sistema de estacionamiento inteligente IoT, enviaremos datos al servidor web para buscar la disponibilidad de espacio para estacionamiento de vehículos. Aquí estamos usando firebase como base de datos Iot para obtener los datos de disponibilidad de estacionamiento. Para esto, necesitamos encontrar la dirección de host de Firebase y la clave secreta para la autorización. Si ya sabe cómo usar firebase con NodeMCU, puede seguir adelante; de lo contrario, primero debe aprender a usar Google Firebase Console con ESP8266 NodeMCU para obtener la dirección de host y la clave secreta.
Componentes requeridos
- ESP8266 NodeMCU
- Sensor ultrasónico
- Servomotor DC
- Sensores de infrarrojos
- Pantalla LCD 16x2 i2c
- Jerséis
Diagrama de circuito
El diagrama de circuito para este sistema de estacionamiento de vehículos basado en IoT se muestra a continuación. Se trata de dos sensores de infrarrojos, dos servomotores, un sensor ultrasónico y una pantalla LCD de 16x2.
Aquí, el ESP8266 controlará el proceso completo y también enviará la información de disponibilidad de estacionamiento a Google Firebase para que pueda monitorearse desde cualquier parte del mundo a través de Internet. Se utilizan dos sensores IR en la puerta de entrada y salida para detectar la presencia de un automóvil y abrir o cerrar la puerta automáticamente. El sensor de infrarrojos se utiliza para detectar cualquier objeto mediante el envío y la recepción de rayos infrarrojos. Obtenga más información sobre el sensor de infrarrojos aquí.
Dos servos actuarán como puerta de entrada y salida y giran para abrir o cerrar la puerta. Finalmente , se usa un sensor ultrasónico para detectar si el espacio de estacionamiento está disponible u ocupado y enviar los datos al ESP8266 en consecuencia. Consulte el video que se proporciona al final de este tutorial para comprender el funcionamiento completo del proyecto.
Así es como se verá este prototipo completo de sistema de estacionamiento inteligente:
Programación de ESP8266 NodeMCU para una solución de estacionamiento inteligente
El código completo con un video funcional se da al final de este tutorial, aquí estamos explicando el programa completo para entender el funcionamiento del proyecto.
Para programar NodeMCU, simplemente conecte el NodeMCU a la computadora con un cable micro USB y abra Arduino IDE. Las bibliotecas son necesarias para la pantalla I2C y el servomotor. La pantalla LCD mostrará la disponibilidad de espacios de estacionamiento y los servomotores se utilizarán para abrir y cerrar las puertas de entrada y salida. La biblioteca Wire.h se utilizará para interconectar LCD en el protocolo i2c. Los pines para I2C en el ESP8266 NodeMCU son D1 (SCL) y D2 (SDA). La base de datos aquí utilizada será Firebase, por lo que aquí también incluimos la biblioteca (FirebaseArduino.h) para la misma.
#incluir
Luego, incluya las credenciales de firebase obtenidas de Google Firebase. Estos incluirán el nombre de host que contiene el nombre de su proyecto y una clave secreta. Para encontrar estos valores, siga el tutorial anterior en Firebase.
#define FIREBASE_HOST "smart-parking-7f5b6.firebaseio.com" #define FIREBASE_AUTH "suAkUQ4wXRPW7nA0zJQVsx3H2LmeBDPGmfTMBHCT"
Incluya las credenciales de Wi-Fi como WiFi SSID y contraseña.
#define WIFI_SSID "CircuitDigest" #define WIFI_PASSWORD "circuitdigest101"
Inicialice el LCD I2C con la dirección del dispositivo (aquí es 0x27) y el tipo de LCD. También incluye los servomotores para puerta de entrada y salida.
LiquidCrystal_I2C lcd (0x27, 16, 2); Servo myservo; Servo myservo1;
Inicie la comunicación I2C para I2C LCD.
Wire.begin (D2, D1);
Conecte el servomotor de entrada y salida a los pines D5, D6 del NodeMCU.
myservo.attach (D6); myservos.attach (D5);
Seleccione el Pin de disparo del sensor ultrasónico como Salida y el Pin de eco como Entrada. El sensor ultrasónico se utilizará para detectar la disponibilidad de plazas de aparcamiento. Si el coche ha ocupado el espacio, brillará, de lo contrario no brillará.
pinMode (DISPARO, SALIDA); pinMode (ECHO, ENTRADA);
Los dos pines D0 y D4 del NodeMCU se utilizan para tomar la lectura del sensor de infrarrojos. El sensor de infrarrojos actuará como sensor de puerta de entrada y salida. Esto detectará la presencia de un automóvil.
pinMode (carExited, INPUT); pinMode (carEnter, INPUT);
Conéctese a WiFi y espere un tiempo hasta que se conecte.
WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.print ("Conectando a"); Serial.print (WIFI_SSID); while (WiFi.status ()! = WL_CONNECTED) { Serial.print ("."); retraso (500); }
Comience la conexión con Firebase con Host y Secret Key como credenciales.
Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);
Comience LCD 16x2 I2C y posición del cursor conjunto a 0 º fila 0 º columna.
lcd.begin (); lcd.setCursor (0, 0);
Tome la distancia del sensor ultrasónico. Esto se utilizará para detectar la presencia del vehículo en el lugar en particular. Primero envíe el pulso de 2 microsegundos y luego lea el pulso recibido. Luego conviértalo a 'cm'. Obtenga más información sobre cómo medir la distancia con un sensor ultrasónico aquí.
digitalWrite (TRIG, LOW); delayMicroseconds (2); digitalWrite (TRIG, HIGH); delayMicroseconds (10); digitalWrite (TRIG, LOW); duración = pulseIn (ECHO, HIGH); distancia = (duración / 2) / 29,1;
Lea digitalmente el pin del sensor de infrarrojos como sensor de entrada y compruebe si está alto. Si es alto, incremente el recuento de entradas e imprímalo en la pantalla LCD de 16x2 y también en el monitor en serie.
int carEntry = digitalRead (carEnter); if (carEntry == HIGH) { countYes ++; Serial.print ("Coche ingresado ="); Serial.println (countYes); lcd.setCursor (0, 1); lcd.print ("Coche ingresado");
También mueva el ángulo del servomotor para abrir la puerta de entrada. Cambie el ángulo según su caso de uso.
para (pos = 140; pos> = 45; pos - = 1) { miservos.escribir (pos); retraso (5); } retraso (2000); for (pos = 45; pos <= 140; pos + = 1) { // en pasos de 1 grado myservos.write (pos); retraso (5); }
Y envíe la lectura a firebase mediante la función pushString de la biblioteca de Firebase.
Firebase.pushString ("/ Estado de estacionamiento /", fireAvailable);
Realice pasos similares a los anteriores para el sensor IR de salida y el servomotor de salida.
int carSalir = digitalRead (carExited); if (carSalir == ALTO) { countYes--; Serial.print ("Coche salido ="); Serial.println (countYes); lcd.setCursor (0, 1); lcd.print ("Coche salido"); para (pos1 = 140; pos1> = 45; pos1 - = 1) { myservo.write (pos1); retraso (5); } retraso (2000); for (pos1 = 45; pos1 <= 140; pos1 + = 1) { // en pasos de 1 grado myservo.write (pos1); retraso (5); } Firebase.pushString ("/ Estado de estacionamiento /", fireAvailable); lcd.clear (); }
Compruebe si el coche ha llegado al lugar de estacionamiento y si ha llegado, el LED se ilumina dando la señal de que el lugar está lleno.
if (distancia <6) { Serial.println ("Ocupado"); digitalWrite (led, ALTO); }
De lo contrario, muestre que el lugar está disponible.
if (distancia> 6) { Serial.println ("Disponible"); digitalWrite (led, BAJO); }
Calcula el espacio vacío total dentro del estacionamiento y guárdalo en la cadena para enviar los datos a firebase.
Empty = allSpace - countYes; Disponible = Cadena ("Disponible =") + Cadena (Vacío) + Cadena ("/") + Cadena (allSpace); fireAvailable = String ("Disponible =") + String (Vacío) + String ("/") + String (allSpace); También imprima los datos en la pantalla LCD i2C. lcd.setCursor (0, 0); lcd.print (disponible);
Así es como se puede rastrear la disponibilidad de estacionamiento en línea en Firebase, como se muestra en la instantánea a continuación:
Esto finaliza el sistema de estacionamiento inteligente completo utilizando el Módulo NodeMCU ESP8266 y diferentes periféricos. Puede utilizar otros sensores también en sustitución del sensor ultrasónico e infrarrojo. Existe una amplia aplicación de Smart Parking System y se pueden agregar diferentes productos para hacerlo más inteligente. Comente a continuación si tiene alguna duda o acuda a nuestro foro para obtener más ayuda.