-
Радар-детектор и Arduino
Исходные данные:
РД Stinger S650 - две управляющие кнопки (выбор режимов, навигация по меню и т.п.), потенциометр регулировки громкости (он же включение/выключение), разъем внешнего питания.
Задача:
Скрытый монтаж в салоне. Т.е. доступа к управлению нет, цифровой индикатор вынесен, корпус выкинут и т.п. Система завязана на карписю. Включаться должна вместе с ним, при подаче АСС, так же должна быть возможность вырубить ее в любой момент, не выключая при этом комп (ну и естественно - не глуша двигатель).
Ньюансы:
К сожалению, зверушка имеет одну неприятную особенность - при включении запускается режим самотестирования, сопровождающийся писком, визгом и радостными сообщениями о пойманных якобы радарах во всех диапазонах. Отключается только ручками, и делать это надо каждый раз при подаче питания (или терпеть...)
Воплощение:
Собран макет. Схема в принципе понятна из листинга: к цифровым выходам подключены управляющие входы сильноточных (других под рукой не оказалось) оптронов, выходы двух из которых будут замыкать контакты управляющих кнопок РД, выход третьего - коммутировать 12 V питания на него. Чтобы не париться с короткими/длинными нажатиями, в интерфейсе управления планируется сделать отдельные кнопки на каждый тип нажатия (т.е. с учетом кнопки питания - 5 штук пока).
В этой редакции проги не учтена пока еще необходимость регулировки уровня звука (откровенно забыл про это :o ), и самое главное - ввиду непонимания пока как именно будет организовано плечо "комп-ардуина" - управление идет не по COM-порту, а замыканием на питание управляющих входов контроллера...
PHP код:
/*
Пять кнопок:
Вкл/Выкл питания нагрузки
Режим 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
******************
modified 22.01.2010
*/
// constants won't change. They're used here to
// set pin numbers:
const int buttonPin1 = 12; // Вход с питания
const int buttonPin2 = 8; // Вход с формирователя сброса
const int buttonPin3 = 2; // Режим 1 короткое нажатие
const int buttonPin4 = 3; // Режим 1 длинное нажатие
const int buttonPin5 = 4; // Режим 2 короткое нажатие
const int buttonPin6 = 5; // Режим 2 длинное нажатие
const int buttonPin7 = 6; // Включение/выключение питания
const int ledPin4 = 9; // Управление 1 режимом
const int ledPin5 = 11; // Управление 2 режимом/Ипульс сброса теста
const int ledPin2 = 7; // Включение нагрузки
// 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 {
}
}
Задержки и длительности импульсов выставлены на глазок - величины уточню, когда буду вязать сабжи напрямую друг к другу...
-
Re: Радар-детектор и Arduino
А цель то какая всего этого? Просто скрыть от глаз и ушей? Вот еслиб данные в комп вводить....
-
Re: Радар-детектор и Arduino
Для начала - да: просто втыкать РД на торпедо - провоцировать слишком многих. Опять же, врожденный дефект зверушки (реакция ее на включение питания) раздражает, а это - прекрасная возможность изящно обойти его. Ну и концептуально - все системы должны быть интегрированы (и между собой, и в целом).
А касательно введения данных в комп - тут уже столько копий поломали на эту тему...
Я пока для себя не вижу такой необходимости.
Можно было бы звук оповещения отключать в зависимости от скорости (глушить его, например, при скоростях ниже 30 км/ч) - так опять же: смысл РД не только в том, чтобы упредить определение твоей текущей скорости, но еще и в предупреждении о самом факте засады на дороге. А в свете этого - идея бессмысленная... Хотя завести в прогу данные из GPS, полагаю, несложно.
Вот только зачем?
-
Re: Радар-детектор и Arduino
Версия программы для Arduino под управление через последовательный порт компа.
PHP код:
/*
Управление радар-детектором Stinger S650 с carpc через интерфейс RR
Питание на нагрузку подается либо при начальной инициализации системы,
либо программно (для вкл/выкл нагрузки без снятия питания со всей системы)
По включению питания формируется импульс сброса самотестирования нагрузки.
The circuit:
* Оптрон Режима 1 attached from pin 9 to ground
* Оптрон Режима 2 attached from pin 11 to ground
* Оптрон Вкл/Выкл attached from pin 7 to ground
* pin 8 attached to pin 11
* pin 7 attached to pin 12
******************
modified 29.01.2010
*/
// constants won't change. They're used here to
// set pin numbers:
const int buttonPin1 = 12; // Вход с питания
const int buttonPin2 = 8; // Вход с формирователя сброса
const int buttonPin7 = 6; // Включение/выключение питания
const int ledPin4 = 9; // Управление 1 режимом
const int ledPin5 = 11; // Управление 2 режимом/Ипульс сброса теста
const int ledPin2 = 7; // Включение нагрузки
int val;
// variables will change:
int buttonState = 0; // variable for reading the pushbutton status
void setup() {
Serial.begin(115200); //установка порта
// 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(buttonPin7, INPUT);
// turn LED on:
digitalWrite(ledPin2, HIGH); // Первое включение системы
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin1);
// Если питание подано, формируется импульс сброса с задержкой 2 сек:
if (buttonState == HIGH) {
// turn LED on:
delay(2000); // пауза на сброс теста for a 2 second
digitalWrite(ledPin5, HIGH); // Импульс сброса 1 сек
delay(1000);
}
else {
}
}
void loop() {
// Если нагрузка уже инициалирована, переход в рабочую программу
while (digitalRead(buttonPin1) == HIGH) {
work();
}
// Если нагрузка не инициалирована, переход в инициализацию
while (digitalRead(buttonPin1) == LOW) {
initial();
}
}
void initial(){
delay(1000); // пауза на включение
// Выбор режима Вкл/Выкл:
if (Serial.available()) //если есть принятый символ,
{
val = Serial.read(); // то читаем его и сохраняем в val
buttonState = digitalRead(buttonPin7);
// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (val == 'd') {
// 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 короткое/длинное нажатие:
if (Serial.available()) //если есть принятый символ,
{
val = Serial.read(); // то читаем его и сохраняем в val
//buttonState = digitalRead(buttonPin3);
// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (val == '1') {
// 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 (val == '3') {
// turn LED on:
digitalWrite(ledPin4, HIGH);
delay(3000); // Длинное нажатие (Реж.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 (val == '5') {
// 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 (val == '7') {
// turn LED on:
digitalWrite(ledPin5, HIGH);
delay(3000); // Длинное нажатие (Реж.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 (val == 'd') {
// turn LED on:
digitalWrite(ledPin2, LOW);
delay(1000); //
digitalWrite(ledPin2, LOW); // set the LED off
}
else {
}
}
}
В данной версии еще не реализовано управление громкостью динамика.
Мои благодарности Chip`у и AlexNS за неоценимую помощь, оказанную при написании проги для фронт-энда (тема об этом)
-
Re: Радар-детектор и Arduino
Pinin если не сложно, расскажи куда именно спрятал радар-детектор... т.к. сам голову ломаю над этим...
У самого Sho-Me 520, очень хочется его спрятать, вывести дисплей отдельно на торпеду, а звук просто отключить...
Думал, может спрятать куда-нибудь в фару, т.к. в районе лобовухи по моим прикидкам, как-то всё уж больно колхозно смотрится =))) но тогда теряется обещанные 360 градусов поиска, а это весьма не обходимо на МКАДе =)
Как вариант поставить два, но как-то это затратно и проблематично…
-
Re: Радар-детектор и Arduino
Хм, ну я пока еще никуда не поставил - готовлю матчасть: даже в гараже с машиной ковыряться - ласты склеишь, слишком холодно еще...
Планирую все-таки поставить под лобовое, между солнечных козырьков над зеркалом заднего вида. Корпус будет выкинут в топку, сделана наставка на потолок, в которой и будет размещен сабж (перевернутый относительно штатного положения на 180 градусов). Фотоэлемент на плате расположен таким образом, что на него идут два потока: один - с морды прибора, второй - со сферической линзы с бывшей верхней его части (будущей нижней). Дисплей будет вынесен либо над зеркалом, либо вделан в потолок (пока еще не решил). Кнопки/регуляторы при этом будут недоступны - отсюда и вся эта бодяга с софтом.
В принципе, могу выложить фото потрохов РД - м.б. тогда намерения будут более понятны, хотя вообще-то собирался написать полный отчет уже по завершению проекта...
P.S. Да, и кстати - идея смонтировать сабж где-то вне салона (в фару, под капот и т.п.) вряд ли хороша: все-таки температурные диапазоны там по-любому далеки от приемлемых для девайса...
-
Re: Радар-детектор и Arduino
Цитата:
Сообщение от
Pinin
Исходные данные:
РД Stinger S650 - две управляющие кнопки (выбор режимов, навигация по меню и т.п.), потенциометр регулировки громкости (он же включение/выключение), разъем внешнего питания.
Всё плохо...... Причём плохо с детекторами и новыми радарами.
Сейчас в "научном" поиске. Катаюсь с разобранными радарами, с доработками и заведением контролем сигнала через звуковуху.
(сигналов с выхода приёмников, которые идут на процессор обработки)
Радаров разобрал уже много. К слову сказать стингер внутри - основан на приёмнике кранч - а кранч на порядок дешевле. Отличается только процессорной частью.
По результатам. Процессор обработки игнорирует ЛИСД , хотя приёмник видит и обнаруживает радар. Кроме того фотодетектор видит работу подсветки радара "Стрелки" , достаточно далеко.
В планах - прикрутить приёмник к Arduino и на компе уже обрабатывать и принимать решение радар это или нет.
Кроме того при работе со "Стрелкой" нет сигнала с приёмника (из-за слишком коротких импульсов) в планах доработка приёмника - введение накопительных ёмкостей, чтобы импульс измерения сделать на выходе более широким и чтобы его можно было наблюдать низкочастотными детекторами.
Для справки - "Стрелка" - новый комплекс, который сопровождает все цели с дальности около 1000метров раздельно и примерно за 300м делает видео фиксацию номера нарушителя.
-
Re: Радар-детектор и Arduino
Сегодня доработанный аппарат Saver прамого усиления с частотой генератора на диоде 60Мгц , на выходе усилителя D триггер на 74ALVC зачуял за 1300М стрелку в Мытищенском районе :)
Пока собрал воздушным монтажом, нужно собраться с мыслями как это сделать более красиво.
-
Re: Радар-детектор и Arduino
2 dragon
Да, серьезный задел... Поделишься наработками?
2 ALL
Если интересно - установил:
http://photofile.ru/photo/dytljhju/9.../117571034.jpg http://photofile.ru/photo/dytljhju/9.../117569630.jpg http://photofile.ru/photo/dytljhju/9.../117569206.jpg
Сам РД - под колпаком монитора, индикатор вывел на напольную консоль
Сказать по-правде, избирательностью/чувствительностью сабжа не парюсь: пока налететь на фен без заблаговременного предупреждения от РД еще не довелось. Хотя, наверное, и такое когда-нибудь случится...
-
Re: Радар-детектор и Arduino
Наработки пока такие , гетеродинные детекторы все в топку. Либо нужно пробовать частоту сканирования повышать на 6 порядков (вряд ли правда оно работать будет, но хрен знает)
Савер на приёмнике прямого усиления после доработки и установки на выходе D триггера чует стрелку. У стрелки импульсы по 30нс каждые 20мс , в результате получается на выходе меандр (кривенький) , но 30нс успевает переключить состояние Д триггера до следующего импульса измерения. Пока ясно одно, что нужно брать приёмник прямого усиления и делать сразу от него интерфейс ввода в комп, пусть даже и Arduino , но намертво :)
-
Re: Радар-детектор и Arduino
Можно я в клинюсь в вашу беседу? :) Посоветуйте, что сейчас можно найти реально рабочего или рабочего с доработкой паяльником?
2Dragon: Saver какая модель? Все ли засады почует? И могли поподробнее расписать доработки?
-
Re: Радар-детектор и Arduino
Полагаю, вопрос больше к Dragon - у меня-то какие доработки? Так, банальность...
-
Re: Радар-детектор и Arduino
Cавер - лучше забыть. Говно даже для переделки. Сейчас со временем труба.
Начал делать для кардуино свой антирадар (свч приёмник)
Схема простая - рупорная антенна и СВЧ диоды + усилитель на 3х транзисторах для каждого диапазона.
Антенну уже расчитал и вырезал из листовой меди. Пока не спаял. После спайки нужно будет серебром покрыть (нужно будет либо надыбать использованный фиксаж от ч/б проявки, либо напроявлять засвеченной ч/б плёнки + нашатырь и погружаем медь, всё серебруется)
-
Re: Радар-детектор и Arduino
А что можешь посоветовать из готовой продукции? Есть сейчас недорогие и достойные претенденты на звание полезного антирадара?
-
Re: Радар-детектор и Arduino
1\2 off
TO Pinin:
Привет!
Cлушай а твой РД на всё реагирует?
Просто я себе купил Crunch 2160. Всё меня в нём устраивает. И по-русски даже разговаривает.
НО вот пару раз было такое, что проезжаю засаду с видеорегистрацией (стояли в одном месте аж 4-ре машины ДПС) и там всем пишут штрафы вовсю, а мой РД как рыба молчит.
Я чё-то задумался - как это?!?!?
Но в остальных 98% случаев пищит как миленький.
-
Re: Радар-детектор и Arduino
Цитата:
Сообщение от
LNShadow
А что можешь посоветовать из готовой продукции? Есть сейчас недорогие и достойные претенденты на звание полезного антирадара?
Ничего.
Кранч - фуфел, приёмник на 4 , программная часть на 3-
Кобра - внешний вид 5+ , мулечки компасы итп , Приёмник 3- программная часть 2
Вистлер 78про 4 по всем параметрам
Стингер - приёмник идентичен кранчу программная часть на 4
Савер - внешний вид на 4 , внутреннее исполнение это даже не 2 - это кол.
_____________________________
В сухом остатке - оптимум это вистлер и стингер верхних моделей (от 10тр)
Z@GR кранч *****, если не ездить совсем - пофиг, но если не знаешь местности и ехать где-то в области крайне полезен более нормальный радар, сначала слышишь радар, потом ищешь знаки ... находишь в кроне деревьев еле заметный знак 40 или на обочине на временной палочке ....
Кранч отсеевает как помеху почти все новые радары.
А кроме того, ни один из ныне продающихся радаров не берёт стрелку.
Стрелка уже дофига где висит и никто не догадывается о её опасности. Она пасёт скорость всех машин которые в зоне облучения (до 2 км)
Непосредственно перед собой она делает снимок с указанием большей скорости на участке.
-
Re: Радар-детектор и Arduino
Цитата:
Сообщение от
dragon
Z@GR кранч *****...
ну это понятно мне
но по цене - РД за 15000 - это как-то дороговато.
это для злостных нарушателей пожалуй
я не их таких
но на будущее для информации принял к сведению Вашу информацию про качественность РД-оборудования
-
Re: Радар-детектор и Arduino
2 Z@GR
Сорри за задержку с ответом - запарился... По теме: а черт его знает - за реакцию на всё не поручусь, во всяком случае, пока не залетал так, чтобы меня пасли, а РД не среагировал.
Что касается явных засад гайцев на дороге и молчания сабжа - надо понимать, что фены у них крайне редко работают в режиме "нон-стоп": прицелились в кого-то (не обязательно в тебя), стрельнули, РД этот выстрел засек. Может быть описанная тобой засада таковой и была?
В наших краях, на сколько я знаю, видеорегистрация превышения скорости если и работала, то в тестовом режиме: писем счастья никто не получал. При том, что некоторое количество точек установки подобных аппаратов имелось точно (РД, кстати, на них реагирует).
-
Re: Радар-детектор и Arduino
Из всего этого у меня сложилось мнение что проще всего купить дешевый РД типа вистлера и юзать навигатор со свежими данными о камерах - они и о "стрелке" оповестят и так помогут...
-
Re: Радар-детектор и Arduino
Пользую Valentine One все параметры поставлю пять баллов... хотя нужно признать в городе помех все равно много... но трасса ни одного не пропускал и чувствительность на дальность выше всяких похвал... свои деньги уже считаю что он отбил...
-
Re: Радар-детектор и Arduino
Цитата:
Сообщение от
Pinin
2 Z@GRЧто касается явных засад гайцев на дороге и молчания сабжа - надо понимать, что фены у них крайне редко работают в режиме "нон-стоп": прицелились в кого-то (не обязательно в тебя), стрельнули, РД этот выстрел засек. Может быть описанная тобой засада таковой и была?
Нет, чётко стояла газель и фольксваген транспортер попами друг к другу и на обоих машинах на торпедах была система контроля скорости с видеорегистрацией. Я мимо них проехал медленно и специально посмотрел что у них там происходит.
Именно этот факт меня и удивил. Много раз уже в таких ситуациях проезжал мимо машин ДПС и РД орал так, что аж страшно было ( :) ).
Цитата:
Сообщение от
LNShadow
Из всего этого у меня сложилось мнение что проще всего купить дешевый РД типа вистлера и юзать навигатор со свежими данными о камерах - они и о "стрелке" оповестят и так помогут...
да, так и есть
чем больше информаторов одновременных - тем эффективнее суммарно всё вместе это работает
опять же люди порой моргают о наличии засады
ВЫВОД: 100% гарантии от попадалова всёравно нет, но если ездить с умом, то РД довольно полезен на трассе.
-
Re: Радар-детектор и Arduino
А что, по мнению специалистов, нехватает в существующих детекторах, для того, чтобы они лучше справлялись со своими задачами?
Если разбирать детектор, то можно было бы:
1. Заменить фотодиод на более подходящий по диапазону к российским лазерным измерителям.
2. Вывести в комьютер управление кнопками и мониторинга состоянием детектора.
3. Вывести в компьютер сигнал с детектора до обработки, для последующего анализа средствами РС.
4. Раскидать внутренности детектора по салону , чтобы не было заметно, что он вообще установлен в автомобиле.
5. Установить фотодиод, для реакции на ИК подсветку, чтобы знать, что рядом работает камера.
Если считать что детектор не только для радаров, то замутить приемник на WiFi, чтобы засекать сигналы Арена.
Прицепить по интерфейсу приемник 170-450Мгц, чтобы контролировать радиообмен в заданных частотах (в инете лежала разбивка частот по службам).
-
Re: Радар-детектор и Arduino
Да п.1, вроде, неактуален - уже стоят в последних моделях потребные...
п. 2, 3 - это несложно
п. 4 - там особо раскидывать нечего: рупор от платы не оторвешь (не в смысле физически, а по физике - ВЧ, однако), так что остается только индикатор, ну и динамик, может быть, но это не столь габаритно, чтобы бросалось в глаза, так что главное - спрятать саму плату и вытащить индикацию..
п. 5 - боюсь, этот фотодиод такого наловит, что разобраться, где камера, а где чего - будет нереально...
-
Re: Радар-детектор и Arduino
Продолжаем.
Saver был конкретно изуродован.
Вход от детектора собран на АD8561 , ей же регулируется чувствительность (выход ардуино в режиме шим, через дроссель на ёмкость.)
После D триггер в счетном режиме и вход ардуино на прерывание.
В таком режиме срабатывает на стрелку более уверенно.
-
Re: Радар-детектор и Arduino
Добиться устойчивого приёма на Saver 425 не удалось, срабатывает на Стрелку не дальше 500метров. Приёмная часть полное гумно.
Увеличение частоты модуляции не помогает :( .
Для тех кто пользует в штатном режиме. Нужно вскрывать, заменять провода от детекторов на экранированные и выпрямлять рупорную антенну.
Для нормального антирадара нужно делать свой СВЧ тракт, с нормальной литой или фрезированной антенной и нормальным усилителем.
Чуть позднее фотки платы радара с точками подключения дам.
Для особых маньяков - плату можно безболезненно пильнуть, убрав всё лишнее. Единственное тогда и модуляцию нужно будет заложить в ардуино.
-
Re: Радар-детектор и Arduino
А где найти радар с нормальной литой или фрезированной антенной и нормальным усилителем?
-
Re: Радар-детектор и Arduino
Цитата:
Сообщение от
Chip
А где найти радар с нормальной литой или фрезированной антенной и нормальным усилителем?
Делать самим (увы) .
У Савера стоит 2 усилителя. 1й очень медленный LM358M, на лазер, второй Mc33078 , сразу после покупки менять на 33272 благо они пин в пин нужно менять для того, чтобы формировать модуляцию на 30МГц , но и это его не спасает как претендента.
При этом, производитель спиливает на микрухах названия, дабы никто не догадался.
-
Вложений: 1
Re: Радар-детектор и Arduino
Производитель любезно обозначил линию отреза приёмной части, низ картинки. Стрелки - выходы приемников,
Нас интересует нижний.
Микросхему операционников заблаговременно меняем.
Емкости меняем.
Работает он примерно как тут описано http://inf.susu.ac.ru:83/~tyrty/book/11.html
С одним отличием - импульсы модуляции периодом 0.72мкс формирует процессор. Ардуино делает это с простым подключением 3х проводков.
А вот для "стрелки" нужно собирать генератор (собран на 7404) , компаратор и D триггер
Если интересно макетку с ардуино и обвязкой позже сфоткаю, на работе она.
-
Re: Радар-детектор и Arduino
По схеме самой приёмной части возникло очень много вопросов к производителю.
Для нормальной штатной работы радар нужно переделывать, для нештатной тем более.
Схема не однозначна. Особенно смутило подключение к диодам. Сам рупор запаян на минус, однако на усилитель отдельно с рупора идёт сигнальный провод
-
Re: Радар-детектор и Arduino
так какой донор-РД для Arduino предпочтительней?
-
Re: Радар-детектор и Arduino
Цитата:
Сообщение от
outruller
так какой донор-РД для Arduino предпочтительней?
SAVER G250 c доработкой антенной части. Но возможности работы по "стрелке" не будет (кроме случайных срабатываний и сработки в зоне 100м -200м от комплекса).
Хотя нет, лучше эту помойку даже не покупать. Через пару дней будет продолжение ;)
-
Re: Радар-детектор и Arduino
-
Re: Радар-детектор и Arduino
Продолжаем извращения. Для продолжения экспериментов был найден радар-детектор низшей ценовой категории Sho-me-1720
Внутри этой балалайки находится цельнолитой узел. Откручиваем его и видим мелкий 8 ножечный разъем
2 ноги питалово, 1 выход спектра 2 (пока не ясно что) , нога отключения гетеродина и .... нога управления частотой гетеродина (подаётся пилообразное напряжение)
В качестве просто радара - можно подключить к 2 ногам ардуино - пилообразное делаем из D2 , прием на аналоговой ноге , пилу делаем коротким импульсом заряжая емкость, который потом медленно разряжается. ....
Но это не интересно.
В течении недели сниму характеристики с гетеродина и внутреннего усилителя, на сколько быстро они могут реагировать, если фиксировать частоту гетеродина и пытаться засечь короткие импульсы на определенной частоте.
-
Re: Радар-детектор и Arduino
Уж не буду новую тему затевать, благо это и есть продолжение старой...
Потребовалось несколько расширить функционал проги. До сего момента все управляющие команды на Арду валились через СОМ (виртуальный, понятно, ну да не суть...)
Теперь надо помимо прочего завести еще и физическую кнопку.
Задействовал два цифровых канала - D3 на вход с кнопки, D5 - выход управления. Проинициализировал, как полагается:
PHP код:
const int buttonPin3 = 3; // Кнопка переключение на камеру
***
const int ledPinCam = 5; // Выход переключения на камеру
digitalWrite(ledPinCam, LOW);
В самом начале рабочего цикла прошивки вставил конструкцию:
PHP код:
buttonState = digitalRead(buttonPin3);
// Если кнопка нажата, формируется 2 импульса переключения с задержкой 1 сек:
if (buttonState == HIGH) {
// turn LED on:
delay(1000);
digitalWrite(ledPinCam, HIGH); // Первый импульс
delay(1000);
digitalWrite(ledPinCam, LOW);
delay(1000);
digitalWrite(ledPinCam, HIGH); // Второй импульс
delay(1000);
digitalWrite(ledPinCam, LOW);
}
,
но что-то не работает она...
Думал, может в режиме получения команд по СОМ в принципе невозможно еще и физические входы считывать, но даже при прописывании digitalWrite(ledPinCam, HIGH); в самом начале на выходе D5 стабильно висит логический ноль... :eek:
В чем могут быть грабли?
-
Re: Радар-детектор и Arduino
Вопрос не понятен, что за инициализация?
-
Re: Радар-детектор и Arduino
Цитата:
Сообщение от
Pinin
Проинициализировал, как полагается:
const int buttonPin3 = 3; // Кнопка переключение на камеру
***
const int ledPinCam = 5; // Выход переключения на камеру
digitalWrite(ledPinCam, LOW);:confused:
Цитата:
Сообщение от
Pinin
В самом начале рабочего цикла прошивки вставил конструкцию:
...
но что-то не работает она...
В чем могут быть грабли?
зачем digitalWrite(ledPinCam, LOW); в глобальной области?
весь код выложи
-
Re: Радар-детектор и Arduino
Цитата:
Вопрос не понятен, что за инициализация?
Ну, имелось в виду, что каналы заданы как цифровые входа/выхода (D3,D5) и задано начальное значение выхода D5=0...
Цитата:
зачем digitalWrite(ledPinCam, LOW); в глобальной области?
Исходное состояние выхода потому что... Смущает лишь то, что задании его HIGH (просто, чтобы проверить как оно работает) - один черт там ноль оказывается...
Код выложу уже утром (на работе он остался...)
P.S. Ну вот, собственно, и он:
PHP код:
/*
Семь кнопок:
Вкл/Выкл питания нагрузки
Режим 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
* Оптрон "Громкость" attached from pin 10 to ground
* pin 8 attached to pin 11
* pin 7 attached to pin 12
******************
modified 22.01.2010
*/
// constants won't change. They're used here to
// set pin numbers:
const int buttonPin1 = 12; // Вход с питания
const int buttonPin2 = 8; // Вход с формирователя сброса
const int buttonPin7 = 6; // Включение/выключение питания
const int buttonPin3 = 3; // Кнопка переключения на камеру- ДОБАВЛЕНО
const int ledPin5 = 9; // Управление 1 режимом
const int ledPin4 = 11; // Управление 2 режимом/Ипульс сброса теста
const int ledPin2 = 7; // Включение нагрузки
const int redPin = 10; // Управление громкостью
const int ledPinCam = 5; // Переключение на камеру - ДОБАВЛЕНО
int val;
// variables will change:
int buttonState = 0; // variable for reading the pushbutton status
int redLEDValue = 50; // Предустановленный уровень громкости
void setup() {
Serial.begin(115200); //установка порта
// initialize the LED pin as an output:
pinMode(ledPin2, OUTPUT);
pinMode(ledPinCam, OUTPUT); //- ДОБАВЛЕНО
pinMode(ledPin4, OUTPUT);
pinMode(ledPin5, OUTPUT);
pinMode(redPin, OUTPUT); // sets the pins as output
// initialize the pushbutton pin as an input:
pinMode(buttonPin1, INPUT);
pinMode(buttonPin2, INPUT);
pinMode(buttonPin7, INPUT);
pinMode(buttonPin3, INPUT); //- ДОБАВЛЕНО
analogWrite(redPin, redLEDValue);
// turn LED on:
digitalWrite(ledPin2, HIGH); // Первое включение системы
digitalWrite(ledPinCam, LOW); //- ДОБАВЛЕНО
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin1);
// Если питание подано, формируется импульс сброса с задержкой 2 сек:
if (buttonState == HIGH) {
// turn LED on:
delay(2000); // пауза на сброс теста for a 2 second (подбирается вручную)
digitalWrite(ledPin5, HIGH); // Импульс сброса 1 сек
delay(1000);
}
else {
}
}
void loop() {
// Если нагрузка уже инициалирована, переход в рабочую программу
while (digitalRead(buttonPin1) == HIGH) {
work();
}
// Если нагрузка не инициалирована, переход в инициализацию
while (digitalRead(buttonPin1) == LOW) {
initial();
}
}
void initial(){
delay(1000); // пауза на включение
// Выбор режима Вкл/Выкл:
if (Serial.available()) //если есть принятый символ,
{
val = Serial.read(); // то читаем его и сохраняем в val
buttonState = digitalRead(buttonPin7);
if (val == 'd') {
// turn LED on:
digitalWrite(ledPin2, HIGH); // Включение питания
}
else {
}
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin1);
// Если питание подано, формируется импульс сброса с задержкой 2 сек:
if (buttonState == HIGH) {
// turn LED on:
delay(2000); // пауза на сброс теста for a 2 second (подбирается вручную)
digitalWrite(ledPin5, HIGH); // Импульс сброса 1 сек
delay(1000);
}
else {
}
// Если импульс сброса сформирован, переход к рабочему циклу
while (digitalRead(buttonPin2) == HIGH) {
work();
}
}
}
void work(){
//- ДОБАВЛЕНЫЙ БЛОК
buttonState = digitalRead(buttonPin3);
// Если кнопка нажата, формируется 2 импульса переключения с задержкой 1 сек:
if (buttonState == HIGH) {
// turn LED on:
delay(1000);
digitalWrite(ledPinCam, HIGH); // Первый импульс
delay(1000);
digitalWrite(ledPinCam, LOW);
delay(1000);
digitalWrite(ledPinCam, HIGH); // Второй импульс
delay(1000);
digitalWrite(ledPinCam, LOW);
}
// КОНЕЦ ДОБАВЛЕННОГО БЛОКА
digitalWrite(ledPin5, LOW); // Снятие импульса сброса
// Выбор режима 1 короткое/длинное нажатие:
if (Serial.available()) //если есть принятый символ,
{
val = Serial.read(); // то читаем его и сохраняем в val
if (val == '1') {
// turn LED on:
digitalWrite(ledPin4, HIGH);
delay(1000); // Короткое нажатие (Реж.1)
digitalWrite(ledPin4, LOW); // set the LED off
}
else {
// turn LED off:
digitalWrite(ledPin4, LOW);
}
if (val == '3') {
// turn LED on:
digitalWrite(ledPin4, HIGH);
delay(5000); // Длинное нажатие (Реж.1)
digitalWrite(ledPin4, LOW); // set the LED off
}
else {
// turn LED off:
digitalWrite(ledPin4, LOW);
}
// Выбор режима 2 короткое/длинное нажатие:
if (val == '5') {
// turn LED on:
digitalWrite(ledPin5, HIGH);
delay(1000); // Короткое нажатие (Реж.2)
digitalWrite(ledPin5, LOW); // set the LED off
}
else {
// turn LED off:
digitalWrite(ledPin5, LOW);
}
if (val == '7') {
// turn LED on:
digitalWrite(ledPin5, HIGH);
delay(5000); // Длинное нажатие (Реж.2)
digitalWrite(ledPin4, LOW); // set the LED off
}
else {
// turn LED off:
digitalWrite(ledPin5, LOW);
}
if (val == 'b' && redLEDValue > 1){ // Уменьшение громкости
redLEDValue -= 1; // Red down
}
if (val == '9' && redLEDValue < 255 ) { // Увеличение громкости
redLEDValue += 1; // Red up
}
// analogWrite() expects 2 parameters, the object/pin and a value between 0 (off) and 255 (full on)
analogWrite(redPin, redLEDValue); // Write current values to LED pins
delay(50);
// Включение/выключение питания:
if (val == 'd') {
// turn LED on:
digitalWrite(ledPin2, LOW);
delay(1000); //
digitalWrite(ledPin2, LOW); // set the LED off
}
else {
}
}
}
-
Re: Радар-детектор и Arduino
А назначение режима pinMode(ledPinCam, OUTPUT) у тебя есть? Я что-то не увидел...
Ну и для входа соответственно тоже.
-
Re: Радар-детектор и Arduino
Есть, есть... Там в комментах везде отмечено, что вставлялось в старую прошивку.
-
Re: Радар-детектор и Arduino
Уже увидел:) Может порт дохлый?