Avec la popularité croissante des villes intelligentes, il existe toujours une demande de solutions intelligentes pour chaque domaine. L'IoT a permis la possibilité de villes intelligentes avec sa fonction de contrôle Internet. Une personne peut contrôler les appareils installés dans sa maison ou son bureau depuis n'importe où dans le monde en utilisant simplement un smartphone ou n'importe quel appareil connecté à Internet. Il existe plusieurs domaines dans une ville intelligente et Smart Parking est l'un des domaines les plus populaires de la ville intelligente.
L'industrie du stationnement intelligent a vu un certain nombre d'innovations telles que le système de gestion intelligente du stationnement, le contrôle intelligent des portes, les caméras intelligentes qui peuvent détecter les types de véhicules, l'ANPR (reconnaissance automatique des plaques d'immatriculation), le système de paiement intelligent, le système d'entrée intelligent et bien d'autres. Aujourd'hui, une approche similaire sera suivie et une solution de stationnement intelligente sera construite qui utilisera un capteur à ultrasons pour détecter la présence du véhicule et déclencher l'ouverture ou la fermeture automatique du portail. L'ESP8266 NodeMCU sera utilisé ici comme contrôleur principal pour contrôler tous les périphériques qui y sont connectés.
ESP8266 est le contrôleur le plus populaire pour créer des applications basées sur l'IoT car il prend en charge le Wi-Fi pour se connecter à Internet. Nous l'avons précédemment utilisé pour construire de nombreux projets IoT tels que:
- Système de sécurité basé sur l'IOT
- Boîte de jonction intelligente pour la domotique
- Système de surveillance de la pollution atmosphérique basé sur l'IOT
- Envoyer des données à ThingSpeak
Vérifiez tous les projets basés sur ESP8266 ici.
Dans ce système de stationnement intelligent IoT, nous enverrons des données au serveur Web pour rechercher la disponibilité de l'espace pour le stationnement des véhicules. Ici, nous utilisons Firebase comme base de données Iot pour obtenir les données de disponibilité du parking. Pour cela, nous devons trouver l'adresse de l'hôte Firebase et la clé secrète pour l'autorisation. Si vous savez déjà utiliser Firebase avec NodeMCU, vous pouvez aller de l'avant.Sinon, vous devez d'abord apprendre à utiliser Google Firebase Console avec ESP8266 NodeMCU pour obtenir l'adresse d'hôte et la clé secrète.
Composants requis
- ESP8266 NodeMCU
- Capteur à ultrasons
- Servomoteur CC
- Capteurs IR
- Écran LCD 16x2 i2c
- Cavaliers
Schéma
Le schéma de circuit de ce système de stationnement de véhicule basé sur l'IoT est donné ci-dessous. Il implique deux capteurs IR, deux servomoteurs, un capteur à ultrasons et un écran LCD 16x2.
Ici, l'ESP8266 contrôlera le processus complet et enverra également les informations de disponibilité de stationnement à Google Firebase afin qu'il puisse être surveillé de n'importe où dans le monde sur Internet. Deux capteurs IR sont utilisés à l'entrée et à la sortie du portail pour détecter la présence de voiture et ouvrir ou fermer automatiquement le portail. Le capteur IR est utilisé pour détecter n'importe quel objet en envoyant et en recevant les rayons IR, en savoir plus sur le capteur IR ici.
Deux servos feront office de porte d'entrée et de sortie et tournent pour ouvrir ou fermer la porte. Enfin, un capteur à ultrasons est utilisé pour détecter si l'emplacement de stationnement est disponible ou occupé et envoyer les données à l'ESP8266 en conséquence. Consultez la vidéo donnée à la fin de ce tutoriel pour comprendre le fonctionnement complet du projet.
Voici à quoi ressemblera ce prototype de système de stationnement intelligent complet:
Programmation ESP8266 NodeMCU pour Smart Parking Solution
Le code complet avec une vidéo de travail est donné à la fin de ce tutoriel, ici nous expliquons le programme complet pour comprendre le fonctionnement du projet.
Pour programmer NodeMCU, branchez simplement le NodeMCU à l'ordinateur avec un câble micro USB et ouvrez Arduino IDE. Les bibliothèques sont nécessaires pour l'affichage I2C et le servomoteur. L'écran LCD affichera la disponibilité des espaces de stationnement et les servomoteurs seront utilisés pour ouvrir et fermer les portes d'entrée et de sortie. La bibliothèque Wire.h sera utilisée pour interfacer l'écran LCD dans le protocole i2c. Les broches pour I2C dans l'ESP8266 NodeMCU sont D1 (SCL) et D2 (SDA). La base de données utilisée ici sera Firebase donc ici nous incluons également la bibliothèque (FirebaseArduino.h) pour la même chose.
#comprendre
Incluez ensuite les informations d'identification Firebase obtenues de Google Firebase. Ceux-ci comprendront le nom d'hôte contenant le nom de votre projet et une clé secrète. Pour trouver ces valeurs, suivez le tutoriel précédent sur Firebase.
#define FIREBASE_HOST "smart-parking-7f5b6.firebaseio.com" #define FIREBASE_AUTH "suAkUQ4wXRPW7nA0zJQVsx3H2LmeBDPGmfTMBHCT"
Incluez les informations d'identification Wi-Fi telles que le SSID WiFi et le mot de passe.
#define WIFI_SSID "CircuitDigest" #define WIFI_PASSWORD "circuitdigest101"
Initialisez l'écran LCD I2C avec l'adresse de l'appareil (ici, c'est 0x27) et le type d'écran LCD. Inclut également les servomoteurs pour la porte d'entrée et de sortie.
LCD LiquidCrystal_I2C (0x27, 16, 2); Servo myservo; Servo myservo1;
Démarrez la communication I2C pour l'écran LCD I2C.
Wire.begin (D2, D1);
Connectez le servomoteur d'entrée et de sortie aux broches D5, D6 du NodeMCU.
myservo.attach (D6); myservos.attach (D5);
Sélectionnez la broche de déclenchement du capteur à ultrasons comme sortie et la broche d'écho comme entrée. Le capteur à ultrasons sera utilisé pour détecter la disponibilité de la place de stationnement. Si la voiture a occupé l'espace, elle brillera sinon elle ne brillera pas.
pinMode (TRIG, OUTPUT); pinMode (ECHO, INPUT);
Les deux broches D0 et D4 du NodeMCU sont utilisées pour prendre la lecture du capteur IR. Le capteur IR agira comme capteur de porte d'entrée et de sortie. Cela détectera la présence de la voiture.
pinMode (carExited, INPUT); pinMode (carEnter, INPUT);
Connectez-vous au WiFi et attendez un certain temps jusqu'à ce qu'il se connecte.
WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.print ("Connexion à"); Serial.print (WIFI_SSID); while (WiFi.status ()! = WL_CONNECTED) { Serial.print ("."); retard (500); }
Commencez la connexion avec Firebase avec l'hôte et la clé secrète comme informations d'identification.
Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);
Commencez l'écran LCD i2c 16x2 et réglez la position du curseur sur la 0 e ligne 0 e colonne.
lcd.begin (); lcd.setCursor (0, 0);
Prenez la distance du capteur à ultrasons. Cela sera utilisé pour détecter la présence du véhicule à l'endroit particulier. Envoyez d'abord l'impulsion de 2 microsecondes, puis lisez l'impulsion reçue. Puis convertissez-le en «cm». En savoir plus sur la mesure de distance à l'aide d'un capteur à ultrasons ici.
DigitalWrite (TRIG, LOW); delayMicrosecondes (2); DigitalWrite (TRIG, HIGH); delayMicrosecondes (10); DigitalWrite (TRIG, LOW); durée = pulseIn (ECHO, HIGH); distance = (durée / 2) / 29,1;
Lisez numériquement la broche du capteur IR comme capteur d'entrée et vérifiez si elle est élevée. S'il est élevé, incrémentez le nombre d'entrées et imprimez-le sur l'écran LCD 16x2 et également sur le moniteur série.
int carEntry = digitalRead (carEnter); if (carEntry == HIGH) { countYes ++; Serial.print ("Voiture entrée ="); Serial.println (countYes); lcd.setCursor (0, 1); lcd.print ("Voiture entrée");
Déplacez également l'angle du servomoteur pour ouvrir la porte d'entrée. Changez l'angle en fonction de votre cas d'utilisation.
pour (pos = 140; pos> = 45; pos - = 1) { myservos.write (pos); retard (5); } retard (2000); for (pos = 45; pos <= 140; pos + = 1) { // par incréments de 1 degré myservos.write (pos); retard (5); }
Et envoyez la lecture à Firebase en utilisant la fonction pushString de la bibliothèque Firebase.
Firebase.pushString ("/ Parking Status /", fireAvailable);
Suivez les étapes ci-dessus pour le capteur IR de sortie et le servomoteur de sortie.
int carExit = digitalRead (carExited); if (carExit == HIGH) { countYes--; Serial.print ("Voiture sortie ="); Serial.println (countYes); lcd.setCursor (0, 1); lcd.print ("Voiture sortie"); pour (pos1 = 140; pos1> = 45; pos1 - = 1) { myservo.write (pos1); retard (5); } retard (2000); for (pos1 = 45; pos1 <= 140; pos1 + = 1) { // par incréments de 1 degré myservo.write (pos1); retard (5); } Firebase.pushString ("/ Statut de stationnement /", fireAvailable); lcd.clear (); }
Vérifiez si la voiture est arrivée à la place de parking et si elle est arrivée, la led rougeoyante indique que la place est pleine.
if (distance <6) { Serial.println ("Occupied"); digitalWrite (led, HIGH); }
Sinon, montrez que la place est disponible.
if (distance> 6) { Serial.println ("Disponible"); digitalWrite (led, LOW); }
Calculez l'espace vide total à l'intérieur du parking et enregistrez-le dans la chaîne pour envoyer les données à Firebase.
Vide = allSpace - countYes; Disponible = Chaîne ("Disponible =") + Chaîne (Vide) + Chaîne ("/") + Chaîne (allSpace); fireAvailable = String ("Available =") + String (Empty) + String ("/") + String (allSpace); Imprimez également les données sur l'écran LCD i2C. lcd.setCursor (0, 0); lcd.print (disponible);
Voici comment la disponibilité du stationnement peut être suivie en ligne sur Firebase, comme indiqué dans l'instantané ci-dessous:
Ceci termine le système de stationnement intelligent complet utilisant le module ESP8266 NodeMCU et différents périphériques. Vous pouvez également utiliser d'autres capteurs en remplacement du capteur ultrasonique et infrarouge. Il existe une vaste application du système de stationnement intelligent et différents produits peuvent être ajoutés pour le rendre plus intelligent. Commentez ci-dessous si vous avez le moindre doute ou accédez à notre forum pour plus d'assistance.