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

Arduino

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

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

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

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

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

Сборка устройства Схема подключения

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

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

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

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

В программном обеспечении для контроллеров 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

 

Оцените статью
Схемы.ру - Каталог схем и самоделок
Добавить комментарий