- Необходимые компоненты
- Принципиальная электрическая схема
- Программирование ESP8266 NodeMCU для решения интеллектуальной парковки
С ростом популярности умных городов всегда существует потребность в умных решениях для каждой области. Интернет вещей включил возможность умных городов с помощью функции управления через Интернет. Человек может управлять устройствами, установленными в его доме или офисе, из любой точки мира, просто используя смартфон или любые устройства, подключенные к Интернету. В умном городе есть несколько доменов, и умная парковка - один из самых популярных доменов в умном городе.
Индустрия интеллектуальной парковки увидела ряд инноваций, таких как интеллектуальная система управления парковкой, интеллектуальное управление воротами, интеллектуальные камеры, которые могут обнаруживать типы транспортных средств, ANPR (автоматическое распознавание номерных знаков), интеллектуальная платежная система, интеллектуальная система входа и многое другое. Сегодня будет применяться аналогичный подход, и будет построено решение для интеллектуальной парковки, которое будет использовать ультразвуковой датчик для определения присутствия транспортного средства и автоматического открытия или закрытия ворот. ESP8266 NodeMCU будет использоваться здесь как главный контроллер для управления всеми подключенными к нему периферийными устройствами.
ESP8266 - самый популярный контроллер для создания приложений на основе Интернета вещей, поскольку он имеет встроенную поддержку Wi-Fi для подключения к Интернету. Ранее мы использовали его для создания многих проектов Интернета вещей, например:
- Система безопасности на основе IOT
- Умная распределительная коробка для домашней автоматизации
- Система мониторинга загрязнения воздуха на базе IOT
- Отправить данные в ThingSpeak
Проверьте все проекты на основе ESP8266 здесь.
В этой системе интеллектуальной парковки IoT мы будем отправлять данные на веб-сервер для проверки наличия места для парковки транспортных средств. Здесь мы используем firebase в качестве базы данных Iot, чтобы получить данные о наличии парковки. Для этого нам нужно найти адрес хоста Firebase и секретный ключ для авторизации. Если вы уже знаете, как использовать firebase с NodeMCU, вы можете двигаться дальше, иначе вам сначала следует научиться использовать консоль Google Firebase с ESP8266 NodeMCU, чтобы получить адрес хоста и секретный ключ.
Необходимые компоненты
- ESP8266 NodeMCU
- Ультразвуковой датчик
- Серводвигатель постоянного тока
- ИК-датчики
- ЖК-дисплей 16x2 i2c
- Джемперы
Принципиальная электрическая схема
Принципиальная схема этой системы парковки транспортных средств на основе Интернета вещей приведена ниже. Он включает в себя два ИК-датчика, два серводвигателя, один ультразвуковой датчик и один ЖК-дисплей 16x2.
Здесь ESP8266 будет контролировать весь процесс, а также отправлять информацию о наличии парковки в Google Firebase, чтобы ее можно было отслеживать из любой точки мира через Интернет. Два ИК-датчика используются на воротах въезда и выезда, чтобы определить присутствие автомобиля и автоматически открыть или закрыть ворота. ИК-датчик используется для обнаружения любого объекта путем отправки и получения ИК-лучей, подробнее об ИК-датчике можно узнать здесь.
Два сервопривода будут действовать как ворота входа и выхода, и они вращаются, чтобы открыть или закрыть ворота. Наконец, ультразвуковой датчик используется для определения наличия или занятости парковочного места и отправки данных на ESP8266 соответственно. Посмотрите видео в конце этого урока, чтобы понять, как работает проект.
Вот как будет выглядеть готовый прототип умной парковочной системы:
Программирование ESP8266 NodeMCU для решения интеллектуальной парковки
Полный код с рабочим видео дан в конце этого руководства, здесь мы объясняем полную программу, чтобы понять работу проекта.
Для программирования NodeMCU просто подключите NodeMCU к компьютеру с помощью кабеля Micro USB и откройте Arduino IDE. Библиотеки требуются для дисплея I2C и серводвигателя. На ЖК-дисплее будет отображаться наличие парковочных мест, а серводвигатели будут использоваться для открытия и закрытия ворот въезда и выезда. Библиотека Wire.h будет использоваться для интерфейса LCD в протоколе i2c. Контакты для I2C в ESP8266 NodeMCU - это D1 (SCL) и D2 (SDA). Используемая здесь база данных будет Firebase, поэтому мы также включаем библиотеку (FirebaseArduino.h) для нее .
#включают
Затем включите учетные данные 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.
Wire.begin (D2, D1);
Подключите серводвигатель входа и выхода к контактам D5, D6 на NodeMCU.
myservo.attach (D6); myservos.attach (D5);
Выберите триггерный вывод ультразвукового датчика в качестве выхода и контакт эхо-сигнала в качестве входа. Ультразвуковой датчик будет использоваться для определения наличия парковочного места. Если автомобиль занял место, он будет светиться, иначе он не будет светиться.
pinMode (TRIG, ВЫХОД); pinMode (ЭХО, ВХОД);
Два контакта D0 и D4 NodeMCU используются для считывания показаний ИК-датчика. ИК-датчик будет действовать как датчик на входе и выходе. Это обнаружит присутствие автомобиля.
pinMode (carExited, INPUT); pinMode (carEnter, INPUT);
Подключитесь к Wi-Fi и подождите некоторое время, пока он подключится.
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 и установите положение курсора в 0- й строке 0- го столбца.
lcd.begin (); lcd.setCursor (0, 0);
Определите расстояние от ультразвукового датчика. Это будет использоваться для обнаружения присутствия автомобиля в определенном месте. Сначала отправьте импульс 2 микросекунды, а затем прочитайте полученный импульс. Затем преобразуйте его в "см". Узнайте больше об измерении расстояния с помощью ультразвукового датчика здесь.
digitalWrite (TRIG, LOW); delayMicroseconds (2); digitalWrite (TRIG, HIGH); delayMicroseconds (10); digitalWrite (TRIG, LOW); duration = pulseIn (ECHO, HIGH); расстояние = (продолжительность / 2) / 29,1;
Считайте в цифровом виде контакт ИК-датчика как датчик проникновения и проверьте, высокий ли он. Если он высокий, увеличьте количество вводов и распечатайте его на ЖК-дисплее 16x2, а также на последовательном мониторе.
int carEntry = digitalRead (carEnter); если (carEntry == HIGH) { countYes ++; Serial.print ("Автомобиль въехал ="); Serial.println (countYes); lcd.setCursor (0, 1); lcd.print («Автомобиль въехал»);
Также переместите угол серводвигателя, чтобы открыть въездные ворота. Измените угол в соответствии с вашим вариантом использования.
для (pos = 140; pos> = 45; pos - = 1) { myservos.write (pos); задержка (5); } задержка (2000); for (pos = 45; pos <= 140; pos + = 1) { // с шагом в 1 градус myservos.write (pos); задержка (5); }
И отправьте чтение в firebase, используя функцию pushString библиотеки Firebase.
Firebase.pushString ("/ Статус парковки /", fireAvailable);
Выполните те же действия, что и выше, для выходного ИК-датчика и выходного серводвигателя.
int carExit = digitalRead (carExited); если (carExit == HIGH) { countYes--; Serial.print ("Автомобиль выехал ="); Serial.println (countYes); lcd.setCursor (0, 1); lcd.print («Автомобиль выехал»); for (pos1 = 140; pos1> = 45; pos1 - = 1) { myservo.write (pos1); задержка (5); } задержка (2000); for (pos1 = 45; pos1 <= 140; pos1 + = 1) { // с шагом в 1 градус myservo.write (pos1); задержка (5); } Firebase.pushString ("/ Статус парковки /", fireAvailable); lcd.clear (); }
Проверьте, подъехала ли машина к месту стоянки, и если она подъехала, загорится светодиод, сигнализирующий о том, что место заполнено.
if (расстояние <6) { Serial.println ("Занято"); digitalWrite (светодиод, ВЫСОКИЙ); }
Остальное покажите, что место доступно.
if (расстояние> 6) { Serial.println ("Доступен"); digitalWrite (светодиод, LOW); }
Вычислите общее пустое пространство внутри парковки и сохраните его в строке, чтобы отправить данные в firebase.
Пусто = allSpace - countYes; Доступно = Строка ("Доступно =") + Строка (Пустая) + Строка ("/") + Строка (allSpace); fireAvailable = Строка ("Доступно =") + Строка (Пусто) + Строка ("/") + Строка (allSpace); Также распечатайте данные на ЖК-дисплее i2C. lcd.setCursor (0, 0); lcd.print (Доступен);
Вот как можно отслеживать доступность парковки онлайн в Firebase, как показано на снимке ниже:
На этом завершается полная интеллектуальная система парковки с использованием модуля ESP8266 NodeMCU и различных периферийных устройств. Вы также можете использовать другие датчики вместо ультразвуковых и инфракрасных датчиков. Существует огромное количество приложений Smart Parking System, и можно добавлять различные продукты, чтобы сделать ее более умной. Прокомментируйте ниже, если у вас есть какие-либо сомнения, или обратитесь на наш форум для получения дополнительной поддержки.