Одной из интересных особенностей 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