STM32 Primer

O STM32 Primer é um kit de demostração/desenvolvimento fabricado pela Raisonance. Focado nos microcontroladores com núcleo ARM Cortex desenvolvidos pela ST Microelectronics, este kit oferece um hardware bastante interessante para conhecer os recursos oferecidos pelo microcontrolador.

O microcontrolador central deste kit é o STM32F103RB1, fabricado pela ST Microelectronics com núcleo ARM Cortex M3. Além dos tradicionais LEDs, push-button e buzzer, o kit conta com um display colorido de 128×128 pixel, um acelerômetro de 3 eixos com dois níveis de sensibilidade (  LIS3LV02DL, +-2g/+-6g ), um conjunto de duas pilhas recarregáveis e uma porta USB “device”, disponível para o programador (além da porta “debugger” utilizado pelo gravador/debugger). Na placa também está disponível o local para a montagem de um transmissor/receptor infra-vermelho, mas no kit que temos em mãos este componente não foi soldado. Pontos de conexão com os pinos do microntrolador também estão disponíveis na PCI, facilitando a adição de algum hardware futuro a ser utilizado. Vale ressaltar que a alimentação do conjunto é feita por baterias recarregáveis via porta USB, também já soldadas na PCI.

Todo o conjunto é acondicionado em uma caixa de acrílico circular, que possui um cordão para prender no pescoço, facilitando o transporte durante os testes.



O CD que acompanha o produto trás a IDE da própria Raisonance, o Ride7, prontinho para compilar e debugar a aplicação sem nenhuma configuração extra. Basicamente você instala o aplicativo e pluga o Primer. Após o processo do Windows de detecção do dispositivo USB você pode simplesmente acionar os botões de “Make” e “Start Debugger Session” para começar a depurar o seu aplicativo.

Dois exemplos de “Alô Mundo” são disponibilizados, com o intuito básico de piscar os LEDs da placa. A diferença entre os dois está na utilização ou não do CircleOS, um sistema operacional desenvolvido para facilitar a escrita de aplicativos para a plataforma, que não possui requerimentos de tempo real.

Com o intuito básico de conhecer a API do CircleOS nós escrevemos uma aplicação simples, para capturar os dados do acelerômetro e plotar na tela o resultado dos 3 eixos: X, Y e Z.
As rotinas disponibilizadas pelo CircleOS tornam o acesso ao hardware trivial. Basicamente nós utilizamos as seguintes rotinas:

Display:
1. LCD_SetBackLightOn(): Liga o backlight do display;
2. DRAW_Clear(): Limpa o display;
3. DRAW_Line( x, y, x1, y1, RGB_RED ): desenha uma linha vermelha entre os pontos (x,y) e (x1,y1).
4. DRAW_DisplayString( x,y,”Txt”,3 ): escreve a string de comprimento 3 “Txt” iniciando no ponto (x,y).

Botão:
1. BUTTON_GetState(): captura o estado do botão;

Led:
1. LED_Set ( LED_GREEN, LED_OFF): desliga o led verde;

Acelerômetro:
1. tMEMS_Info *memsInfo = MEMS_GetInfo(): a estrutura tMEMS_Info possui os dados informados pelo acelerômetro e é retornada pela função MEMS_GetInfo.

O código desta pequena aplicação está anexo. A partir da referência de 1G da gravidade, foi simples calcular a posição para plotar o eixo Z (barra azul sobre a linha indicativa do eixo X significa 1G sobre o eixo Z). A cruz vermelha aponta para o centro do gráfico quando os eixos X e Y estão em 0G. A inclinação do acelerômetro provoca alterações nos 3 eixos em virtude da aceleração da gravidade, como pode ser visto no aplicativo executando:


>



Como nós utilizamos o CircleOS, o gerenciador padrão do sistema operacional continua operacional. Ao iniciar basta selecionar a aplicação em um menu que ela começa a executar.


Um dos pontos fracos do kit é exatamente o fato de possuir apenas um botão para interação com o usuário. No CircleOS o acelerômetro foi utilizado como elemento para navegação entre os menus. A idéia é interessante, mas a implementação ficou a desejar. Leva algum tempo até você acostumar a controlar o menu pela inclinação do dispositivo e fazer isso dentro de um veículo em movimento diminui razoalvelmente o grau de precisão.

Nós efetuamos alguns testes adicionais, como atualizar o sistema operacional CircleOS para a última versão, executar sem o CircleOS e também instalar o FreeRTOS no dispositivo (já existe um port para ele). Nenhum problema foi encontrado, todos os recursos funcionaram da forma esperada.

Conclusão

No geral o kit STM32 Primer é uma alternativa muito interessante para quem deseja aprender mais sobre os microcontroladores STM32 da ST Microelectronics. Segundo o fabricante ele é compatível com 20 chips desta família, tornando-o bastante versátil. O hardware oferecido é extremamente útil para desenvolver e testar aplicações, ao permitir mobilidade e versatilidade na apresentação de informações aos usuários. Se você pretende trabalhar com esta plataforma ou precisa de um dispositivo que agregue as características deste kit para a sua aplicação, vale a pena utilizá-lo.