Você está na página 1de 30

Microcontroladores

para IoT
Material Teórico
Prática com Simulação de Aplicação para IoT

Responsável pelo Conteúdo:


Prof.ª Dr.ª Marise de Barros Miranda Gomes

Revisão Textual:
Prof.ª Dr.ª Selma Aparecida Cesarin
Prática com Simulação
de Aplicação para IoT

• Simulação de Aplicação em Hardware em IoT;


• Simulação de Aplicação em Software em IoT;
• Desenhando a Arquitetura Completa para um Projeto em Iot.

OBJETIVO DE APRENDIZADO
··Compreeder a complexidade dos componentes da IoT (variabilidade
sem fio), o número de nós possíveis num Sistema, sem mencionar
coisas que afetam implantações em campo, como clima etc., devem
se tornar muito relevantes para Empresas que desejam dominar a
complexidade de seus dispositivos e de seus serviços.
Orientações de estudo
Para que o conteúdo desta Disciplina seja bem
aproveitado e haja maior aplicabilidade na sua
formação acadêmica e atuação profissional, siga
algumas recomendações básicas:
Conserve seu
material e local de
estudos sempre
organizados.
Aproveite as
Procure manter indicações
contato com seus de Material
colegas e tutores Complementar.
para trocar ideias!
Determine um Isso amplia a
horário fixo aprendizagem.
para estudar.

Mantenha o foco!
Evite se distrair com
as redes sociais.

Seja original!
Nunca plagie
trabalhos.

Não se esqueça
de se alimentar
Assim: e de se manter
Organize seus estudos de maneira que passem a fazer parte hidratado.
da sua rotina. Por exemplo, você poderá determinar um dia e
horário fixos como seu “momento do estudo”;

Procure se alimentar e se hidratar quando for estudar; lembre-se de que uma


alimentação saudável pode proporcionar melhor aproveitamento do estudo;

No material de cada Unidade, há leituras indicadas e, entre elas, artigos científicos, livros, vídeos
e sites para aprofundar os conhecimentos adquiridos ao longo da Unidade. Além disso, você
também encontrará sugestões de conteúdo extra no item Material Complementar, que ampliarão
sua interpretação e auxiliarão no pleno entendimento dos temas abordados;

Após o contato com o conteúdo proposto, participe dos debates mediados em fóruns de discus-
são, pois irão auxiliar a verificar o quanto você absorveu de conhecimento, além de propiciar o
contato com seus colegas e tutores, o que se apresenta como rico espaço de troca de ideias e
de aprendizagem.
UNIDADE Prática com Simulação de Aplicação para IoT

Simulação de Aplicação
em Hardware em IoT
Neste primeiro Projeto de hardware, vamos utilizar o Simulador TinkerCad
da Autodesk.
Explor

TinkerCad está disponível em: https://goo.gl/YD3KFC.

Figura 1

Esse Simulador auxilia na compreensão do hardware do Arduino, com dife-


rentes simulações. É muito bom começar por aqui para ir treinando e observando
como a simulação pode ajudar nos Projetos de IoT, para depois utilizar ambientes
mais sofisticados.

A Ferramenta de Simulação é muita utilizada para Projetos de Arduino; observe


que tem uma parte de Eletronics:

Figura 2

Clique em Eletronics.

Figura 3

8
Aparecem 4 opções: Simulação, Edição de Componentes, Ligação de Compo-
nentes e adicionando componentes.

Mas, antes disso, é necessário criar a conta:

Figura 4

Você pode se logar com seu usuário das Redes Sociais ou criar uma conta nova.

Figura 5

Figura 6

Recomendamos que você inicie sua prática com os Projetos de Simulações


Compartilhados, para se ambientar com a codificação, as ligações e a utilização
dos sensores. Procure a lupa no canto superior direito. Clique na lupa de busca.
Vai aparecer a tela a seguir.

9
9
UNIDADE Prática com Simulação de Aplicação para IoT

Selecione Circuits.

Figura 7

Nesta mesma tela, vá a Filters. Você verá que aparecem opções de comerciais,
não comerciais e ambas. Você pode explorar cada uma delas; mas vamos selecionar
as opções comerciais, que são Projetos de protótipo para viabilizar aplicações reais.

Depois de filtrar as mais curtidas (Likes), você pode selecionar, também, solu-
ções mais recentes (Hot now) e as antigas. Esse é um canal de consulta muito in-
teressante. Explore ao máximo, para dominar essa Tecnologia de Prototipagem
com Simulação, pois ajuda a viabilizar os Projetos reais.

Figura 8

Veja a seguir que os Projetos começam a aparecer.

Figura 9

Vamos agora digitar Temp no espaço da busca.

10
Figura 10

Procure o Projeto Sensor de Temp 2; você pode digitar esse nome no espaço
de busca.

Figura 11

Clique uma vez para abrir a tela de Projeto.

Figura 12

11
11
UNIDADE Prática com Simulação de Aplicação para IoT

Observe que o Projeto usa um Microcontrolador ATMega e a Placa Arduino


Uno, e está usando um sensor de temperatura LM35. Os fios vermelho, preto
e verde representam as ligações. Quando juntamos tudo isso em uma aplicação
única, temos o que chamamos de nó sensor ou node sensor.; mas ainda falta a
comunicação, para enviar os dados coletados de temperatura.
Vamos explorar esse simulador.
Clique em Simulate no canto inferior esquerdo dessa telinha. Observe a tela a
seguir (as três setinhas vermelhas). A seta 1 indica o botão de simulação; quando
você o aciona, o circuito começa a funcionar.
Nesse caso, não há uma saída visual propriamente dita. Então, podemos ver o
resultado pela Linguagem de Programação que está sendo executada pelo micro-
controlador quando está em estado de simulação.
Antes, vamos observar que a seta 2 indica que você pode duplicar e tinker; isso
quer dizer que o autor permite que você utilize o Projeto dele em seu Projeto e que
pode modificá-lo. Isso ajuda muito no Processo de Aprendizagem.
A seta 3 indica a data de postagem do Projeto. Observe que a data é do ano de
2018; bem recente.

Figura 13

Mas, vamos lá!


Clique no botão Simulate (seta 1). Aparecerá o botão de Start Simulation (ini-
ciar a simulação do Circuito com o Código gravado no microcontrolador) e Code
(para mostrar o Código Fonte da Programação).

Figura 14

12
Figura 15

Observe que, ao clicar em Start Simulation, o botão muda de cor e permite


que a Simulação seja interrompida, mas enquanto a simulação está rodando,
novamente frisamos que, nesse Projeto não há uma saída dos Dados para que
possamos visualizar a temperatura. Então, vamos olhar o Código e usar o serial
monitor para ver a saída dos Dados, quando a tela de Code está visível.

Clique em Code enquanto a simulação está rodando.

Figura 16

Observe que abre a janela com a Linguagem de Programação utilizada para


programar o microcontrolador em relação à tarefa de ler a temperatura por meio
do sensor.

A seta 1 indica que pode ser feito o download do Código completo. A seta 2
indica que o Programa escrito pode ser debugado para encontrar erros. A seta 3
mostra parte do Programa e você pode rolar pela barra lateral. Na seta 4, pode-
mos ver o serial monitor; é uma saída de visualização do resultado do Código; ali
podemos ver a temperatura como resultado da saída.

Obviamente, numa aplicação IoT, deveremos usar a saída para um ambiente


visual mais acessível e intelegível para o usuário, como, por exemplo, no celular ou
numa aplicação em página da web.

13
13
UNIDADE Prática com Simulação de Aplicação para IoT

Figura 17

Ao clicar em Serial Monitor, uma pequena tela vai aparecer (seta 1) indicando
a interação com o usuário. Na seta 2, digitamos as informações solicitadas pelo
Programa e clicamos em send (seta 3) para enviar o que foi digitado, para que o
Programa continue rodando. Na seta 3, podemos também apagar as informações
do monitor serial e ver a saída em modo gráfico.

Quando você clica no botão clear, precisa iniciar a Simulação novamente, cli-
cando em parar a Simulação, e depois clicando em iniciar a Simulação.

Figura 18

Veja que quando você responde à pergunta (em espanhol):

Deseja calcular a temperatura? S/N (Desea calcular la temperatura?)

Você responde com S e clica em send; daí o Programa continua e faz outra pergunta.

Selecione o Sistema a utilizar:


• C – Celsius;
• F – Farenheit;
• K – Kelvin;
• X – sair.

Quando você responde com C de Celsius e clica em send, o Programa roda e


apresenta a temperatura, como na tela a seguir.

14
Figura 19

A temperatura apresentada é de 24,71 centigrados; obviamente, esta não é a


temperatura real; ela foi simulada, mas o mais importante é que você começa a ter
noção sobre Projetos com microcontroladores e sensores, para depois partir para
ferramentas mais sofisticadas.

Agora, vamos ver uma aplicação em hardware com uma saída visual em
hardware, também.

O Projeto as seguir tem um LCD, Display de Cristal Líquido, que apresenta a


temperatura. O circuito é mais sofisticado, com um potenciômetro de ajuste e bo-
tões de ajuste da temperatura aumentando ou diminuindo. O Projeto representa o
controle de temperatura das lâmpadas ligadas.

Se você tiver dificuldade de entender o idioma do Projeto, clique na barra do


navegador para traduzir a página. Não é uma tradução excelente, mas vai ajudá-
-lo(a) se tiver dificuldades.

Figura 20

Veja que o LCD já aparece com a temperatura quando iniciamos a simulação.


Agora, vamos ver no serial monitor e no gráfico. Clique em Code, depois em
serial monitor e em seguida no Gráfico. Veja o circuito rodando. Clique nova-
mente no botão Code para fechar a tela e nos botões para aumentar ou diminuir
a temperatura.

Vá com calma!

É uma simulação!

15
15
UNIDADE Prática com Simulação de Aplicação para IoT

Figura 21

Agora, vamos explorar outro exemplo de sensor. Um sensor ultrassônico.

Digite IoT no buscador. Encontre Projeto IOT Assignment #2 nos Projetos dis-
poníveis. Clique no Projeto com o círculo vermelho e depois carregue para a sua
área de Projetos.

Essa ferramenta permite que você inicie seus Projetos a partir de outros já pron-
tos, podendo alterar conforme sua aplicação simulada.

Figura 22

Carregue para seu ambiente de simulação, clicando em Duplicar ou Duplicate.

Figura 23

Observe que o seu ambiente de Projeto tem a tela cheia e você tem mais recursos,
escolhendo mais componentes para seu Projeto.

16
Você pode clicar em Simulação, como mostra a seta vermelha na figura a seguir:

Figura 24
Para dar mais espaço no seu ambiente de trabalho, encolha a barra de compo-
nentes ao lado, clicando na setinha preta no meio dela.
Em seguida, vá à Start Simulation e depois clique em cima do sensor ultrassônico.
Vai aparecer o campo de ultrassom do sensor, como uma sobra e uma bolinha
azul escura. Essa bolinha pode ser movimentada para interagir com o Programa;
dependendo onde você a posiciona, vai disparar o alarme sonoro.
Faça o teste.

Figura 25
Traga o objeto sensoriado, a bolinha azul, para mais perto do sensor; você vai
ouvir o alarme sonoro.

Figura 26
Toda a Tecnologia apresentada neste Projeto pode ser estudada nos módulos
de sensores, microcontroladores e Linguagens de Programação.

17
17
UNIDADE Prática com Simulação de Aplicação para IoT

Simulação de Aplicação
em Software em IoT
As simulações são também muito úteis para aplicações em software. Vamos
aproveitar o Projeto de detecção ultrassônica, visto anteriormente sob a perspectiva
do hardware, para compreender a Simulação da Aplicação em software.
Usando Projeto anterior, clique em Code.

Figura 27

Abrirá a tela do Programa, do Código Fonte. Aproveite que a simulação está


rodando há algum tempo e que foi possível acumular Dados o suficiente para
representá-los na forma gráfica.
Abra o serial monitor, a saída do seu software, e observe sutilmente a onda
triangular envolta no Gráfico. Essa é a saída do sensor que não está detectando
nenhum objeto.

Figura 28

Você vai ver os dados correndo e o Gráfico oscilando no seu ambiente de Projeto;
agora traga o objeto para junto do sensor, de modo que seja detectado, e observe
o Gráfico alguns segundos depois.

Figura 29

18
Observe a mudança no Gráfico; ele mostra que alguma coisa está sendo
detectada. A Representação Gráfica é uma forma de representação em tempo
real e permite a tomada de decisão.

Agora vamos observar o Código-fonte. Depois de algum tempo, o sinal acomo-


da, tocando o sensor sonoro de forma intermitente.

Figura 30

Veja como o objeto está próximo, numa média de 22.5cm, bem diferente das
medidas apresentadas quando o objeto estava distante, cerca de 200cm.

O Código Fonte é:

#define NOTE_B3 247

#define NOTE_G3 196

//buzzer

int inches = 0;

int cm = 0;

longreadUltrasonicDistance(int pin)

pinMode(pin, OUTPUT);

digitalWrite(pin, LOW);

delayMicroseconds(2);

digitalWrite(pin, HIGH);

delayMicroseconds(10);

digitalWrite(pin,LOW);

pinMode(pin, INPUT);

returnpulseIn(pin, HIGH);

void setup()

19
19
UNIDADE Prática com Simulação de Aplicação para IoT

//tone(8, NOTE_B3, 100); //Buzzertest

pinMode(7, INPUT); // pin input

Serial.begin(9600);

void loop()

cm = 0.01723 * readUltrasonicDistance(7);

inches = (cm/2.54);

Serial.print(inches);

Serial.println(“in, “);

Serial.print(cm);

Serial.println(“cm”);

if(cm<200 && cm>100){ // 100~200cm

tone(8, NOTE_B3, 100); //

delay(300);

tone(8, NOTE_G3, 100);

delay(300);

elseif(cm<=100 && cm>50){ // 50~100cm

tone(8, NOTE_B3, 100); //

delay(200);

tone(8, NOTE_G3, 100);

delay(200);

elseif(cm<=50){ // 50cm

tone(8, NOTE_B3, 100); //

delay(100);

20
Observe que a Linguagem de Programação é estruturada e está escrita em
C. As Bibliotecas podem ser chamadas e os pinos de I/O do microcontrolador
podem ser setados/definidos no Programa.

Vamos, agora, para outro exemplo, com Programa que usa Biblioteca.

Encontre o Projeto voltando ao buscador de Projetos e o duplique para seu am-


biente de Projetos.

IoTHomework #1

Figura 31

Inicie a simulação e mantenha interação inicial clicando no botão do Controle Re-


moto 1 e 2 para acender uma lâmpada por vez, e no botão 3 para apagar as lâmpadas.

Agora, abra o Código e leia a primeira linha. Para iniciar esse Programa, foi feita
uma chamada à Biblioteca do Controle do Sensor Infravermelho (IR).

#include <IRremote.h>

A IRremote.h é uma Biblioteca que já contém um pequeno Programa pronto


sobre o funcionamento do Sensor Infravermelho. Assim, você pode chamá-la e
aplicar diretamente em seu Código, facilitando e acelerando a Programação.

Desenhando a Arquitetura Completa


para um Projeto em Iot
Quando você pensa em um Projeto de IoT, deve imaginar o contexto. Vamos
supor um Sistema de detecção de vazamentos de Gás de Rua.

Então, para prototipar, podemos reduzir o modelo, pensando em uma rua.


Serão necessários sensores em diversos pontos da rua, e um Sistema de Comu-
nicação e de Visualização das Informações.

O Projeto simulado a seguir tem essa intenção: prototipar um cenário de IoT


reduzido. São três sensores de emissão de gases. O microcontrolador, a Placa
Arduino, a comunicação e a visualização; daí teremos a simulação de um peque-
no Sistema de Detecção de Vazamento de Gás.

21
21
UNIDADE Prática com Simulação de Aplicação para IoT

Você pode simular esse Projeto em seu Ambiente de Simulação. Busque pelo
Projeto: FurbIoT Trabalho 1 e o traga para seu ambiente de Projeto.

Figura 31

Inicie a Simulação e clique nos detetores de gases.

Veja como o sensores detectam a proximidade da nuvem de gás.

A visualização pode ser notada no monitor LCD e a comunicação via Wi-fi


fica apta com a Placa microcontrolada da família Arduino, a ESP8266 (esta não
é uma node MCU).

Observe agora o Código; ele deve conter as chamadas às Bibliotecas e a conexão


Wi-fi, para comunicação.

#include <LiquidCrystal.h>

Stringssid = “Simulator Wifi”;

Stringpassword = “”;

String host = “api.thingspeak.com”;

constinthttpPort = 80;

String uri = “/update?api_key=VF9P81LXS6E3LNG1&amp;”;

constintrs = 2, en = 3, d0 = 4, d1 = 5, d2 = 6, d3 = 7, d4 = 8, d5 = 9, d6
= 10, d7 = 11;

LiquidCrystallcd(rs, en, d0, d1, d2, d3, d4, d5, d6, d7);

voidlcd_clear() {

lcd.clear();

lcd.setCursor(0, 0);

22
void setup() {

lcd.begin(16, 2);

Serial.begin(115200);

//verify connection

Serial.print(“AT”);

delay(10);

if(!Serial.find(“OK”))

lcd.print(“FAIL”);

else

lcd.print(“OK”);

lcd_clear();

//access AP

Serial.println(“AT+CWJAP=\”” + ssid + “\”,\”” + password + “\””);

delay(10);

if(!Serial.find(“OK”))

lcd.print(“CONNECTION FAILED”);

else

lcd.print(“CONNECTION OK”);

lcd_clear();

//open connection

Serial.println(“AT+CIPSTART=\”TCP\”,\”” + host + “\”,” + httpPort);

delay(50);

if(!Serial.find(“OK”))

lcd.print(“OPEN FAILED”);

else

lcd.print(“OPEN OK”);

intpotenciometer = A0;

23
23
UNIDADE Prática com Simulação de Aplicação para IoT

int potenciometer2 = A1;

int sensor = 12;

int sensor2 = 13;

intread;

floatvoltage;

floattemperature;

float temperature2;

void loop() {

read = analogRead(potenciometer);

voltage = read * 5.0;

voltage /= 1024.0;

temperature = (voltage - 0.5) * 100;

read = analogRead(potenciometer2);

voltage = read * 5.0;

voltage /= 1024.0;

temperature2 = (voltage - 0.5) * 100;

//char temperatureBuffer[10];

//sprintf(temperatureBuffer, “%f”, temperature);

String p = String(temperature);

String p2 = String(temperature2);

lcd_clear();

lcd.print(“c:”+p+”:D”+p2);

StringhttpPacket = “GET /update?api_key=RURGVJCH19FIUZSR%26field1=”+p+”%2


6field2=”+p2+”%26field3=”+readSensor(sensor)+”%26field4=”+readSensor(sens
or2)+” HTTP/1.1\r\nHost: api.thingspeak.com\r\n\r\n”;

inthttpPacketLength = httpPacket.length();

//sendpacket

Serial.print(“AT+CIPSEND=”);

Serial.println(httpPacketLength);

24
delay(1000);

lcd_clear();

if(!Serial.find(“>”))

lcd.print(“:X”);

else

lcd.print(“>”);

Serial.println(httpPacket);

delay(1000);

lcd_clear();

if(!Serial.find(“SEND OK\r\n”))

lcd.print(“SendFail”);

else

lcd.print(“Send Ok”);

while(!Serial.available()) delay(5);

if(Serial.find(“\r\n\r\n”)) {

delay(5);

StringresponseBody = “”;

while(Serial.available()) {

char c = Serial.read();

responseBody += c;

lcd_clear();

lcd.print(responseBody);

delay(1000);

intreadSensor(int pin) {

longduracao, distancia;

25
25
UNIDADE Prática com Simulação de Aplicação para IoT

//Seta o modo

pinMode(pin, OUTPUT);

//Recupear os dados do sensor

digitalWrite(pin, LOW);

delayMicroseconds(2);

digitalWrite(pin, HIGH);

delayMicroseconds(5);

digitalWrite(pin, LOW);

pinMode(pin, INPUT);

//Faz os calculos e retorna

duracao = pulseIn(pin, HIGH);

distancia = (duracao*0.034029)/2;

return distancia;

Por fim, vale ressaltar que o Ambiente de Simulação realizado com software
requer constantes melhorias e que não simula condições reais, mas apenas ideais,
de um Projeto.

Então, busque completar as informações com as características técnicas de


funcionamentos dos sensores, microcontroladores e tudo o que você deve considerar
em seu Projeto de IoT.

Nelas, estão contidas as condições ideais e as condições toleradas de operação


e funcionamento, bem como o uso e a aplicação correta em Projetos exemplos.

26
Material Complementar
Indicações para saber mais sobre os assuntos abordados nesta Unidade:

  Sites
UnoArduSim
Hoje em dia, os Simuladores Arduino tornam o design de circuitos possível para
qualquer pessoa, o que significa que tanto iniciantes como projetistas de circuitos
profissionais aprenderão, programarão e testarão ideias sem se preocupar com per-
der tempo e dinheiro.
https://goo.gl/gD6BDR
Ardugate
https://goo.gl/3Te6th
Arduino Create
Acesse o Arduino Web Editor. Você deve se logar com o usuário e a senha que criou.
Se esqueceu, leia o Material da aula 3.
https://goo.gl/HhvOsX

 Vídeos
Best simulator for arduino
Assista ao vídeo sobre o Best Simulator for Arduino. Observe as condições de insta-
lação do Simulador e como usá-lo.
https://youtu.be/E1i5XIQ6fiI
Descargar e Instalar SimulIDE [Simulador de microcontroladores PIC y AVR, y electrónica] para Linux
https://youtu.be/VjjpN8zzLo8

27
27
UNIDADE Prática com Simulação de Aplicação para IoT

Referências
AGARWALL, Tarun. Arduino – Basics and Design. Disponível em: <https://
www.elprocus.com/arduino-basics-and-design/>.

MANZANO, José Augusto N. G. Programação de computadores com C/C++.


São Paulo: Erica, 2014.

MATOS, S. N. Tutorial para criar um sistema de aquisição de dados remoto,


alimentado por células fotovoltaicas. Santana Ouro Preto/MG: Editora, 2015.

MONK, Simon. Programação com Arduino: começando com sketches. 2.ed.


Porto Alegre: Bookman 2017.

PEREIRA, Silvio do Lago. Estruturas de dados em C: uma abordagem didática.


São Paulo: Erica, 2016.

PROGRAMMING LANGUAGES FOR EMBEDDED SYSTEMS 101:


Background and Resources. May 26, 2017. by Chantelle Dubois. Disponível em:
<https://www.allaboutcircuits.com/news/programming-languages-for-embedded-
systems-101-background-and-resources/>.

STALLINGS, William Sidney. Computer organization and architecture:


designing for performance. 10.ed. Boston: Pearson, 2016. 833p.

Sites visitados
<https://create.arduino.cc>.

28