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

Добавил пользователь Дмитрий К.
Обновлено: 10.09.2024

evtalanin

Суть идеи. Взять Ардуинку. Модуль GPS. Модуль CD Карточки. Динамик. И сваять из этого антирадар.
Логика работы. На флешке лежит база SpeedCam из которой ардуино берет координаты камер. И при приближении к камере В динамик говорится что то вроде: Камера ограничение скорости 90 км и стреляет в жопу))))

MaksFree

evtalanin

Старик Похабыч

О сайте

  • Официальное сообщество YouTube-канала AlexGyver. Здесь обсуждаются проекты автора и остальных участников форума, а также рождаются новые крутые идеи. У нас можно получить ответы на вопросы по техническим темам в разделе помощи, найти себе исполнителя или заказчика на разработку электроники и совместно заказать плату для проекта. Приятного общения!

Новые темы

  • Автор: PIrozhOkkkk
  • Сегодня в 15:01
  • Ответы: 0
  • Автор: Vovanich
  • Сегодня в 14:57
  • Ответы: 2

Статистика форума

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

Радар-детектор и Arduino

РД Stinger S650 - две управляющие кнопки (выбор режимов, навигация по меню и т.п.), потенциометр регулировки громкости (он же включение/выключение), разъем внешнего питания.

Скрытый монтаж в салоне. Т.е. доступа к управлению нет, цифровой индикатор вынесен, корпус выкинут и т.п. Система завязана на карписю. Включаться должна вместе с ним, при подаче АСС, так же должна быть возможность вырубить ее в любой момент, не выключая при этом комп (ну и естественно - не глуша двигатель).

Собран макет. Схема в принципе понятна из листинга: к цифровым выходам подключены управляющие входы сильноточных (других под рукой не оказалось) оптронов, выходы двух из которых будут замыкать контакты управляющих кнопок РД, выход третьего - коммутировать 12 V питания на него. Чтобы не париться с короткими/длинными нажатиями, в интерфейсе управления планируется сделать отдельные кнопки на каждый тип нажатия (т.е. с учетом кнопки питания - 5 штук пока).


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

/*
Пять кнопок:
Вкл/Выкл питания нагрузки
Режим 1 (короткое нажатие)
Режим 1 (длинное нажатие)
Режим 2 (короткое нажатие)
Режим 2 (длинное нажатие)

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


The circuit:
* Оптрон Режима 1 attached from pin 9 to ground
* Оптрон Режима 2 attached from pin 11 to ground
* Оптрон Вкл/Выкл attached from pin 7 to ground
* Иммитация короткого нажатия режима 1 attached to pin 2 from +5V
* 10K resistor attached to pin 2 from ground
* Иммитация длинного нажатия режима 1 attached to pin 3 from +5V
* 10K resistor attached to pin 2 from ground
* Иммитация короткого нажатия режима 2 attached to pin 4 from +5V
* 10K resistor attached to pin 4 from ground
* Иммитация длинного нажатия режима 2 attached to pin 5 from +5V
* 10K resistor attached to pin 5 from ground
* pin 8 attached to pin 11
* pin 7 attached to pin 12

// variables will change:
int buttonState = 0 ; // variable for reading the pushbutton status

void setup () <
// initialize the LED pin as an output:
pinMode ( ledPin2 , OUTPUT );
pinMode ( ledPin4 , OUTPUT );
pinMode ( ledPin5 , OUTPUT );
// initialize the pushbutton pin as an input:
pinMode ( buttonPin1 , INPUT );
pinMode ( buttonPin2 , INPUT );
pinMode ( buttonPin3 , INPUT );
pinMode ( buttonPin4 , INPUT );
pinMode ( buttonPin5 , INPUT );
pinMode ( buttonPin6 , INPUT );
pinMode ( buttonPin7 , INPUT );

// turn LED on:
digitalWrite ( ledPin2 , HIGH ); // Первое включение системы

// read the state of the pushbutton value:
buttonState = digitalRead ( buttonPin1 );

// check if the pushbutton is pressed.
// Если питание подано, формируется импульс сброса с задержкой 2 сек:
if ( buttonState == HIGH ) <
// turn LED on:
delay ( 2000 ); // пауза на сброс теста for a 2 second
digitalWrite ( ledPin5 , HIGH ); // Импульс сброса 2 сек
delay ( 1000 );
>
else <
>
>

void loop () <
// Если нагрузка уже инициалирована, переход в рабочую программу
while ( digitalRead ( buttonPin1 ) == HIGH ) <
work ();
>
// Если нагрузка не инициалирована, переход в инициализацию
while ( digitalRead ( buttonPin1 ) == LOW ) <
initial ();
>
>
void initial () <
delay ( 1000 ); // пауза на включение
// Выбор режима Вкл/Выкл:
buttonState = digitalRead ( buttonPin7 );

// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if ( buttonState == HIGH ) <
// turn LED on:
digitalWrite ( ledPin2 , HIGH ); // Включение питания
>
else <
>
// read the state of the pushbutton value:
buttonState = digitalRead ( buttonPin1 );

// check if the pushbutton is pressed.
// Если питание подано, формируется импульс сброса с задержкой 2 сек:
if ( buttonState == HIGH ) <
// turn LED on:
delay ( 2000 ); // пауза на сброс теста for a 2 second
digitalWrite ( ledPin5 , HIGH ); // Импульс сброса 2 сек
delay ( 1000 );
>
else <
>

// Если импульс сброса сформирован, переход к рабочему циклу
while ( digitalRead ( buttonPin2 ) == HIGH ) <
work ();
>
>

void work () <
digitalWrite ( ledPin5 , LOW ); // Снятие импульса сброса
// Выбор режима 1 короткое/длинное нажатие:
buttonState = digitalRead ( buttonPin3 );

// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if ( buttonState == HIGH ) <
// turn LED on:
digitalWrite ( ledPin4 , HIGH );
delay ( 1000 ); // Короткое нажатие (Реж.1)
digitalWrite ( ledPin4 , LOW ); // set the LED off
>
else <
// turn LED off:
digitalWrite ( ledPin4 , LOW );
>
buttonState = digitalRead ( buttonPin4 );

// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if ( buttonState == HIGH ) <
// turn LED on:
digitalWrite ( ledPin4 , HIGH );
delay ( 5000 ); // Длинное нажатие (Реж.1)
digitalWrite ( ledPin4 , LOW ); // set the LED off
>
else <
// turn LED off:
digitalWrite ( ledPin4 , LOW );
>
// Выбор режима 2 короткое/длинное нажатие:
buttonState = digitalRead ( buttonPin5 );

// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if ( buttonState == HIGH ) <
// turn LED on:
digitalWrite ( ledPin5 , HIGH );
delay ( 1000 ); // Короткое нажатие (Реж.2)
digitalWrite ( ledPin5 , LOW ); // set the LED off
>
else <
// turn LED off:
digitalWrite ( ledPin5 , LOW );
>
// read the state of the pushbutton value:
buttonState = digitalRead ( buttonPin6 );

// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if ( buttonState == HIGH ) <
// turn LED on:
digitalWrite ( ledPin5 , HIGH );
delay ( 5000 ); // Длинное нажатие (Реж.2)
digitalWrite ( ledPin5 , LOW ); // set the LED off
>
else <
// turn LED off:
digitalWrite ( ledPin5 , LOW );
>

// Включение/выключение питания:
buttonState = digitalRead ( buttonPin7 );

// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if ( buttonState == HIGH ) <
// turn LED on:
digitalWrite ( ledPin2 , LOW );
delay ( 1000 ); //
digitalWrite ( ledPin2 , LOW ); // set the LED off
>
else <
>

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

Есть такая штука - Arduino стоит оно 800р интерфейс сразу USB + virtual COM
Достаточно простое устройство, которое элементарно программируется.
И есть радар Valentine one у которого есть выход на дисплей
______________
вот тут лежит даташит на подсоединение и расписано назначение бит танных
Пример кода для ардуино и V1 - массив b - соответствует даташиту

// Ввод данных идет через 2 пин

void setup() <
// initialize the digital pin as an output:
Serial.begin(9600);
>

Спасибо!

dragon

Продвинутый

dragon

Продвинутый

// Ввод данных идет через 2 пин
int c=0;
void setup() Serial.begin(9600);
>

void loop()
int a[33];
int b[33];
int i;
int cn;
int Strength;

if(cn==c)
Serial.print(b[1]); //loud
Serial.print(b[8]+b[9]+b[10]+b[11]+b[12]+b[13]+b[14]+b[15]);
Serial.print(b[31]); //x
Serial.print(b[18]); //k
Serial.print(b[19]); //ka
Serial.print(b[20]); // laser
Serial.print(b[6]); //a
Serial.print(b[5]); //b
Serial.print(b[4]); //c
Serial.print(b[3]); //d
Serial.print(b[2]); //e
Serial.print(b[17]); //f
Serial.print(b[16]); //g
Serial.print(b[7]); //dp
Serial.print(b[21]); //up
Serial.print(b[24]); //si
Serial.print(b[27]); //down
Serial.print(" ");

garry111

Зашел Спросить

dragon

Продвинутый

Skang

Зашел Спросить

dragon

Продвинутый

Что даст фото? Хотите подробности - спрашивайте. Дисплей 2х строчный, на него идёт куча инфы о работе допов, включая радар (единственное новшество - это, игнорирование радара, когда срабатывает Ka - элемент b[19] не 0) . Схема включения достаточно стандартна , используются стандартные библиотеки ардуино.

garry111

Зашел Спросить

Приведенная выше схема - это типа усилитель сигнала?
А потом на МП обрабатывается и преобразовывается в виртуальный com через usb?
Я правильно понял? Просто на схеме ещё 4 провода идут к разъёму.

dragon

Продвинутый

( 7 и 8 контакт на схеме - получение питания +5в от ком порта , у ардуино есть свой вывод питания +5в) На схеме есть ещё 1 транзистор на mute , если есть желание его задействовать, то можно подключить к 3 выводу ардуино
и . слушая ком порт, при получении символа m
if (Serial.available() > 0) if(Serial.read()=="m");
/*
тут можно забабахать включени режима mute
*/
>

Спасибо!

Vampire

Остался Почитать

Я давно хотел собрать подобную штуку для CarPC, чтобы можно было с любого РД снимать показания в комп, делая таблицу сработок с координатами GPS.

Благодаря ардуино, теперь это сделать намного проще.

Кстати, там можно привязать срабатывание ДР к любому действию, такому как включение шифтера, например. Или засветки заднего или переднего номерного знака или изменения его положения. Что угодно, лишь бы управлялось электрически.

dragon

Продвинутый

Кстати, очень странно, что раньше (по крайней мере я не нашел) чтобы кто-то сделал открытый проект для V1
Код из 3 поста реально рабочий. Программа v1connect и плагин к центрифуге нормально работает.
Есть ещё сетч (код для дуино) с предварительными фильтрами к примеру Ka диапазон для V1connect (дабы не мешался пока)
Есть скетч под вывод на ЖК дисплей и светодиоды (выносной дисплей) - если надо выложу тут

dragon

Продвинутый

Vampire

Остался Почитать

Щас вот еще мысль возникла, в связи с захоронением РД внутри машины. Думаю сделать на ардуино репитеры для лазерного диапазона.

Всю логику работы сделать на ардуино. Чтобы впоследстии завязать на Laser Jammer. Щас закупаюсь диодами разными для этих целей.

Плюсы отдельного репитера-конвертера в том, что его можно "научить" разпознавать один сигнал (800Нм кривой), а передавать другой 900 нм, правильный, который любой детектор поймет.

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

dragon

Продвинутый

Если делать репитер, то проще сделать сразу лазерный радар.
ЗЫ проблема у РД не с 800Нм, а с длительностью импульса лазера.

Vampire

Остался Почитать

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

Лазер через репитер пускать я хотел тока чтобы не светить в машине V1, а анализ сигналов, это типа побочного эффекта.

Что касается анализа сигналов с самого приемника РД, то тут ничто не мешает добавить в РД дополнительный блок определения нестандартных сигналов, например "стрелки", достаточно записать то, что видит приемник в зоне облучения стрелки, а потом запрограммировать. Была такая мысль, даже обсуждали недавно.

Дальше уже разговор шел о том, чтобы написать опенсорсную прошивку под какой нить качественный РД и лить непосредственно в него или вешать сверху обвязку (как ранше делали телефоны с АОН, если помните, на базе фаборичных).

Во всем это деле нужны

Начать с простых кусочков, типа захвата сработок РД в PC , потом добавить туда анализ сигналов, а не факта сработки. Уж у РС мощности хватит на качественный анализ сигнатуры.

Тут поле напаханное. А потом хоть свой РД выпустить или поддерживать актуальность того, что есть при помощи внешнего модуля.

dragon

Продвинутый

Если сделать приемник , способный видеть ЛИСД (по частоте модуляции) , то надобность в V1 отпадает, индикатор можно и на ардуино спаять резистор + светодиод, транзистор + динамик.

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

OlegCh

Остался Почитать

Что касается анализа сигналов с самого приемника РД, то тут ничто не мешает добавить в РД дополнительный блок определения нестандартных сигналов, например "стрелки", достаточно записать то, что видит приемник в зоне облучения стрелки, а потом запрограммировать.

Что-то мне подсказывает, что приемник в зоне облучения Стрелки не видит ничего, поскольку сигнал Стрелки ниже уровня шумов (я так предполагаю, во всяком случае, я бы так сделал). А выделяется он из шумов при приеме самой Стрелкой согласованной фильтрацией на основании информации от синхронизатора о предполагаемом временном положении отраженных импульсов. Проще говоря, приемник Стрелки включается только в моменты ожидаемого приема импульса, что позволяет ей работать ниже уровня шумов. Ни один РД, не синхронизированный с передатчиком Стрелки, ее сигнал не увидит. Немного не в тему написал, ну да ладно.

dragon

Продвинутый

Что-то мне подсказывает, что приемник в зоне облучения Стрелки не видит ничего, поскольку сигнал Стрелки ниже уровня шумов

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

Vampire

Остался Почитать

В цифром виде, я вижу примочку для определения "стрелки", в виде счетчика, который выдает на каждые 2-3 коротких сигнала, - один, более длинный, понятный РД. Ну типа конвертера сигналов.

А завязывать все на V1 нужно для того, чтобы было единое устройство отображения информации(важно с точки зрения юзабилити). Это может быть внешний дисплей (consealed display) который будет отображать и то, что на него V1 шлет по шине и то, что пришлет любое другое устройство, подключенное к этой же шине. Это может быть как CarPC, так и любой дополнительный приемный модуль, который может выдавать сигнал в нужном формате, описанном в инструкции по приему сигналов с V1.
Возможно все заработает при обычном соединении всех устройств. Или надо будет ставить что-то типа буфера. В любом случае, это решается людьми с опытом работы по сборце цифровых устройств. (Очень много грамотного народа на робофоруме.)

Мне, кстати адаптер приехал V1connect, буду пробовать. В идеале, в этот протокол загнать сигналы со светодиодов, то можно использовать его для сьема сигналов с простых РД. Я вот думаю, с чем лучше подружить такой РД с интерфейсом и мысль пока такая.

Если есть мобила с GPS и BT, то писать сигнал в лог, синхронно с GPS данными и потом кидать по GPRS на сервер. Т.е. понадобится ардуино + BT модуль, видел такие модули где-то на сайтах по 50$.

Ультразвуковой радар

Вы когда-нибудь хотели почувствовать себя оператором РЛС (радиолокационная станция)? Вы хотели бы иметь такую станцию у себя дома? Да, такое оборудование стоит очень больших денег, но данный проект поможет вам собрать простую и дешевую версию радара своими руками.

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

Дешевые ультразвуковые датчики расстояния нашли множество применений в многочисленных проектах DIY, но в основном они применяются в простых роботах. Работа таких датчиков очень проста. Они посылают серию ультразвуков и прислушиваются к сигналам, отраженным от препятствий. Один энтузиаст, подписавшийся как Mr Innovative, использовал такой датчик для создания простого радара.

Экран радара

Экран радара с текущими показаниями

Датчик расстояния HC-SR04, расположенный в специально разработанном корпусе, вращается сервоприводом SG 90 (оба элемента описаны в разделе Основы Arduino ). Работа устройства отображается на графическом TFT-дисплее диагональю 1,8 дюйма с контроллером ST7735. Сердце радара — это Arduino Nano, и все это закрыто в корпусе, сделанном на 3D-принтере.

Работу радара можно увидеть на видео, где также есть инструкция по сборке радара:

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

Хорошей новостью для потенциальных последователей Mr Innovative станет то, что автор предоставил файлы, необходимые для воссоздания описываемого проекта. Дизайны для 3D-печати можно найти на Thingiverse , а код и схему подключения — на GitHub . А у вас есть идея другой версии радара? Напишите нам об этом в комментариях!

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