Печать
Категория: AR.Drone
Просмотров: 7842

Одной из интересных особенностей Parrot AR.Drone является управления частью (причём значительной) аппаратуры при помощи GPIO.

В этом документе будет приведён список GPIO, манипуляция с которыми либо полезна либо забавна.

Хотелось бы отметить, что в комплект ПО попугая входит программа gpio, позволяющая напрямую управлять этими портами.

Первое, что обнаружилось - gpio 180 и 181.  Эти gpio управляют зелёным и красным светодиодом на нижней стороне дрона. Управлять ими можно так:

# gpio 180 -d ho 0 // выключить зелёный LED подключения
# gpio 180 -d ho 1 // включить зелёный LED подключения
# gpio 181 -d ho 0 // выключить красный LED подключения
# gpio 181 -d ho 1 // включить красный LED подключения

gpio 171-174 управляют двигателями. В частности, именно так производится первоначальная их конфигурация при загрузке дрона.

gpio 175 позволяет "сбросить" ошибку при помощи flipflop, т.е. установки этого gpio в 1 и назад в 0.

gpio 176 позволяет _прочитать_ наличие этой ошибки (gpio 176 -i)

gpio 177 - navdata. Единственная обнаруженная возможность использования - перезапуск (путём установки в 0, потом в 1) навигационной платы.

И ещё немного, выдранного из ядра:

Судя по комментариям - горизонтальная (т.е передняя) камера

#define SOC1040_RESET_GPIO              92
#define SOC1040_PWDN_GPIO               93

И вертикальная (т.е нижняя)

#define OV7670_PWDN_GPIO                91

режим USB порта

m2_gpio_init(51, 0); // Forcing USB to Host mode

Wi-fi

#define GPIO_ATH_WARM_RST    85
#define GPIO_ATH_RST_WLAN    86

Наличие или отсутствие флешки

#define GPIO_MMC1_CD        76

И прочее - вповалку:

    omap_mux_init_gpio(171, OMAP_PIN_OUTPUT); //kill_uart_m1
    omap_mux_init_gpio(172, OMAP_PIN_OUTPUT); //kill_uart_m2
    omap_mux_init_gpio(173, OMAP_PIN_OUTPUT); //kill_uart_m3
    omap_mux_init_gpio(174, OMAP_PIN_OUTPUT); //kill_uart_m4
    omap_mux_init_gpio(175, OMAP_PIN_OUTPUT); //motor_enable
    omap_mux_init_gpio(176, OMAP_PIN_INPUT);  //cut-out
    omap_mux_init_gpio(177, OMAP_PIN_OUTPUT); // PIC reset
    omap_mux_init_gpio(178, OMAP_PIN_INPUT); // PIC ICSP Data
    omap_mux_init_gpio(179, OMAP_PIN_OUTPUT); // PIC ICSP Clock
    omap_mux_init_gpio(180, OMAP_PIN_OUTPUT); // MB green LED
    omap_mux_init_gpio(181, OMAP_PIN_OUTPUT); // MB Red LED
    omap_mux_init_gpio(87, OMAP_PIN_INPUT);  // Reset Button
    omap_mux_init_gpio(89, OMAP_PIN_OUTPUT); // 5V cut-out
    m2_gpio_init(89, 1); // disabling 5V power supply
    m2_gpio_init(177, 1); // PIC reset disable
    m2_gpio_init(181, 1); // Red LED on
    m2_gpio_init(180, 1); // Green LED on

#define GPIO_MMC1_CD        76