Самодельный гаражный парктроник

Самодельный гаражный парктроник

У многих автолюбителей иногда возникают трудности во время парковки в тесном гараже. Это происходит по разным причинам. К примеру, из-за недостатка мастерства, отсутствия видимости препятствий (особенно при парковке задним ходом) или больших габаритов автомобиля. Чтобы избежать проблем, стоит установить в гараже простой неперемещаемый парктроник. Его можно изготовить на основе платформы ArduinoDuemilanove и двух сенсоров SonarRangeFinder, измеряющих дистанцию с помощью ультразвука.

Для сборки понадобятся следующие компоненты:

  • Платформа Arduino Duemilanove;
  • Ультразвуковые датчики SonarRangeFinder;
  • Пластиковая коробка;
  • Источник питания 9В;
  • Макетная плата;
  • Светодиод с тремя цветами;
  • Клей или силиконовый герметик;
  • Провода.

Для сборки понадобятся следующие компоненты

Сборка устройства:

  1. Наклеить плату на дно бокса, используя клей или силиконовый герметик. Запитать платформу Arduino любым из возможных способов.
Сборка устройства
Сборка устройства
Самодельный гаражный парктроник
Схема подключения

Самодельный гаражный парктроник

  1. Запитать ультразвуковой сенсор (5В).

Запитать ультразвуковой сенсор

  1. Чтобы посылать импульсы на сенсор и считывать их, нужно подсоединить вывод датчика с обозначением SIG к выводу 7 контроллера Arduino.
  2. Далее необходимо выяснить, за какой цвет отвечают ножки трехцветного светодиода. Присоединить их к выводам 11 (красный цвет), 12 (зеленый) и 13 (синий) контроллера.

Запитать ультразвуковой сенсор

  1. После требуется протестировать программу, описанную ниже. Убедившись, что она работает правильно, можно прикрепить сенсор к стене гаража или к препятствию, которое может повредить автомобиль, а светодиод разместить таким образом, чтобы его было видно во время парковки.

Описание программы

В программном обеспечении для контроллеров Arduino уже имеется пример для настройки ультразвуковых сенсоров. Сперва необходимо его открыть (File ->Examples ->Sensors ->Pingexample). Затем нужно нажать File ->NewProject (создание нового проекта), скопировать в него содержание примера, переименовать и сохранить.

Далее, надо приступить к изменению кода программы.

Сначала требуется установить значение интервала импульсов, посылаемых на датчик равным 1 секунде. Ставить меньшую задержку нет необходимости.

 delay(1000);

Далее, мы должны установить номера выводов для светодиода. Для этого перед строкой

 const int pingPin = 7;

добавляется

pinMode(13, OUTPUT); // синий
pinMode(12, OUTPUT); // зеленый
pinMode(11, OUTPUT); // красный

Теперь определяются расстояния, при которых загорается свет соответствующего цвета. Необходимо задать следующие значения:

  • Свыше 60 см от препятствия светодиод будет гореть зеленым;
  • Менее 60 см от препятствия светодиод будет гореть синим;
  • Менее 15 см от препятствия светодиод будет гореть красным.

Код будет выглядеть таким образом:

cm = microsecondsToCentimeters(duration);
// show LED colors 
  if(cm > 0 && cm <= 15) { 
    // горит красный цвет 
    digitalWrite(13, LOW); 
    digitalWrite(12, LOW); 
    digitalWrite(11, HIGH); 
  } else if(cm <= 60 && cm > 15) { 
    // горит голубой
    digitalWrite(12, LOW); 
    digitalWrite(11, LOW); 
    digitalWrite(13, HIGH); 
  } else { 
    // горит зеленый цвет
    digitalWrite(13, LOW); 
    digitalWrite(11, LOW); 
    digitalWrite(12, HIGH); 
  }

Код, приведенный выше, контролирует выходы платформы, которые отвечают за свечение светодиода определенным цветом в зависимости от расстояния до автомобиля. Эта дистанция определяется ультразвуковым датчиком.

Окончательно код выглядит так:

 
    * +V выход датчика подсоединяется к +5V 
    * GND выход датчика подсоединяется к земле 
    * SIG выход датчика подсоединяется к цифровому выводу 7    
 */  
pinMode(13, OUTPUT); // синий 
pinMode(12, OUTPUT); // зеленый 
pinMode(11, OUTPUT); // красный 
const int pingPin = 7;    
void setup() { 
  Serial.begin(9600); 
}  
void loop() 
{ 
  long duration, cm;  
  // The PING))) is triggered by a HIGH pulse of 2 or more microseconds. 
  // Give a short LOW pulse beforehand to ensure a clean HIGH pulse: 
  pinMode(pingPin, OUTPUT); 
  digitalWrite(pingPin, LOW); 
  delayMicroseconds(2); 
  digitalWrite(pingPin, HIGH); 
  delayMicroseconds(5); 
  digitalWrite(pingPin, LOW);
  // The same pin is used to read the signal from the PING))): a HIGH 
  // pulse whose duration is the time (in microseconds) from the sending 
  // of the ping to the reception of its echo off of an object. 
  pinMode(pingPin, INPUT); 
  duration = pulseIn(pingPin, HIGH);   
  // конвертируем время в расстояние
  cm = microsecondsToCentimeters(duration);
  // показ определенного цвета, в зависимости от расстояния
  if(cm > 0 && cm <= 15) { 
    // горит красный цвет 
    digitalWrite(13, LOW); 
    digitalWrite(12, LOW); 
    digitalWrite(11, HIGH); 
  } else if(cm <= 60 && cm > 15) { 
    // горит голубой
    digitalWrite(12, LOW); 
    digitalWrite(11, LOW); 
    digitalWrite(13, HIGH); 
  } else { 
    // горит зеленый цвет
    digitalWrite(13, LOW); 
    digitalWrite(11, LOW); 
    digitalWrite(12, HIGH); 
  Serial.print(cm); 
  Serial.print("cm"); 
  Serial.println();   
  delay(1000); 
}    
long microsecondsToCentimeters(long microseconds) 
{ 
  // Скорость звука 340 м/с или 29 мкс на сантиметр.
  // Во время измерения расстояния волна проходит туда и обратно, 
  // поэтому нужно еще поделить пополам полученное значение от датчика
  return microseconds / 29 / 2; 
} 
Самодельный гаражный парктроник
Самодельный гаражный парктроник

Прикрепленные файлы: КОД ПРОГРАММЫ

Автор: David A. Mellis


 


Понравилась статья? Поделиться с друзьями:
Добавить комментарий

11 − три =