Умная автоматизированная парковка на Arduino: контроль мест и шлагбаум
Компоненты и расходные материалы
- Arduino UNO (любая плата) — 1 шт.
- Сервопривод (Tower Pro MG996R) — 1 шт.
- ИК-датчики приближённости — 3 шт.
- Светодиод — 1 шт.
- Электронные компоненты (UTSOURCE) — 1 комплект
Программное обеспечение и онлайн-сервисы
- Arduino IDE
О проекте
Простая и увлекательная автоматизированная система парковки на Arduino. При въезде машины система показывает количество свободных мест (если есть) и открывает шлагбаум. Если мест нет — шлагбаум остаётся закрытым. Всё устройство может работать от пауэрбанка!
Шаг 1: Детали
- Arduino — любая плата
- ИК-датчик приближённости (два варианта на фото — оба работают)
- Резистор 330 Ом
- Светодиоды
- Сервопривод — любой модель/размер
Шаг 2: Изготовление светодиодного индикатора
На куске макетной платы распаяны светодиоды и резисторы 330 Ом. Резисторы спаяны с обратной стороны для эстетичного вида. Добавлен шлейф для аккуратного подключения. Лучше использовать LCD или OLED дисплей, но их не было под рукой.
Шаг 3: Изготовление парковки
Корпус из картона: вырезан наклонный подъёмник, сервопривод закреплён на картонке и клеится термоклеем. Датчики: один на въезде, по одному на каждом месте. Индикатор на палочках от суши клеится на коробку. Предусмотрен доступ к USB-порту Arduino для питания. Не забудьте покрасить.
Шаг 4: Схема подключения
Схема простая, хотя выглядит запутанно из-за светодиодов. Важно: датчики приближённости питаются от 5V Arduino. Сервопривод подключен к выводу VIN — так мы берём питание напрямую от пауэрбанка (5V, 1A) через USB, минуя стабилизатор Arduino (который даёт только 0.5А). Это безопасно и работает.
Шаг 5: Код
Загрузите следующий скетч в Arduino:
/* Automated Parking Garage by Ashraf Minhaj
* www.youtube.com/c/fusebatti
* ashraf_minhaj@yahoo.com
*/
#include <Servo.h>
Servo gate; // сервопривод шлагбаума
int slot1 = 5; // ИК-датчик места 1 на D5
int slot2 = 4; // ИК-датчик места 2 на D4
int gateSensor = 3; // ИК-датчик въезда на D3
int slot1_l = 13; // светодиод места 1
int slot2_l = 12; // светодиод места 2
int gate_grn = 11; // зелёный светодиод шлагбаума
int gate_red = 10; // красный светодиод шлагбаума
void setup() {
gate.attach(7); // сервопривод на D7
pinMode(slot1, INPUT);
pinMode(slot2, INPUT);
pinMode(gateSensor, INPUT);
pinMode(slot1_l, OUTPUT);
pinMode(slot2_l, OUTPUT);
pinMode(gate_grn, OUTPUT);
pinMode(gate_red, OUTPUT);
Serial.begin(9600);
}
void loop() {
// Машина подъехала (датчик LOW = сработал)
if (!digitalRead(gateSensor) && digitalRead(slot1) && digitalRead(slot2)) {
// Оба места свободны
Serial.println("Welcome, Available: SLOT1, SLOT2");
digitalWrite(slot1_l, HIGH); digitalWrite(slot2_l, HIGH);
delay(1000);
digitalWrite(gate_grn, HIGH); gate.write(75); // открыть шлагбаум
}
if (!digitalRead(gateSensor) && !digitalRead(slot1) && digitalRead(slot2)) {
// Место 1 занято, место 2 свободно
Serial.println("Welcome, Available: SLOT2");
digitalWrite(slot1_l, LOW); digitalWrite(slot2_l, HIGH);
delay(1000);
digitalWrite(gate_grn, HIGH); gate.write(75);
}
if (!digitalRead(gateSensor) && digitalRead(slot1) && !digitalRead(slot2)) {
// Место 2 занято, место 1 свободно
Serial.println("Welcome, Available: SLOT1");
digitalWrite(slot1_l, HIGH); digitalWrite(slot2_l, LOW);
delay(1000);
digitalWrite(gate_grn, HIGH); gate.write(75);
delay(100);
}
if (!digitalRead(gateSensor) && !digitalRead(slot1) && !digitalRead(slot2)) {
// Парковка полна
Serial.println("Welcome, Parking Full");
digitalWrite(slot1_l, LOW); digitalWrite(slot2_l, LOW);
delay(1000);
digitalWrite(gate_red, HIGH); // мигание красным
delay(100); digitalWrite(gate_red, LOW);
delay(100); digitalWrite(gate_red, HIGH);
delay(100); digitalWrite(gate_red, LOW);
}
if (digitalRead(gateSensor)) {
// Нет машины на въезде
Serial.println("Welcome");
gate.write(5); // закрыть шлагбаум
digitalWrite(slot1_l, LOW); digitalWrite(slot2_l, LOW);
digitalWrite(gate_red, LOW);
digitalWrite(gate_grn, HIGH); // мигание зелёным в ожидании
delay(100); digitalWrite(gate_grn, LOW); delay(100);
}
}
Код также доступен на GitHub: Automated-Parking-Garage_Arduino
Версия с LCD дисплеем: Parking_garage_with_LCD_Code.c
Шаг 6: Готово
Подключите питание через USB-кабель и наслаждайтесь работой. Делитесь идеями по улучшению!
Схемы
Схемотехнический диаграмм проекта приведён ниже.
Производственный процесс
- Сделай свой LUMAZOID: DIY Arduino музыкальный визуализатор
- Автоматическая LEGO Star Wars пушка на Arduino Uno
- Управление светодиодом по Bluetooth с Arduino: простой DIY-гид
- SunGlass-BOT: Умные солнцезащитные очки с авто-подстройкой под свет
- Пошаговое руководство: сборка умного четырёхногого робота на Arduino
- Arduino-таймер для мытья рук: простое DIY-устройство для борьбы с COVID‑19
- Arduino RGB-микшер цветов: Простой проект для начинающих
- Мастерство 8×8 LED-матрицы с Arduino Uno: Пошаговое руководство
- Автоматизация игры «Динозавр» в Chrome на Arduino и LDR с Python
- DIY Arduino Radionics EMR Treatment Device — радионическое устройство