Embarcados 6
Embarcados 6
Embarcados 6
12
Sistemas embarcados: explore sua criatividade
construindo Hardware e Software
Abstract
This course aims to present embedded systems and its several applications on science
and technologies fields. It will present some basic concepts about embedded systems
and digital microelectronics. Moreover, this course will focus on the platforms Arduino
and Mbed, both used for digital systems prototyping. It will also describe the hardware
of these devices, as well as the basics principles for programming their middleware. The
concepts covered will be exercised in applications developed during practical workshops.
Resumo
Este minicurso tem como objetivo geral apresentar sistemas embarcados e suas infinitas
aplicaes no campo da cincia e tecnologia. Sero apresentados conceitos bsicos de
sistemas embarcados e microeletrnica digital. Alm disto, o minicurso dar nfase no
desenvolvimento para as plataformas de prototipagem Arduino e Mbed, utilizadas no pro-
jeto de sistemas digitais. O minicurso apresentar tanto o hardware destes dispositivos,
quanto os fundamentos para a programao do middleware. Os conceitos abordados
sero exercitados em aplicaes reais desenvolvidas durante oficinas prticas.
12.1. Introduo
Os sistemas digitais tornaram-se parte do nosso dia-a-dia devido ao modo intenso pelo
qual os circuitos digitais e as tcnicas digitais passaram a ser utilizados em quase todas
as reas: computadores, automao, robs, tecnologias e cincias mdicas, transportes,
telecomunicaes, entretenimento, e assim por diante [Tocci et al. 2011].
Para chegarmos onde estamos hoje, a construo de sistemas digitais evoluram
desde o uso das grandes vlvulas eletrnicas, passando pelos transistores at chegamos
nos atuais circuitos integrados (CI) digitais. Essa evoluo foi responsvel por permitir a
implementao de sistemas digitais cada vez mais complexos em um menor espao fsico,
utilizando tcnicas precisas e sofisticadas durante a fabricao dos CIs [Moore 1998]. O
baixo custo de fabricao at mesmo dos complexos circuitos integrados (como o ca-
sos dos microprocessadores que usamos em nossos computadores, notebooks e smart-
phones), permite que os projetistas incluam cada vez mais funcionalidades nestes sis-
temas, tornando-os adequados para as mais diversas aplicaes. Entretanto, esse baixo
custo de fabricao est associado produo em larga escala, o que inviabiliza o pro-
jeto e fabricao de alguns poucos CIs apenas para fins de teste, ou para utilizao em
aplicaes muito especficas em pequena escala.
Neste contexto, surgiram os Dispositivos Lgicos Programveis (PLDs em in-
gls), que so componentes eletrnicos usados para construir circuitos digitais reconfig-
urveis. Diferente dos circuitos lgicos tradicionais, que possuem um funcionamento
lgico fixo definido durante o projeto, os PLDs saem das fbricas sem nenhum compor-
tamento fixo, podendo ser programados posteriormente pelos desenvolvedores de acordo
com suas necessidades e se tornando propcios para o uso em casos de aprendizagem,
prototipagem e testes em pequena escala.
O uso dos PLDs levou criao de microcontroladores. Tambm conhecidos
como MCU, so um computador num chip, contm um processador, memria e perifri-
cos de entrada e sada (E/S). O microcontrolador como um microprocessador que pode
ser programado para funes especficas, em contraste com outros microprocessadores
de propsito geral, como os utilizados em computadores. Diferente dos PLDs, os mi-
crocontroladores no so apenas um circuito programvel, mas um sistema completo que
j oferece funcionalidades bsicas como gerncia de memria e acesso a dispositivos
de E/S. Para facilitar ainda mais o desenvolvimento de sistemas utilizando microcon-
troladores, eles normalmente so acoplados plataformas de prototipagem, como o
caso do Arduino [Arduino 2012a] e do Mbed [Holdings 2011]. Essas plataformas ofer-
ecem no somente o microcontrolador, mas tambm outros componentes para realizar a
interface com computadores (como portas USB, Ethernet, RS-232, etc.), componentes
de microeletrnica bsicos (LEDs e botes), alm de outros dispositivos de E/S. Toda a
programao destas plataformas feita atravs de softwares que so instalados em com-
putadores. Atravs dos ambientes desenvolvidos pelos prprios fabricantes, possvel
programar todo o funcionamento desses microcontroladores, alm de enviar o cdigo j
compilado para o dispositivo, normalmente atravs de uma interface USB.
Neste contexto, este minicurso visa apresentar duas das vrias plataformas de pro-
totipagem disponveis: o Arduino e o Mbed. Ambas so plataformas com bom poder
de processamento e recursos, que permitem a implementao desde aplicaes didti-
cas simples at projetos de pequeno e mdio porte, criados a partir da imaginao dos
desenvolvedores mais aventureiros. Uma anlise com maior preciso classificaria o Ar-
duino como uma plataforma voltada principalmente para uso educacional, pois uma
plataforma OpenSource prpria para a integrao com dispositivos eletrnicos bsicos,
alm de apresentar uma interface de programao simplificada com um conjunto de bib-
liotecas bsicas j disponveis para uso. Por sua vez, o Mbed apresenta um hardware
mais rpido e potente, incluindo tambm mais recursos embutidos (como controladores
de rede) e bibliotecas de software ainda mais sofisticadas, viabilizando projetos maiores.
O restante deste minicurso apresenta ao leitor as plataformas de prototipagem Ar-
duino e Mbed, incluindo algumas atividades prticas no uso destes dispositivos. Para isso,
a Seo 12.2 apresenta alguns conceitos de microeletrnica bsica, necessrios para que
possamos entender at mesmo as aplicaes mais simples. A Seo 12.3 apresenta as
plataformas de prototipagem eletrnicas Mbed e Arduino, destacando suas caractersticas
tcnicas. A Seo 12.4 apresenta os ambientes de desenvolvimento e as bibliotecas uti-
lizadas para a programao de ambos dispositivos. A Seo 12.5 traz alguns exemplos de
aplicaes que podem ser construdas com estes equipamentos e descreve as atividades
didticas propostas como oficina prtica. Por fim, a Seo 12.6 apresenta as consideraes
finais.
12.3.1. Mbed
Os microcontroladores Mbed consistem de uma srie de microcontroladores elaborados
para prototipagem rpida. So projetados com encapsulamento DIP (dual in-line package)
para montagem em placas protoboard sem solda, stripboards e trough-hole. Existem duas
variantes da plataforma Mbed: a NXP LPC11U24 e a NXP LPC1768, sendo esta ltima
que ser utilizada nesse mini-curso de tal forma que todas as referncias so relacionadas
a ela [Mbed 2012c]. A Figura 12.1 ilustra o Mbed modelo NXP LPC1768 [Mbed 2012b].
Caracterstica Valor
Aplicaes alvo Ethernet, USB e de alto desempenho
Ncleo de processamento ARM Cortex-M3
Frequncia de operao 96 MHz
Memria Flash 512 KB
Memria RAM 32 KB
Alimentao 60-120 mA
Figure 12.2. Principais caractersticas de hardware do NXP LPC1768.
Esse modelo tambm oferece as seguintes interfaces perifrica: suporte para con-
trolador Ethernet, USBHost e USBDevices, SPI, I2C, CAN, AnalogIn, PwmOut, Analo-
gOut, DigitalIn e DigitalOut. Cada uma delas so detalhadas logo abaixo.
DigitalIn: utilizada para ler o valor de um pino de entrada digital (pode utilizar
qualquer pino de p5 a p30);
A Figura 12.3 pode ser utilizada como um guia, pois mostra a numerao dos
pinos e suas funcionalidades.
12.3.2. Arduino
O Arduino uma plataforma Open Source de prototipagem eletrnica baseada em hard-
ware e software flexveis e fceis de usar [Culkin 2012]. O Arduino capaz de in-
teragir com o ambiente atravs de sinais de entrada provenientes de uma variedade de
sensores e modific-lo atravs de sinais de sadas para atuadores, motores, luzes con-
troladoras (acendendo ou apagando um LED por exemplo), etc. O microcontrolador na
placa programado usando a linguagem de programao do Arduino (baseado no frame-
work Wiring [Barragn 2012], essencialmente C/C++) e o ambiente de desenvolvimento
Arduino (baseada no ambiente de desenvolvimento Processing [Fry 2012]). Projetos Ar-
duino podem ser independentes ou podem comunicar com outros softwares que estejam
rodando em um computador. As placas podem ser compradas com facilidade, e o soft-
ware de desenvolvimento pode ser baixado gratuitamente. Existem inmeros projetos
de referncia do Arduino disponveis na Web, o usurio livre para adapt-los s suas
necessidades. Ao contrrio do Mbed, o Arduino possui vrios modelos diferentes, que
variam na capacidade de processamento e quantidade de pinos para conexes externas.
Esse minicurso ir tratar apenas da verso UNO, de tal forma que referncias posteriores
devem ser relacionadas a essa verso. A Figura 12.4 ilustra a viso frontal do Arduino
UNO, identificando ainda suas principais conexes.
Cada um dos 14 pinos digitais do Arduino Uno podem ser utilizados tanto como
pinos de entrada ou de sada. Essa configurao feita em software, durante o desen-
volvimento do aplicativo. Todos os pinos operam com 5 Volts e uma corrente mxima de
40 mA. Cada pino tem um resistor pull-up interno (desconectado por padro) de 20-50
kOhms. Alm disso, alguns pinos tm funes especializadas, como os indicados abaixo:
Pinos seriais 0 (RX) e 1 (TX) podem ser usados para receber (RX) e transmitir (TX)
dados seriais;
Pinos de interrupes externas 2 e 3, que podem ser configurados para disparar uma
interrupo por um alguma variao especfica em seus sinais de entrada;
Pino LED nmero 13, onde h um LED built-in que acende quando o pino est com
valor alto, e apaga caso contrrio.
12.4.1. Mbed
O compilador Mbed fornece um IDE (ambiente de desenvolvimento integrado) online
C/C++ que pr-configurado para permitir que se escreva e compile programas rapida-
mente e seja capaz de transferi-los para executar em seu microcontrolador Mbed. No
necessrio que se instale ou configure nada para comear a programar com o Mbed. Por
ser uma aplicao web, o ambiente de desenvolvimento fornecido permite que seja pos-
svel trabalhar em qualquer navegador no Windows, Mac ou Linux e que se tenha acesso
em qualquer lugar e continue a partir de onde parou. Cada usurio Mbed possui uma
conta que lhe da acesso a um compilador e a um workspace privado que contm os seus
programas [Mbed 2012a].
Apesar de ser leve e online, o compilador tambm poderoso. Ele utiliza a engine
profissional do compilador ARMCC, e portanto produz cdigo eficiente que pode ser
usado gratuitamente, mesmo em aplicaes comerciais. O IDE possui um editor completo
que possui marcador de palavras reservadas, atalhos de teclado padro do editor, funo
de copiar/colar, tabulao e at mesmo auto-formatao de cdigo. A Figura 12.7 retrata
o ambiente pessoal com mltiplos arquivos, pastas e programas em que o usurio ir
desenvolver.
O sistema de pesquisa da IDE permite que o usurio procure por uma string, seja
num programa inteiro ou apenas no mdulo requisitado. No exemplo representado pela
Figura 12.8 temos a pesquisa da string myled no programa ChromeOS em todos os
mdulos e tipos de mdulos (.c, .cpp, .h, .hpp, .s). Na mesma figura temos o
resultado da pesquisa.
12.4.2. Arduino
Assim como o hardware do Arduino, o software tambm Open Source e multiplataforma
(roda em Windows, Linux e OS X), baseado no projeto Processing [Fry 2012]. Ele im-
plementado em linguagem Java, e todo o cdigo est disponvel publicamente na web.
O ambiente simplista e intuitivo, alm de ser compatvel com todas as verses do Ar-
duino. Ele contm um editor de texto para escrita de cdigo, uma rea de mensagem, um
console em texto, uma barra de ferramentas com botes para as funcionalidades mais co-
muns, e uma srie de menus. Ele se conecta ao hardware do Arduino para fazer o upload
de programas e se comunicar com o mesmo. A Figura 12.12 mostra este ambiente de
desenvolvimento.
1. void setup () {
2. pinMode (12, OUTPUT);
3. }
4.
5. void loop () {
6. digitalWrite(12, HIGH);
7. delay(1000);
8. digitalWrite(12, LOW);
9. delay(1000);
10. }
Este o cdigo chamado Blink. Seu objetivo fazer com que um LED que es-
teja com seu terminal positivo (anodo) conectado no pino de sada 12 do Arduino pisque
constantemente com a frequncia de 1 Hz. Neste exemplo estamos assumindo que o ter-
minal negativo (catodo) do LED esteja aterrado e que o resistor apropriado esteja sendo
utilizado para limitar a corrente. Analisando o sketch, nele temos declarado no setup()
que usaremos o pino 12 do Arduino como um pino de sada de dados (OUTPUT). Ou seja,
por ele que vai sair o sinal que vai controlar o LED. O caso alternativo a este definir
um pino como sinal digital de entrada (INPUT), como por exemplo, um pino conectado a
um boto.
J na funo loop(), temos duas tarefas distintas sendo executadas:
3. Por ltimo, a funo delay(1000); utilizada para inserir uma pausa (atraso)
na execuo das prximas funes. Neste caso, o programa fica parado por 1000 ms
antes de continuar e reiniciar a execuo da funo loop().
Neste exemplo, teremos o LED ligado por 1s e desligado por 1s. Como todo o
cdigo de ligar e desligar o LED est no loop(), que executa infinitas vezes, teremos o
LED piscando o tempo todo. importante observar que se no inserirmos o atraso, ento
essas operaes seriam realizadas to rapidamente que seria impossvel percebermos o
LED piscar. A Figura 12.13 mostra como deveriam ser conectados os componentes ex-
ternos na placa para realmente visualizar o funcionamento deste sketch (no se esquea
do resistor). Uma variao deste cdigo pode ser conseguida facilmente adicionando um
boto para controlar o funcionamento do LED, onde somente quando o boto estivesse
pressionado o LED permanece aceso (atuando como um interruptor).
[Mbed 2012b] Mbed (2012b). Mbed NXP LCP11U24. Disponvel em: http://
mbed.org/handbook/mbed-NXP-LPC11U24.
[Moore 1998] Moore, G. (1998). Cramming more components onto integrated circuits.
Proceedings of the IEEE, 86(1):82 85.
[Tocci et al. 2011] Tocci, R. J., Widmer, N. S., and Moss, G. L. (2011). Sistemas Digi-
tais: princpios e aplicaes. Pearson, 15th edition.
Eduardo Pagani Julio recebeu seu diploma de Bacharel em Informtica pela Univer-
sidade Federal de Juiz de Fora - UFJF (2000) e de Mestre em Computao pela Univer-
sidade Federal Fluminense - UFF (2007). Atualmente aluno de doutorado nesta mesma
instituio, e seus interesses de pesquisa incluem Redes de Computadores e Redes de
Rdios Cognitivos. Desde 2011 Professor Assistente no Departamento de Cincia da
Computao da UFJF, lecionando disciplinas na rea de Redes de Computadores e Se-
gurana de Sistemas Computacionais. Seus trabalhos recentes esto relacionados com
implementaes de sistemas de segurana em dispositivos embarcados.