oneDAY

Sistemas embarcados por definição são sistemas que controlam dispositivos. Atualmente, estão presentes nos computadores de bordo dos carros, nas máquinas de lavar roupa mais atuais, nos micro-ondas, nos conversores digitais de TV, nas smart TVs, etc.

Você acha que é preciso conhecer eletrônica para desenvolver um sistema embarcado? Conhecer sempre ajuda, mas não é um requisito básico para iniciar o desenvolvimento de um sistema embarcado atualmente. Para desenvolver uma loja eletrônica atualmente o desenvolvedor não precisa conhecer o funcionamento de um servidor http a fundo, as 5 camadas do TCP/IP, o tratamento que é realizado a cada request, e toda "parafernalha" de um servidor. Ele precisa tão somente conhecer uma linguagem (ou framework) voltado para o desenvolvimento web, e aplicando lógica de programação, e uma boa dose de observação no funcionamento básico da comunicação entre o navegador e o servidor para se aventurar no desenvolvimento para Internet.

Da mesma maneira, para sistemas embarcados o importante para iniciar, é o bom domínio da lógica de programação e bons conhecimentos principalmente na linguagem C. Existem várias plataformas (conjunto de hardware e software) utilizadas para desenvolver um sistema embarcado, irei citar aqui algumas como exemplo, levando em consideração o nível do conhecimento em eletrônica.

Plataforma Arduino

Nível de conhecimento em eletrônica é zero. Conhecimentos de iniciante a nível intermediário da linguagem de programação C++ são necessários. Massimo Banzi, e a comunidade que mantém a plataforma atingiu bem o objetivo em dar acesso a programação de dispositivos a qualquer público, desde de que esse tenha interesse. O Hardware é altamente "plugável" através dos shields (placas que se conectam ao Arduino), a linguagem de programação Wiring consegue abstrair bem toda a complexidade da eletrônica, e a forma de comunicação com o microcontrolador da ATMEL. Isso associado com a comunidade de desenvolvedores que provem bibliotecas para quase todos os shileds, fazem com que um curioso com o mínimo de lógica de programação consiga fazer um sistema embarcado completo, com teclado, display OLED, coletando informações de sensores, e enviando informações para atuadores, em um nível quase profissional. Caso esse seja o seu caso, e esteja precisando de alguns conhecimentos básicos em eletrônica para ajudar a sua programação, recomendo o livro Eletrônica para Artistas, de Helder Rocha, contendo vários exemplos com Arduino.

Plataforma PIC

A família de microcontroladores PIC da Microchip é bem mais antiga que a Plataforma Arduino, porém não existe a força da comunidade de desenvolvedores, tanto de hardware quanto de software para essa plataforma. Isso faz com que o desenvolvedor necessite de conhecimentos prévios de eletrônica (principalmente eletrônica digital). A programação é em linguagem C, com bibliotecas que facilitam a programação do microcontrolador, porém a comunicação dele com sensores, ou atuadores, acaba ficando por conta do programador, quase que totalmente. Apesar da dificuldade, o desempenho do sistema embarcado é bem superior, uma vez que o desenvolvedor tem um controle maior sobre o que está acontecendo no sistema, o que muitas vezes na plataforma Arduino não é possível, devido a alta camada de abstração das bibliotecas do Arduino. Você quer programar para PIC, e precisa melhorar seus conhecimentos em eletrônica, recomendo o site do Newton Braga, o papa brasileiro em termos de artigos e projetos em eletrônica no Brasil, onde existe um banco de circuitos eletrônicos, e uma sessão de artigos sobre projetos com os microcontroladores PIC

FPGA (Field Programable Gate Array)

Podemos dizer que o FPGA se utiliza da programação de mais "baixo" nível (no bom sentido da palavra). Utiliza de uma linguagem declarativa chamada VHDL ou Verilog, dependendo do FPGA a ser programado. Não há nenhum padrão de conexão com outros dispositivos, ou sensores. O desenvolvedor está totalmente livre para fazer o que bem entender, tendo como limite apenas a comunicação física entre o FPGA e os sensores/atuadores. Obviamente o nível de conhecimento em eletrônica aqui é de intermediário para avançado, e a linguagem de programação, parecida com o C, não é difícil mas está totalmente amarrada na construção física do funcionamento do hardware. Para ter uma ideia, a programação é feita através de portas lógicas (AND, OR, XOR, etc) e outros componentes de eletrônica digital (MUX, DEMUX, etc). Nesse nível a liberdade é total, é possível fazer um sistema embarcado totalmente customizado, com total controle do que está sendo executado no mesmo. É isso que procura? Recomendo então a visita ao laboratório iMobilis da Universidade Federal de Ouro Preto, com bastante informação introdutória sobre FPGA,

Existem várias outras plataformas, uma que não quis entrar no mérito neste artigo, mas que possui um grande potencial, são as placas com microprocessadores ARM, como o Raspberry Pi, Banana Pi, SnapDragon, entre outros que dependendo da aplicação facilitam muito a programação do sistema embarcado, sendo ele desenvolvido como um sistema computacional normal, tendo um Sistema Operacional e utilizando linguagens de mais alto nível como JAVA, python, C#, Node.js, etc. Mas creio que aí seja assunto para outro artigo. Até a próxima!


Thiago Ferauche
thiago.ferauche@gmail.com
facebook.com/ferauche

Professor universitário, formado em Engenharia de Computação, mestre em Tecnologia da Informação Aplicada pelo CEETPS - Centro Estadual de Educação Tecnológica - Paula Souza do governo estadual de São Paulo. Experiência em desenvolvimento de sistemas utilizando tecnologias abertas. 

Deixe um comentário