스마트 시티의 인기가 높아지면서 모든 도메인에 대한 스마트 솔루션에 대한 요구가 항상 있습니다. IoT는 인터넷 제어 기능을 통해 스마트 시티의 가능성을 가능하게했습니다. 사람은 스마트 폰이나 인터넷에 연결된 장치를 사용하여 전 세계 어디에서나 집이나 사무실에 설치된 장치를 제어 할 수 있습니다. 스마트 시티에는 여러 도메인이 있으며 스마트 주차는 스마트 시티에서 인기있는 도메인 중 하나입니다.
스마트 주차 산업은 스마트 주차 관리 시스템, 스마트 게이트 제어, 차량 유형을 감지 할 수있는 스마트 카메라, ANPR (자동 번호판 인식), 스마트 결제 시스템, 스마트 엔트리 시스템 등 수많은 혁신을 보았습니다. 오늘날 유사한 접근 방식을 따르고 초음파 센서를 사용하여 차량 존재를 감지하고 게이트가 자동으로 열리거나 닫히도록 트리거 하는 스마트 주차 솔루션 이 구축 될 것 입니다. ESP8266 NodeMCU는 여기에 연결된 모든 주변 장치를 제어하는 주 컨트롤러로 사용됩니다.
ESP8266은 인터넷에 연결하기위한 Wi-Fi 지원이 내장되어 있기 때문에 IoT 기반 애플리케이션을 구축하는 데 가장 널리 사용되는 컨트롤러입니다. 이전에는 다음과 같은 많은 IoT 프로젝트를 빌드했습니다.
- IOT 기반 보안 시스템
- 홈 오토메이션을위한 스마트 정션 박스
- IOT 기반 대기 오염 모니터링 시스템
- ThingSpeak로 데이터 보내기
여기에서 모든 ESP8266 기반 프로젝트를 확인하십시오.
이 IoT 스마트 주차 시스템 에서는 차량 주차 공간의 가용성을 조회하기 위해 웹 서버로 데이터를 전송합니다. 여기서는 주차 가용성 데이터를 얻기 위해 firebase를 Iot 데이터베이스로 사용하고 있습니다. 이를 위해 Firebase 호스트 주소와 인증을위한 비밀 키를 찾아야합니다. NodeMCU와 함께 firebase를 사용하는 것을 이미 알고 있다면 먼저 ESP8266 NodeMCU와 함께 Google Firebase 콘솔 을 사용 하여 호스트 주소와 보안 키를 얻는 방법을 배워야합니다.
필요한 구성 요소
- ESP8266 NodeMCU
- 초음파 센서
- DC 서보 모터
- IR 센서
- 16x2 i2c LCD 디스플레이
- 점퍼
회로도
이 IoT 기반 차량 주차 시스템의 회로도 는 다음과 같습니다. 2 개의 IR 센서, 2 개의 서보 모터, 1 개의 초음파 센서 및 1 개의 16x2 LCD가 포함됩니다.
여기에서 ESP8266은 전체 프로세스를 제어하고 주차 가능 정보를 Google Firebase로 전송하여 인터넷을 통해 전 세계 어디서나 모니터링 할 수 있습니다. 두 개의 IR 센서 가 출입 게이트에 사용되어 차량의 존재를 감지하고 자동으로 게이트를 열거 나 닫습니다. IR 센서는 IR 광선을 송수신하여 물체를 감지하는 데 사용됩니다. 여기에서 IR 센서에 대해 자세히 알아보십시오.
두 개의 서보 가 출입 게이트 역할을하며 회전하여 게이트를 열거 나 닫습니다. 마지막으로 초음파 센서 를 사용하여 주차 공간이 사용 가능하거나 점유 중인지 감지하고 그에 따라 데이터를 ESP8266으로 보냅니다. 프로젝트의 전체 작업을 이해하려면이 튜토리얼 끝에 제공된 비디오를 확인하십시오.
이 완전한 스마트 주차 시스템 프로토 타입의 모습은 다음과 같습니다.
스마트 주차 솔루션을위한 ESP8266 NodeMCU 프로그래밍
이 튜토리얼의 끝에는 작동하는 비디오 가 포함 된 완전한 코드 가 제공됩니다. 여기서는 프로젝트 작동을 이해하기위한 완전한 프로그램을 설명합니다.
NodeMCU를 프로그래밍하려면 Micro USB 케이블을 사용하여 NodeMCU를 컴퓨터에 연결하고 Arduino IDE를 엽니 다. 라이브러리는 I2C 디스플레이 및 서보 모터에 필요합니다. LCD는 주차 공간의 가용성을 표시하고 서보 모터를 사용하여 출입 게이트를 열고 닫습니다. Wire.h의 라이브러리는 I2C 프로토콜에서 LCD 인터페이스하는 데 사용됩니다. ESP8266 NodeMCU의 I2C 용 핀은 D1 (SCL) 및 D2 (SDA)입니다. 여기에 사용되는 데이터베이스는 Firebase이므로 여기 에 동일한 라이브러리 (FirebaseArduino.h) 도 포함 됩니다.
#포함
그런 다음 Google Firebase에서 가져온 Firebase 사용자 인증 정보를 포함합니다. 여기에는 프로젝트 이름과 비밀 키가 포함 된 호스트 이름이 포함됩니다. 이러한 값을 찾으려면 Firebase의 이전 가이드를 따르세요.
#define FIREBASE_HOST "smart-parking-7f5b6.firebaseio.com" #define FIREBASE_AUTH "suAkUQ4wXRPW7nA0zJQVsx3H2LmeBDPGmfTMBHCT"
WiFi SSID 및 비밀번호와 같은 Wi-Fi 자격 증명을 포함합니다.
#define WIFI_SSID "CircuitDigest" #define WIFI_PASSWORD "circuitdigest101"
장치 주소 (0x27)와 LCD 유형으로 I2C LCD를 초기화합니다. 또한 출입 게이트 용 서보 모터도 포함됩니다.
LiquidCrystal_I2C lcd (0x27, 16, 2); 서보 myservo; 서보 myservo1;
I2C LCD에 대한 I2C 통신을 시작합니다.
Wire.begin (D2, D1);
입구 및 출구 서보 모터를 NodeMCU의 D5, D6 핀에 연결합니다.
myservo.attach (D6); myservos.attach (D5);
초음파 센서의 트리거 핀을 출력으로 선택하고 에코 핀을 입력으로 선택합니다. 초음파 센서는 주차 가능 여부를 감지하는 데 사용됩니다. 자동차가 공간을 점유했다면 빛이 나지 않으면 빛나지 않습니다.
pinMode (TRIG, OUTPUT); pinMode (에코, 입력);
NodeMCU의 두 핀 D0 및 D4는 IR 센서 판독에 사용됩니다. IR 센서는 출입 게이트 센서 역할을합니다. 이것은 자동차 존재를 감지합니다.
pinMode (carExited, INPUT); pinMode (carEnter, INPUT);
WiFi에 연결하고 연결될 때까지 잠시 기다립니다.
WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.print ("연결 중"); Serial.print (WIFI_SSID); while (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 센서 핀을 엔트리 센서로 디지털로 읽고 높은지 확인하십시오. 높으면 입력 횟수를 늘려 16x2 LCD 디스플레이와 직렬 모니터로 인쇄합니다.
int carEntry = digitalRead (carEnter); if (carEntry == HIGH) { countYes ++; Serial.print ("차량 진입 ="); Serial.println (countYes); lcd.setCursor (0, 1); lcd.print ("차량 진입");
또한 서보 모터 각도를 이동하여 입구 게이트 를 엽니 다. 사용 사례에 따라 각도를 변경하십시오.
for (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 ("/ Parking Status /", fireAvailable);
IR 센서 종료 및 서보 모터 종료에 대해 위와 유사한 단계를 수행하십시오 .
int carExit = digitalRead (carExited); if (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 ("/ Parking Status /", fireAvailable); lcd.clear (); }
차량이 주차 장소에 도착했는지 확인하고 도착했는지 확인하고 주차 공간이 꽉 찼다는 신호를 보내는 LED가 켜집니다.
if (거리 <6) { Serial.println ("점유"); digitalWrite (led, HIGH); }
그렇지 않으면 그 자리를 사용할 수 있음을 보여줍니다.
if (거리> 6) { Serial.println ("Available"); digitalWrite (led, LOW); }
주차장 내부의 총 빈 공간을 계산하고 문자열에 저장하여 데이터를 Firebase에 보냅니다.
비어 있음 = allSpace-countYes; Available = String ("Available =") + String (Empty) + String ("/") + String (allSpace); fireAvailable = String ("Available =") + String (Empty) + String ("/") + String (allSpace); 또한 i2C LCD에 데이터를 인쇄합니다. lcd.setCursor (0, 0); lcd.print (사용 가능);
이것은 어떻게 주차의 가용성이 중포 기지에서 온라인으로 추적 할 수 있습니다 아래의 스냅 샷과 같이:
이것으로 ESP8266 NodeMCU 모듈 과 다양한 주변 장치를 사용 하는 완전한 스마트 주차 시스템 이 완성 됩니다. 초음파 및 IR 센서 대신 다른 센서를 사용할 수도 있습니다. 스마트 주차 시스템은 방대한 응용 프로그램이 있으며 다양한 제품을 추가하여 더 스마트하게 만들 수 있습니다. 궁금한 점이 있거나 추가 지원을 위해 포럼에 문의하는 경우 아래에 의견을 말하십시오.