Publico este post para apresentar os progressos no trabalho de conclusao de curso do academico Carlos Henrique Kraus, sob minha orientacao, que esta desenvolvendo um controlador PID de posicao de um drone quadcoptero, no contexto do curso de graduacao em Engenharia Eletrica da Unisul.Toda a dinamica de voo do frame e seu controlador foram desenvolvidos em Python embarcado em uma plataforma Raspberry Pi. O video abaixo apresenta os testes no prototipo do controlador, para seu devido tuning.Assim que o projeto for evoluindo, divulgaremos maiores informacoes em posts futuros. Iniciaremos uma serie de posts para guiar os leitores deste blog no desenvolvimento de aplicacoes com a placa STM32F4Discovery, da ST. Trata-se de uma placa com um microcontrolador STM32F407VG, que e um ARM Cortex-M4 de 32 bits com unidade de ponto flutuante, mais:1 MB de memoria flash;192 kB de RAM;clock de 168 MHz;acelerometro de 3 eixos;microfone omnidirecional;conversor D/A com interface serial e amplificador classe D;8 LEDs e 2 botoes push-button;conector mini e micro USB.Para desenvolver aplicacoes, e necessario uma tool chain, que e a familia de ferramentas onde o software que implementa a aplicacao e escrito em um computador host para posteriormente ser transferido para a flash do microcontrolador. Para tanto necessitaremos de:um compilador GCC para ARM embedded, que pode ser baixado aqui;o driver USB para comunicacao com a placa ST-Link, baixado daqui;Um ambiente integrado de desenvolvimento, no qual optamos pelo CoIDE, dentre outros disponiveis para esta plataforma. Uso a versao 1.7.7, embora ja tenhamos versoes mais recentes.Uma vez instalados estes programas no computador host, deve ser realizada a configuracao do CoIDE para que ele aponte para o diretorio do compilador gcc a ser utilizado, na forma como segue:A partir desta configuracao, criamos um novo projeto:Apos o qual selecionamos Chip:E depois procuramos por ST > STM32F4x > STM32F407VGPronto. Antes de prosseguirmos, devemos fazer com que o debugger aponte para o ST-Link, da forma como segue: Para um primeiro projeto, selecionaremos do repositorio apenas uma biblioteca imprescindivel para o desenvolvimento de uma aplicacao minima para a placa, que e a biblioteca CMSIS-Core: Observe que na estrutura do projeto serao acrescentados dois subdiretorios, o cmsis, necessario para processadores ARM, e o cmsis-boot/startup, para a inicializacao da placa e gestao basica dos perifericos.Abra entao o arquivo main.c e substitua pelo fonte abaixo:1: #include <stm32f4xx.h> 2: int main(void) 3: { 4: int index; 5: /* Seta pinos 12 do GPIOD (LED verde) como saida */ 6: /* Ver manual de referencia do STM32F4 */ 7: RCC->AHB1ENR |= ((1UL << 3)); 8: GPIOD->MODER &= ~((3UL << 2*12)); 9: GPIOD->MODER |= ((1UL << 2*12)); 10: GPIOD->OTYPER &= ~((1UL << 12)); 11: GPIOD->OSPEEDR &= ~((3UL << 2*12)); 12: GPIOD->OSPEEDR |= ((2UL << 2*12)); 13: GPIOD->PUPDR &= ~((3UL << 2*12)); 14: GPIOD->PUPDR |= ((1UL << 2*12)); 15: while(1) 16: { 17: GPIOD->BSRRL = (1 << 12); 18: for (index = 0; index < 100000; index++); 19: GPIOD->BSRRH = (1 << 12); 20: for (index = 0; index < 100000; index++); 21: } 22: } De forma que visualizara como:Va entao em Project > Build ou pressione F7 e inicie a compilacao. Se