- Необходими компоненти
- Електрическа схема
- Програмиране на ESP8266 NodeMCU за интелигентно решение за паркиране
С нарастващата популярност на Smart Cities, винаги има търсене на интелигентни решения за всеки домейн. IoT даде възможност на Smart Cities, благодарение на функцията за контрол на интернет. Човек може да контролира устройствата, инсталирани в дома или офиса си, от всяка точка на света, като използва само смартфон или други устройства, свързани с интернет. Има много домейни в интелигентен град и Smart Parking е един от популярните домейни в Smart City.
Индустрията за интелигентно паркиране е забелязала редица нововъведения, като Smart Management Management System, Smart Gate Control, Smart Cameras, които могат да откриват типове превозни средства, ANPR (Автоматично разпознаване на регистрационния номер), Smart Payment System, Smart Entry System и много други. Днес ще се следва подобен подход и ще бъде изградено интелигентно решение за паркиране, което ще използва ултразвуков сензор за откриване на присъствието на превозното средство и ще задейства портата да се отваря или затваря автоматично. Тук ще се използва ESP8266 NodeMCU като основен контролер за управление на всички периферни устройства, прикрепени към него.
ESP8266 е най-популярният контролер за изграждане на приложения, базирани на IoT, тъй като има вградена поддръжка за Wi-Fi за свързване с интернет. Преди това го използвахме за изграждане на много IoT проекти като:
- IOT базирана система за сигурност
- Интелигентна кутия за автоматизация на дома
- IOT базирана система за наблюдение на замърсяването на въздуха
- Изпратете данни до ThingSpeak
Проверете всички проекти, базирани на ESP8266, тук.
В тази IoT система за интелигентно паркиране ще изпратим данни на уеб сървър за търсене на наличността на място за паркиране на превозни средства. Тук използваме firebase като Iot база данни, за да получим данните за наличността на паркинга. За това трябва да намерим адреса на хоста на Firebase и секретния ключ за оторизация. Ако вече знаете как да използвате firebase с NodeMCU, можете да продължите напред, първо трябва да се научите да използвате Google Firebase Console с ESP8266 NodeMCU, за да получите адреса на хоста и секретния ключ.
Необходими компоненти
- ESP8266 NodeMCU
- Ултразвуков сензор
- DC серво мотор
- IR сензори
- 16x2 i2c LCD дисплей
- Джъмпери
Електрическа схема
Електрическа схема за тази система за паркиране на превозни средства, базирана на IoT, е дадена по-долу. Той включва два IR сензора, два серво мотора, един ултразвуков сензор и един 16x2 LCD.
Тук ESP8266 ще контролира цялостния процес, а също така ще изпраща информация за наличността на паркинг до Google Firebase, така че да може да се наблюдава от всяка точка на света по интернет. Два IR сензора се използват на входа и на изхода за откриване на присъствието на автомобила и автоматично отваряне или затваряне на портата. IR сензор се използва за откриване на всеки обект чрез изпращане и получаване на IR лъчи, научете повече за IR сензора тук.
Два сервомотора ще действат като вход и изход и те се въртят, за да отворят или затворят портата. Накрая се използва ултразвуков сензор, за да открие дали слотът за паркиране е наличен или зает и съответно да изпрати данните на ESP8266. Проверете видеото, дадено в края на този урок, за да разберете пълната работа на проекта.
Ето как ще изглежда този пълен прототип на системата за интелигентно паркиране:
Програмиране на ESP8266 NodeMCU за интелигентно решение за паркиране
Пълен код с работещо видео е даден в края на този урок, тук ние обясняваме пълната програма, за да разберем работата на проекта.
За програмиране на NodeMCU, просто включете NodeMCU към компютър с Micro USB кабел и отворете Arduino IDE. Библиотеките са необходими за I2C дисплей и серво мотор. LCD ще покаже наличността на места за паркиране, а серво моторите ще се използват за отваряне и затваряне на входните и изходните врати. В Wire.h библиотеката ще бъдат използвани да се намесвам LCD в i2c протокол. Пиновете за I2C в ESP8266 NodeMCU са D1 (SCL) и D2 (SDA). Базата данни, която се използва тук, ще бъде Firebase, така че тук включваме и библиотеката (FirebaseArduino.h) за същата.
#include
След това включете идентификационните данни на firebase, получени от Google Firebase. Те ще включват името на хоста, съдържащо името на вашия проект и секретен ключ. За да намерите тези стойности, следвайте предишния урок за Firebase.
#define FIREBASE_HOST "smart-parking-7f5b6.firebaseio.com" #define FIREBASE_AUTH "suAkUQ4wXRPW7nA0zJQVsx3H2LmeBDPGmfTMBHCT"
Включете Wi-Fi идентификационните данни като WiFi SSID и парола.
#define WIFI_SSID "CircuitDigest" #define WIFI_PASSWORD "circuitdigest101"
Инициализирайте I2C LCD с адрес на устройството (тук е 0x27) и тип LCD. Включете и серво мотори за вход и изход.
LiquidCrystal_I2C lcd (0x27, 16, 2); Серво мисерво; Серво myservo1;
Стартирайте I2C комуникацията за I2C LCD.
Wire.begin (D2, D1);
Свържете серво мотора за влизане и излизане към щифтовете D5, D6 на NodeMCU.
myservo.attach (D6); myservos.attach (D5);
Изберете Trigger Pin на ултразвуков сензор като Output и Echo Pin като Input. Ултразвуковият сензор ще се използва за откриване на наличността на паркомястото. Ако Колата е заела пространството, тогава тя ще свети, иначе няма да свети.
pinMode (TRIG, OUTPUT); pinMode (ECHO, INPUT);
Двата извода D0 и D4 на NodeMCU се използват за отчитане на IR сензора. IR сензорът ще действа като сензор за вход и изход. Това ще открие присъствието на автомобила.
pinMode (carExited, INPUT); pinMode (carEnter, INPUT);
Свържете се с WiFi и изчакайте известно време, докато се свърже.
WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.print ("Свързване с"); Serial.print (WIFI_SSID); докато (WiFi.status ()! = WL_CONNECTED) { Serial.print ("."); забавяне (500); }
Започнете връзка с Firebase с хост и секретен ключ като идентификационни данни.
Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);
Започнете i2c 16x2 LCD и задайте позицията на курсора на 0 -ти ред 0 -та колона.
lcd.begin (); lcd.setCursor (0, 0);
Вземете разстоянието от ултразвуков сензор. Това ще се използва за откриване на присъствието на превозното средство на конкретното място. Първо изпратете 2 микросекундния импулс и след това прочетете получения импулс. След това го преобразувайте в 'cm'. Научете повече за измерването на разстоянието с помощта на ултразвуков сензор тук.
digitalWrite (TRIG, LOW); delayMicroseconds (2); digitalWrite (TRIG, HIGH); delayMicroseconds (10); digitalWrite (TRIG, LOW); продължителност = pulseIn (ECHO, HIGH); разстояние = (продължителност / 2) / 29,1;
Прочетете цифрово щифта на IR сензора като входен сензор и проверете дали е висок. Ако е висок, увеличете броя на влизанията и го отпечатайте на LCD дисплей 16x2, а също и на сериен монитор.
int carEntry = digitalRead (carEnter); if (carEntry == HIGH) { countYes ++; Serial.print ("Car Entered ="); Serial.println (бройДа); lcd.setCursor (0, 1); lcd.print ("Car Entered");
Също така преместете ъгъла на серво мотора, за да отворите входния отвор. Променете ъгъла според вашия случай на употреба.
за (pos = 140; pos> = 45; pos - = 1) { myservos.write (pos); забавяне (5); } забавяне (2000); за (pos = 45; pos <= 140; pos + = 1) { // на стъпки от 1 градус myservos.write (pos); забавяне (5); }
И изпратете четенето към firebase, като използвате функцията pushString на библиотеката Firebase.
Firebase.pushString ("/ Статус на паркиране /", fireAvailable);
Направете подобни стъпки, както по-горе за изход IR сензор и изход серво мотор.
int carExit = digitalRead (carExited); if (carExit == HIGH) { countYes--; Serial.print ("Car Exited ="); Serial.println (бройДа); lcd.setCursor (0, 1); lcd.print ("Автомобилът е излязъл"); за (pos1 = 140; pos1> = 45; pos1 - = 1) { myservo.write (pos1); забавяне (5); } забавяне (2000); за (pos1 = 45; pos1 <= 140; pos1 + = 1) { // на стъпки от 1 градус myservo.write (pos1); забавяне (5); } Firebase.pushString ("/ Статус на паркиране /", fireAvailable); lcd.clear (); }
Проверете дали колата е стигнала до мястото за паркиране и дали е пристигнала, тогава светещ светодиод дава сигнал, че мястото е запълнено.
if (разстояние <6) { Serial.println ("Заето"); digitalWrite (led, HIGH); }
Иначе показват, че мястото е достъпно.
ако (разстояние> 6) { Serial.println („Налично“); digitalWrite (led, LOW); }
Изчислете общото празно място в паркинга и го запазете в низа, за да изпратите данните до firebase.
Празно = allSpace - бройДа; Налично = String ("Налично =") + String (празно) + String ("/") + String (allSpace); fireAvailable = String ("Available =") + String (Empty) + String ("/") + String (allSpace); Също така отпечатайте данните на i2C LCD. lcd.setCursor (0, 0); lcd.print (Наличен);
Ето как наличността на паркинг може да бъде проследена онлайн във Firebase, както е показано на снимката по-долу:
Това завършва цялостната система за интелигентно паркиране, използвайки модула ESP8266 NodeMCU и различни периферни устройства. Можете да използвате други сензори също като заместител на ултразвуков и IR сензор. Има огромно приложение на системата за интелигентно паркиране и могат да се добавят различни продукти, за да се направи по-умна. Коментирайте по-долу, ако имате някакви съмнения или се свържете с нашия форум за повече подкрепа.