Как сделать парктроник ардуино

Обновлено: 05.07.2024

Далее подключаем светодиоы RGB (в моем случае как на видео GBR как на видео) естественно соединяем минус с общей землей на макетной плате.

6 пин ШИМ (~) разъема подключаем к резистору, а резистор к ножке которая отвечает за красный светодиод

9 пин ШИМ (~) разъема подключаем к резистору, а резистор к к ножке которая отвечает за синий светодиод

10 пин ШИМ (~) разъема подключаем к резистору, а резистор к к ножке которая отвечает за зеленый светодиод

ну и последняя стадия пьезодинамик. Ножку на минус подключаем к общему минусу в макетной плате, а плюс подключаем к 11 ШИМ(~) пину.
Схема готова, загружаем скетч и радуемся (ссылка на скетч)

На основе платформы ArduinoDuemilanove и двух сенсоров SonarRangeFinder, измеряющих дистанцию с помощью ультразвука можно сделать простой стационарный парктроник, например для гаража или сигнализатор препятствия и т.п.

Когда последний раз я приезжал к родителям, у меня возникли трудности парковки автомобиля в их небольшом гараже, потому что у меня большой пикап. 🙂 После этого у меня возникла идея сделать простой стационарный парктроник для гаража. Я решил взять за основу микроконтроллер Arduino Duemilanove и ультразвуковой датчик расстояния (Sonar Range Finder).

Материал для изготовления самодельного парктроника

Для того, чтобы сделать парктроник своими руками нам понадобится:

  • Контроллер Arduino (я использовал Duemilanove)
  • Ultrasonic Range Finder (ультразвуковой датчик расстояния)
  • Трехцветный светодиод
  • Макетная плата
  • Блок питания на 9В
  • Провода
  • Клей
  • Пластиковая коробка

Ультразвуковой парктроник на Ардуино

Монтаж парктроника

Шаг 1. Приклейте плату Arduino ко дну ящика при помощи клея или силикона и подведите питание к контроллеру.

Ультразвуковой парктроник на Ардуино

Шаг 2. Присоедините питание ультразвукового датчика 5В (Ultrasonic Range Finder).

Ультразвуковой парктроник на Ардуино

Шаг 4. Подключение трехцветного светодиода. Перед подключением светодиода, определите какие ноги за какой цвет отвечают. Красный, зеленый и синий я подсоединил соответственно к 11, 12 и 13 выводу Arduino.

Ультразвуковой парктроник на Ардуино

Шаг 5. Всё! Монтаж закончен. Теперь осталось дело за программированием контроллера. После тестирования ПО, если всё нормально работает, то закрепите датчик на стене Вашего гаража, а светодиод выведите в удобное место.

Ультразвуковой парктроник на Ардуино

Программирование микроконтроллера Arduino

К счастью, софт Arduino уже содержит пример для работы с ультразвуковым датчиком. Пример этот находится: File -> Examples -> Sensors -> Ping example. Откройте этот пример и скопируйте весь код в новый проект. Назовите его как-нибудь (к примеру Parking Example) и сохраните.

Внесем некоторые изменения в программу. Для начала мы увеличим интервал посылок к датчику, т.к. нам не нужно посылать сигнал каждые 100 мс, достаточно и 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(12, LOW);
digitalWrite(11, LOW);
digitalWrite(13, HIGH);
> else // горит зеленый цвет
digitalWrite(13, LOW);
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
>

Вышеприведенный код управляет выходами Arduino для индикации определенного цвета светодиода, в зависимости от дистанции до препятствия (в данном случае автомобиль), которую определил ультразвуковой датчик.

СКЕТЧ

Наш конечный код будет выглядеть следующим образом:

/* Ping))) Sensor
Схема:
* +V выход датчика подсоединяется к +5V
* GND выход датчика подсоединяется к земле
* SIG выход датчика подсоединяется к цифровому выводу 7

created 3 Nov 2008
by David A. Mellis
modified 30 Jun 2009
by Tom Igoe

This example code is in the public domain.

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(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;
>

Те из нас у кого есть маленький гаражи, знают, что очень сильно приходится мучиться при парковке - слишком далеко или слишком близко к стене. Можно припарковаться так, что вы не сможете ходить вокруг автомобиля. А что если вы купили машину побольше?.

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

Помощник при парковке на Arduino Pro Mini

Шаг 1: Вам понадобится

Все эти комплектующие очень недорогие и их довольно легко найти/купить.

Материалы:

  • 1 шт - 2x4 - не менее 8 дюймов
  • 8 шт - винты
  • 1 шт - источник питания - 5 вольт, 850 мА
  • 1 шт - Arduino Pro Mini - 5 вольт, 16 МГц
  • 1 шт - HC-SR04 ультразвуковой датчик расстояния
  • 12 шт - Резисторы с сквозным отверстием - 220 Ом, 1/4 Вт
  • 8 шт - зеленые светодиоды - 5 мм
  • 4 шт - красные светодиоды - 5 мм
  • 1 шт - кнопка - 6 мм
  • 3 шт - 4-проводный провод - толщина 22
  • 1 шт - многожильный провод - толщина 28

Инструменты:

  • Стриппер для провода
  • Ленточная пила
  • Паяльник
  • Припой
  • Горячий клей
  • Линейка угольник
  • Клей-карандаш
  • Отвертка
  • Карандаш
  • Дрель
  • Сверла - зависит от размера винтов
  • Зенковка для древесины
  • Компьютер с Arduino IDE (скачать здесь)
  • Программатор FTDI

Шаг 2: Печать и нарезка деталей

Первым шагом в этом проекте является создание корпуса. Мы используем технику, о которой мы еще напишем в других инструкциях. Распечатайте PDF-шаблон (ссылка ниже). Убедитесь, что вы настроили печать на принтере со 100% размером.

Теперь вырежьте рисунок и приклейте его к бруску. Будьте осторожны, выровняйте его по краям. Это только временный момент, так что только сильно не приклеивайте.

Шаг 3: Отпиливаем детали

Используйте ленточную пилу, чтобы вырезать брусок по краю рисунка. Вы также можете использовать рубильную пилу или настольную пилу.

Шаг 4: Отрезаем крыжку

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

Вернитесь к ленточной пиле и разрежьте прямо по линии. Это уменьшит отдельный кусок, который станет нашей крышкой. Будьте осторожны при пилении!

Шаг 5: Делаем корпус зенковкой

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

Теперь используйте зенковку для сверления отверстия в прямоугольнике. Вам нужно просверлить как можно глубже, но не слишком глубоко.

Шаг 6: Сверлим дырки

Аккуратно просверлите каждое отверстия, показанные на передней части рисунка. Это работает лучше всего, если вы делаете небольшое углубление шилом перед тем, как будете сверлить.

Затем просверлите отверстие примерно 3/16 дюйма в центре нижней части. Это будет отверстие для вашей кнопки калибровки. Теперь используйте сверло 1/4 дюйма, чтобы просверлить еще два отверстия внизу. Это будут отверстия для проводов.

Шаг 7: Завершаем создание блока управления

Теперь вы используете форму. Очистите её как можно чище. Возьмите крышку и положите ее на дно. Затем используйте сверло 7/64 для сверления отверстия примерно на четверть дюйма от каждого угла. Просверлите в глубину около четверти (примерно 6 мм) дюйма.

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

Шаг 8: Вставляем светодиоды

Пришло время электронизации (кто сказал что такого слова нет?) нашего бокса, т.е. коробки! Светодиоды должны быть расположены в двух кольцах; большое зеленое кольцо снаружи и меньшее красное кольцо внутри.

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

Повторяйте этот процесс, пока все светодиоды не будут в своих отверстиях. Будьте внимательны и поместите правильный цвет в правильное отверстие.

Шаг 9: Шлифуем светодиоды

Для более гладкого вида, отшлифуем светодиоды заподлицо с деревом. Это лучше делать до подключения проводов (не смотрите на фото 🙂 ).

На этом шаге стало понятно, что наши отверстия были слишком большими. Древесный наполнитель нам в помощь.

Шаг 10: Припаиваем землю (ground)

Согните более короткий провод на светодиоде и соедините с короткой ногой следующего светодиода. Припаяйте их вместе и продолжайте движение по кругу. Узкие плоскогубцы большая помощь.

Шаг 11: Паяем резисторы

Отрежьте небольшой кусок проволоки, длиной около 5 см, и обнажите. Поверните его вокруг ножки резистора, неважно, на каком конце. Используйте паяльник, чтобы соединение стало постоянным! Сделайте это для всех резисторов.

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

Шаг 12: Паяем кнопку

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

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

Шаг 13: Подключаем Arduino

Припаяйте штыревые наконечники к порту программирования Arduino. Затем надавите на два провода (от источника питания и один на датчик) через их отверстия и используйте немного горячего клея, чтобы они не выпадали.

Разделите провода от светодиодов и кнопки и припаяйте их к Arduino в соответствии с приведенной выше электрической схемой. Ниже приведена версия диаграмм для печати для вашего удобства.

Шаг 14: Создаем корпус датчика


Теперь нам нужно сделать корпус для датчика расстояния. Делаем коробку по аналогии с предыдущими уроками. Затем используйте сверло 1/4 дюйма (около 6 мм), чтобы просверлить небольшое отверстие в нижней части коробки.

Шаг 15: Завершаем подключение датчика

Вставьте свободный конец провода датчика через отверстие в боксе, затем разделите его и припаяйте к сенсорному модулю, как на рисунке.

  • Черный идет на GND (земля)
  • Синий идет в ECHO
  • Зеленый идет в TRIG
  • Красный идет в VCC

Используйте немного горячего клея, чтобы закрепить датчик в корпусе, а затем используйте другой штифт в качестве снятия напряжения для кабеля. Вверните крышку, и все готово!

Шаг 16: Программируем Arduino

Чтобы прочитать датчик, нам нужна библиотека NewPing. Вы можете скачать его на сайте здесь или ниже. В среде разработки Arduino нажмите:

Эскиз → Включить библиотеку → Добавить ZIP библиотеку (Sketch → Include Library → Add Zip Library) и укажите папку где находится NewPing.zip.

Затем скачайте другой zip-файл и откройте ParkingSystemV1.1.ino в среде Arduino. Загрузите эскиз в Ардуино. См. эту статью или эту статью, если вам нужна помощь.

Прикрепите крышку, и все готово!

Шаг 17: Установка и использование

На рисунке ниже показан пример того как работает наш помощник при парковке созданный с помощью Arduino.

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

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

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

Arduino и Радиолюбитель | Технари | IT DenisGeek

Arduino и Радиолюбитель | Технари | IT DenisGeek

Arduino и Радиолюбитель | Технари | IT DenisGeek запись закреплена

Датчик расстояния - парктроник на ардуино

Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRBW + NEO_KHZ800);

//Initialize glabal variables
int set_dist;
float duration, distance;

// Initialize SR04
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);

// Initialize set_dist
set_dist = EEPROM.read(set_loc);
// Set for testing
// set_dist = 10;
Serial.begin(9600);
// This fixes a problem with the button reading high on startup
while(digitalRead(BUTTON_PIN) == LOW)

void set_lights(uint8_t distance) <
int total_distance = max_dist - set_dist;
/*
We will fill up the colors first with blue,
then green, then red when too far.
*/
// Deterimne dist from set_dist
int dif = distance - set_dist;
int half_dist = (float) total_distance / 2;

Читайте также: