Сегодня был подвергнут небольшому тестированию очередной жизненно важный орган квадрокоптера - GPS модуль. Ассортимент готовых к использованию GPS модулей весьма невелик. Из всех найденных мной на ebay.ru модулей, SkyLab SKM53 оказался самым дешевым. К тому же, все отзывы найденные мной были положительные. С доставкой из США данное устройство обошлось в $31. Из характеристик модуля следует отметить потребление тока всего 30мА в режиме слежения (Tracking) и 40мА в режиме позиционирования (Acquisition). Время холодного пуска - 36с и горячего пуска - 1с. 66 каналов для позиционирования и 22 канала для слежения. Даташит можно взять тут. Модуль имеет 6 контактов с очевидным предназначением:
В официальном даташите рекомендуется также повесить конденсатор 10uf на вход питания для развязки. Якобы это снизит уровень помех и тем самым повысит качество приема. Конденсатор на всякий случай был установлен. Контакты модуля немного меньше стандарта 0.1", поэтому в комплекте имеется небольшая pcb переходная площадка для стандартных пинов. Поразмышляв о дизайне корпуса квадрокоптера и полистав google было решено припаять площадку не совсем тривиальным способом. Теперь коннектор не торчит в стороны, и модуль занимает меньше места. После сборки схемы был проведен первый тест. Для начала хотелось просто получить NMEA предложения из модуля. Как видно из видео, модуль вполне себе работает, данные поступают. Следующий шаг - разбор NMEA предложения и получение конкретных значений широты и долготы. Для разбора данных была использована библиотека TinyGPS, портированная с Arduino на mbed одним умельцем. Сразу же обнаружилась неприятная проблема. GPS возвращает данные с частотой 1Гц, и чтобы не занимать основной цикл постоянным опросом последовательного порта, было решено производить опрос раз в секунду. То есть ждем 1 секунду и сливаем все данные из буфера порта. Но не тут то было, у встроенного FIFO буфера размер всего 16 байт (судя по месту обрезания NMEA). В результате, получаем только по 16 байт от каждого пакета NMEA предложений. Проблема была решена использованием модернизированной библиотеки для работы с последовательным портом (MODSERIAL) с программным буфером 256 байт (по-умолчанию). Для работы с LCD использована TextLCD. Код получившейся тестовой программы представлен ниже. Вторая попытка увенчалась успехом. Модуль вместе с mbed и дисплеем были запитаны от 4 х AA батарей (больше 6В кстати) и помещен в авто. Практически сразу были зафиксированы 4 спутника, а при выезде на свободное пространство - 9. К сожалению, если выключить питание на час, модулю требуется опять выполнять холодный запуск, а следовательно опять требуется чистое небо. В общем, для исходной цели навигации квадрокоптера, модуль вполне подходит. В ближайшее время ожидается прибытие радио модулей APC220, испытания будут проведены незамедлительно. |
События >