Arduino для BAIT BOAT...
А я таки думаю что первые восемь просто “пилот” вторые 8 это байт данных - измеренная температура, а глубина скорее всего передается шириной паузы, но нужно проверять. Какой именно модельки твой подопытный датчик?
Модель эхолота - “GENMAN FFW718” с Алиэкспресса “russian menu language FFW718 Wireless Portable Dot Matrix Fish Finder Sonar Radio big LCD display”.
Т.е. клон Lucky. Нашел про клон: arm-fishing.ru/?page_id=401
Передатчик как на фото выше.
Приемник в виде модуля припаян на штырях к “материнской” плате.
Данные снимал с приемника.
------------------
Пауза между пачками большая, сравнима с шириной всей пачки.
Я посчитал, 0.4 метра звук проходит за 0.27 мс - как раз похоже на ширину импульса.
Жаль, в квартире нет бочки на 200л и глубиной 1.5 метра для опытов…
--------
Вот полезное сообщение rcopen.com/forum/f68/topic285298/2
Есть подвижка. Saleae Logic показывает некий разумный поток. Дело за малым - понять где что закодировано.
Интересна центральная пачка импульсов.
Она всегда стартует с импульса 6.729 мс
Но потом в воде за ней следует длинный импульс и куча мелких хвостов.
А без воды, но с замкнутыми контактами получается только стартовый импульс 6.729 мс и тишина. Эха нет - нет и длинного импульса с хвостом.
Можно предположить что длинная пауза и следующая за ним
Она всегда стартует с импульса 6.729 мс
есть определение начала пачки.
Далее идут отраженные импульсы, без всякой обработки 0.82 мс- это как раз 40 см с множеством переотражений ( но отсечение идет только первых поступивших 8-ми). Только отсчет почему то не от начала первой пачки, а от конца ( то есть вначале идет наиболее далекое определенное отражение), хотя так логично для отображения если рисовать начинать с более глубокого пробитого уровня.
Если так предположить- то тот промежуток что отдан под первую пачку, плохо видно- но около 60 мс- определяем максиму 90 метров прохождения импульса УЗ, то есть 45 метров глубины. А сколько заявлено? ( нашел- 40 метров- так и должно быть)
Далее пачка температуры, 8 бит, к примеру в 394 посту это 11000011
Только отсчет почему то не от начала первой пачки, а от конца
Похоже, вы правы!
Стартовый импульс всегда 6.7 мс.
Потом длинный импульс 20…60 мс в моем ведре (запас под большие глубины?).
И далее хвост из 10-11 импульсов ~0.3-0.6 мс
Получается, хвост из коротких импульсов - это серия замеров эха.
0.6 мс * 1500м\с \ 2 = 0.45 м
Я сделал на Ардуинке приблуду для анализа. При случае возьму её на пруд и посмотрю, что покажет.
Можно ссылку на проект?
Я сделал на Ардуинке приблуду для анализа. При случае возьму её на пруд и посмотрю, что покажет.
Борис, далее не пытали?
А фото платы датчика в высоком разрешении не делали?
Борис, далее не пытали?
Пока до пруда не добрался. Огородный сезон(
Плату датчика не сфотографировать - она внутри поплавка-уточки, который запаян. Заглядывал внутрь через батарейный отсек.
Есть мысли… FRSky передает телеметрию на пульт. Можно передать GPS и глубину. Есть проект эмуляции датчиков S.Port (для подключения к приемнику frsky X- и S- серий) на Arduino. GPS стандартно, а глубину под видом напряжения\высоты\температуры, например.
Лог телеметрии пишется на SD-карту в пульте в формате csv.
А фото платы датчика в высоком разрешении не делали?
еще нужно???
Нужно.
А у меня встречный вопрос.
У кого то есть информация о том как себя поведет один и тот же пьезо элемент в воздухе и в воде?
Интересует как изменится, вернее какой окажется диаграмма направленности луча и уплывет ли куда то частота резонансная?
А фото платы датчика в высоком разрешении не делали?
Если в ближние дни найду где то в продаже запасной датчик, разберу…
качество сильно сжимается при загрузке…
вставляй ссылку на сторонний ресурс типа радикала, а там оригинал хоть в 4к
вставляй ссылку на сторонний ресурс типа радикала,
Лучше на yandex.
Лучше на yandex.
Да, на радикале спам-мусора полно … отзываю свой совет)) Но смысл думаю понятен.
Лучше на yandex.
или в облако от mail.ru
Не помню кто именно уже давал ссылочку не будет лишним повторить тут, ссылка на патент на затею, и как работает “фишфиндер”, основные решения и тп. может оказаться полезно.
ссылку давал я, но он к лаки не подходит. Плюс сейчас они меняют протокол. Некоторые новые приемники не видят старых датчиков и наоборот
Плюс сейчас они меняют протокол. Некоторые новые приемники не видят старых датчиков и наоборот
они просто защищаются от “подделок” вернее друг от друга. меняют длину первого, стартового импульса например и все. есть варианты с частотой 315,433,916мгц. все остальное пока еще неизменно.
Всем привет. Собрал для себя на просторах интернета скетч для заливки его в ардуину, в скетче все функции отрабатывают как мне надо, но есть так называемый дребезг сигнала, что не очень хорошо. Помогите пожалуйста от него избавиться на программном уровне. Так как я сам не программист не могу понять как запихнуть защиту от дребезга в собранный мной скетч.
#include <Servo.h>
Servo servo1;
Servo servo2;
int Val;int Val1;
boolean vLED1 = false;//Hilfsvariable wird zusammen mit der LED auf “true” gesetzt, wenn if-Bedingung erfüllt wurde. Am Ende des loop-teils werden, wenn das Einganssignal in der “Mittelstellung” ist, alle Hilfsvariablen wieder auf “false” gesetzt. Somit kann die LED wieder umgeschaltet werden.
boolean vLED2 = false;//
int iLED1;
int iLED2;void setup ()
{
pinMode(2, INPUT); //Вход канал1
servo1.attach(4); //Сервомашинка 1
servo2.attach(5); //Сервомашинка2pinMode (6, OUTPUT); //Выход на реле света1
pinMode (7, OUTPUT); //Выход на реле света2
pinMode (3, INPUT); //Вход канал3
}void loop (){
Val = pulseIn(2, HIGH, 75000);
if (Val<1500) servo1.write(map(Val, 1000,1500,0,90 )); //Упровление сервой
if (Val>1500) servo2.write(map(Val, 1500,2000,0,90 ));Val1 = pulseIn(3,HIGH,75000);//Ließt Eingangssignal
iLED1 = digitalRead(6);//Ließt Status von LED1
iLED2 = digitalRead(7);//if-Bedinung für LED1
if (Val1>1850 && Val1<1950 && iLED1==LOW && vLED1 == false){//Wenn Eingangssignal zwischen 1228 und 1242, Ausgang an LED1 aus und der Status des Ausgangs in diesem loop-durchgang noch nicht verändert wurde, dann
digitalWrite (6,HIGH);//schalte Ausgang an
vLED1 = true;//Setze Hilfsvariable auf true. Nächste if-bedinung stimmt somit nicht mehr (bis Eingangssingal in “Mittelstellung” und die LED bleibt an.
}
if (Val1>1850 && Val1<1950 && iLED1==HIGH && vLED1 == false){//Gleich wie oben, bloß umgekehrt zum ausschalten der LED
digitalWrite (6,LOW);
vLED1 = true;
}
//if-Bedinung für LED2
if (Val1>1024 && Val1<1250 && iLED2==LOW && vLED2 == false){
digitalWrite (7,HIGH);
vLED1 = true;
}
if (Val1>1024 && Val1<1250 && iLED2==HIGH && vLED2 == false){
digitalWrite (7,LOW);
vLED1 = true;
}
//if-Bedinung zum Zurücksetzen der Hilfsvariablen bei Mittelstellung des Eingangssignals
if (Val1>1490 && Val1<1600){
vLED1 = false;
vLED2 = false;
}}
Суть работы ардуинки такова , один канал работает как серворазделитель , а другой канал отвечает за включение и выключение габаритов и фары.
есть так называемый дребезг сигнала, что не очень хорошо.
Давай разберемся для сначала, что за дребезг, в чем именно он выражается?
Давай разберемся для сначала, что за дребезг, в чем именно он выражается?
Он выражается: при снятии сигнала команда не сразу фиксируется, то есть например я хочу дать команду на вкл LED1 поднимаю стик в верх а он вместо того чтобы зафиксировать мою команду начинает то включать то выключать. приходиться несколько раз давать команду.