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

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

     


    Рекомендуем:

    Источник

    Оцените статью
    error: Материал защищен от копирования. С уважением, Администрация сайта