Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Умная автоматизированная парковка на Arduino: контроль мест и шлагбаум

Компоненты и расходные материалы

Программное обеспечение и онлайн-сервисы

О проекте

Простая и увлекательная автоматизированная система парковки на Arduino. При въезде машины система показывает количество свободных мест (если есть) и открывает шлагбаум. Если мест нет — шлагбаум остаётся закрытым. Всё устройство может работать от пауэрбанка!

Шаг 1: Детали

Шаг 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-кабель и наслаждайтесь работой. Делитесь идеями по улучшению!

Схемы

Схемотехнический диаграмм проекта приведён ниже.

Производственный процесс

  1. Сделай свой LUMAZOID: DIY Arduino музыкальный визуализатор
  2. Автоматическая LEGO Star Wars пушка на Arduino Uno
  3. Управление светодиодом по Bluetooth с Arduino: простой DIY-гид
  4. SunGlass-BOT: Умные солнцезащитные очки с авто-подстройкой под свет
  5. Пошаговое руководство: сборка умного четырёхногого робота на Arduino
  6. Arduino-таймер для мытья рук: простое DIY-устройство для борьбы с COVID‑19
  7. Arduino RGB-микшер цветов: Простой проект для начинающих
  8. Мастерство 8×8 LED-матрицы с Arduino Uno: Пошаговое руководство
  9. Автоматизация игры «Динозавр» в Chrome на Arduino и LDR с Python
  10. DIY Arduino Radionics EMR Treatment Device — радионическое устройство