Крутой парктроник на Arduino
Крутой парктроник на Arduino
 
Я снова вернулся с другим проектом по автоматизации дома на Arduino. На этот раз я стараюсь облегчить жизнь своего партнера, установив систему предупреждения столкновений в гараже, чтобы помочь ей безопасно припарковать автомобиль, не ударяя ее об стену гаража.

Итак, в этом видео я собираюсь использовать ультразвуковой датчик для расчета расстояния до автомобиля от стены гаража и отображения его с помощью зеленых, желтых и красных светодиодов.

Общая стоимость проекта составляет около $ 20 - $ 25.

Проект имеет 3 фазы

Фаза 1: Ожидание автомобиля
 На этом этапе устройство продолжает искать движущийся объект в непосредственной близости от датчиков. Если объект находится в непосредственной близости, то один из трех светодиодов включается в зависимости от того, насколько далеко перемещается объект. Если объект слишком близко, то раздается звук, чтобы уведомить водителя о расстоянии к стене.

Фаза 2: В гараже нет автомобиля.
Если поблизости нет объекта, выключаются все светодиоды.

Фаза 3: Автомобиль остановился (Припаркован в нужном месте).
Если объект остановился и все еще находится в непосредственной близости, ожидание 20 циклов процессора, а затем выключаются светодиоды.

Для этого очень простого проекта нам нужно:

- Плата
- Arduino nano / uno (все, что удобно)
- Красный, зеленый и желтый светодиоды
- 3 x 220 Ом Резистора для светодиодов
- Один ультразвуковой датчик HC-SRO4
- Зуммер или звуковой сигнал и резистор на 100 Ом
- 220vAC/5vDC понижающий модуль
- Кабель Ethernet
- Соединительные кабели
- USB-кабель для загрузки кода в Arduino
- и общее оборудование для пайки

Схема соединений
 
Начните с подключения светодиодов к плате.

Подключите красный светодиод к контакту D2, желтый светодиод к D3 и зеленый светодиод к D4 от Arduino, поставив резистор 220 Ом между платой Arduino и светодиодами. Теперь подключите зуммер к аналоговому выводу A0. Затем подключите вывод Trig Ультразвукового датчика к D5 и ECHO к D6 Arduino. Как только все модули подключены к плате Arduino, пришло время связать все положительные и отрицательные контакты. Соедините все положительные контакты модулей с понижающим модулем +5v, и отрицательные контакты на клемму -VE модуля. Вот и все, теперь мы можем загрузить наш эскиз на доску.

В этой сборке я использую 3 светодиода для отображения расстояния, однако вы можете заменить 3 светодиода светодиодом RGB, или вы также можете использовать массив светодиодов, таких как индикатор уровня звука, для отображения движения автомобиля.

Теперь давайте посмотрим, что я сделал.
 
Я установил Arduino, зуммер, ультразвуковой датчик и три резистора на 220 Ом на одной панели. 3 светодиода и силовой модуль установлены на второй плате. Я буду покрывать светодиоды полупрозрачной крышкой, чтобы придать ей приятный вид.

Источник питания 220 В будет подключен к клеммной колодке. Затем базовый блок будет подключен к светодиодам и источнику питания с помощью кабеля Ethernet.

Код программы

int trigPin = PD5; // Sensor Trip pin connected to Arduino pin D5

int echoPin = PD6; // Sensor Echo pin connected to Arduino pin D6

int redLED = PD2; // Red LED connected to pin D2

int yellowLED = PD3; // Yellow LED connected to pin D3

int greenLED = PD4; // Green LED connected to pin D4

int buzzer = A0; // Buzzer connected to Analogue pin A0

long TempDistance = 0; // A variable to store the temporary distance

int counter = 0; // Counter value to check if the object has stopped moving

void setup() {

Serial.begin(9600);

pinMode(trigPin, OUTPUT);

pinMode(echoPin, INPUT);

pinMode(redLED, OUTPUT);

pinMode(greenLED, OUTPUT);

pinMode(yellowLED, OUTPUT);

pinMode(buzzer, OUTPUT);

}

void loop() {

long duration, Distance;

digitalWrite(trigPin, LOW);

delayMicroseconds(2);

digitalWrite(trigPin, HIGH);

delayMicroseconds(10);

digitalWrite(trigPin, LOW);

duration = pulseIn(echoPin, HIGH);

Distance = (duration/2) / 74; // Distance in Inches

if(counter < 20){ // Do the rest if the car is still moving

if (Distance > 200) { // Nothing in the garrage

turnThemAllOff();

}

if ((Distance > 55) && (Distance <= 200)) { // Turn on Green LED

digitalWrite(greenLED, HIGH);

digitalWrite(yellowLED, LOW);

digitalWrite(redLED, LOW);

noTone(buzzer);

}

if ((Distance > 15) && (Distance <= 55)) { // Turn on Yellow LED

digitalWrite(yellowLED, HIGH);

digitalWrite(redLED, LOW);

digitalWrite(greenLED,LOW);

noTone(buzzer);

}

if (Distance <= 15) { // Turn on Red LED

digitalWrite(redLED, HIGH);

digitalWrite(greenLED,LOW);

digitalWrite(yellowLED, LOW);

noTone(buzzer);

}

if (Distance < 8) { // Item is way to close - start the buzzer

tone(buzzer, 500);

}

}

if ((Distance == TempDistance) || ((Distance+1) == TempDistance) || ((Distance-1) == TempDistance)){

if(counter >= 20){ // Turn off the lights if the object hasn't moved for 20 cycles (no change in distance)

Serial.println("No movement detected, turning off the lights");

turnThemAllOff();

} else {

counter++;

}

} else {

counter = 0; // Reset counter if there is a movement

}

TempDistance = Distance;

Serial.print(Distance);

Serial.println(" inches");

Serial.print("Counter : ");

Serial.println(counter); delay(500); }

// Function to turn the LEDs off

void turnThemAllOff(){

digitalWrite(redLED, LOW);

digitalWrite(greenLED,LOW);

digitalWrite(yellowLED, LOW);

noTone(buzzer);

}


Скачать файл: code.rar [994 b] (cкачиваний: 19)

Запустите код, определив константы и глобальные переменные, которые будут использоваться во всем коде.

Затем определите режимы вывода в разделе настройки кода.

Затем создайте функцию для отключения всех светодиодов и зуммера.

Теперь вычислите «Distance» в дюймах, считывая значения, полученные от Ультразвукового датчика.

Затем, проверяя значение «Distance», мы включаем и выключаем светодиоды в зависимости от того, насколько далеко находится объект. Если расстояние больше 200, тогда выключите все светодиоды и зуммер, когда объект выходит за пределы допустимого диапазона. Иначе, если он находится между 55 и 200, тогда включите зеленый светодиод. Если объект находится между 15 и 55, тогда включите желтый светодиод, и если объект приблизится к 15 дюймам, включите красный светодиод, пока он не достигнет 8 дюймов. Когда расстояние становится меньше 8, запустите звуковой сигнал вместе с красным светодиодом.

Следующий бит кода - установить значение счетчика на основе движения автомобилей, которое затем принимает решение о выключении светодиодов. Он сравнивает значение «Distance» с «TempDistance», и если значения одинаковы (объект не перемещается), то увеличивает счетчик. Если объект перемещается в любое время во время этого процесса, счетчик сбрасывается на 0. Наконец, для параметра «TempDistance» установлено значение «Distance».

Перед сравнением Расстояния нам также необходимо проверить, превышает ли значение счетчика 20. Я делаю это, чтобы остановить выполнение кода ниже, если автомобиль находится в устойчивом положении.



Так вот как я установил устройство в своем гараже.

Когда я приближаюсь к датчику, свет меняется с зеленого на желтый на красный, и, в конечном счете, зуммер срабатывает, когда я слишком близко к датчику. В моем случае я установил зуммер рядом с Arduino, однако я рекомендую вам установить зуммер вместе со светодиодами. Если вы хотите, вы также можете мигать красным светодиодом, когда зуммер продолжает работать.
1 219