Специальные цены   новые товары
+ Ответить в теме
Показано с 1 по 16 из 16

arduino вместо FlySky ?

Тема раздела Судомодели. Общий в категории Судомодели; Кто-нить пытался полностью переити на управление от ардуины? Какие проблеммы возникают, недостатки? Собственно, есть желание переделать управление и уйти от ...

  1. #1

    Регистрация
    29.07.2019
    Адрес
    Canada
    Возраст
    50
    Сообщений
    11

    arduino вместо FlySky ?

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

  2.  
  3. #2

    Регистрация
    13.07.2008
    Адрес
    Магнитогорск
    Возраст
    30
    Сообщений
    239
    Видел подобные проекты в связке arduino+nrf24l01, но зачем? Какая цель преследуется?
    https://community.alexgyver.ru/threa...a-nrf24l01.76/
    P.S. По моему опыту работы с данными модулями года 3 назад - библиотека была сырая, постоянно косячила и терялись пакеты (хотя может быть это мой кривой код ).

  4. #3

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

  5. #4

    Регистрация
    07.01.2019
    Адрес
    Севастополь
    Возраст
    35
    Сообщений
    13
    У меня небольшой успешный опыт есть.
    Правда гибрид получается.
    Аппаратура радиолинк, на корабле ардуина считывает приемник и парсит его каналы - благо там SBUS - это обычный UART.
    Таймер ардуины генерирует сигналы для серв.
    Ну, а далее всё просто, тумблером пульта можно переключить управление либо напрямую от пульта (direct mode) либо передать управление полностью автопилоту (как бы flybywire).
    Разную телеметрию я передаю через модуль 3dr, про nrf на тот момент не всё знал. 3dr на земле удобно подключить через USB, с nrf на берегу понадобится ещё один контроллер.

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




  6.  
  7. #5

    Регистрация
    29.07.2019
    Адрес
    Canada
    Возраст
    50
    Сообщений
    11
    Это у Вас на пульте тачскрин?
    В принципе что-то подобное и ищу.
    Только без кнопок - два джойстика и тач. Все управление на таче.
    Ардупайлот смотрел видео - по моему весьма громоздко сделано.
    Хотелось бы простой интерфейс - ткнул пальцем на точку - кораблик и поехал туда. Дал команду домой и занимайся своим делом дальше.
    Ардупайлот предлагает носить ноут с собой и заниматся програмированием устройства на рыбалке.
    Нет, это не правильно. Должно быть все просто как функционал у топора.
    похоже Вам ардупайлот тоже не понравился - поэтому и делаете свое устройство.

  8. #6

    Регистрация
    07.01.2019
    Адрес
    Севастополь
    Возраст
    35
    Сообщений
    13
    Нет, пульт у меня обычный без тачскринов - радиолинк АТ9s.

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

    А задачу прийти в точку решить в принципе не так сложно, я один из таких алгоритмов тоже планирую к реализации.
    вот отличный сайт с готовыми формулами для работы с GPS и расчетом некоторых параметров навигации https://www.movable-type.co.uk/scripts/latlong.html

    Думаю нужно посмотреть софт для разработки ПО для планшетов/телефонов, так чтобы он мог работать с ком-портом, тогда много чего упроститься если использовать телеметрию типа 3dr или Lora со встроенным ком мостом в юсб.
    бесплатные офлайн карты тоже есть - openstreet.

    Но это всё что я знаю из теории, в приоритете у меня ноутбук с ПО.

  9. #7

    Регистрация
    04.09.2009
    Адрес
    Беер-Шева,Израиль+Полтава/У
    Возраст
    55
    Сообщений
    383
    Цитата Сообщение от kapelan Посмотреть сообщение
    ... Все управление на таче...
    Мокрые руки/дождь-тач не адекватно работает.

  10.  
  11. #8

    Регистрация
    29.07.2019
    Адрес
    Canada
    Возраст
    50
    Сообщений
    11
    Цитата Сообщение от vlad007 Посмотреть сообщение
    Мокрые руки/дождь-тач не адекватно работает.
    тач на ардуину не совсем такой как телефон. В него можно палкой тыкать - он будет работать.
    Для адекватного автопилота нужна обратная связь с кораблем.
    Собственно поэтому другого выхода нету. Все существуюшие способы управления такого не могут.
    Почему тач а не кнопки? потомушта один тач дешевле десяти кнопок , удобнее и открывает возможность неограниченного числа каналов.
    Опыт по програмированию тача есть - тут проблем никаких.
    Пока вижу проблему :
    - с корректной связью - заказал модули, покрутим, посмотрим.
    - адекватный и удобный пульт нужен, а 3Д принтера нету.
    Ну и софтину автопилота написать - тоже проблем не вижу.

  12. #9

    Регистрация
    04.09.2009
    Адрес
    Беер-Шева,Израиль+Полтава/У
    Возраст
    55
    Сообщений
    383
    Цитата Сообщение от kapelan Посмотреть сообщение
    тач на ардуину не совсем такой как телефон. В него можно палкой тыкать - он будет работать ...
    Да,если тач резистивный,а не капасити.

  13. #10

    Регистрация
    29.07.2019
    Адрес
    Canada
    Возраст
    50
    Сообщений
    11
    тестирую HC-12 модули.
    проблема не в потерянных пакетах а в потеряной части пакета.
    Если потерянный пакет можно смело игнорировать то с мусором в эфире боротса сложно.
    нужно мастырить что-то типа контроля целостности пакета, что приводит к удлинению пакета, а чем больше пакет тем больше шансов потерять его часть.
    вобщем замкнутый круг
    Видимо это и остановило массовою замену существуюшей аппаратуры.

    Цитата Сообщение от Sevas Посмотреть сообщение
    ... на корабле ардуина считывает приемник и парсит его каналы - благо там SBUS - это обычный UART....
    на UART приходят правильные данные всегда?
    или ардуина как-то дополнительно их проверяет?
    формат сообщения можете опубликовать?

  14. #11

    Регистрация
    07.01.2019
    Адрес
    Севастополь
    Возраст
    35
    Сообщений
    13
    Данные приходят всегда. Ошибок пока не замечено. Хотя из спецификации sbus там нет чексуммы.

    Прикрепил файлик со спецификацией сбуса.

    А это код как распарсить посылку по каналам.
    Код:
    SBUS_channels[0]  = ((SB_buffer[1]    |SB_buffer[2]<<8)                 & 0x07FF);//ROLL
    		SBUS_channels[1]  = ((SB_buffer[2]>>3 |SB_buffer[3]<<5)                 & 0x07FF);//PITCH
    		SBUS_channels[2]  = ((SB_buffer[3]>>6 |SB_buffer[4]<<2 | SB_buffer[5]<<10)  & 0x07FF);//THROTTLE
    		SBUS_channels[3]  = ((SB_buffer[5]>>1 |SB_buffer[6]<<7)                 & 0x07FF);//RUDDER
    		SBUS_channels[4]  = ((SB_buffer[6]>>4 |SB_buffer[7]<<4)                 & 0x07FF);//2х позиционный тумблер C 
    		SBUS_channels[5]  = ((SB_buffer[7]>>7 |SB_buffer[8]<<1 |SB_buffer[9]<<9)   & 0x07FF);
    		SBUS_channels[6]  = ((SB_buffer[9]>>2 |SB_buffer[10]<<6)                & 0x07FF);
    		SBUS_channels[7]  = ((SB_buffer[10]>>5|SB_buffer[11]<<3)                & 0x07FF);
    		SBUS_channels[8]  = ((SB_buffer[12]   |SB_buffer[13]<<8)                & 0x07FF);//тумблер B
    		SBUS_channels[9]  = ((SB_buffer[13]>>3|SB_buffer[14]<<5)                & 0x07FF);
    		SBUS_channels[10] = ((SB_buffer[14]>>6|SB_buffer[15]<<2|SB_buffer[16]<<10) & 0x07FF);
    		//SBUS_channels[11] = ((SB_buffer[16]>>1|SB_buffer[17]<<7)                & 0x07FF);
    		//SBUS_channels[12] = ((SB_buffer[17]>>4|SB_buffer[18]<<4)                & 0x07FF);
    		//SBUS_channels[13] = ((SB_buffer[18]>>7|SB_buffer[19]<<1|SB_buffer[20]<<9)  & 0x07FF);
    		//SBUS_channels[14] = ((SB_buffer[20]>>2|SB_buffer[21]<<6)                & 0x07FF);
    		//SBUS_channels[15] = ((SB_buffer[21]>>5|SB_buffer[22]<<3)                & 0x07FF);
    		//if ((SB_buffer[23])      & 0x0001)
    		//{
    			//SBUS_channels[16] = 2047;
    		//}
    		//else SBUS_channels[16] = 0;
    		//
    		//if ((SB_buffer[23] >> 1) & 0x0001)
    		//{
    			//SBUS_channels[17] = 2047;
    		//} else SBUS_channels[17] = 0;
    Посылку собираем в прерывании UART

    Код:
    ISR ( USART2_RX_vect )//прерывание SBUS от пульта
    {
    	uint8_t rx = UDR2;
    	if (SB_buffer_index == 0 && rx != SBUS_STARTBYTE)
    	{
    		//incorrect start byte, out of sync
    		return;
    	}
    	
    	SB_buffer[SB_buffer_index++] = rx;
    
    	if (SB_buffer_index == 25)
    	{
    		SB_buffer_index = 0;
    		if (SB_buffer[24] != SBUS_ENDBYTE)
    		{
    			//incorrect end byte, out of sync
    			return;
    		}
    		else
    		{
    			UCSR2B &= ~(1 << RXCIE2);//отключение прерывания UART2
    			UART2_RX_flag = true;//данные готовы
    		}
    	}
    
    }
    Если будете это всё пробовать то нужно сделать инвертер сигнала на транзисторе. сбус изначально ивертирует 0 на 1, то есть не так как UART согласно ASCII.

    Вложения

  15. #12

    Регистрация
    29.07.2019
    Адрес
    Canada
    Возраст
    50
    Сообщений
    11
    Цитата Сообщение от Sevas Посмотреть сообщение
    ...Прикрепил файлик со спецификацией сбуса
    спасибо, судя по коду работает так:
    - проверяет первый стартовый символ :SBUS_STARTBYTE
    - затем посылка из 25 байт
    - проверяет заключающий символ: SBUS_ENDBYTE
    если длинна сообщения 27 байт + первый + последний символ совпадают - значит посылка валидная.
    Иначе: пакет идет вмусор.
    Валидный пакет парсится по каналам, непонятно зачем пакет такой длинный - видимо в один байт значение канала не вмещается.

  16. #13

    Регистрация
    07.01.2019
    Адрес
    Севастополь
    Возраст
    35
    Сообщений
    13
    Да, все так.
    Один канал насколько я понял имеет разрядность 9 или 11, сейчас уже не помню, поэтому они их раскидали таким хитрым способом. 2 байта на канал много, осталось пару бит, они в этот хвост закинули начало следующего канала и т.д.

  17. #14

    Регистрация
    29.07.2019
    Адрес
    Canada
    Возраст
    50
    Сообщений
    11
    угу:
    по спецификации из rar (шикарная дока)
    у них байт = 12 бит.
    12 бит не хватает на канал и они раскидали каналы по разным байтам.
    начало+конец+длинна является контрольной суммой.
    Громоздко получается.
    ардуина 8 битовая - тяжело это дело вместе прикрутить.

  18. #15

    Регистрация
    07.01.2019
    Адрес
    Севастополь
    Возраст
    35
    Сообщений
    13
    По опыту скажу что ардуина со всем справляется за глаза.
    У меня она отрабатывает 3 уартовских прерывания.
    Работает с акселерометром, гиро, компасом по i2c. Считает честный кватернион, там под десяток операций с float, столько же синусов и прочей тригонометрии.
    Один аппаратный таймер генерирует правильные импульсы для 3х каналов.
    Со всем этим справляется на ура, зависаний не замечал, но я и вотчдог настроил.
    Правда я все пишу, управляю голыми регистрами, ардуиновский IDE и его готовые функции лучше для таких задач не использовать, там много косяков есть.

  19. #16

    Регистрация
    07.01.2019
    Адрес
    Севастополь
    Возраст
    35
    Сообщений
    13
    Демонстрация моего автопилота


+ Ответить в теме

Похожие темы

  1. перепрошивка аппы GT3B от FlYSky/EuRgly/Hobbiking и иже с ними
    от darkcats в разделе Аппаратура и аксессуары для автомоделей
    Ответов: 687
    Последнее сообщение: 29.09.2019, 07:50
  2. FlySky fs-i6x и FlySky fs-i6 различия по железу
    от TGOdessa в разделе Аппаратура радиоуправления
    Ответов: 2
    Последнее сообщение: 14.07.2019, 15:33
  3. Продам Передатчик и приёмники FlySky
    от Spider1973 в разделе Барахолка. Аппаратура
    Ответов: 1
    Последнее сообщение: 25.10.2018, 06:17
  4. Помогите с Arduino nano
    от TomFoss в разделе Новичкам
    Ответов: 4
    Последнее сообщение: 18.10.2018, 14:27
  5. Проблема с аппаратурой FlySky I6X
    от NOVUM в разделе Аппаратура радиоуправления
    Ответов: 3
    Последнее сообщение: 29.08.2018, 02:35

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения