• I






      
           

Научно-популярный образовательный ресурс для юных и начинающих радиолюбителей - Popular science educational resource for young and novice hams

Основы электричества, учебные материалы и опыт профессионалов - Basics of electricity, educational materials and professional experience

КОНКУРС
language
 
Поиск junradio

Радиодетали
Искать на DESSY.RU
Сервисы

Stock Images
Покупка - продажа
Фото и изображений


 
Выгодный обмен
электронных валют

Интересно
Немного подработать
Есть свободное время?
Можешь немного подработать.


Друзья JR



JUNIOR RADIO





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



Статьи публикуются по мере поступления. Для упорядоченного тематического
поиска воспользуйтесь блоком  "Карта сайта"







Да-да, всё именно так. В статье я опишу изготовление самодельного GPS приёмника к контроллерам серии NAZA, на основе комбо для контроллера АРМ. Хотя ничего не мешает изготовить девайс и из отдельных комплектующих.


Рис.1

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


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

Это НЕ пошаговое руководство, где я покажу, как провода залуживать и куда какой проводок тыкать! Минимальные знания электроники и основы работы с компьютером необходимы. Если у вас с этим не очень - купите готовый модуль от DJI и не занимайтесь экспериментами.

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


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


 

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


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

Соединяем все детали между собой.



 

Рис.3 Принципиальная схема.


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



 

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


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



 

Рис.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 - версия.


Свои мысли


Лично моё мнение - адаптер надо делать на процессоре с двумя аппаратными UART-ами. Типа ATMega16, хотя бы. Но дело осложняется, что поддержки таких камней нет в Arduino IDE, за исключением Mega128/256, которые очевидно избыточны, и в огромных корпусах. Если бы кто-нибудь подсказал, как организовать поддержку ATMega16 в ардуине, с аппаратными уартами - был бы благодарен. Интернет как-то не очень в этом плане определёнен. STM32 не предлагать - обвязка тупая, и я его не знаю.

Исходники


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

плата, прошивки - в архиве в приложении.
(NazaEncoder.zip)

 Обновил Arduino IDE и обнаружил неприятную вещь - прошивка перестала компилироваться, ругаясь на неизвестный тип "prog_uchar". Поддержку этого типа выпилили из ардуины, заменив название на "const unsigned char". Соответственно, если вы собираете прошивку в ардуине старше 1.0.5 - замените первое на второе, и всё будет OK.

 

Автор Егор Серов, Ярославль

 






Loading...

Просмотров: 1816 | Добавил: Chinas | Рейтинг: 0.0/0








Необходимо добавить материалы...
Результат опроса Результаты Все опросы нашего сайта Архив опросов
Всего голосовало: 321



          

Радио для всех© 2020