Veronika Portfoolio

Ülesanne 7.2 Parking

Цель проекта:

Создать автоматическую систему парковочного шлагбаума, которая:

  • Обнаруживает приближающийся автомобиль с помощью ультразвукового датчика.
  • Автоматически поднимает шлагбаум с помощью сервопривода.
  • Обеспечивает звуковую и световую индикацию при работе.
  • Может быть дополнена функцией подсчета занятых мест на парковке и отображением на дисплее.

Используемые компоненты:

  1. Ультразвуковой датчик HC-SR04 – измеряет расстояние до машины.
  2. Сервопривод – открывает/закрывает шлагбаум.
  3. Светодиод (LED) – индикация открытия шлагбаума.
  4. Зуммер (Buzzer) – звуковой сигнал при открытии.
  5. Arduino Uno – управление всей системой.
  6. Резистор – ограничение тока для светодиода.
  7. Макетная плата + провода – подключение компонентов.
  8. (Дополнительно возможно): второй датчик, LCD-дисплей, RGB-светодиоды, кнопки и др.

Схема в Tinkercad:

Ультразвуковой датчик HC-SR04:

  • VCC → 5V Arduino
  • GND → GND
  • Trig → D11
  • Echo → D12

Сервопривод:

  • Signal → D5
  • VCC → 5V
  • GND → GND

Светодиод:

  • Анод (+) через резистор → D10
  • Катод (–) → GND

Зуммер:

  • → D9

– → GND

Программа:

#include <Servo.h>

const int trigPin = 11;
const int echoPin = 12;
const int servoPin = 5;
const int ledPin = 10;
const int buzzerPin = 9;

Servo gateServo;
bool gateOpen = false;

void setup() {
  Serial.begin(9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(ledPin, OUTPUT);
  pinMode(buzzerPin, OUTPUT);

  gateServo.attach(servoPin);
  gateServo.write(0); // Закрытое положение
}

void loop() {
  long duration;
  int distance;

  // Ультразвуковой импульс
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  duration = pulseIn(echoPin, HIGH, 25000); // максимум 25 мс ожидания
  distance = duration * 0.034 / 2;

  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.println(" cm");

  // Машина близко и шлагбаум ещё не открыт
  if (distance > 0 && distance < 7 && !gateOpen) {
    gateOpen = true;

    // Короткий двойной пик на активном зуммере
    digitalWrite(buzzerPin, HIGH); delay(100);
    digitalWrite(buzzerPin, LOW);  delay(150);
    digitalWrite(buzzerPin, HIGH); delay(100);
    digitalWrite(buzzerPin, LOW);

    digitalWrite(ledPin, HIGH);     // Свет включён
    gateServo.write(90);            // Шлагбаум поднимается
    delay(3000);                    // Пауза
    gateServo.write(0);             // Шлагбаум опускается
    digitalWrite(ledPin, LOW);      // Свет выключен
  }

  // Сброс, если машина уехала
  if (distance >= 10) {
    gateOpen = false;
  }

  delay(250); // Пауза
}

Работа системы:

  1. Ультразвуковой датчик измеряет расстояние до объекта.
  2. Если машина подъезжает ближе 7 см:
    • Шлагбаум поднимается.
    • Звучит двойной сигнал.
    • Свет загорается.
    • Через 3 секунды шлагбаум опускается.
  3. Если расстояние более 10 см — система сбрасывает состояние и готова к следующей машине.

Возможности для расширения:

  1. Счётчик автомобилей на парковке:
    • Добавить второй датчик (на выезде).
    • Поддерживать переменную carCount для подсчета машин.
    • Не открывать шлагбаум, если мест больше нет.
  2. LCD-дисплей:
    • Отображать свободные места, статус (свободно/занято/полный).
  3. RGB-LED:
    • Цветовое отображение: зелёный (свободно), жёлтый (въезд), красный (мест нет).
  4. Кнопка администратора:
    • Ручное открытие шлагбаума.
  5. Ночной режим:
    • Мигающий жёлтый светодиод, если машина не обнаружена.

Видео:

https://drive.google.com/file/d/1-8RYRKBBdyGraDLXFaaQu90OsKqYTtsV/view?usp=sharing

Применение в жизни:

  • Парковки у ТЦ, офисов, школ.
  • Умные шлагбаумы в жилых зонах.
  • Автоматизированные КПП.
  • Прототипы систем для логистики и складов.