Programando em C# com .NET Micro Framework para sistemas Embarcados e IoT – Primeiros passos

O uso das facilidades do framework .NET não é mais exclusividade de hardwares que rodem Windows. Graças ao .NET Micro Framework, é possível usá-lo em hardwares embarcados que usam microcontroladores, por exemplo os da família STM32Fxxx da empresa STMicroelectronics.

 

Atualmente dois projetos se destacam, usando o .NET Micro Framework:

  • NetDuino da empresa Wilderness Labs;
  • TinyCLR OS (FEZ boards) da empresa GHI Electronics.

 

Neste artigo trataremos da instalação e primeiros passos com a plataforma TinyCLR OS rodando sob as placas da GHI Electronics modelo FEZ T18. O microcontrolador utilizado é o STM32F401RET6, que tem as seguintes especificações básicas:

 

Tabela 1 – Especificações básicas do microcontrolador STM32F401RET6

Processador

STMicroelectronics ST32F401RET6

Clock

84 MHz

Memória RAM

96 KByte

Memória Flash interna

512 KByte

 

Placa FEZ ® modelo FEZT18-W (com módulo Wi-Fi) para uso do .NET Micro Framework
Figura 1 – Placa FEZ ® modelo FEZT18-W (com módulo Wi-Fi)

 

E as especificações da placa FEZT18 são listadas na tabela 2, abaixo.

 

Tabela 2 – Especificações das placas FEZT18

GPIO (5V tolerante quando entrada)

22

IRQ

22

UART (Serial)

1

I2C

1

SPI

1

PWM

8

12 Bit ADC

8

USB Client

1

Wi-Fi

Opcional (modelo FEZT18-W)

Instalação do framework

 

Para programação e debug é utilizada a IDE Visual Studio. Há uma versão gratuita que pode ser utilizada, 2017 Community, e que pode ser baixada diretamente no site da Microsoft. Um paradigma aqui também quebrado é que o Visual Studio pode ser usado não só para desenvolver programas para Windows, mas também para Android e iOS através do Xaramin, servidores Web e, claro, a nossa plataforma .NET Micro Framework.

 

Após instalado o VS2017, é necessário o download e instalação da extensão TinyCLR, que é super simples.

 

Ferramentas: Extensões e Atualizações

 

Vá em “Menu” (para versão em português) e na janela aberta selecione no menu à esquerda Online. Em seguida, na parte de busca digitar TinyCLR, devendo aparecer o resultado da pesquisa como na figura 2.

 

Instalação da extensão TinyCLR no Visual Studio.
Figura 2 – Instalação da extensão TinyCLR no Visual Studio.

 

Clique em “Instalar” e após ter sido concluída a instalação, reinicie o Visual Studio.

 

Criando o Projeto

 

A criação de projetos é bem similar a outros em C#: vá ao menu “Arquivo -> Novo Projeto/Solução” e deverá ser exibida a janela como na figura 3.

 

Novo Projeto TinyCLR.
Figura 3 – Novo Projeto TinyCLR.

 

Mas aqui uma diferença muito importante: no item Visual C# (no menu à esquerda) escolha a opção TinyCLR e, após, TinyCLR Application nas opções no box central.

 

Assim o Visual Studio criará um projeto com as definições para nossa placa. Após concluída a operação, estaremos na tela de projeto, que deve ser parecida com a da figura 4.

 

Tela de Projeto.
Figura 4 – Tela de Projeto.

 

A partir daí podemos criar nosso Hello World de sistema embarcado, ou seja, o famoso “Pisca LED”. Mas antes é preciso entender mais um detalhe sobre a plataforma TinyCLR. As Referências são adicionadas ao projeto via Pacotes NuGet e para usá-las também é simples. Basta ir no menu Projeto : Gerenciar Pacotes do NuGet como mostrado na figura 5.

 

Incluir e gerenciar pacotes NuGet.
Figura 5 – Incluir e gerenciar pacotes NuGet.

 

A seguir será aberta a janela de gerenciamento (figura 6) propriamente dita. Nesta janela devemos selecionar a aba “Procurar” e, em seguida, deixar selecionada a opção “Incluir pré-lançamento” para então no campo de busca colocar TinyCLR ou outro texto que desejamos buscar.

 

Para esse nosso primeiro projeto usaremos 2 pacotes NuGet:

  • GHIElectronics.TinyCLR.Devices.Gpio
  • GHIElectronics.TinyCLR.Pins

 

Gerenciamento de Pacotes NuGet
Figura 6 – Gerenciamento de Pacotes NuGet.

 

Para instalar basta clicar no botão “Instalar” localizado no lado direto nessa mesma janela. Importante sempre notar se a versão do pacote que vamos instalar é compatível com o firmware atual da placa. Atualmente estamos na versão 1.0.0-preview2, e para upgrade de firmware refira-se a este link.

 

Dica: A versão tem de ser a compatível com a do firmware da sua placa. Para saber qual versão na placa, abra o arquivo packages.config, que fica nos arquivos de projeto.

 

Também é necessário certificar que a configuração de comunicação com a placa está correta. Com a placa conectada, vá no menu “Projeto -> Propriedades de [nome_do_projeto]” e deverá aparecer uma tela de configuração conforme a figura 7.

 

Propriedades do projeto.
Figura 7 – Propriedades do projeto.

 

Nessa tela, selecione TinyCLR OS no menu esquerdo e, a seguir, configure caso necessário o item Transport como USB e o item Device como FEZCLR_FEZCLR.

 

Importante: A placa deve estar conectada para que as opções estejam disponíveis.

 

Agora sim, com tudo instalado e configurado, podemos escrever nosso código “Hello World”:

 

Código Hello World – Para baixar o código no GitHub, use este link.

 

 

Finalmente, para executar o código é o mesmo procedimento de uma aplicação Windows no Visual Studio. Basta clicar em F5 ou no botão “Play” na barra de ferramentas e aguardar pela compilação e carregamento na placa.

 

Correndo tudo Ok, nossa placa deverá devolver a mensagem de Debug que programamos, informando a inicialização Ok, e entrar em Loop piscando o Led1.

 

Com esta breve introdução espero ter contribuído na introdução e mostrado a simplicidade do uso dessa modalidade de programação para hardwares embarcados.

 

Saiba mais

 

Executando aplicações .NET no Linux Embarcado em processadores ARM com Mono

Comunicação Serial com C# e Arduino - Parte 1

Usar a linguagem Vala em Linux embarcado pode ser uma escolha esperta

 

Referências

 

Página do fabricante das placas FEZ

Especificações do microcontrolador utilizado na placa FEZT18

Download Visual Studio (recomendado VS2017 versão Community)

Atualizações de Firmware

Código fonte do projeto no GitHub

https://github.com/ghi-electronics/TinyCLR-Ports

NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Marcelo Campos
Formado em Técnico em Eletrônica e atualmente cursando Análise e Desenvolvimento de Sistemas pela faculdade Metodista, membro do Garoa Hacker Clube, atua como desenvolvedor de hardware e software para sistemas embarcados e desktop Windows/ Linux há mais de 15 anos, com trabalhos realizados em diversas plataformas que vão de microcontroladores PIC, Atmel ao desktop PC

Deixe um comentário

avatar
 
  Notificações  
Notificar