Альфа-версия комплекса измерения и индикации времени заезда для Мотоджимханы.
- Войдите на сайт для отправки комментариев
Альфа-версия комплекса измерения и индикации времени заезда для Мотоджимханы.
Мотоджимхана — спортивное испытание на время, в котором участники на мотоциклах соревнуются на самое быстрое маневрирование на асфальтовой площадке среди искусственных препятствий в виде конусов.
Комплекс состоит из:
1.ИК датчики китайские барьерные датчики
Разобраны и установлены на основания.
2.Плата TX . Содержит Wemos D1 mini + NRF24L01 + 18650 Wemos шилд;
3. Плата RX – секундомер. Содержит Wemos D1 mini + NRF24L01 + 18650 Wemos шилд (2 шт. для отдельно питания контроллера и индикатора)+ MAX 7219 MATRIX (8 матриц 8х8);
4. Индикатор MAX 7219 MATRIX (8 матриц 8х8) для отдельно питания контроллеров и индикатора;
5. Батарейные контейнеры для питания барьерных датчиков ;
6. 18650 Wemos шилд для Arduino 3 штуки
Модуль срабатывает по «первому колесу». Задержка прерывания от датчика 5 сек. для предотвращения повторно срабатывания от «второго колеса». Результат индицируется, но не фиксируется. Индикация сохраняется до следующего старта. Питание каждого датчика от 8 батареек А2 или аккумуляторов. Питание контроллеров и индикатора независимое от элементов 18650, установленных в Wemos шилд, причем этот шилд, позволяет заряжать батарею по USB без выемки. Предусмотрен режим тестирования без подключенных датчиков. Всего установлено 3 шилда.
Схемы (пардон от руки, рабочий материал):
Датчики:
приемник
передатчик
секундомер+индикатор
На всякий случай скетчи
// Передатчик версии - Wemos D1 mini // таймаут - задержка - игнорирования входа // GPIO_PIN - принудительно на земле. Прерывание от внешнего датчика подачей единицы (VСС). // // последняя рабочая версия //31.12.2017 /* #define CE D7 // Chip Enable Activates RX or TX mode #define CSN D4 // SPI Chip Select D4 - default #define SCK_PIN D1 // SPI Clock #define MOSI_PIN D3 // SPI Slave Data Input #define MISO_PIN D2 // SPI Slave Data Output, with tri-state option #define IRQ RX // Maskable interrupt pin D8 - default */ #include "NRF24L01.h" #define TX_ADR_WIDTH 5 // 5 unsigned chars TX(RX) address width #define TX_PLOAD_WIDTH 1 // 3 unsigned chars TX payload unsigned char TX_ADDRESS[TX_ADR_WIDTH] = { 0x34,0x43,0x10,0x10,0x01 }; unsigned char tx_buf[TX_PLOAD_WIDTH] = {0}; #define GPIO_PIN D5 // D5 через резистор 10к int i=0; void setup() { pinMode(GPIO_PIN, INPUT); Serial.begin(115200); tx_buf[0] = 0x55; // tx_buf[1] = 0xAA; // tx_buf[2] = 0x11; // pinMode(0, OUTPUT); // digitalWrite(0, LOW); NRF_Init(); // Initialize IO port Serial.println(""); Serial.println("TX_Mode Start"); digitalWrite(GPIO_PIN,0); attachInterrupt(GPIO_PIN, blink, RISING ); } void loop() { if(i==1){ delay(5000); attachInterrupt(GPIO_PIN, blink, RISING ); i=0; } } void blink() { NRF_SeTxMode(); while(!NRF_CheckAck()); Serial.println("TX"); NRF_Send(tx_buf); detachInterrupt(GPIO_PIN); i=1; }
// Упрощенный вариант=приемник+секундомер // Последняя рабочая версия //31.12.2017 // // работает по приему сигнала от NRF24L01 // только вывод результата // WEMOS D1 R2 & mini // MAX 7219 MATRIX // динамическое отображение секундомера // // #include <String.h> #include "LedControl.h" #include "NRF24L01.h" unsigned char RX_ADDRESS[TX_ADR_WIDTH] = { 0x34,0x43,0x10,0x10,0x01 }; #define TX_PLOAD_WIDTH 1 //unsigned char rx_buf[TX_PLOAD_WIDTH] = {0}; unsigned char rx_buf[1] = {0}; float times; int start=0; int finish=0; int finish1=0; int cycle=0; int ind=0; float shas=0.0; float minut=0.0; float secund=0.0; float secundOld=0.0; int delay_2=0; // признак задержки после ФИНИШа => 0 снята, 1 установлена int delay_ =0; // признак задержки после СТАРТа => 0 снята, 1 установлена int ij=0; char res; int i; int fin=1; int intsec=0; int rassec=0; int sh=0; int mi=0; int se=0; int sh1 =0; int sh2 =0; int mi1 =0; int mi2 =0; int se1 =0; int se2 =0; int rs1 =0; int rs2 =0; int hh=0; int8_t TimeDisp[] = {0x00,0x00,0x00,0x00}; int count=0; char td1=' '; char td2=' '; char td3=' '; char td4=' '; char td5=' '; char td6=' '; int th1=0; int th2=0; int tm1=0; int tm2=0; int h11=0; int h22=0; int m11=0; int m22=0; /* * Подключение max7219 pin D0 is connected to the DataIn pin D6 is connected to the CLK pin D5 is connected to CS * */ LedControl lc=LedControl(D0,D6,D5,8); unsigned long delayTime=1000; // Delay between Frames // Переменные для матрицы int poz,dig,zap; // позиция,значение,разделитель) // Ш Р И Ф Т byte c1[] = // 1 { 0b00000010, 0b00000110, 0b00001110, 0b00000110, 0b00000110, 0b00000110, 0b00000110, 0b00000000 }; byte c2[] = // 2 { 0b00001110, 0b00011011, 0b00000011, 0b00000110, 0b00001100, 0b00011000, 0b00011111, 0b00000000 }; byte c3[] = // 3 { 0b00001110, 0b00011011, 0b00000011, 0b00001110, 0b00000011, 0b00011011, 0b00001110, 0b00000000 }; byte c4[] = // 4 { 0b00000011, 0b00000111, 0b00001111, 0b00011011, 0b00011111, 0b00000011, 0b00000011, 0b00000000 }; byte c5[] = // 5 { 0b00011111, 0b00011000, 0b00011110, 0b00000011, 0b00000011, 0b00011011, 0b00001110, 0b00000000 }; byte c6[] = // 6 { 0b00001110, 0b00011011, 0b00011000, 0b00011110, 0b00011011, 0b00011011, 0b00001110, 0b00000000 }; byte c7[] = // 7 { 0b00011111, 0b00000011, 0b00000110, 0b00001100, 0b00001100, 0b00001100, 0b00001100, 0b00000000 }; byte c8[] = // 8 { 0b00001110, 0b00011011, 0b00011011, 0b00001110, 0b00011011, 0b00011011, 0b00001110, 0b00000000 }; byte c9[] = // 9 { 0b00001110, 0b00011011, 0b00011011, 0b00001111, 0b00000011, 0b00011011, 0b00001110, 0b00000000 }; byte c0[] = // 0 { 0b00001110, 0b00011011, 0b00011011, 0b00011011, 0b00011011, 0b00011011, 0b00001110, 0b00000000 }; //----------- с точкой byte _c1[] = // .1 { 0b00000010, 0b00000110, 0b00001110, 0b00000110, 0b00000110, 0b00000110, 0b11000110, 0b11000000 }; byte _c2[] = // .2 { 0b00001110, 0b00011011, 0b00000011, 0b00000110, 0b00001100, 0b00011000, 0b11011111, 0b11000000 }; byte _c3[] = // .3 { 0b00001110, 0b00011011, 0b00000011, 0b00001110, 0b00000011, 0b00011011, 0b11001110, 0b11000000 }; byte _c4[] = // .4 { 0b00000011, 0b00000111, 0b00001111, 0b00011011, 0b00011111, 0b00000011, 0b11000011, 0b11000000 }; byte _c5[] = // .5 { 0b00011111, 0b00011000, 0b00011110, 0b00000011, 0b00000011, 0b00011011, 0b11001110, 0b11000000 }; byte _c6[] = // .6 { 0b00001110, 0b00011011, 0b00011000, 0b00011110, 0b00011011, 0b00011011, 0b11001110, 0b11000000 }; byte _c7[] = // .7 { 0b00011111, 0b00000011, 0b00000110, 0b00001100, 0b00001100, 0b00001100, 0b11001100, 0b11000000 }; byte _c8[] = // .8 { 0b00001110, 0b00011011, 0b00011011, 0b00001110, 0b00011011, 0b00011011, 0b11001110, 0b11000000 }; byte _c9[] = // .9 { 0b00001110, 0b00011011, 0b00011011, 0b00001111, 0b00000011, 0b00011011, 0b11001110, 0b11000000 }; byte _c0[] = // .0 { 0b00001110, 0b00011011, 0b00011011, 0b00011011, 0b00011011, 0b00011011, 0b11001110, 0b11000000 }; //-------------------------------------------------------------------------------------------------------------------- void setup(void) { Serial.begin(115200); Serial.println(); NRF_Init(); NRF_SetRxMode(); Serial.println(""); Serial.println("RX_Mode start..."); lcclear(); // О Ч И С Т К А И Н Д И К А Т О Р А lcOut();// Вывод результата на индикатор //------------------------------------------------------------------------------------------------ } void loop(void) { if(NRF_Receive(rx_buf)) { if((rx_buf[0]==0x55)){ Serial.println(); Serial.println("Yes"); Serial.write(rx_buf,5); rx_buf[0] = 0; //start_(); blink(); } } if(fin==1){ lcOut(); } // Задержка после ФИНИШа if (delay_2==1){ delay_2=0; fin=1; } // Задержка после СТАРТа if (delay_==1){ // Динамическая индикация while (ind==1){ delay(1); finish1=millis(); delay_=0; times = finish1-start; if (times>=5000 && times<=6000){ // задержка } shas=times/3600000; minut=times/60000; secund=times/1000; intsec=secund; rassec=(secund-intsec)*100; sh=shas; mi=secund/60; se=secund-(mi*60); sh1 = sh/10; sh2 = sh%10; mi1 = mi/10; mi2 = mi%10; se1 = se/10; se2 = se%10; rs1 = rassec/10; rs2 = rassec%10; if(NRF_Receive(rx_buf)) { if((rx_buf[0]==0x55)){ Serial.println(); Serial.println("Yes2"); Serial.write(rx_buf,5); blink(); } } lcOut();// Вывод результата на индикатор } } } void blink() { delay_=1; ind=0; if(cycle==1){ finish=millis(); cycle=0; Serial.print("times: "); times = finish-start; Serial.println(times); shas=times/3600000; minut=times/60000; secund=times/1000; int intsec=secund; int rassec=(secund-intsec)*100; Serial.print("Shas : "); Serial.println(shas,4); Serial.print("Minut : "); Serial.println(minut,4); Serial.print("Secund : "); Serial.println(secund,4); sh=shas; mi=secund/60; se=secund-(mi*60); Serial.print(sh); Serial.print("."); Serial.print(mi); Serial.print("."); Serial.print(se); Serial.print("."); Serial.println(rassec); sh1 = sh/10; sh2 = sh%10; Serial.print(sh1); Serial.println(sh2); mi1 = mi/10; mi2 = mi%10; Serial.print(mi1); Serial.println(mi2); se1 = se/10; se2 = se%10; Serial.print(se1); Serial.println(se2); rs1 = rassec/10; rs2 = rassec%10; Serial.print(rs1); Serial.println(rs2); Serial.println("Finish "); lcclear();// Вывод результата на индикатор lcOut(); delay_=0; delay_2=1; fin=1; } else { // СТАРТ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! lcclear(); // О Ч И С Т К А И Н Д И К А Т О Р А start=millis(); h11=th1; h22=th2; m11=tm1; m22=tm2; Serial.println(""); Serial.println("Start "); cycle=1; ind=1; fin=0; } // } } //////////////////////////////////////////////// // Функции вывода на индикатор // вывод символа без точки void cc1() // Изображение символа "1" { for ( i = 0; i < 8; i++) { lc.setRow(poz,i,c1[i]); } } void cc2()// Изображение символа "2" { for ( i = 0; i < 8; i++) { lc.setRow(poz,i,c2[i]); } } void cc3()// Изображение символа "3" { for ( i = 0; i < 8; i++) { lc.setRow(poz,i,c3[i]); } } void cc4()// Изображение символа "4" { for (int i = 0; i < 8; i++) { lc.setRow(poz,i,c4[i]); } } void cc5()// Изображение символа "5" { for ( i = 0; i < 8; i++) { lc.setRow(poz,i,c5[i]); } } void cc6()// Изображение символа "6" { for ( i = 0; i < 8; i++) { lc.setRow(poz,i,c6[i]); } } void cc7()// Изображение символа "7" { for (i = 0; i < 8; i++) { lc.setRow(poz,i,c7[i]); } } void cc8()// Изображение символа "8" { for ( i = 0; i < 8; i++) { lc.setRow(poz,i,c8[i]); } } void cc9()// Изображение символа "9" { for ( i = 0; i < 8; i++) { lc.setRow(poz,i,c9[i]); } } void cc0()// Изображение символа "0" { for (i = 0; i < 8; i++) { lc.setRow(poz,i,c0[i]); } } // вывод символа с точкой // вывод символа без точки void _cc1() // Изображение символа ".1" { for ( i = 0; i < 8; i++) { lc.setRow(poz,i,_c1[i]); } } void _cc2()// Изображение символа ".2" { for ( i = 0; i < 8; i++) { lc.setRow(poz,i,_c2[i]); } } void _cc3()// Изображение символа ".3" { for ( i = 0; i < 8; i++) { lc.setRow(poz,i,_c3[i]); } } void _cc4()// Изображение символа ".4" { for ( i = 0; i < 8; i++) { lc.setRow(poz,i,_c4[i]); } } void _cc5()// Изображение символа ".5" { for ( i = 0; i < 8; i++) { lc.setRow(poz,i,_c5[i]); } } void _cc6()// Изображение символа ".6" { for ( i = 0; i < 8; i++) { lc.setRow(poz,i,_c6[i]); } } void _cc7()// Изображение символа ".7" { for ( i = 0; i < 8; i++) { lc.setRow(poz,i,_c7[i]); } } void _cc8()// Изображение символа ".8" { for ( i = 0; i < 8; i++) { lc.setRow(poz,i,_c8[i]); } } void _cc9()// Изображение символа ".9" { for ( i = 0; i < 8; i++) { lc.setRow(poz,i,_c9[i]); } } void _cc0()// Изображение символа ".0" { for ( i = 0; i < 8; i++) { lc.setRow(poz,i,_c0[i]); } } // Вывод на индикатор void setDig()// poz,dig,zap - позиция,значение,разделитель { lc.clearDisplay(poz); // очистить позицию if(zap==0){ switch (dig) { case 1: cc1(); break; case 2: cc2(); break; case 3: cc3(); break; case 4: cc4(); break; case 5: cc5(); break; case 6: cc6(); break; case 7: cc7(); break; case 8: cc8(); break; case 9: cc9(); break; case 0: cc0(); break; default: break; } } else { switch (dig) { case 1: _cc1(); break; case 2: _cc2(); break; case 3: _cc3(); break; case 4: _cc4(); break; case 5: _cc5(); break; case 6: _cc6(); break; case 7: _cc7(); break; case 8: _cc8(); break; case 9: _cc9(); break; case 0: _cc0(); break; default: break; } } return; } void lcclear()// О Ч И С Т К А И Н Д И К А Т О Р А { lc.shutdown(0,false); lc.shutdown(1,false); lc.shutdown(2,false); lc.shutdown(3,false); lc.shutdown(4,false); lc.shutdown(5,false); lc.shutdown(6,false); lc.shutdown(7,false); lc.setIntensity(0,5); lc.setIntensity(1,5); lc.setIntensity(2,5); lc.setIntensity(3,5); lc.setIntensity(4,5); lc.setIntensity(5,5); lc.setIntensity(6,5); lc.setIntensity(7,5); lc.clearDisplay(0); lc.clearDisplay(1); lc.clearDisplay(2); lc.clearDisplay(3); lc.clearDisplay(4); lc.clearDisplay(5); lc.clearDisplay(6); lc.clearDisplay(7); } void lcOut() // ВЫВОД РЕЗУЛЬТАТА НА ИНДИКАТОР { if(mi1>>0){ poz=5; dig=mi1; zap=0; setDig(); } if((mi2>=0 && mi1>>0) || (mi2>>0)){ poz=4; dig=mi2; zap=0; setDig(); } poz=3; dig=se1; zap=1; setDig(); poz=2; dig=se2; zap=0; setDig(); poz=1; dig=rs1; zap=1; setDig(); poz=0; dig=rs2; zap=0; setDig(); } void start_(){ // СТАРТ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! lcclear(); // О Ч И С Т К А И Н Д И К А Т О Р А start=millis(); h11=th1; h22=th2; m11=tm1; m22=tm2; Serial.println(""); Serial.println("Start "); cycle=1; ind=1; fin=0; } void stop_(){ finish=millis(); cycle=0; Serial.print("times: "); times = finish-start; Serial.println(times); shas=times/3600000; minut=times/60000; secund=times/1000; int intsec=secund; int rassec=(secund-intsec)*100; Serial.print("Shas : "); Serial.println(shas,4); Serial.print("Minut : "); Serial.println(minut,4); Serial.print("Secund : "); Serial.println(secund,4); sh=shas; mi=secund/60; se=secund-(mi*60); Serial.print(sh); Serial.print("."); Serial.print(mi); Serial.print("."); Serial.print(se); Serial.print("."); Serial.println(rassec); sh1 = sh/10; sh2 = sh%10; Serial.print(sh1); Serial.println(sh2); mi1 = mi/10; mi2 = mi%10; Serial.print(mi1); Serial.println(mi2); se1 = se/10; se2 = se%10; Serial.print(se1); Serial.println(se2); rs1 = rassec/10; rs2 = rassec%10; Serial.print(rs1); Serial.println(rs2); Serial.println("Finish "); lcclear();// Вывод результата на индикатор lcOut(); delay_=0; delay_2=1; fin=1; }
Во! годная аппаратура!
У нас в Омске мотоджимхана пока почти не развита совсем, но интерес у людей появляется.
Буду знать, где взять, как это сделать! Благодарю!
К началу сезона 2018 прибор был "причесан" Игорем RC7LL. Заменены датчики на китайские HW02 и помещены в корпуса вместе с источниками питания. Индикатор также помещен в корпус вместе с основной платой и батареями. Эксплутационный испытания прошли успешно. В настоящее время прибор применяется на тренировках. Выкладываю некоторые фото и ссылку на тренировочный заезд. Будут вопросы, пишите.
Видео тренировочного заезда с применением секундомера.
https://youtu.be/FO-OQRoaRh0
https://youtu.be/JWy9GDgh6ro
Сколько сейчас обойдется сборка данной телеметрии?
Всем привет.
Интересно , а где взять библиотеку NRF24L01.h ?
На Гитхабе нашёл только nRF24L01.h …..
Всем привет.
Интересно , а где взять библиотеку NRF24L01.h ?
На Гитхабе нашёл только nRF24L01.h …..
по-моему, там любая подойдет, все что делает NRF - это пересылает байт 0x55. насколько я понял.
ага, понял , спс.
На Гитхабе нашёл только nRF24L01.h …..
Это она и есть. Самое капризное звено во всем проекте это как раз nRF24L01
а вообще надежнее работает вариант модуля с антенной
Это она и есть. Самое капризное звено во всем проекте это как раз nRF24L01
а вообще надежнее работает вариант модуля с антенной
А какие там расстояния обычно между приемником и передатчиком? (абсолютно не представляю себе мотоджихану :)
Можно было бы перевести проект на HC-12, например - на открытой местности на 300-500м они должны работать надежно. Заодно и код немного переписать, а то уж больно он корявый :)
Кстати. в качестве табло можно взять матрицы типа таких - они значительно крупнее тех, что в проекте, для улицы будет удобнее (правда, от батарейки уже не пойдут, но наверно на месте соревнования всегда есть хоть одна машина, от аккумулятора вполне заработает)
Весь этот сетап должен быть небольших размеров и потреблять по минимуму, с рабоспособностью 6-8 часов, большой секундомер с управлением от пк и на р10 есть и давно используется на соревнованиях.
а ну как знаете
nRF все-таки рекомендую поменять на что-то более надежное и дальнобойное
а ну как знаете
nRF все-таки рекомендую поменять на что-то более надежное и дальнобойное
может подскажете на что ?
может подскажете на что ?
например HC-12
ребята. вы в сообщении #9 видимо только картинку табло увидели и сочли за рекламу :) А там еще текст был и вопросы :)
А картинка, кстати, не моя, а какого-то индийца или пакистанца, я сам не знаю толком :) и я его не рекламирую
может подскажете на что ?
например HC-12
ребята. вы в сообщении #9 видимо только картинку табло увидели и сочли за рекламу :) А там еще текст был и вопросы :)
А картинка, кстати, не моя, а какого-то индийца или пакистанца, я сам не знаю толком :) и я его не рекламирую
Смело. Обоснуйте.
Смело. Обоснуйте.
что именно? что вы сообщение #9 не читали? - сделал вывод. потому что переспрашиваете, на что заменить NRF, хотя я сразу указал
Или еще что обосновать?
Смело. Обоснуйте.
что именно? что вы сообщение #9 не читали? - сделал вывод. потому что переспрашиваете, на что заменить NRF, хотя я сразу указал
Или еще что обосновать?
Я просил обосновать замену NRF на HC-12
Я просил обосновать замену NRF на HC-12
Вы меня с продавцом на рынке не спутали? :) Зачем мне вас уговаривать, я их продаю, что ли? :) Вы сами жаловались в сообщении 8, что NRF -ки капризные
Сами посмотрите характеристики, если сравнивать обычный (не "дальнобойный") NRF и HC-12 - у последнего почти на порядок больше дальность как на открытой местности, так и в зданиях сквозь стены. Из-за популярности NRF очень много поддельных на Али, с надежностью как повезет.
Про HC-12 подобных отзывов нет, все что продается - работает одинаково устойчиво.
Из минусов - у HC-12 связь через УАРТ, что в принципе может давать задержки несколько миллисекунд
Мой прибор прекрасно работает с NRF, я просто предупредил о возможных капризах при настройке. Вы можете продемонстрировать свои наработки с НС-12 ? Интересно взглянуть.
Мой прибор прекрасно работает с NRF,
ну работает и работает, значит я зря влез
ну так тому и быть
привет ребятушки!)
интересный проект, мне бы тоже позамерять своего корча на время ускорения, на отрезке 200-300 метров.
1) например ставлю два датчика на дороге на расстоянии 200 метров, встаю передним колесом к первому датчику не пересекая его, сигнала нет - ардуина не считает.
2) стартую, переднее колесо пересекает датчик ардуина засекает время
3) пересекаю второй датчик расположенный через 200 метров
4)?? тут надо понять как передать сигнал со второго датчика на первый чтоб ардуина остановила счет и выдала время на дисплей
есть идеи как реализовать?
Основных идеи две:
1. По проводам.
2. Без проводов.
можно и не передавать, если предварительно синхронизировать время на обоих датчиках
Можно ещё по замкнутой кривой поехать - тогда вторая ардуина не нужна ))
Или измеритель поставить на мопед.
Не понял зачем экстренное торможение и выстрелы. Ардуина прибытие зафиксировала и вошла в режим ожидания рестарта - езди потом вокруг нее хоть сутки.
Как будет работать ардуина на мопеде - думайте, на то вам голова дадена. Идею просили - вам ее выдали.
стоп стоп стоп... чтоб ардуине начать отсчет она должна получить сигнал от стартового датчика при пересечении его колесом при старте
ардуина при этом может находиться либо стационарно рядом со стартовым датчиком либо в кармане гонщика
далее через 200 метров сработает финишный датчик и ардуина должна принять сигнал от него чтоб остановить счет
если ардуина установлена стационарно у стартового датчика то сигнал надо передать от финишного датчика на 200 метров либо по размотанным проводам либо по безпроводному каналу
если ардуина лежит в кармане гонщика то она примет сигнал на расстоянии 3-4 метров от финишного датчика во время его пересечения - тут только бес проводной канал связи
Т.е. фраза "езда по кругу" вам вообще ни о чем не говорит - правильно понимаю?
ну какая езда по кругу?)) у нас что кольцевые гонки?)) а вы пробовали максимально ускоряться в повороте?)))
мне надо по прямой на отрезке 200-300 метров замерить время ускорения)
тоесть есть прямой отрезок дороги, с точки старта я максимально быстро ускоряюсь до второй точки
это уже предпологает наличие двух датчиков и наверное двух ардуин
одна ардуина установлена стационарно рядом со стартовым датчиком и читает с него сигнал о начале старта и так же держит открытый канал связи с финишной ардуиной
как только я стартанул она по открытому каналу передает финишной ардуине мол засекай время
финишная ардуина начинает считать попутно мониторя свой финишный датчик рядом с которым она стационарно установлена на наличие от него сигнала пересечения финишной черты
дальше просто выводит время заезда на экран
нужно установить канал связи между двумя ардуинами на расстоянии 200-300 метров по открытой прямой для передачи одного байта информации - "Поехали"))
тоесть есть прямой отрезок дороги, с точки старта я максимально быстро ускоряюсь до второй точки
это уже предпологает наличие двух датчиков и наверное двух ардуин
Зкачем?
Достаточно 2 меток - на старте и на финише и 1 ардуины - на мотоцикле.
нужно установить канал связи между двумя ардуинами на расстоянии 200-300 метров по открытой прямой для передачи одного байта информации - "Поехали"))
и за чем дело встало?
вы это уже талдычите неделю, давно можно было собрать готовые схемы на разных радиомодулях и попробовать
тоесть есть прямой отрезок дороги, с точки старта я максимально быстро ускоряюсь до второй точки
это уже предпологает наличие двух датчиков и наверное двух ардуин
Зкачем?
Достаточно 2 меток - на старте и на финише и 1 ардуины - на мотоцикле.
ардуино на мотоцикле не лучший вариант наверно, а если несколько мотоциклов учавствует в замерах?
и как ардуина на мотоцикле должна ловить сигнал с датчиков? если ардуина стоит стационарно рядом с датчиком она проводами соединена с датчиком проводами и читает его а так как ?
и за чем дело встало?
вы это уже талдычите неделю, давно можно было собрать готовые схемы на разных радиомодулях и попробовать
у меня в голове пока не сложился пазл, нет четкой картины что делать
мы даже пока не решили как это все должно выглядеть, все на стадии обсуждения, а вы говорите попробовать...
а что там решать-то?
- берете две ардуины. условно одну "старт". другую "финиш".
- пишете код для датчика фотофиниша и для передачи сигнала "Поехали" с одной на другую.
- а теперь. вместо того чтоб ставить одну на старте. другую на финише - ставите их рядом, чтобы датчики срабатывали одновременно
В итоге вы получите два разных времени - одно по датчикам. другое с пересылкой по радио - и можете оценить ошибку. вносимую передачей сигнала
ардуино на мотоцикле не лучший вариант наверно, а если несколько мотоциклов учавствует в замерах?
Варианта, миниум, два:
1. По очереди.
2. По числу мотоциклов.
и как ардуина на мотоцикле должна ловить сигнал с датчиков? если ардуина стоит стационарно рядом с датчиком она проводами соединена с датчиком проводами и читает его а так как ?
Ну очевидно же: датчик стоит на мотоцикле рядом с Ардуиной.
Вопросы какие-то детские. Обратитесь лучше в раздел "Ищу исполнителя". Судя пор вопросам (а также по тому, сколь небрежно Вы относитесь к языку), Вам этот проект не одолеть.
Ну очевидно же: датчик стоит на мотоцикле рядом с Ардуиной.
Вопросы какие-то детские. Обратитесь лучше в раздел "Ищу исполнителя". Судя пор вопросам (а также по тому, сколь небрежно Вы относитесь к языку), Вам этот проект не одолеть.
а метки у дороги тогда что? если и датчик и ардуина на мотоцикле?
мне интересно самому сделать иначе мне это не особо интересно)
Вы правы такое отношение к языку показывает меня не с хорошей стороны, учту.
а метки у дороги тогда что? если и датчик и ардуина на мотоцикле?
Метками я назвал то, на что дрлжны реагировать датчики Ардуино. Я не знаю, как Вы их представляете в совем проекте.
мне интересно самому сделать иначе мне это не особо интересно)
Судя по вашему поведению на форуме (сами Вы ничего сделать даже не пытаетесь, советов не слушаете, зато задаете массу глупых вопросов), цель у Вас другая - получить что-нибудь на халяву, т.к. платить за работу Вы не хотите.
Судя по вашему поведению на форуме (сами Вы ничего сделать даже не пытаетесь, советов не слушаете, зато задаете массу глупых вопросов), цель у Вас другая - получить что-нибудь на халяву, т.к. платить за работу Вы не хотите.
сам я пытаюсь понять как это сделать, вот советуюсь с вами как это реализовать
жду что мне скажут сделай так так и так на то форум ведь и нужен чтоб подсказывать
я сам так поступаю (подсказываю людям в чем разбираюсь) и жду что мне помогут более компетентные товарищи
но вы почему то понимаете это в контексте денежных отношений как будто я пришел не на форум самодельщиков а на биржу
а что там решать-то?
- берете две ардуины. условно одну "старт". другую "финиш".
- пишете код для датчика фотофиниша и для передачи сигнала "Поехали" с одной на другую.
- а теперь. вместо того чтоб ставить одну на старте. другую на финише - ставите их рядом, чтобы датчики срабатывали одновременно
В итоге вы получите два разных времени - одно по датчикам. другое с пересылкой по радио - и можете оценить ошибку. вносимую передачей сигнала
вообще какая может быть задержка по радиоканалу на 300 метров? измеряется наверно милисекундами?
baby_in_Arduino, консультации на форуме предполагают, что Вы прежде всего обдумаете полученную информацию, затем попытаетесь сделать что-либо из предложенного, выясните, что получится, и поделитесь на форуме полученными результатами и сделанными выводами. И весь этот процесс ну никак не может уложиться в те 11 минут, которые Вам потребовались на последний ответ.
Вместо того, чтобы что-то сделать, Вы торопитесь сразу написать ответ на форуме. Настолько быстро, насколько это возможно. Притом вопросы - явно необдуманные. Заведите за правило - прежде, чем бросаться отвечать на сообщение, хотя бы полчаса обдумайте его - львиная доля вопросов сразу отпадет.
И еще: почитайте приклеенную тему в "Песочнице" ДЛЯ ВСЕХ НОВИЧКОВ. Ибо только что Вы злостным образом нарушили одно из правил, нарушение которого воспринимается на форуме очень болезненно.
вообще какая может быть задержка по радиоканалу на 300 метров? измеряется наверно милисекундами?
Опять торопитесь отвечать, не подумав?
baby_in_Arduino, консультации на форуме предполагают, что Вы прежде всего обдумаете полученную информацию, затем попытаетесь сделать что-либо из предложенного, выясните, что получится, и поделитесь на форуме полученными результатами и сделанными выводами. И весь этот процесс ну никак не может уложиться в те 11 минут, которые Вам потребовались на последний ответ.
Вместо того, чтобы что-то сделать, Вы торопитесь сразу написать ответ на форуме. Настолько быстро, насколько это возможно. Притом вопросы - явно необдуманные. Заведите за правило - прежде, чем бросаться отвечать на сообщение, хотя бы полчаса обдумайте его - львиная доля вопросов сразу отпадет.
И еще: почитайте приклеенную тему в "Песочнице" ДЛЯ ВСЕХ НОВИЧКОВ. Ибо только что Вы злостным образом нарушили одно из правил, нарушение которого воспринимается на форуме очень болезненно.
о кей понял, Вы конечно правы, просто не хотелось бы покупать на алишке то что ненужно, пробовать потом понимать что не это купил, а хотелось сразу придумать рабочую схему и закупиться на али чтоб собрать готовое решение
Ответ через 8 минут.
Вы что, за 8 минут успели прочитать тему, которую я рекомендовал?
Еще раз: не бросайтесь, сломя голову, отвечать на форуме. Сначала осмыслите написанное,потом сделайте, что рекомендуют... в общем, я об этом уже писал.
о кей понял, Вы конечно правы, просто не хотелось бы покупать на алишке то что ненужно, пробовать потом понимать что не это купил, а хотелось сразу придумать рабочую схему и закупиться на али чтоб собрать готовое решение
Так не бывает.
А с полным отсутствием опыта, как у Вас, - и подавно.
Так что: закупайте, пробуйте, еще раз закупайте, еще раз пробуйте и т.д.
А чтобы не ждать слишком долго заказанного, закупайте впрок: не только то, что наверняка пригодится в текущем проекте, но и то, что может пригодиться в будущем.
PS. И все-таки почитайте рекомендованную мной тему. Там очень много полезного для Вас.
Ардуина на мотоцикле, блоки обнаружения старта/финиша на точках. Блок сработал, в какой-нить радиомодуль бренькнул, ардуина на мотоцикле поймала радиопосылку. Дальше сами думайте, как считать скорость перемещения ардуины между точками.
Так не бывает.
А с полным отсутствием опыта, как у Вас, - и подавно.
Так что: закупайте, пробуйте, еще раз закупайте, еще раз пробуйте и т.д.
А чтобы не ждать слишком долго заказанного, закупайте впрок: не только то, что наверняка пригодится в текущем проекте, но и то, что может пригодиться в будущем.
подскажите из вашего опыта чем нужно закупиться чтоб все было под рукой при обучении?
чтоб модуль обнаружения бренкнул он должен быть связан через ардуину с радио передатчиком который посылает сигнал на радиоприемник на мотоцикле?
подскажите из вашего опыта чем нужно закупиться чтоб все было под рукой при обучении?
"Все было под рукой" - это слишком оптимистично. Я, например, потратил на закупки сумму, за которую можно купить новый автомобиль, но, увы, не достиг в полной мере ситуации "все под рукой".
Если речь идет исключительно об обучении, следует взять программу обучения, внимательно проштудировать ее и выписать все, что в ней упоминается, не забывая о мелких пассивных элементах.
Можно взять набор типа "Матрешки", вроде, там к нему тоже прилагается что-то вроде программы-конспекта.
В любом случае нужно понимать, что "на все случаи жизни" - это очень дорого, а "по списку" - делает практически невозможным "шаг вправо/шаг влево".
чтоб модуль обнаружения бренкнул он должен быть связан через ардуину с радио передатчиком который посылает сигнал на радиоприемник на мотоцикле?
А если использовать импульс лазера для передачи момента старта? Т.е. только две только две ардуинки на старте и на финише. На старте будет испускать короткий импульс лазера, а на финише считать время с момента получения импульса.
чтоб модуль обнаружения бренкнул он должен быть связан через ардуину с радио передатчиком который посылает сигнал на радиоприемник на мотоцикле?
А если использовать импульс лазера для передачи момента старта? Т.е. только две только две ардуинки на старте и на финише. На старте будет испускать короткий импульс лазера, а на финише считать время с момента получения импульса.