1. Уважаемый Гость! При написании вопросов в раздел форума [ArduCopter] Вопросы, проблемы и решения обязательно придерживаться шаблона сообщения, оговоренного в правилах раздела! Если сообщение не будет оформлено должным образом, то и ответ на вопрос будет с наименьшим приоритетом. Старайтесь дать максимально полную информацию по вашей проблеме, чтобы можно было более детально рассматривать вопрос!
    Скрыть объявление
  2. Уважаемый Гость! Хотите получать кэшбэк с покупок в online-магазинах? Сервис "Zozi.ru" дает такую возможность!
    Скрыть объявление
  3. Друзья! Для нашего ресурса необходим дополнительный объем пространства в облаке Dropbox. Подробнее.
    Скрыть объявление

Самодельный GPS приёмник для NAZA

Тема в разделе "Другие полетные контроллеры", создана пользователем {gorbln}, 25 фев 2015.

Реклама. Купить это место.
Метки:
  1. {gorbln}

    {gorbln} Абитуриент

    Регистрация:
    5 янв 2015
    Сообщения:
    25
    Город:
    Ярославль
    Имя:
    Егор
    Это перепост моей же статьи на паркфлаере
    В статье я опишу изготовление самодельного ГПС приёмника к контроллерам серии NAZA, на основе комбо для контроллера АРМ. Хотя ничего не мешает изготовить девайс и из отдельных комплектующих.

    gps_g1.jpg
    Рис.1

    Итак. Что понадобится?

    1) APM GPS+compass combo. Другими словами ГПС приёмник с компасом. Такие используются в связке с APM, с MultiWii. Я брал такой. Сразу говорю - модуль ублох в нём фейковый. Но тем не менее, он очень хорошо ловит и держит спутники.
    2) Arduino Pro Mini. Желательно, с дополнительными отверсиями с торца - земля и питание. Удобнее подключать разъём.
    3) Преобразователь уровней I2C 5v-3.3v В принципе, на худой конец, можно обойтись и без него - но это делать крайне не рекомендуется. Преобразователь можно купить готовый, можно собрать на двух полевых транзисторах (или на 4 биполярных). Я собрал самодельный и запихал его в корпус приёмника (см. ниже)
    4) Для удобства подключения можно присобачить разъём к ГПС комбу. Обычно комбы идут с разъёмами Микро JST 1.25.
    5) FTDI или какой-нибудь подобный адаптер USB-UART, для прошивки ардуины и настройки ГПС модуля.
    6) Руки от плеч и соображающая башка крайне необходимы, без них ничего не выйдет. Это НЕ пошаговое руководство, где я покажу, как провода залуживать и куда какой проводок тыкать! Минимальные знания электроники и основы работы с компьютером необходимы. Если у вас с этим не очень - купите готовый модуль от DJI и не занимайтесь экспериментами.

    ДИСКЛАЙМЕР! Это альфа-версия разработки, основанная на обратном инжениринге оригинальных модулей от DJI! Это даже не бета, это самая первая версия для разработчиков.

    Всё, что вы делаете, вы делаете на свой страх и риск.Если ГПС вам нужен для профессионального использования - купите оригинальный модуль! Это описание - для храбрых духом (и нетолстых кошельком =) ).

    Ну, со страшилками закончил, перехожу к вкусняшкам.
    Первое - конструкция работает! В частности, сегодня она прошла тестовый облёт, где показала себя вполне работоспособной.
    Второе - цена. Комбо стоит около 20 долларов, ардуина ещё 3, конвертер - 1. Итого 24 доллара, вместо оригинальных 100.

    Начинаем изготовление.

    gps_g2.jpg
    Рис.2 Модуль GPS со встроенным I2C конвертером.

    Начать стоит с настройки модуля U-blox, установленного в комбе. Настройка такая - скорость 57600, частота 5 Гц, протокол - только UBX, включены пакеты - NAV-SOL, NAV-DOP, NAV-POSLLH, NAV-VELNED, NAV-TIMEUTC. Всё остальное выключено. При этой настройке не будут отображаться сигналы со спутников (NAV-SVINFO) - это нормально, они не нужны. Но для тестов можно включить, главное выключить не забыть.

    Далее. Определяемся с ориентацией компаса, установленного в комбе. Нормальная ориентация - точкой вперёд по ходу движения, торцом вперед (не под 45 градусов). Перевёрнут (стоит на обратной стороне платы, там же, где все остальные детали, кроме антенны). В частности, на картинке выше - "нормальная" ориентация компаса, "вперёд" - это влево. Если ориентация не такая - придётся править код.

    Соединяем все детали между собой.
    gps_g3.png
    Рис.3 Принципиальная схема.

    Схема делалась для зарубежного сайта, поэтому все подписи - на английском. Если что непонятно - задавайте вопросы.
    Если не хочется возиться с впиливанием конвертера в корпус приёмника - можно купить готовый модуль, типа как по ссылкам во введении. Там на плате уже установлен стабилизатор на 3 вольта, питать плату можно только от 5 вольт. Удобно, без гемора. Это по схеме выше будет "вариант 2" - но без подачи питания 3.3V с комбы (где его может и не быть в проводе). Я не искал лёгких путей, плюс, платы конвертера у меня не было (не доехала). Поэтому я сделал конвертер самостоятельно:

    gps_g4.png
    Рис.4 Плата конвертера

    Плата сделана из кусочка текстолита, дорожки сделаны путём прорезки ножом по жирным белым линиям. Все резисторы - 10К, 0805. Транзисторы - BSS138 или TN2501, корпус SOT-23. Не самые общеупотребимые транзисторы, но найти можно. В принципе, как я понимаю, подойдут любые с низким напряжением насыщения (1,5-2V). Схема приведена выше, на общей схеме, на врезке ("Mosfet-based I2C level converter"). Подключена плата в разрыв проводов SDA и SCL, с учётом напряжения (Н-сторона - это 5-вольтовый I2C, L-сторона - соответственно, 3-вольтовый). Так как провода 3.3 вольта на разъёме не было - пришлось припаяться прямо к плате (см.рис.2).
    В итоге - получилось так:

    gps_g5.jpg
    Рис.5 Готовый конвертер

    Чтобы приёмник можно было подключать и отключать (например, для настройки) - к ардуине я припаял разъём (см.рис.1). В принципе, можно обойтись и без этого, но так удобнее. Чтобы ничего не замкнуть на плате ардуины, на плату был наклеен кусочек каптона, а к нему уже, в свою очередь, суперклеем приклеен разъём.

    С железом закончили, приступаем к софту.
    Для компиляции прошивки конвертера (ардуины) нужны будут следующие компоненты:
    1) Собственно Arduino IDE
    2) Библиотека AltSoftSerial
    3) Библиотека I2CDevLib, из которой нужны будут только модули HMC5883L и I2CDev.
    Все эти библиотеки есть в приложении, необходимо их скопировать в каталог C:\Program Files (x86)\Arduino\libraries

    Далее. Для проверки можно залить тестовые скетчи. Для проверки софтового последовательного порта, к которому прицеплен ГПС-приёмник, заливается скетч-пример из библиотеки AltSoftSerial, а для проверки компаса - пример из вложения.

    Рабочая прошивка компилируется и заливается в ардуину штатным образом. Никаких настроек в прошивке нет.

    После прошивки алгоритм работы примерно такой: когда ардуина получает пакет от U-blox-а, она мигает светодиодиком на плате и выплёвывает пакет с данными GPS в формате назы в "железный" последовательный порт. Плюс, каждые 30 мС ардуина опрашивает компас и посылает его данные. Ну и каждые 2 секунды посылается версия модуля.
    Визуально работоспособность модуля проявляется в мигающем с частотой около 2.5 герц светодиоде.
    При подключении ардуины к последовательному порту на скорости 115200 бод - должны валиться пакеты, начинающиеся (НЕХ) с "55 АА", и дальше 10 - ГПС, 20 - компас, 30 - версия.

    Видео:
    Включение модуля на подоконнике:


    Тестовый полёт. К сожалению, видео некачественное(зато моё) - я не догадался снять по-нормальному, как коптер висит. ГПС режим включен с 10 секунды.


    Зато есть видео от разработчика, там со съёмкой висения порядок:

    (хорошо в Италии.....)

    Ссылки.
    Основная тема на rcgroups:
    http://www.rcgroups.com/forums/showthread.php?t=2331009
    Сообщение, в котором выкладываются обновления прошивки и всё такое прочее:
    http://www.rcgroups.com/forums/showpost.php?p=30567232&postcount=4
    Тема, с которой всё началось:
    http://www.rcgroups.com/forums/showthread.php?t=2290346
    Тут надо отметить отдельно. Pawelsky - это чел, который, собственно, и сломал протокол назы, за что ему большой респект. Его библиотека NazaDecoder используется, в частности, в проекте MinnazaOSD. Сейчас он запилил свой собственный конвертер APM combo - NAZA, но, по-видимому, не будет делиться прошивкой, поскольку планирует продавать платы. Хотя он и говорил, что может быть, выложит hex. Если выложит - однозначно рекомендуется заливать его хекс! Уж он-то точно наиболее стабильный и оттестированный. Напоминаю, программа, рассматриваемая в статье - это альфа-релиз, сырой и бажный.

    Благодарности.
    Хочу сказать большое спасибо разработчикам - Luketanti и pawelsky! Особенно второму =)
    Очень жаль, что из-за некрасивых действий одного человека (ciskje), Павел, походу, раздумал делиться результатами своего труда.

    Исходники
    Всё, необходимое для повторения адаптера - схемы, плата, прошивки - в архиве в приложении.
     

    Вложения:

    • NazaEncoder.zip
      Размер файла:
      75,5 КБ
      Просмотров:
      7
    Последнее редактирование модератором: 25 фев 2015
    5yoda5 и raefa нравится это.
  2. {gorbln}

    {gorbln} Абитуриент

    Регистрация:
    5 янв 2015
    Сообщения:
    25
    Город:
    Ярославль
    Имя:
    Егор
    Значит, в ближайших планах:
    1) разобрать код адаптера, чтобы понимать, как он работает =)
    2) поменять парсер U-Blox на парсер NMEA
    3) понавставлять во все места защиты от повисонов
     
  3. {gorbln}

    {gorbln} Абитуриент

    Регистрация:
    5 янв 2015
    Сообщения:
    25
    Город:
    Ярославль
    Имя:
    Егор
    Первое сделано, и из первого получилось, что второе и третье малореализуемо на текущем железе.
     
  4. raefa

    raefa Главнокомандующий Команда форума

    Регистрация:
    3 янв 2015
    Сообщения:
    4.324
    Город:
    Zhigulevsk
    Имя:
    Александр
    Что будет дальше с проектом? Проще сделать другой GPS для назы?
     
  5. 5yoda5

    5yoda5 Master Команда форума

    Регистрация:
    29 янв 2015
    Сообщения:
    7.137
    Город:
    Реж
    Имя:
    Тимур
    Не хватает вычислительной мощности на 328 АТМеге?
     
  6. {gorbln}

    {gorbln} Абитуриент

    Регистрация:
    5 янв 2015
    Сообщения:
    25
    Город:
    Ярославль
    Имя:
    Егор
    На меге не хватает железных портов. И быстродействия для обработки софтового уарта.
    Что будет дальше с проектом - не знаю. Изучаю STM32. Ацкое гомно, конечно...
     
  7. 5yoda5

    5yoda5 Master Команда форума

    Регистрация:
    29 янв 2015
    Сообщения:
    7.137
    Город:
    Реж
    Имя:
    Тимур
    ААААА а сколько надо? Даже на той же 328Р (Arduino) - хоть и якобы один порт, но другие дата пины тоже можно задействовать. А их 12. А вот что по быстродействию обработки этого всего - это да.
     
  8. {gorbln}

    {gorbln} Абитуриент

    Регистрация:
    5 янв 2015
    Сообщения:
    25
    Город:
    Ярославль
    Имя:
    Егор
    Можно всё, наверное. Особенно, если на ассемблере писать. Но я для этого слишком ленивый, ну и плюс к тому - если есть за те же деньги процессор с 2 (3,4) портами - очевидно, что надо юзать его. С другой стороны - китайцы наклепали уже приличных копий по 50 баксов, с глонассом и прочим ололо.
     
  9. 5yoda5

    5yoda5 Master Команда форума

    Регистрация:
    29 янв 2015
    Сообщения:
    7.137
    Город:
    Реж
    Имя:
    Тимур
    Вот именно поэтому теперь эта тема теперь представляет больше академический, чем практический интерес. Главное, чтобы китайцы с этими копиями совсем не опаршивели, иначе количество воплей "наза улетела на родину" - резко возрастет.
     
  10. raefa

    raefa Главнокомандующий Команда форума

    Регистрация:
    3 янв 2015
    Сообщения:
    4.324
    Город:
    Zhigulevsk
    Имя:
    Александр
    Можно информацию в отдельную темку.
     
  11. {gorbln}

    {gorbln} Абитуриент

    Регистрация:
    5 янв 2015
    Сообщения:
    25
    Город:
    Ярославль
    Имя:
    Егор
    Если честно - мне на эти вопли всегда было пох. Ну, не умеешь пользоваться девайсом - сам виноват.
    А вот тестировать китайские модули - надо. Потому что прошивка закрытая и хз что там китайцы написали. Понятное дело, что пока всё хорошо - переходник и работает хорошо. Вопрос, что будет, когда спутники плохо ловиться будут, или пропадать, тудой-сюдой... Что при этом будет выдавать китайский приёмник - хз.
    У меня, к сожалению, сейчас даже на Павловский адаптер денег нет, поэтому протестировать не могу ничего. По случаю заказал несколько STM-ок, но чую, не осилю. Если уж там пример из IDE не работает, херли ждать от этой платформы в целом...
     
    5yoda5 нравится это.
  12. {gorbln}

    {gorbln} Абитуриент

    Регистрация:
    5 янв 2015
    Сообщения:
    25
    Город:
    Ярославль
    Имя:
    Егор
    Важный апдейт!
    Павел выложил в открытый доступ свою прошивку для адаптера. Ту, которая работает только с NEO-6M (предыдущий релиз). Однозначно рекомендуется заливать именно эту прошивку!

    (позже добавлю информацию и файлы в шапку)
     
    raefa нравится это.
Реклама. Купить это место.