1IoT - Internet de Todas As Coisas

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 127

INTERNET DE

TODAS AS COISAS
INTERNET DE
TODAS AS COISAS
FEDERAÇÃO DAS INDÚSTRIAS DO ESTADO DO PARANÁ (FIEP)

Carlos Valter
Presidente da Federação das Indústrias do Paraná

SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL (SENAI)

José Antônio Fares


Diretor Regional do Senai no Paraná e Superintendente do Sesi e IEL no Paraná

SISTEMA FIEP (FIEP, SESI, SENAI, IEL)

Carlos Valter
Superintendente Áreas Corporativas

2019. SENAI – Departamento Regional do Paraná

A reprodução total ou parcial desta publicação por quaisquer meios, seja


eletrônico, mecânico, fotocópia, de gravação ou outros, somente será permitida
com a prévia autorização, por escrito, do SENAI.
LISTA DE ILUSTRAÇÕES
FIGURA 1 – GRÁFICO DE UM SINAL ANALÓGICO_____________________ 15 FIGURA 13 – BIBLIOTECAS_______________________________________ 31

FIGURA 2 – GRÁFICO DE SINAL DIGITAL____________________________ 15 FIGURA 14 – AMBIENTE DE PROGRAMAÇÃO___________________________ 31

FIGURA 3 – SERVOMOTOR__________________________________________ 16 FIGURA 15 – GRAVADOR DE MICROCONTROLADORES PIC_____________ 33

FIGURA 4 – CONFIGURAÇÃO DE COMUNICAÇÃO FIGURA 16 – MODELOS DE PLACA ARDUINO________________________ 36


DISPOSITIVO-DISPOSITIVO____________________________ 18
FIGURA 17 – PINOS DA PLACA ARDUINO UNO_______________________ 37
FIGURA 5 – CONFIGURAÇÃO DISPOSITIVO – NUVEM_________________ 19
FIGURA 18 – AMBIENTE DE DESENVOLVIMENTO PARA ARDUINO_________40
FIGURA 6 – CONFIGURAÇÃO DISPOSITIVO - GATEWAY________________ 20
FIGURA 19 – JANELA DO MONITOR SERIAL_________________________ 41
FIGURA 7 – CONFIGURAÇÃO DE COMPARTILHAMENTO DE DADOS_____ 21
FIGURA 20 – CONEXÃO ENTRE UMA PLACA ARDUINO
FIGURA 8 – DIAGRAMA DE BLOCOS PIC 16F877 MICROCHIP___________ 27 E UM SMARTPHONE__________________________________ 42

FIGURA 9 – MICROCONTROLADOR PIC MODELO 16F877______________ 27 FIGURA 21 – MÓDULO ESP8266EX____________________________________ 43

FIGURA 10 – TELA DE ABERTURA DO IDE MIKROC____________________ 29 FIGURA 22 – PINOS DO MÓDULO ESP8266EX________________________ 43


FIGURA 11 – TELA DE CRIAÇÃO DE UM NOVO PROJETO________________ 30 FIGURA 23 – MÓDULO HC-05 BLUETOOTH__________________________ 47
FIGURA 12 – ADICIONAR ARQUIVO AO PROJETO____________________ 30 FIGURA 24 – FUNÇÕES DOS PINOS DO MÓDULO HC-05_______________ 47
FIGURA 25 – PLACA ETHERNET W5100 PARA ARDUINO_______________ 50 FIGURA 41 – CONEXÃO DE UMA REDE LOCAL COM A INTERNET_______ 84

FIGURA 26 – ETHERNET W5100 E PLACA ARDUINO UNO______________ 50 FIGURA 42 – PIRÂMIDE DA AUTOMAÇÃO___________________________ 88

FIGURA 27 – EXIBIÇÃO DAS CONFIGURAÇÕES DA REDE LOCAL________ 51 FIGURA 43 – ORGANIZAÇÃO DAS CAMADAS NO PADRÃO OSI_________ 89

FIGURA 28 – MÓDULO RFID MF RC522_____________________________ 53 FIGURA 44 – TOPOLOGIA DE REDES_______________________________ 89

FIGURA 29 – CONSTELAÇÃO DE SATÉLITES DO SISTEMA GPS__________ 55 FIGURA 45 – BRAÇO ROBÓTICO INDUSTRIAL MARCA KUKA MODELO KR
QUANTEC ULTRA____________________________________ 95
FIGURA 30 – MÓDULO GPS NEO 6M_______________________________ 56
FIGURA 46 – RAIO (DIREITA) E NUVEM DE TRABALHO (ESQUERDA)
FIGURA 31 – ANTENA CONECTADA AO MÓDULO GPS NEO 6M_________ 57
DE UM BRAÇO ROBÓTICO_____________________________ 96
FIGURA 32 – FORMATO DE SENTENÇA NMEA________________________ 58
FIGURA 47 – ELOS E JUNTAS EM UM BRAÇO ROBÓTICO_______________ 97
FIGURA 33 – SISTEMA VSAT DE COMUNICAÇÃO_____________________ 61
FIGURA 48 – ÓRGÃOS TERMINAIS DO BRAÇO ROBÓTICO______________ 97
FIGURA 34 – LDR (LIGHT DEPENDENT RESISTOR)____________________ 62
FIGURA 49 – EXATIDÃO E REPETIBILIDADE__________________________ 97
FIGURA 35 – PROJETO ARDUINO COM LDR_________________________ 63 FIGURA 50 – PUNHO DO BRAÇO ROBÓTICO________________________ 98
FIGURA 36 – SENSOR DE TEMPERATURA LM35______________________ 64 FIGURA 51 – UNIDADE DE CONTROLE_____________________________ 99
FIGURA 37 – MONTAGEM DO CIRCUITO____________________________ 64 FIGURA 52 – DISPOSITIVOS DE PROGRAMAÇÃO_____________________ 100
FIGURA 38 – SENSOR DE PRESENÇA HC-SR501______________________ 66 FIGURA 53 – COORDENADAS CARTESIANAS________________________ 101
FIGURA 39 – LIGAÇÃO DO SENSOR HC-SR501 À PLACA ARDUINO UNO__ 67 FIGURA 54 – COORDENADAS CILÍNDRICAS_________________________ 101
FIGURA 40 – PINAGEM DO SENSOR HC-SR501_______________________ 67 FIGURA 55 – COORDENADAS ESFÉRICAS OU POLARES________________ 102
LISTA DE QUADROS
FIGURA 56 – COORDENADAS DE REVOLUÇÃO OU ARTICULADO________ 102
FIGURA 57 – ROBÔ SCARA_______________________________________ 103
FIGURA 58 – PROGRAMAÇÃO PONTO A PONTO_____________________ 107
FIGURA 59 – MODELO DE SENSOR ENCODER ÓPTICO(ESQUERDA) E
QUADRO 1 – TIPOS DE SENSORES E SUAS APLICAÇÕES_______________ 14
SENSOR ENCODER MAGNÉTICO (DIREITA)_______________ 109
FIGURA 60 – SERVOMOTOR DO ROBÔ MARCA KUKA MODELO KR150___ 110 QUADRO 2 – CARACTERÍSTICAS RISC E CISC________________________ 24

FIGURA 61 – COMUNICAÇÃO VIA PROTOCOLO MQTT_________________ 112 QUADRO 3 – COMPARAÇÃO DE ESPECIFICAÇÕES

FIGURA 62 – SOFTWARE DE SIMULAÇÃO WMQTT UTILITY____________ 114 ENTRE PLACAS ARDUINO______________________________ 36

FIGURA 63 – TELA DO MONITOR SERIAL MOSTRANDO A CONEXÃO QUADRO 4 – DESCRIÇÃO DOS PINOS DO MÓDULO ESP8266EX________ 44
AO SERVIDOR MQTT_________________________________ 119
QUADRO 5 – LISTA DE COMANDOS AT_____________________________ 44
FIGURA 64 – TELA MQTT UTILITY E MONITOR SERIAL ARDUINO________ 120
QUADRO 6 – DESCRIÇÃO DOS PINOS DO MÓDULO HC-05_____________ 48

QUADRO 7 – LISTA DE COMANDOS AT_____________________________ 48

QUADRO 8 – FAIXAS DE FREQUÊNCIAS HOMOLOGADAS PELA


ANATEL E AS INTENSIDADES DE CAMPO DE CADA FAIXA__ 52

QUADRO 9 – FUNÇÃO DOS PINOS DO MÓDULO MF RC522____________ 54

QUADRO 10 – FUNÇÕES DOS PINOS DO MÓDULO GPS NEO 6M________ 57


QUADRO 11 – BANDAS DE FREQUÊNCIAS PARA SATÉLITES
DE COMUNICAÇÃO_________________________________ 60 SUMÁRIO
QUADRO 12 – BANDAS DE COMUNICAÇÃO COMERCIAIS______________ 61

QUADRO 13 – OPERADORES ARITMÉTICOS EM LINGUAGEM C_________ 74


1 INTRODUÇÃO________________________________________________ 11
QUADRO 14 – TIPOS DE VARIÁVEIS EM LINGUAGEM C___________________ 76
2 INTERNET DAS COISAS________________________________________ 13
QUADRO 15 – OPERADORES EM LINGUAGEM C______________________ 77
2.1 SENSORES__________________________________________________ 13
QUADRO 15 – LINGUAGENS DE PROGRAMAÇÃO DE
ROBÔS INDUSTRIAIS________________________________ 105 2.1.1 Sensores de sinal analógico________________________________ 14

QUADRO 16 – COMANDOS DE PROGRAMAÇÃO DE ROBÔS____________ 106 2.1.2 Sensores de sinal digital__________________________________ 15


QUADRO 17 – SERVIÇOS BROKERS E CLIENTES SUPORTADOS__________ 113
2.2 ATUADORES________________________________________________ 16

2.3 CONEXÃO E IDENTIFICAÇÃO__________________________________ 17

2.4 GATEWAY__________________________________________________ 17

2.5 COMPUTAÇÃO EM NUVEM____________________________________ 17

2.6 INTERFACE DE USUÁRIO______________________________________ 18

2.6.1 Dispositivo – Dispositivo _________________________________ 18


2.6.2 Dispositivo – Nuvem_____________________________________ 19 4.3 PROGRAMAÇÃO_____________________________________________ 37

2.6.3 Dispositivo – Gateway____________________________________ 19 4.4 COMUNICAÇÃO WI-FI COM MÓDULO ESP8266EX_________________ 42

2.6.4 Compartilhamento de dados______________________________ 20 4.4.1 Placa ESP8266EX________________________________________ 42

RECAPITULANDO____________________________________________ 21 4.4.2 Comandos AT___________________________________________ 44

3 MICROCONTROLADORES______________________________________ 23 4.5 COMUNICAÇÃO BLUETOOTH UTILIZANDO O MÓDULO HC-05______ 46

3.1 ESTRUTURA DE UM MICROCONTROLADOR______________________ 24 4.6 CONEXÃO ETHERNET VIA PLACA W5100_________________________ 49

3.1.1 Programação do Microcontrolador__________________________ 29 4.7 RADIO FREQUENCY IDENTIFICATION (RFID)_______________________ 52

3.1.2 Definição de variáveis, constantes e portas___________________ 31 4.8 SATÉLITES E LOCALIZAÇÃO GPS________________________________ 55

3.1.3 Estrutura de repetição____________________________________ 31 4.8.1 Sistema de localização GPS________________________________ 55

3.1.4 Compilação do código e gravação do microcontrolador_________ 32 4.8.2 Satélite para comunicações________________________________ 60

RECAPITULANDO____________________________________________ 34 4.9 SENSORES EM ARDUINO______________________________________ 62

4 CONECTIVIDADE DE HARDWARE_______________________________ 35 4.9.1 Sensor de luminosidade (LDR)_____________________________ 62

4.1 PLACA ARDUINO____________________________________________ 36 4.9.2 Sensor de temperatura___________________________________ 64

4.2 ESTRUTURA DA PLACA ARDUINO______________________________ 37 4.9.3 Sensor de presença______________________________________ 66


RECAPITULANDO____________________________________________ 69 6.1.3 Endereço MAC__________________________________________ 85

5 LINGUAGEM C_______________________________________________ 71 6.1.4 HTML_________________________________________________ 85

5.1 ESTRUTURA BÁSICA_________________________________________ 72 6.1.5 HTTP__________________________________________________ 86

5.2 OPERAÇÕES MATEMÁTICAS___________________________________ 73 6.1.6 DHCP_________________________________________________ 86

5.3 TIPOS DE VARIÁVEIS__________________________________________ 76 6.1.7 DNS___________________________________________________ 86

5.4 TOMADA DE DECISÃO IF______________________________________ 77 6.1.8 Nomenclaturas de área___________________________________ 87

5.5 ESTRUTURA DE REPETIÇÃO WHILE_____________________________ 79 6.1.9 Redes Industriais________________________________________ 87

5.6 ESTRUTURA DE REPETIÇÃO FOR_______________________________ 80 RECAPITULANDO____________________________________________ 91

5.7 OPERADORES DE IGUALDADE ( = ) E ( == )_______________________ 81 7 ROBÓTICA___________________________________________________ 93

RECAPITULANDO____________________________________________ 81 7.1 BREVE HISTÓRICO E EVOLUÇÃO________________________________ 93

6 REDES DE COMPUTADORES____________________________________ 83 7.2 SISTEMAS ROBOTIZADOS_____________________________________ 95

6.1 NOMENCLATURAS DE REDE E INTERNET_________________________ 83 7.2.1 Base fixa_______________________________________________ 95

6.1.1 Endereço IP_____________________________________________ 84 7.2.2 Raio e nuvem de trabalho_________________________________ 96

6.1.2 Network Address Translation (NAT)__________________________ 85 7.2.3 Braço articulado_________________________________________ 96


7.2.4 Unidade de controle_____________________________________ 99 7.3.3.1 Montagem____________________________________________ 103

7.2.5 Dispositivo de programação_______________________________ 99 7.3.3.2 Inspeção_____________________________________________ 104

7.3 CLASSIFICAÇÃO_____________________________________________ 100 7.3.3.3 Usinagem____________________________________________ 104

7.3.1 Geometria _____________________________________________ 100 7.3.3.4 Pintura_______________________________________________ 104

7.3.1.1 Coordenadas Cartesianas________________________________ 100 7.3.3.5 Soldagem____________________________________________ 104

7.3.1.2 Coordenadas Cilíndricas_________________________________ 101 7.3.3.6 Transporte____________________________________________ 104

7.3.1.3 Coordenada Polar ou Esférica_____________________________ 101 7.3.3.7 Manipulação__________________________________________ 104

7.3.1.4 Coordenadas de Revolução ou Articulado__________________ 102 7.4 PROGRAMAÇÃO_____________________________________________ 105

7.3.1.5 SCARA_______________________________________________ 102 7.4.1 Comandos de programação_______________________________ 106

7.3.2 Tipo de Acionamento_____________________________________ 103 7.4.2 Método de Programação online____________________________ 107

7.3.2.1 Acionamento elétrico___________________________________ 103 7.4.3 Método de Programação off-line___________________________ 107

7.3.2.2 Acionamento hidráulico_________________________________ 103 7.5 SENSORES _________________________________________________ 108

7.3.2.3 Acionamento pneumático_______________________________ 103 7.6 ATUADORES________________________________________________ 109

7.3.3 Aplicação______________________________________________ 103 RECAPITULANDO____________________________________________ 110


8 CONECTIVIDADE DE SOFTWARE________________________________ 111

8.1 PROTOCOLO MESSAGE QUEUING TELEMETRY TRANSPORT (MQTT)__ 111

8.2 VISÃO GERAL_______________________________________________ 112

8.2.1 Servidor MQTT (Brokers)__________________________________ 113

8.3 CLIENTE MQTT______________________________________________ 114

8.4 QUALIDADE DOS NÍVEIS DE SERVIÇO___________________________ 115

8.5 EXEMPLO DE CONECTIVIDADE MQTT PARA ARDUINO_____________ 116

RECAPITULANDO____________________________________________ 120

REFERÊNCIAS______________________________________________ 121

MINICURRÍCULO DO AUTOR__________________________________ 124

10 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


1 INTRODUÇÃO
Em um mundo cada vez mais conectado, a Internet das Coisas está localizado. O meio mais apropriado para permitir essa conexão é
surge como uma evolução no mundo da tecnologia. Há poucos anos a internet.
não imaginávamos a possibilidade de utilizarmos nossos celulares
Tendo a internet como meio para transmitirmos e recebermos
para controlar câmeras de segurança ou ter acesso a ambientes.
dados, como poderíamos integrar coisas a ela para serem controladas
Hoje temos a nosso alcance vários dispositivos que permitem ser
ou nos fornecerem informações?
monitorados e controlados pela internet. O termo “Internet das
Coisas” foi incidentalmente cunhado no final da década de 90 por um Dispomos de muitas tecnologias que podem ser utilizadas para
pesquisador britânico do Massachusetts Institute of Technology (MIT) conectar coisas à internet. Uma solução mais acessível para esse fim é a
chamado Kevin Ashton. Em uma apresentação para executivos sobre utilização de placas microcontoladas, que podem ser programadas para
etiquetamento utilizando identificação por radiofrequência (RFID) na interpretar e fornecer informações. Placas como RaspBerry e Arduino
cadeia logística de produção, ele utilizou como título o termo Internet funcionam como minicomputadores e podem ser interligadas à
das coisas, que rapidamente se popularizou. sensores, motores e muitos outros dispositivos, a fim de receber e enviar
comandos pela internet.
Quando pensamos na possibilidade de controlar um determinado
sistema, com uma localização física determinada, estando a quilômetros Devemos, então, conhecer melhor algumas tecnologias para
de distância dessa localização, precisamos pensar em um meio que possa controle e automação para que possamos adquirir conhecimento a fim
interligar o seu dispositivo de controle com o local onde esse sistema de criarmos ou adaptarmos soluções integradas à internet.

11 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


2 INTERNET DAS COISAS

Quando utilizamos o termo Internet das Coisas, usualmente 2.1 SENSORES


abreviamos para IoT (Internet of Things). Apesar de parecer ser um
Para Rosário (2005), os sensores são uma forma de obter do mundo
termo autoexplicativo, sua definição requer um pouco mais de
físico informações que serão processadas digitalmente, e que serão
abstração. O termo Internet das Coisas significa, de forma direta, que
utilizadas para realizar ações de controle.
podemos ligar coisas à internet. Uma análise mais aprofundada pode
gerar questionamentos como: É possível ligar qualquer coisa à internet? Em um sistema de IoT é necessário coletarmos informações do
Como fazemos isso? ambiente onde esse sistema está inserido. Para isso, utilizamos os mais
diversos tipos de sensores. Como exemplo, podemos citar a utilização de
São perguntas simples, mas requerem explicações complexas, com
um aplicativo para smatphones que verifica se a porta de entrada de uma
termos técnicos e detalhes que não fazem parte da realidade cotidiana
residência está aberta ou fechada. Para que essa informação seja enviada
da maioria das pessoas.
ao smartphone, precisamos adaptar um sensor à porta, cujo estado
Para entendermos a estrutura por trás da IoT, iremos conhecer mudará de acordo com a posição da porta: aberta ou fechada. Esse sensor
alguns elementos que fazem parte da estrutura que permite o deve estar ligado a um circuito eletrônico que permitirá que o processador
funcionamento de coisas ligadas à internet. interprete comandos lógicos de programação e envie o estado da porta,

13 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


fechada ou aberta, para a internet. O smartphone do usuário receberá De acordo com Rosário (2005), os sinais podem ser classificados
essa informação quando estiver conectado à rede de internet. de acordo com a necessidade de medida. Quando avaliamos qual é o
Existem muitas possibilidades de sensoriamento, com os mais tipo de sensor mais adequado à situação que temos, devemos analisar
diversos tipos de sensores. Cada situação exige um determinado tipo, a forma como a informação do sensor será recebida. Sensores podem
ou tipos, de sensor. A escolha depende da situação de medida, como enviar sinais de dois tipos: analógicos e digitais.
podemos ver em alguns casos no Quadro 1.

Situação de medida Tipo de Sensor 2.1.1 Sensores de sinal analógico


Intensidade luminosa LDR

Movimento Sensor eletromecânico Sensores analógicos enviam sinais que variam de forma contínua,
Sensor óptico em intervalos de valores máximos e mínimos. Por exemplo, um sensor
Sensor indutivo de temperatura envia um sinal mínimo de 5 mV para indicar uma
Sensor capacitivo temperatura de 0 °C; à medida que a temperatura aumenta, o valor
Sensor ultrassônico do sinal também se eleva continuamente, até alcançar a temperatura
Medida de massa Células de carga ambiente de 24 °C, quando seu sinal terá o valor de 10 mV. A Figura 1
Medida de temperatura Termistores mostra um gráfico gerado por este tipo de sinal.
Termopar

Quadro 1 - Tipos de sensores e suas aplicações


Fonte: SENAI DR PR, 2019

14 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Sinal (mV) óptico envia um sinal de 24 V enquanto não está acionado e um sinal de 0
V quando está acionado. Podemos associar esse sinal ao estado ligado ou
10
desligado de um bit, associando o sinal de 24 V ao bit 1, ligado, e o sinal de
0 V ao bit 0, desligado.

5 Sinal (V)
Temp (ºC)
0
24
Figura 1 - Gráfico de um sinal analógico
Fonte: SENAI DR PR, 2019
Nem todos os sinais possuem comportamentos lineares como o da
5
figura. Alguns podem apresentar outros perfis de comportamento, mas, na Tempo
0
sua grande maioria, os sinais possuem uma grande faixa de comportamento
Figura 2 - Gráfico de sinal digital
linear, possibilitando prever seu comportamento de forma mais simples.
Fonte: SENAI DR PR, 2019
São exemplos de sensores analógicos: sensor indutivo, sensor
Sensores digitais fornecem a informação de dois estados, ligado
de temperatura, sensor capacitivo, sensor ultrassônico e sensor de
ou desligado. Este tipo de comportamento é muito útil em sensores
intensidade luminosa.
que identificam posicionamento ou passagem de objetos ou pessoas,
2.1.2 Sensores de sinal digital engrenagens ou mecanismos.

Sensores de sinal digital enviam sinais discretos, ou seja, possuem Sensores tipo chave liga-desliga (eletromecânicos) e sensores
apenas dois estados para o valor de seu sinal. Por exemplo, um sensor ópticos são exemplos de sensores que enviam sinais digitais.

15 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


2.2 ATUADORES Motor elétrico
Engrenagem helicoidal

Segundo Rosário (2005), dispositivos atuadores fazem atuar energia 36T/OT


engrenagem
Buzina
cruzada
mecânica sobre uma máquina, a fim de executar determinado trabalho.

Dispositivos de IoT são capazes de executar suas funções sem a


interferência humana. Eles coletam os dados de sensores e executam
uma função, enviando informações para a rede. Como exemplo, podemos Estadia de motor

citar uma válvula industrial pela qual passa determinado líquido. 28T/12T
Engrenagens
Quando a válvula recebe uma informação de um sensor, indicando que helicoidais

a pressão da tubulação está baixa, a válvula fecha-se imediatamente e


envia um sinal de alerta pela rede. Não houve interferência humana no 40T engrenagem

processo de medida e de fechamento da válvula, exemplificando como


Seta de saida Junta de engrenagem
funcionam os atuadores.
Figura 3 – Servomotor
Um tipo de atuador muito utilizado é o motor elétrico, que converte Fonte: SENAI DR PR, 2019.

energia elétrica em energia mecânica. Por permitir que seja facilmente


controlado, através de circuitos eletrônicos, torna-se uma ferramenta FIQUE ALERTA!

versátil em projetos de IoT. Na Figura 3 podemos observar a estrutura de Manusear atuadores durante o seu funcionamento pode causar
um servomotor, que converte a rotação do eixo do motor em rotação de ferimentos sérios. Certifique-se de que todo o sistema está desligado
hastes que podem atuar mecanicamente em um sistema. antes de manipulá-lo.

16 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


2.3 CONEXÃO E IDENTIFICAÇÃO serial, e, em outro ponto, um computador que os recebe utilizando
protocolo TCP/IP. O Gateway é o ponto de entrada e saída dos dados e
Para que dados de sensores e atuadores sejam monitorados
faz a tradução de protocolo destes entre os dois pontos.
em um sistema de IoT, é necessário que estes estejam ligados a um
computador ou outro dispositivo.Segundo Rosário (2005), para que os
instrumentos atuem na variável controlada, o elemento controlador 2.5 COMPUTAÇÃO EM NUVEM
precisa reconhecer o estado dessa variável através de sensores. E
Segundo a definição do National Institute of Standards and
para que possamos compartilhar esses dados, necessitamos que o
Tecnology (NIST),
computador, ou um dispositivo, esteja corretamente identificado para
“a computação em nuvem é um modelo que permite um acesso de rede
conectar-se à internet. Essa identificação é o seu endereço IP (Internet
ubíquo, conveniente e sob demanda a um conjunto compartilhado de
Protocol). Para Blum (2016), o endereço IP é o único que identifica cada recursos de computação configuráveis (por exemplo, redes, servidores,
equipamento, ou dispositivo, que se conecta à internet. armazenamento, aplicativos e serviços) que podem ser rapidamente
provisionados e liberados com esforço mínimo de gerenciamento ou
interação com o provedor de serviços.” (MELL; GRANCE, 2011, p. 2)
2.4 GATEWAY Ou seja, a nuvem é o local virtual onde os dados de todos os
A função do Gateway é servir de ponte entre dois tipos diferentes diferentes dispositivos do sistema IoT se concentram. É onde o software
de dados que trafegam pela rede. O Gateway faz a tradução entre dois pode processar os dados conforme a necessidade do sistema IoT. A ideia
protocolos de comunicação diferentes. Por exemplo, em uma rede de concentrar essas informações na nuvem é liberar os dispositivos da
podemos ter, em um ponto, um atuador que envia dados em protocolo função de armazenar seus dados.

17 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Segundo a IAB (Internet Architecture Board), as comunicações em
CURIOSIDADES IoT podem seguir os modelos que serão apresentados a seguir.
O início da comunicação via rede de computadores iniciou-se em 1962,
com a criação da DARPA (Defense Advanced Research Projects Agency) dos
Estados Unidos da América. Acesse o link e descubra mais sobre o início da 2.6.1 Dispositivo – Dispositivo
internet: https://www.dataversity.net/brief-history-internet-things/
Nesse modelo, ilustrado na Figura 4, dois ou mais dispositivos estão
conectados e comunicando-se entre si. Os protocolos de comunicação
2.6 INTERFACE DE USUÁRIO para esse tipo de interação são Bluetooth, Z-Wave e Zigbee. Esse modelo é
muito usual em dispositivos utilizados em automação residencial. Possui
Para que os dados dos dispositivos sejam interpretados pelo
pequenos pacotes de dados para comunicação entre os dispositivos.
usuário, existem formas para padronizar como os dispositivos enviam e
recebem dados.

Segundo Tschofenig, et al. (2015), desenvolver novos protocolos


de comunicação exige tempo e experiência. Por isso é mais pertinente
utilizarmos protocolos já existentes.

Existem modelos apropriados para utilizarmos em comunicações


de sistema IoT. A intenção de usarmos modelos de comunicação é de LÂMPADA REDE WIRELESS CHAVE LIGA/DESLIGA

melhorar a eficiência do sistema. Existem quatro modelos que são os Figura 4 – Configuração de comunicação dispositivo-dispositivo
Fonte: SENAI DR PR, 2019.
indicados para a comunicação dos dispositivos IoT.

18 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


2.6.2 Dispositivo – Nuvem 2.6.3 Dispositivo – Gateway
Muitos dispositivos estão ligados à nuvem, seja por um cabo Para se conectarem à nuvem, dispositivos de IoT precisam de um
de Ethernet ou uma conexão Wi-Fi. Para que um usuário acesse
Gateway para traduzir suas informações, de acordo com o protocolo
remotamente, em tempo real, os dados dos dispositivos, é necessário
da nuvem. O Gateway pode traduzir protocolos e acrescentar uma
que o software realize atualização constante dos dados disponíveis na
nuvem. A conexão entre o software e a nuvem é realizada por meio de camada de segurança na rede. No caso de uma automação residencial,
um servidor, conforme ilustra a Figura 5. domótica, todos os dispositivos são ligados a um HUB, o qual possui um
SERVIDOR DE
Gateway interno que troca informações com a internet bem como com
APLICAÇÃO
os diferentes protocolos dos diversos dispositivos ligados a ele. A Figura
6 mostra a organização dessa configuração.

ºC

DISPOSITIVO COM DISPOSITIVO COM


SENSOR DE SENSOR DE MONÓXIDO
TEMPERATURA DE CARBONO

Figura 5- Configuração dispositivo – Nuvem


Fonte: SENAI DR PR, 2019

19 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


SERVIDOR DE
APLICAÇÃO
SAIBA MAIS

O IEEE (Institute of Electrical and Electronics Engineer) é uma associação


sem fins lucrativos, criada em 1963, nos Estados Unidos da América. Uma
de suas atribuições é a de padronizar os diversos tipos de protocolos
de comunicação sem fio. A norma de protocolo IEEE 802.11 é aplicada
à rede wireless, e o número 11 indica controle médio de acesso para
troca de dados entre redes locais (LAN), O número 15 indica redes de
áreas pessoais de rede sem fio (PAN), e o número 1 indica os protocolos
Bluetooth e Wibree. Para conhecer mais sobre os diversos protocolos
GATEWAY existentes, consulte o site da IEEE: https://www.ieee.org/
LOCAL

Bluetooth
IEEE 802.11
IEEE 802.15.1
ºC
2.6.4 Compartilhamento de dados
Usualmente dispositivos IoT armazenam informações em um único
DISPOSITIVO COM DISPOSITIVO COM
SENSOR DE SENSOR DE MONÓXIDO servidor de aplicação. Entretanto, em algumas situações, é necessário
TEMPERATURA DE CARBONO
analisar ou comparar dados que estão em outras localizações. Assim,
Figura 6 – Configuração dispositivo - Gateway
podemos ter a necessidade de compartilhar, por exemplo, as medidas
Fonte: SENAI DR PR, 2019.
enviadas por um sensor de luminosidade com três servidores de
aplicação, como mostra a figura.

20 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


SERVIDOR DE APLICAÇÃO B
CASO RELATADO
SERVIDOR DE APLICAÇÃO A
SERVER - B
Dispositivos na Nuvem

SERVER - B A equipe de TI de uma empresa ficou encarregada de estabelecer


SERVER - A

SERVER - B
a comunicação entre dispositivos medidores de temperatura,
SERVER - A instalados no chão de fábrica da empresa, e a nuvem de dados a
SERVER - B
qual a empresa utilizaria para acessar os valores das medidas. Para
SERVER - A

SERVIDOR DE APLICAÇÃO C
resolver este problema, a equipe utilizou a estrutura de configuração
SERVER - A
Dispositivo-Nuvem, na qual os sensores utilizavam protocolos
de comunicação para enviar dados pela rede local, e esses dados
SERVER - C
ficariam disponíveis para acesso de qualquer ponto da empresa.
SERVER - C

SERVER - C

SERVER - C RECAPITULANDO
Neste capítulo, aprendemos sobre classificação de sensores digitais
Figura 7 – Configuração de compartilhamento de dados
Fonte: SENAI DR PR, 2019
e analógicos e o comportamento dos sinais em função de cada tipo.
Abordamos o funcionamento de atuadores, muito utilizados em soluções
de IoT por substituírem a ação humana em processos que exigem
intervenção de natureza mecânica. Também aprendemos sobre as
diferentes formas de interconectarmos dispositivos, definindo a estrutura
mais apropriada para cada tipo de aplicação IoT, de forma a otimizar a
interface com o usuário e utilizar adequadamente a conexão com a rede.

21 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


3 MICROCONTROLADORES

Automatizar um processo requer uma sequência lógica de ações. Um microcontrolador se diferencia de outros componentes eletrônicos
Para isso devemos estruturar o caminho a ser seguido no processo. A por necessitar de um programa que o faça “funcionar”. Logo, um
humanidade, desde a antiguidade, busca formas de automatizar as mais microcontrolador não é componente eletrônico com apenas uma função,
diversas atividades, sempre utilizando as técnicas e ferramentas mais mas com várias possibilidades de funcionamento. Suas aplicações
apropriadas disponíveis. dependem do desenvolvimento de sequências lógicas que irão guiar
seu comportamento. Então, podemos dizer que o número de aplicações
A evolução da ciência e, consequentemente, da tecnologia nos
práticas do microcontrolador é limitado pela criatividade do programador.
permitiu avançar de automações basicamente mecânicas e elétricas
para automações com a aplicação de dispositivos eletrônicos, que Sua utilização é ampla, no controle de processos da indústria,
causaram uma revolução na forma em que aplicamos a automação em equipamentos eletrodomésticos, controles de acesso e muitas
de processos. outras aplicações.

Os microcontroladores são exemplos de dispositivos, mais Para entendermos o princípio de funcionamento dos
apropriadamente chamados componentes, que fazem uso de técnicas microcontroladores, iremos, neste capítulo, conhecer sua estrutura
de processos eletrônicos para controlar diversos tipos de periféricos. básica, entender as funções das partes principais e sua programação.

23 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


3.1 ESTRUTURA DE UM MICROCONTROLADOR Características RISC CISC
Arquitetura Registrador-Registrador Registrador-memória
Um microcontrolador pode ser classificado de acordo com o tipo
Tipos de dados Instruções com poucos Instruções com muitos
de memória que utiliza: endereços endereços

• memória interna: quando todos os blocos de funções são Modo de endereçamento Pouca variedade Muita variedade
executados internamente; Acesso a dados Via registradores Via memória

• memória externa: quando nem todos os blocos de funções são Quadro 2 - Características RISC e CISC
executados internamente, necessitando de memória externa. Fonte: ADAPTADO DE BRITO, 2014.
Outro tipo de classificação é o padrão de instruções: No Quadro 2, podemos observar as principais diferenças entre as
• CISC: Complex Instruction Set Computer, quando uma única duas arquiteturas. No caso dos microcontroladores, a utilização da ar-
instrução complexa substitui um conjunto de instruções quitetura RISC se justifica pelo menor número de endereços e a pou-
menores. ca variedade de modos de endereçamento, o que simplifica muito o
• RISC: Reduced Instruction Set Computer, quando várias instruções processamento. Processadores com arquitetura RISC são aplicados em
menores são utilizadas. projetos menores, resultando em menores custos. Ou seja, é um proces-
sador voltado para projetos mais simples, como dispositivos portáteis.

Processadores com arquitetura CISC são utilizados em projetos


mais complexos, que exigem mais estrutura física para serem aplicados.
Intel e AMD são exemplos de fabricantes que aplicam essa arquitetura
em seus processadores.

24 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Processadores com arquitetura CISC são utilizados em projetos • Memória RAM: é a memória onde fazemos o armazenamento de
mais complexos, que exigem mais estrutura física para serem aplicados. dados como variáveis contendo informações. Permite o acesso
Intel e AMD são exemplos de fabricantes que aplicam essa arquitetura rápido aos dados. Esses dados, porém, são perdidos quando des-
em seus processadores. ligamos o microcontrolador. A sigla RAM significa Random Access
Memory (memória de acesso randômico);
Em geral, processadores RISC são mais lentos que processadores
CISC. • Entradas e saídas digitais: também chamadas de I/O, são con-
juntos de pinos responsáveis por receber e entregar informa-
A estrutura interna de um microcontrolador é mais complexa que
ções em formato digital, 0 V para bit 0 e 5V para bit 1, por exem-
a estrutura de um microprocessador. Um microprocessador recebe in-
plo. Nas entradas digitais (inputs) podemos ligar sensores que
formações, realiza cálculos complexos e fornece resultados para que o informam um determinado estado, como ligado ou desligado,
restante da arquitetura do computador realize suas tarefas. O microcon- de um elemento. Nas saídas digitais (outputs) podemos ligar
trolador possui uma arquitetura interna que integra o microprocessador leds ou displays para nos informar sobre o estado do elemento
aos módulos de entrada e saída de dados. De acordo com a fabricante a ser monitorado;
MICROCHIP Inc. (2001), os módulos internos básicos de um microcon-
• Conversor Analógico/Digital (A/D): pode ser utilizado para re-
trolador são:
alizar a medida de grandezas analógicas externas, como por
• Memória ROM: é a memória onde gravamos o programa, clas- exemplo indicar em um display LED, ligado às saídas digitais, os
sificada como memória não volátil. A sigla ROM significa Read valores de tensão medidos em entradas analógicas.
Only Memory (memória somente de leitura). Mesmo tendo esse
• Entradas analógicas: permitem que o microcontrolador receba in-
nome, a maioria dos microcontroladores pode ser regravada
formações com perfil analógico, ou seja, informações que admitem
quantas vezes forem necessárias;
infinitos valores dentro de uma determinada faixa de referência;

25 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


• Saídas PWM: a sigla PWM significa Pulse Wide Modulation (mo- No diagrama de blocos da Figura 8, podemos visualizar os
dulação por largura de pulso). Esta saída é muito aplicada no diferentes blocos que compõem um microcontrolador PIC modelo
controle de velocidade de motores, por exemplo. Permite que 16F877, fabricado pela Microchip.
uma tensão de alimentação seja modulada, o que pode ser útil
para muitos tipos de controle eletrônico;
SAIBA MAIS
• Barramento de comunicação: o barramento de comunicação
permite que o microcontrolador troque informações, em forma- A Intel também desenvolveu microcontroladores para aplicações, muito si-
to digital, com o meio externo. O barramento de comunicação milares aos desenvolvidos pela Microchip. Assista ao vídeo explicativo do
mais comum, em microcontroladores, é o USART, que significa link e descubra mais aplicações para microcontroladores: https://www.you-
tube.com/watch?v=iXSXIJn_Xwc
Universal Synchronous Asynchronous Receiver and Transmitter
(Receptor e Transmissor Assíncrono Universal), padrão responsá-
vel pelo protocolo de comunicação RS232.
• Timers: são temporizadores da área de memória, na qual os da-
dos aumentam e diminuem sequencialmente, permitindo que
seja usado como referência em aplicações que precisam de de-
terminação temporal em sua execução. Este módulo exige ins-
truções mais complexas de programação;
• EEPROM: Também classificada como memória não volátil, é um
tipo de memória semelhante à memória ROM, mas as informa-
ções contidas não são perdidas quando o microcontrolador é
desligado.

26 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


13
Program Counter
Data Bus 8 PORTA
RA0/AN0
Na Figura 9, podemos visualizar a ligação dos pinos de um
FLASH
RA1/AN1

Program RAM
RA2/AN2/VREF-
RA3/AN3/VREF+
microcontrolador, versão PDIP.
Memory 8 Level Stack
(13-bit) File RA4/T0CKI
Registers RA5/AN4/SS
Program
14 PORTB
5V (RUN)
RAM Addr (1) 9
Bus
Addr MUX
RB0/INT PROG (13,4V)
RB1
Instrucon reg
RB2 CRISTAL RESET (OV)
Direct Addr 7 Indirect 5V
8 Addr RB3/PGM
RB4
(MHz)
FSR reg RB5 PORTC PORTE PORTA
RB6/PGC

A5
A4
A3
A2
A1
A0
E2
E1
E0
STATUS reg

D1
D0
C3
C2
C1
C0
RB7/PGD
8
PORTC
RC0/T1OSO/T1CKI
3

20
19
18
17
16
15
14
13
12
11
10
MUX RC1/T1OSI/CCP2

9
8
7
6
5
4
3
2
1
Power-up
Timer RC2/CCP1
Instrucon Oscillator RC3/SCK/SCL
Decode & Start-up Timer RC4/SDI/SDA
Control
Power-on
Reset 8
ALU RC5/SDO
RC6/TX/CK PIC16F877
Timing Watchdog RC7/RX/DT
W reg
Generaon Timer PORTD

21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
OSC1/CLKIN Brown-out RD0/PSP0
OSC2/CLKOUT Reset RD1/PSP1
In-Circuit RD2/PSP2

C4
C5
C6
C7
D2
D3

D4
D5
D6
D7

B0
B1
B2
B3
B4
B5
B6
B7
Debugger RD3/PSP3
Low-Voltage RD4/PSP4
Programming Parallel Slave RD5/PSP5
Port RD6/PSP6 PORTC 5V PORTB
RD7/PSP7 PORTD
PORTE
MCLR VDD, VSS RE0/AN5/RD
RE1/AN6/WR
Figura 9 - Microcontrolador PIC Modelo 16F877
RE2/AN7/CS
Timer0 Timer1 Timer2 10-bit A/D Fonte: SENAI DR PR, 2019

O microcontrolador das figuras 8 e 9, segundo as informações do


Data EEPROM CCP1,2
Synchronous
Serial Port USART
fabricante MICROCHIP Inc. (2001), possui 40 pinos, um microprocessador
interno RISC de 20 MHz, memória FLASH de 4 kbytes (ROM), EEPROM de
Figura 8 - Diagrama de blocos PIC 16F877 Microchip
Fonte: ADAPTADO DE MICROCHIP PIC16F87X DATA SHEET, 2019. 128 bytes e memória RAM de 192 bytes. Suas especificações são inferiores

27 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


as de um microcomputador comum. Isso se deve ao tipo de aplicação Podemos perceber que, além da quantidade de pinos do
do microcontrolador, que geralmente é utilizado em aplicações muito microcontrolador, podemos atribuir mais de uma função ao mesmo
específicas, servindo a um determinado propósito, como por exemplo, pino. Sendo assim, a quantidade de funções disponíveis é maior que o
monitorar o comportamento da temperatura, tensão ou corrente e, a número total de pinos disponíveis no encapsulamento. Para podermos
ter acesso a todas as funções dos pinos de um microcontrolador,
partir disso, controlar uma ação como diminuir uma chama, acionar um
devemos localizar o manual, também chamado Data Sheet, do modelo
alarme ou desligar um motor.
escolhido para a aplicação a ser desenvolvida.
Nas figuras 6 e 7, podemos observar a identificação PORTA, PORTB, Pela descrição resumida de algumas funções internas que compõe
PORTC, PORTD e PORTE e a numeração dos pinos do microcontrolador. o microcontrolador, e pela quantidade de portas de entrada e saída
A identificação PORT é uma classificação para os conjuntos de pinos do de dados que ele possui, podemos perceber que este componente
microcontrolador, identificando-os como portas de entrada ou saída de possui uma estrutura muito complexa. Essa complexidade permite
informações. As letras A, B, C, D e E são classificações de acordo com a que sejam criados processos de controle muito refinados. Para isso,
finalidade de cada bloco de pinos. Por exemplo, para o microcontrolador porém, precisamos de uma linguagem de programação que faça o
microcontrolador funcionar como queremos.
modelo PIC 16F877, o bloco PORTA corresponde a um conjunto de
pinos que podem ser programados para serem entradas analógicas: CURIOSIDADES
pino 2 RA0/AN0, pino 3 RA1/AN1, pino 4 RA2/AN2/VREF-, pino 5 RA3/
AN3/VREF+, pino 6 AN4/T0CKI e pino 7 R5/AN4. Como nem todas as portas Os fabricantes de microcontroladores, como a Microchip fabricante do mo-
delo 16f877A, disponibilizam gratuitamente os Data Sheet dos seus mode-
analógicas do PORTA precisam ser utilizadas, os pinos 3 e 5 podem ser los de microcontroladores. Confira pelo link o Data Sheet do PIC 16f877A:
utilizados como entradas de referências negativa e positiva de tensões http://ww1.microchip.com/downloads/en/devicedoc/39582b.pdf
analógicas de um circuito.

28 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


3.1.1 Programação do Microcontrolador ções serão executadas apenas uma vez, fazendo com que o microcontrola-
dor precise ser reiniciado externamente, por reset ou por interrupção na ali-
A programação do microcontrolador, independente do fabricante mentação, o que se tornaria inapropriado para seu correto funcionamento.
ou do modelo, precisa de uma linguagem de programação que irá es- Um IDE muito utilizado é o MikroC Pro for PIC, disponibilizado para
truturar os comandos a serem executados. Essa linguagem utilizará um download gratuito em versão com ferramentas limitadas. A Figura 10
ambiente de programação, também chamado de IDE (Integrated Deve- mostra a tela inicial do ambiente.
lopment Environment), que possui ferramentas para facilitar a programa-
ção e compilação do código.
A estrutura de programação pode utilizar diferentes tipos de lin-
guagens de programação. Neste capítulo, utilizaremos a linguagem C
como referência para programação.
Para a programação do microcontrolador PIC, devemos ter em
mente que o programa se divide em duas partes: a primeira é a defi-
nição das variáveis e portas (pinos) a serem utilizadas; a segunda é a
estrutura de repetição, que irá executar os comandos da linguagem de
programação em loop infinito.
Figura 10 - Tela de abertura do IDE MIKROC
A segunda parte necessita de repetição em loop infinito devido ao Fonte: SENAI DR PR, 2019
fato de que, ao ligarmos o microcontrolador com a programação já carre-
gada internamente, seu funcionamento obedecerá exatamente o que está
programado, ou seja, se não existir a repetição em loop infinito, as instru-

29 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Para iniciarmos a programação, devemos preparar o ambiente. Com todos os campos preenchidos, clicamos em Next para avançar
Para isso devemos clicar na opção New Project, com isso será aberta a para a tela da Figura 12..
tela da Figura 11.

Figura 12 - Adicionar arquivo ao projeto


Figura 11 - Tela de criação de um novo projeto Fonte: MIKROC, 2019
Fonte: MIKROC, 2019
Observando a tela da Figura 11, temos que nomear o projeto no Nesta tela, podemos abrir um arquivo fonte no campo Add File
campo Project Name, definir um local para a gravação dos arquivos desse To Project com extensão de linguagem de programação em C, caso
projeto no campo Project Folder, escolher o modelo do microcontrolador tenhamos um modelo pronto para utilizar. Também podemos deixar o
no campo Device Name e, finalmente, definir o clock apropriado ao campo vazio e clicar em Next para criarmos um projeto desde o início.
microcontrolador no campo Device Clock.

30 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Figura 13 - Bibliotecas
Fonte: MIKROC, 2019 Figura 14 - Ambiente de programação
Fonte: MIKROC, 2019
Na Figura 13, temos a tela na qual podemos escolher entre utilizar Na Figura 14, temos a tela na qual programamos o microcontrolador.
todas as bibliotecas de funções padrão, que é indicado para a maioria Neste ambiente programam-se, utilizando a linguagem C, as funções
dos projetos, ou não selecionarmos bibliotecas, o que precisará de um que desejamos nos pinos escolhidos do microcontrolador.
aprofundamento na utilização do ambiente. Usualmente utilizamos
todas as bibliotecas, mantendo selecionada a opção Include All
(Default). Ainda na Figura 13, clicando em Finish para terminar as etapas
de configuração do ambiente.

31 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


3.1.2 Definição de variáveis, constantes e portas Na figura abaixo vemos o exemplo de uma estrutura de uso do
comando WHILE.
A definição de variáveis e constantes deve ser feita na primeira
parte da estrutura de programação do código. Nesta etapa, é necessário 3.1.4 Compilação do código e gravação do
definir os pinos a serem utilizados e qual função irá realizar no programa, microcontrolador
se será entrada ou saída de dados, porta digital ou analógica.
Para que o programa seja transferido do ambiente de programa-
Serão também definidas as bibliotecas da linguagem de programa-
ção para o microcontrolador, devemos compilá-lo. Os compiladores, se-
ção, que serão utilizadas para o modelo de microcontrolador escolhido.
gundo Deitel (2011), convertem programas de alto nível em linguagem
de máquina. Ao compilarmos o programa do arquivo fonte digitado no
3.1.3 Estrutura de repetição
ambiente, o próprio ambiente, utilizando um compilador C, irá gerar um
A programação que irá executar os comandos que controlarão arquivo em formato hexadecimal com extensão HEX. Esse arquivo será
as entradas e saídas do microcontrolador é estruturada em forma de enviado ao microcontrolador por meio de um gravador, no qual será
repetição infinita ou loop infinito. acoplado o microcontrolador para que seja devidamente programado
Na linguagem C, aplicada à programação de microcontroladores, é (esse gravador possui um encaixe chamado soquete, no qual o micro-
usual utilizamos o comando WHILE para executar a instrução enquanto controlador será conectado).
uma condição for assumida como verdadeira. O comando WHILE, Para executarmos a gravação, devemos utilizar o software que
ENQUANTO do portugol, permitirá que uma estrutura de instruções acompanha o gravador de microcontroladores. Cada fabricante dispo-
seja executada em loop, até que uma condição pré-determinada seja nibiliza o software de gravação com o gravador, e devemos instalá-lo
verificada e interrompa-o.
antes de conectarmos o gravador ao computador.

32 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


A Figura 15 mostra um modelo comercial de gravador, à frente da
FIQUE ALERTA! tela do software que o acompanha. Além dos diversos modelos comer-
Ao manipularmos o microcontrolador devemos ter cuidado com ciais, podemos encontrar disponíveis na WEB vários projetos de grava-
descargas estáticas, pois podem danificá-lo. Utilize pulseira e manta dores e softwares gratuitos, que funcionam da mesma forma que os mo-
antiestática quando estiver trabalhando com circuitos eletrônicos. delos comerciais, barateando muito a aquisição de um gravador.

Plugamos o gravador ao computador, com o microcontrolador de-


vidamente conectado. É importante lembrar que devemos ter cuidado
ao conectar o microcontrolador no soquete, pois a identificação de po-
sição dos pinos deve ser respeitada a fim de que danos não sejam causa-
dos ao microcontrolador. Após esse passo, devemos plugar o gravador
ao computador na porta de comunicação disponível, de acordo com o
padrão de comunicação do equipamento utilizado.

Com o gravador devidamente conectado, podemos então execu-


tar o programa de gravação. Nele haverá campos de configuração que
variam conforme o software utilizado. Nesses campos, podemos selecio-
nar o modelo do microcontroldador, a porta de comunicação utilizada
no computador, o local onde se encontra o arquivo decimal a ser grava-
do, entre outras opções. O software de gravação possui outras funções
Figura 15 - Gravador de microcontroladores PIC como apagar a gravação anterior, verificar a integridade e se já existe um
Fonte: PICKIT, 2019. programa gravado no microcontrolador.

33 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Após carregarmos o arquivo hexadecimal no software, podemos
...
iniciar a gravação, geralmente clicando na opção Write.
com arquitetura baseada no 8051, da fabricante Intel. Neste projeto,
Após esse processo, o microcontrolador pode ser retirado do podemos perceber a flexibilidade na aplicação de microcontroladores
gravador e inserido no circuito ao qual queremos utilizá-lo. e o nível de confiabilidade que sua utilização proporciona.

Mais informações em: http://www.bibl.ita.br/xiiencita/ELE-11.pdf

CASO RELATADO

Microcontroladores em satélites
RECAPITULANDO
O satélite universitário ITASAT, desenvolvido por professores e alunos
do Instituto Tecnológico de Aeronáutica e de outras universidades Neste capítulo conhecemos algumas características dos microcon-
brasileiras, em 2006, propôs a utilização de um microcontrolador para troladores, as partes que compõem sua estrutura interna, características
controlar uma unidade de condicionamento de energia, responsável
físicas gerais, suas aplicações em projetos eletrônicos e a importância
por controlar a potência da energia consumida pelo satélite. A opção
por um microcontrolador para desempenhar essa importante função que possuem no desenvolvimento de soluções de tecnologia. Aprende-
deve-se ao alto nível de flexibilidade e confiabilidade em controles mos também sobre o ambiente de programação e como é a organiza-
digitais, proporcionados pela arquitetura do microcontrolador, ção da estrutura de codificação. Como conclusão, abordamos o método
servindo como um novo tipo de tecnologia no desenvolvimento de
satélites nacionais. Anteriormente, esse tipo de controle era realizado mais comum para a gravação da programação no microcontrolador.
com circuitos analógicos em satélites desenvolvidos pelo INPE (Instituto
Nacional de Pesquisas Espaciais). Entre alguns modelos disponíveis, o
microcontrolador escolhido foi o 80C32E, da fabricante ATMEL, mas

34 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


4 CONECTIVIDADE DE HARDWARE

Para que possamos compartilhar informações devemos utilizar Segundo a Arduino (2019), a primeira placa Arduino foi lançada
tecnologias para transmiti-las e recebê-las. Neste capítulo, apresenta- em 2005 com a intenção de ajudar estudantes de design, inexperientes
remos alguns padrões de conectividade de dados, utilizados nas mais em eletrônica e programação, a conectar protótipos do mundo real com
diversas áreas de telecomunicações. o mundo digital. Com o passar do tempo, a placa Arduino tornou-se re-
ferência para o desenvolvimento de projetos, dos mais simples aos mais
Arduino é uma plataforma livre, de hardware e software, projetada
complexos.
para a criação de projetos eletrônicos. É uma ferramenta simples e ver-
sátil que permite a criação de diversos projetos através da programação Neste capítulo, iremos explorar a utilização da placa Arduino, co-
de um dispositivo capaz de controlar suas portas, recebendo e enviando nhecer sua estrutura básica e saber como programá-la.
informações em formato digital ou analógico.

35 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


4.1 PLACA ARDUINO Existem diversos modelos de placas Arduino, cada um com suas
características específicas. No quadro abaixo, podemos comparar
A placa Arduino possui diferentes modelos e versões. Na Figura 16,
algumas especificações dos modelos da Figura 16, conforme dados da
podemos visualizar alguns dos modelos disponíveis.
Arduino (2019).

I/O IO/PWM EEPROM Memória Memória


Nome Processador Velocidade Flash (kb)
Análógica Digital (kb) RAM (kb)
Uno ATmega328P 16 MHz 6/0 14/6 1 2 32
Micro ATmega32U4 16 MHz 12/0 20/7 1 2,5 32
Zero ATSAMD21G18 48 MHz 6/1 14/10 - 32 256
Mega 2560 Atmega2560 16 Mhz 16/0 54/15 4 8 256

Arduino Uno Arduino Micro


Quadro 3 - Comparação de especificações entre placas Rrduino
Fonte: Adaptado de Arduino, 2019.

No Quadro 3, podemos observar que o modelo Zero apresenta a


maior velocidade, uma saída digital e maior memória RAM, enquanto
o modelo Mega apresenta maior quantidade de portas I/O digitais
e analógicas. A necessidade das aplicações é o que determina qual
Arduino Mega 2560 Arduino Zero
modelo melhor se adapta à proposta do projeto.

Figura 16 - Modelos de placa Arduino


Fonte: Adaptado de Arduino, 2019.

36 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


4.2 ESTRUTURA DA PLACA ARDUINO • Verde: entradas e/ou saídas digitais, os pinos verde escuros
também são para comunicação serial;
Antes de iniciarmos a programação de uma placa Arduino, deve-
• Verde claro: pino de referência GND;
mos conhecer a descrição dos pinos da sua estrutura. Utilizaremos como
exemplo a pinagem padrão de uma placa Arduino Uno R3 (Revisão 3), • Azul escuro: botão S1 de reset da programação;
mostrada na Figura 17. • Amarelo: Porta de comunicação USB;
• Rosa: alimentação externa (9-12V);

AREF
3 2 1 0 9 8 7 6 5 4 3 2 1 0

GND
1 1 1 1

RX
TX
Digital • Roxo: seleção do tipo de alimentação, pela porta USB ou

PWM2
PWM1
PWM0
USB
alimentação externa.

PWR
1
Q1
S1
Para a programação das portas digitais utilizamos o comando
SV1

ICSP
1

pinMode() para definir as portas a serem utilizadas, digitalRead() para


D1

IC1

X1 POWER Analog in
ler dados dos pinos e digitalWrite() para enviar dados para os pinos.
5V Gnd 9V 0 1 2 3 4 5

Figura 17 - Pinos da placa Arduino uno


4.3 PROGRAMAÇÃO
Fonte: Adaptado de Arduino, 2019.

Descrição dos pinos da Figura 17: A linguagem C é utilizada para a programação dos acionamentos
de cada porta da placa Arduino. O ambiente de programação é
• Laranja claro: pinos de referência GND;
disponibilizado pelo fabricante, tanto para download quanto para
• Laranja: pinos de alimentação 5V e 9V; programação via WEB. Os códigos programados para Arduino também
• Azul: entradas analógicas; recebem o nome de sketch.

37 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


A estrutura de programação para uma aplicação com Arduino A Listagem 1 mostra um exemplo introdutório de um código para
não é muito diferente da programação usual em C. O que difere a pro- fazer com que a placa Arduino pisque um LED da placa, com um inter-
gramação para Arduino da convencional é o fato de que precisamos valo de tempo de 1s.
conhecer um pouco mais sobre o hardware que estamos utilizando,
Podemos observar no código da Listagem 1 que a maioria das
no caso a placa Arduino.
linhas do código são dedicadas aos comentários do programa. Temos
sketch_uc8 | Arduino 1.8.10
_ x uma pequena parte, 9 linhas, responsável pela programação da placa
Arquivo Editar Sketch Ferramentas Ajuda
Arduino.

Assim como abordamos a estrutura de programação do microcon-


sketch_uc8

1 // a função setup roda apenas uma vez quando você liga ou reseta a placa
2 void setup() { trolador PIC, no Capítulo 1, vemos que a estrutura de programação se
3 // Configura o pino digital de nome led_builtin como uma SAÍDA.
4 pinMode(led_builtin, OUTPUT); divide em duas partes: a primeira parte é a declaração de constantes,
5 }
6 variáveis e bibliotecas; a segunda parte é a estrutura de repetição em
7 // A função loop é executada várias e várias vezes repetidamente.
8 void loop() { loop infinito.
9 digitalWrite(led_builtin, HIGH); // Liga o led (high liga a energia pela porta)
10
11
delay(1000); // Espera por um segundo
digitalWrite (led_builtin, LOW); // Desliga o led cortando a energia da porta
O componente mais importante da placa Arduino é o seu
12
13
delay(1000); // Espera por um segundo
}
microcontrolador, que possui a mesma arquitetura apresentada no
Capítulo 1. A diferença está na estrutura de componentes padronizada
que cerca o microcontrolador da placa, que facilita muito sua utilização.
Quando compramos um componente microcontrolador, precisamos
13 Arduino/genuino Uno em COM4
desenvolver um circuito eletrônico, desenhar e fabricar uma placa de
Listagem 1 – Exemplo de código fonte Arduino circuito impresso, comprar outros componentes e conectores e depois

38 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


montá-los para que possamos fazer uso das funções do microcontrolador. digitalWrite(8, LOW);
Dessa forma, a padronização fornecida pela Arduino facilita muito o E para mudarmos o estado do pino digital 8 para ligado, ou nível
acesso às suas funcionalidades, permitindo que qualquer pessoa, com 5V de tensão, utilizamos a função digitalWrite():
o mínimo conhecimento em eletrônica e programação, ou até nenhum,
digitalWrite(8, HIGH);
possa criar ou modificar projetos existentes.
Para ler o estado da porta 8, utilizamos a função digitalRead()
Além da padronização da placa, a marca Arduino disponibiliza o
da seguinte forma:
ambiente de desenvolvimento, que permite a compilação do código e
seu envio para a placa Arduino. digitalRead(8);
Em uma programação mais estruturada podemos associar os nú-
Para iniciar a programação de uma placa Arduino, devemos conhe-
meros das portas digitais a variáveis.
cer a utilização de algumas funções básicas. Por exemplo, se quisermos
que o pino 5 das portas digitais seja utilizado como entrada de dados, A placa Arduino Uno permite apenas entradas de dados analógi-
usamos a função pinMode() da seguinte forma: cos, e o comando para lermos esses dados é analogRead().

pinMode(5, INPUT); Um exemplo de uso da sintaxe da função é:


analogRead(A0);
Mas se quisermos que o mesmo pino seja uma saída de dados
usamos a função: Com esse comando, pode-se ler o sinal que está sendo recebido
pelo pino 0 das entradas analógicas. As portas analógicas possuem
pinMode(5, OUTPUT);
resolução de 10 bits para a conversão do sinal analógico de entrada em
Para mudarmos o estado do pino digital 8 para desligado, ou nível informação digital numérica, ou seja, converterá o valor de entrada em
0 de tensão, utilizamos a função digitalWrite(): valores numéricos entre 0 e 1023.

39 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Da mesma forma como nos pinos digitais, os pinos analógicos que você utilize um campo para envio de comandos digitados clicando
podem ser associados a variáveis para permitir uma programação mais em Send para enviar o comando à placa Arduino, caso o sketch neces-
dinâmica. site ou permita uma interação com o operador. O comando utilizado,

Uma ferramenta importante para utilizarmos no ambiente Arduino geralmente um caractere, para realizar uma leitura via monitor serial é
é o monitor serial. Com ele podemos verificar o comportamento do Serial.read(). Na Listagem 2, temos um exemplo de utilização do
projeto, solicitando na programação do sketch que seja enviada uma comando Serial.read().
mensagem de texto mostrando um resultado, como no exemplo:

Serial.print("Its DARK, Turn on the LED : ");

Serial.println(ldrStatus);

Clicando na lupa que aparece na lateral direita superior do am-


biente, identificada como Serial Monitor, como mostra a Figura 18, será
aberta uma nova janela na qual serão exibidas as mensagens da placa
Arduino, como mostra a Figura 19.

A janela também exibe as configurações de velocidade de comuni- Figura 18 - Ambiente de desenvolvimento para Arduino
cação de 9600 baud, padrão para a maioria dos projetos. Permite ainda, Fonte: Arduino, 2019.

40 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


sketch_uc8 | Arduino 1.8.10
_ x
Arquivo Editar Sketch Ferramentas Ajuda

sketch_uc8

1 int incomingByte = 0; // variável que irá receber os dados


2 void setup() {
3 Serial.begin(9600); // Abre a porta serial, definindo a sua velocidade em 9600 bps
4 }
5
6 void loop() {
7 // envia o dado apenas quando recebe dados:
8 if (Serial.available () > 0) {
9 // a variável recebe o dado da porta:
10 incomingByte = Serial.read();
11 // Imprime o que você recebeu:
12 Serial.print("Received: ");
13 Serial.println(incomingByte, DEC);
14 }
15 }

Figura 19 - Janela do monitor serial


Fonte: Arduino, 2019.

15 Arduino/genuino Uno em COM4

Listagem 2 – Exemplo de utilização dos comandos serial Serial.read()

41 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


CURIOSIDADES

AREF
3 2 1 0 9 8 7 6 5 4 3 2 1 0

GND
1 1 1 1

RX
TX
Digital

PWM2
PWM1
PWM0
USB

PWR
Envia uma

1
O Arduino disponibiliza em seu site a descrição de todas as funções utilizadas mensagem ARDUINO lê Q1
S1

SV1
ICSP

1
a mensagem
D1

de texto
em suas placas. Você pode acessá-las pelo link: https://www.arduino.cc/
IC1

via TCP X1 POWER Analog in

reference/en/#functions
5V Gnd 9V 0 1 2 3 4 5

ARDUINO analisa a mensgem


ESP8266 e executa o comando

Figura 20 - Conexão entre uma placa arduino e um Smartphone


4.4 COMUNICAÇÃO WI-FI COM MÓDULO Fonte: SENAI DR PR, 2019.

ESP8266EX Podemos observar, ainda na Figura 20, que o módulo ESP8266EX


funciona como uma ponte full-duplex entre a placa Arduino e o
Entre os módulos de comunicação disponíveis no mercado, o
ESP8266 é de comunicação muito útil e acessível para nos conectarmos smartphone, enviando e recebendo informações em protocolo TPC/IP

às redes WiFi, portanto, aplicável a projetos de IoT. Podemos utilizá-lo da rede, interpretando, enviando e recebendo sinais da placa Arduino.
para realizarmos a comunicação de um microcontrolador ou uma placa
Arduino por meio de uma rede Wi-Fi. 4.4.1 Placa ESP8266EX
Na Figura 20, podemos observar um exemplo de conexão entre
O módulo consiste em uma pequena placa com dimensões de 2,1
um smartphone e uma placa Arduino.
X 1,3 cm, que possui, entre outras, as seguintes características técnicas:

• Processador RISC 32 bit;


• Módulo para comunicação de rádio WiFi padrão 802.11 b/g/n;

42 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


• Memória flash de 1 Mb; e o que indica tráfego de dados com a rede. Devemos ter o cuidado de
• Protocolo TCP/IP integrado; modular a tensão de comunicação e de alimentação entre o módulo e a

Podemos observar que, mesmo sendo muito pequeno, o módulo placa Arduino, pois o ESP8266EX trabalha com tensão de 3,3V.
possui características técnicas importantes. A Figura 21 mostra a

SPI_CS2

U0RXD
aparência do módulo ESP8266.

POWER
COMM.

GPIO0

GPIO3
5

7
ONBOARD
ANTENNA
8 VCC

6 EXT_RSTB

4 CHIP_EN CH_PD

2 GPI01 U0TXD
Figura 21 - Módulo ESP8266EX
Fonte: ADAPTADO DE ESPRESSIF SYSTEMS, 2018.

1
Conforme a Espressif Systems (2018), os pinos do módulo não são

GPIO2

GND
padronizados para a placa Arduino, pois esse se destina a vários tipos de
aplicação, mesmo sem nenhuma placa de controle adicional, podendo Figura 22 - Pinos do módulo ESP8266EX
ser programado individualmente para executar determinadas funções. Fonte: ADAPTADO DE ESPRESSIF SYSTEMS, 2018.

Na Figura 22, podemos observar a disposição dos pinos do módulo, De acordo com o fabricante Espressif Systems (2018), a descrição
a antena integrada à superfície da placa, o LED que indica placa ligada das funções dos pinos da Figura 22 são mostradas no Quadro 4:

43 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Nome Função podem ser adicionados a cada renovação do firmware dos módulos,
1 - GND Aterramento. necessitando de constantes consultas em tabelas de comandos AT.
2 - GPIO0(FLASH) I/O de uso geral. Se estiver em nível baixo,
mantendo reset/power on, o chip entra em No Quadro 5, podemos verificar a definição de alguns comandos
modo de programação serial.
básicos.
3 - GPIO2 IO de uso geral.
4 - CH_PD Chip Enable. Tensão nível alto: On, chip em Comando Descrição
funcionamento. Tensão nível baixo: O , baixa
corrente. AT Teste de inicialização
5 - GPIO1(TX) IO de uso geral e Serial TXd (Transmissão de dados). AT+RST Reset do módulo
6 - EXT_RSTB Sinal de reset externo (tensão em nível baixol: Ativo). Ver versão
AT+GMR
7 - GPIO3(RX) IO de uso geral e Serial RXd (Recepção de dados).
AT+GSLP Entrar em modo hibernação
8 - VCC Alimentação 3.0 ~ 3.6V.
ATE Comandos echo ou not
Quadro 4 - Descrição dos pinos do módulo ESP8266EX
AT+RESTORE Reset de fábrica
Fonte: Adaptado de Arduino, 2018.
AT+CWLAP Lista os access points disponíveis.
AT+UART_CUR Con guração atual
4.4.2 Comandos AT
AT+UART_DEF Salvar con guração atual na memória ash
Comandos AT (Attention Command) são padrões que podem AT+SLEEP Modo de espera
ser utilizados para receber e enviar instruções ao módulo ESP8266EX. AT+RFPOWER Selecionar valor máximo de potência RF TX
Conforme a Espressif Systems (2015), esses comandos são padronizados AT+RFVDD Selecionar tensão RF TX em VDD33
para que o módulo os reconheça e execute corretamente suas funções. Quadro 5 - Lista de comandos AT
Entretanto, mesmo possuindo uma padronização, novos comandos Fonte: ADAPTADO DE ESPRESSIF SYSTEMS, 2019.

44 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Os comandos AT são uma forma de obtermos informações sobre o Podemos utilizar estes comandos na programação do software
estado de conexão do módulo ou enviar comandos como reinicialização, Arduino para obtermos informações sobre a conexão do módulo à rede
ativação do modo de espera, entre outros. Na Listagem 3, temos um ou enviarmos comandos específicos.
exemplo de código em linguagem C utilizando comandos AT para
alterarmos a velocidade de comunicação serial do módulo ESP8266 com A configuração do módulo pode ser enviada a ele através de
uma placa Arduino. códigos programados no Arduino.
sketch_uc8 | Arduino 1.8.10
_ x
Arquivo Editar Sketch Ferramentas Ajuda

SAIBA MAIS
sketch_uc8

1 void setup()
2 { Você pode conhecer mais detalhes do módulo ESP8266 estudando um
3
4
Serial.begin(9600);
// Na linha abaixo, define a velocidade inicial do
projeto para sua utilização com uma placa Arduino. Dentre os vários
5 // módulo ESP8266 projetos disponíveis na WEB, um interessante é sobre a utilização de um
6 esp8266.begin(115200);
7 sendData(“AT+RSTrn”, 2000, DEBUG); smartphone para comunicar-se com uma placa Arduino UNO. Acesse o link
8
9
delay(1000);
Serial.println(“Firmware version”);
e entenda um pouco mais sobre IoT: https://create.arduino.cc/projecthub/
10 delay(3000); jeffpar0721/add-wifi-to-arduino-uno-663b9e?f=1
11 sendData(“AT+GMRrn”, 2000, DEBUG); // rst
12 // Na linha abaixo, define a velocidade de comunicaçãod do
13 // módulo ESP8266 (9600, 19200, 38400, etc.)
14 sendData(“AT+CIOBAUD=19200rn”, 2000, DEBUG);
15 Serial.println(“** Final **”);
16 }

16 Arduino/genuino Uno em COM4

Listagem 3 - Comandos AT em linguagem C para Arduino

45 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


4.5 COMUNICAÇÃO BLUETOOTH UTILIZANDO O • Comunicação de áudio: destinada a acessórios que reprodu-
MÓDULO HC-05 zem o som dos arquivos de áudio de dispositivos, utiliza a to-
pologia P2P (ponto-a-ponto) na qual apenas dois dispositivos
Podemos utilizar uma comunicação de RF (radiofrequência) para comunicam-se entre si;
interagirmos com dispositivos próximos entre si. A comunicação pelo • Transferência de dados: aplicada à transferência de baixa quan-
protocolo Bluetooth é apropriada para comunicações locais sem fio, tidade de dados, utiliza a topologia P2P, muito utilizada para
também chamadas de wireless, utilizando comunicação de RF de baixa transferência de dados entre laptops, smartphones, relógios
potência, se comparada às redes Wi-Fi. para monitoramento de sinais vitais e localização, entre outros
dispositivos;
O protocolo Bluetooth se destina a aplicações mais específicas,
• Localização e outros serviços públicos: consiste em um ponto
por se tratar de um padrão de transmissão de dados de baixa potência,
de acesso no qual o sinal Bluetooth é disponibilizado para mais
em rede sem fio. Ela se destina à comunicação em pequenas distâncias,
de um usuário, fornecendo informações de localização de seto-
operando na faixa de frequência de RF entre 2,4 e 2,485 GHz. O padrão res, serviços públicos e produtos a moradores e visitantes em
do protocolo é definido pelo IEEE 802.15.1. um determinado ponto de uma localidade;
Redes Bluetooth, por serem de baixa potência, possuem alcances • Dispositivos de rede em larga escala: tecnologia Bluetooth de-
que variam entre 1 e 100 metros, dependendo do tipo de dispositivo senvolvida para transferência de dados entre vários dispositi-
utilizado. vos em uma rede. Também identificada como Bluetooth Mesh,
essa topologia Bluetooth foi desenvolvida para aplicação em
De acordo com a Bluetooth SIG Inc. (2019), existem quatro áreas sistemas inteligentes de automação, prédios inteligentes, mo-
de aplicação da tecnologia Bluetooth: nitoramento de dispositivos médicos, entre outras aplicações.

46 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Para conectarmos um dispositivo à uma rede Bluetooth, No modo escravo, o dispositivo IoT está habilitado somente para
precisamos utilizar um módulo de comunicação para interpretar as aceitar a conexão de outros dispositivos a ele. No modo mestre, o dis-
informações do protocolo. positivo IoT pode tanto receber conexões quanto conectar-se a outros
dispositivos.
Entre os módulos de comunicação Bluetooth disponíveis, o
módulo HC-05 mostra-se muito prático para desenvolvimento de A comunicação do módulo HC-05 com a placa Arduino é feita por
dispositivos de IoT. A Figura 23 mostra a aparência do módulo. protocolo serial RS232, pinos Rx e Tx. A Figura 24 mostra as funções dos
pinos do módulo.

GND

EN
RX
TX

VCC
STATE
Figura 24 - Funções dos pinos do módulo HC-05
Fonte: ADAPTADO DE ARDUINO, 2019.
Figura 23 - Módulo HC-05 Bluetooth
Fonte: ELETROGATE, 2019.
O módulo da Figura 23 pode ser utilizado em diversos tipos de
dispositivos IoT. Seu alcance médio é de 10 metros. A comunicação de
um módulo Bluetooth pode ser feita de duas formas: modo mestre ou
modo escravo.

47 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


No quadro são descritas as funções dos pinos do módulo HC-05. Comando Descrição
AT+ORGL Reset para a con guração padrão
Nome Função
AT+RMAAD Remove dispositivos anteriormente pareados
STATE Indicação de estado de funcionamento (deve ser ligado a um LED)
AT+ROLE=1 De ne o modo de operação do módulo como mestre
RX Recepção dos dados da comunicação
AT+RESET Reset do módulo após a de nição do modo de operação
TX Transmissão dos dados da comunicação
AT+CMODE=1 Permite a conexão a qualquer endereço
GND Aterramento
Modo de varredura : padrão, procura por 5 dispositivos
VCC Tensão de alimentação 5V AT+INQM=0,5,10 ou para a varredura após 10 s
EN Alteração entre modo de dados e modo de comandos AT
De ne a senha do módulo mestre, deve ser a mesma
AT+PSWD=1234
do módulo escravo
Quadro 6 - Descrição dos pinos do módulo HC-05
Fonte: ADAPTADO DE COMPONENTS, 2019 AT+INIT Inicializa o per l para transmissão/recepção
AT+INQ Inicializa a varredura por dispositivos Bluetooth
Comandos AT podem ser utilizados para enviar e receber informa-
Quadro 7 - Lista de comandos AT
ções e comandos do módulo. No Quadro 7 seguem alguns comandos
Fonte: ADAPTADO DE ARDUINO, 2019.
AT mais utilizados:
A Listagem 4 mostra um exemplo de código para uma placa Ardui-
no fazer com que um LED acenda, recebendo o comando de um smar-
tphone.

48 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


4.6 CONEXÃO ETHERNET VIA PLACA W5100
sketch_uc8 | Arduino 1.8.10
_ x
Arquivo Editar Sketch Ferramentas Ajuda

A comunicação de rede por RF não é recente, mas sua dissemina-


sketch_uc8

1 #define ledPin 7
2 int state = 0;
3 ção nos dias atuais é um fato novo na tecnologia. Hoje está presente em
4 void setup() {
5
6
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
muitos espaços públicos e privados.
7 Serial.begin(38400); // Velocidade padrão de comunicação do módulo Bluetooth
8 }
9 Além dos padrões de comunicação por RF, ou wireless (sem fio), a
10 void loop() {
11
12
if (Serial.available() > 0){ // Checa se há dados vindo pela porta serial
state = Serial.read(); // Lê os dados da porta serial forma mais básica de nos conectarmos a uma rede é via ligação física,
13 }
14
15 if (state == '0') {
por meio de um cabo de sinal de rede.
16 digitalWrite(ledPin, LOW); // Desliga o LED
17 Serial.println("LED: OFF"); // Envia a mensagem "LED: OFF" para o telefone
18 state = 0; Em muitos dispositivos de IoT utilizaremos comunicações sem fio,
19 }
20
21
else if (state == '1') {
digitalWrite(ledPin, HIGH);
nos padrões de comunicação que acharmos necessários para cada apli-
22 Serial.println("LED: ON");
23 state = 0; cação, mas em alguns casos podemos utilizar dispositivos estáticos, que
24 }
25 }
não precisarão ser deslocados ou transportados, e que estarão próximos a
servidores de rede. Nestes casos, podemos utilizar uma placa de conexão
via cabo de rede para nos comunicarmos com outros dispositivos.
25 Arduino/genuino Uno em COM4

Listagem 4 - Exemplo de código arduino para comunicação Bluetooth De acordo com os dados do fabricante do chipset da placa, WIZnet
Nas linhas 11,12,17 e 22 podemos observar a utilização do coman- Co. (2008), a placa W5100 é um adaptador Ethernet de comunicação
do Serial para enviar e receber as informações, em formato de dados, do com redes de protocolo TCP/IP, velocidade 10/100 Mb e conexão RJ45,
módulo Bluetooth. que utiliza um cabo de sinal proveniente da rede local para se conectar

49 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


à rede e, assim, receber e enviar informações. Este modelo é especifica-
mente utilizado em uma placa Arduino Uno. A Figura 25 mostra a ima-
gem da placa Ethernet W5100.

Figura 26 - Ethernet W5100 e placa Arduino Uno


Fonte: ARDUINO BASICS, 2015.

Na placa W5100 também existe uma segunda função que é a lei-


Figura 25 - Placa ethernet W5100 para Arduino tura e gravação de cartão mini SD. Esta função é muito útil para ar-
Fonte: FILIPEFLOP, 2019. mazenamento e consulta de dados de forma independente na placa
Arduino.
Na imagem da Figura 26, podemos observar a placa Ethernet
W5100 conectada à placa Arduino UNO. O termo Shield também é Para configurarmos a placa W5100, precisamos de informações da
utilizado para nos referirmos às placas padronizadas para ligação aos rede local, na qual conectaremos a placa. Para isso, em um computador
soquetes das placas Arduino, neste caso temos um Shield Ethernet qualquer da rede local, utilizamos o comando ipconfig no prompt de
W5100. comando do sistema operacional Windows.

50 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


sketch_uc8 | Arduino 1.8.10
_ x
Arquivo Editar Sketch Ferramentas Ajuda

sketch_uc8

1 #include <SPI.h>
2 #include <Ethernet.h>
3 // Endereço MAC do shield de Ethernet acoplado ao Arduino
4 byte mac[ ] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
5 IPAddress ip(10, 0, 0, 20); // Endereço IP: muda de acordo com a rede
6 EthernetServer server(80); // cria um servidor na porta 80
Figura 27 - Exibição das configurações da rede local 7
8 void setup()
Fonte: WINDOWS, 2019 9 {
10 Ethernet.begin(mac, ip); // Inicializa o dispositivo de Ethernet
Na Figura 27, são mostradas as configurações de endereço IP, 11 server.begin(); // Começa a “escutar os clientes”
12 }
submáscara de rede e gateway. Essas serão utilizadas para configurarmos
a programação da utilização do shield de rede w5100.

Com essas informações, podemos alterar no código os endereços


12 Arduino/genuino Uno em COM4
configurados para a placa W5100 instalada na placa Arduino. Como
Listagem 5 - Código de configuração da placa W5100
mostra a Listagem 5, na linha 5 temos a instrução para a configuração
As bibliotecas a serem utilizadas são SPI.h e Ethernet.h, elas
do endereço IP da placa.
permitirão a utilização dos comandos para a placa de rede.

O endereço IP deve ser configurado no comando IPAddress


ip(xxx.xxx.xxx.xxx), o último conjunto de números deve ser diferente
do endereço IP obtido do comando ipconfig, para evitar problemas de
conexão. EthernetServer define a porta para o servidor de aplicação WEB.

51 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


• Antena: está presente no TAG e no emissor e é responsável por
FIQUE ALERTA! direcionar a emissão das ondas de radiofrequência.
Ao manipular placas eletrônicas, sempre utilize pulseira e manta Na legislação brasileira, o órgão que regulamenta a utilização do
antiestática, dessa forma evitará descargas eletrostáticas sobre as RFID é a ANATEL (Agência Nacional de Telecomunicações). A ANATEL
placas, o que pode danificá-las seriamente.
homologa faixas de frequências nas quais o RFID pode operar. Essas
faixas para sistemas de identificação são: 119-135 kHz, 13,11-13,36 MHz,
13,41- 14,01 MHz, 433,5-434,5 MHz, 860-869 MHz, 894-898,5 MHz, 902-
4.7 RADIO FREQUENCY IDENTIFICATION (RFID) 907,5 MHz, 915-928 MHz, 2.400-2.483,5 MHz e 5.725-5.850 MHz.
O RFID (Radio Frequency Identification) é um sistema de identifica- No Quadro 8, vemos algumas faixas de frequências e os limites de
ção que utiliza radiofrequência para realizar a captura de dados. intensidade de campo, medidas a uma distância de 3 metros.
O envio de um sinal em RFID é realizado quando um chip recebe
Radiofrequência Intensidade de campo
um sinal de radiofrequência de um módulo emissor e, após receber esse (milivolt por metro)
sinal, o chip envia, também por radiofrequência, um código pré-defini- 902-907,5 MHz 50
do para que o módulo emissor efetue a leitura do código. 915-928 MHz 50
O sistema RFID é composto pelos seguintes componentes: 2.400-2.483,5 MHz 50

• Emissor, ou transceiver: emite o sinal de radiofrequência e recebe 5.724-5.875 MHz 50


o código a ser interpretado; 24,00-24,25 GHz 250
• TAG ou transponder: recebe o sinal emitido pelo emissor, utiliza a Quadro 8 - Faixas de frequências homologadas pela ANATEL
energia do sinal recebido para gerar a emissão de radiofrequência e as intensidades de campo de cada faixa
que enviará o código pré-definido em sua programação; Fonte: ANATEL, 2019.

52 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


A medida da intensidade de campo identifica o quão forte é RFID MODULE
a emissão de ondas eletromagnéticas em uma região, o que é um 3.3v
3.3v
RST (Reset)
RST

dos motivos para a regulamentação pela ANATEL. No caso do RFID, GND


NC
GND (Ground)
NC
MISO

a faixa de frequências entre 24,00 e 24,25 GHz apresenta a maior MOSI


SCK
MISO
MOSI
SDA

intensidade. SCK
SDA

Segundo a ANATEL, o RFID é um equipamento de radiocomunicação Figura 28 - Módulo RFID MF RC522


de radiação restrita e deve ser regulamentado para que haja a certificação Fonte: ARDUINO, 2015.
e homologação de produtos com essa tecnologia. Por ser um dispositivo de baixo custo e de pequenas dimensões,
Em uma aplicação para IoT, podemos utilizar módulos de RFID torna-se muito prático para desenvolvermos uma solução IoT com placa
não homologados pela ANATEL, pois em certos casos a finalidade não Arduino. O módulo utiliza uma interface SPI (Serial Peripheral Interface)
é comercial. para comunicação com a placa Arduino, devendo ser ligada aos pinos
digitais da placa, como por exemplo, os pinos 10, 11, 12 e 13 de uma
Para criarmos uma aplicação IoT com placas Arduino, podemos
placa Arduino UNO. A comunicação SPI é um tipo de comunicação serial
utilizar o módulo RFID modelo MF RC522, que opera na frequência
síncrona, que possui alta velocidade e opera em full-duplex, ou seja,
de 13,56 MHz, regulamentada pela ANATEL, e que realiza a leitura de
mestre e escravo enviam e recebem dados simultaneamente.
cartões e chaveiros RFID. O módulo é mostrado na Figura 28.
No Quadro 9, podemos observar as funções dos pinos mostrados
na Figura 28.

53 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


_
Nome Função sketch_uc8 | Arduino 1.8.10

Arquivo Editar Sketch Ferramentas Ajuda


x

3,3 v Tensão de alimentação de 3,3 V


sketch_uc8

RST Função reset do módulo 1 // (c) Michael Schoeffler 2014, http://www.mschoeffler.de


2
GND Aterramento 3 #include "SPI.h" // Inclui a biblioteca de SPI
4 #include "MFRC522.h" // Inclui a biblioteca de RFID library (https://github.com/miguelbalboa/rfid)
MISO Interface de comunicação SPI (Master input Slave output) 5
6 const int pinRST = 9;
MOSI Interface de comunicação SPI (Master output Slave input) 7 const int pinSDA = 10;
8

SCK Interface de comunicação SPI (clock serial) 9


10
MFRC522 mfrc522(pinSDA, pinRST); // Configura o mfrc522 no Arduino

11 void setup() {
SDA Interface de comunicação SPI (seleção de direção) 12 SPI.begin(); // abre a conexão SPI
13 mfrc522.PCD_Init(); // Inicializa o dispositivo de acoplamento por proximidade

Quadro 9 - Função dos pinos do módulo MF RC522


14 Serial.begin(9600); // Abre a conexão serial
15 }
16
Fonte: SENAI PR (2019) 17 void loop() {
18 if (mfrc522.PICC_IsNewCardPresent()) {

Na Listagem 6 abaixo, temos um exemplo de código, ou sketch, 19


20
// (true (verdadeiro), se RFID tag/card estiver presente) PICC = Placa de Circuito Integrado de Proximidade
if (mfrc522.PICC_ReadCardSerial()) { // true, se RFID tag/card for lido
21 Serial.print("RFID TAG ID: ");
para a leitura de cartões RFID. 22 for (byte i = 0; i < mfrc522.uid.size; ++i) { // Lê o id (em partes)
23 Serial.print(mfrc522.uid.uidByte[i], HEX); // Imprime o id com valores hexadecimais
24 Serial.print(" "); // Adiciona espaço entre os blocos hexadecimais para melhorar a leitura
25 }
26 Serial.println(); // A impressão da id foi concluída.
27 }
28 }
29 }

29 Arduino/genuino Uno em COM4

Listagem 6 - Código de programação módulo RFID

No código da Listagem 6, podemos ver na linha 3 a inclusão das


bibliotecas específicas SPI.h e MFRC522.h, responsáveis pelo funciona-

54 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


mento do módulo com a placa Arduino UNO. Entre as linhas 11 e 14 é 4.8.1 SISTEMA DE LOCALIZAÇÃO GPS
feita a configuração da comunicação do módulo com a placa Arduino, e,
entre as linhas 17 e 25 é realizado a leitura do código RFID e impresso na Um exemplo da funcionalidade dos satélites artificiais é o sistema
tela o valor lido no cartão. de localização GPS (Global Positioning System). O sistema GPS é composto
por 24 satélites que orbitam a Terra a cada 12 horas, enviando informa-
ções sincronizadas via RF, utilizadas para estabelecer localizações na su-
4.8 SATÉLITES E LOCALIZAÇÃO GPS perfície terrestre. A Figura 29 - Constelação de satélites do sistema GPS.
Satélites naturais são corpos celestes que orbitam em torno de
planetas ou asteroides, como a Lua orbitando em torno da Terra.
Satélites artificiais são equipamentos criados pelo homem para
determinados fins. Podem orbitar planetas ou satélites naturais ou
podem ser lançados em determinadas regiões do sistema solar.
Os satélites artificiais são equipamentos complexos, compostos
por estruturas mecânicas e eletrônicas, e possuem diversas finalidades
como previsão climática, mapeamento de regiões, medidas físicas,
transmissão de informações, entre outras.
Neste capítulo, abordaremos onde se localizam e como é realizada
a comunicação entre os satélites artificiais e a Terra. Figura 29 - Constelação de satélites do sistema GPS
Fonte: SENAI DR PR, 2019.

55 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Basicamente, o sinal de RF emitido pelo satélite GPS deve ser mo-
dulado para que seja interpretado pelo dispositivo, a fim de que este
possa interpretar o sinal e transformá-lo em informação que possa ser
utilizada. Um dispositivo de localização por GPS possui ao menos 4 saté-
lites disponíveis para comunicação.

Além dos satélites do sistema GPS, existem muitos outros tipos, Figura 30 - Módulo GPS NEO 6M
com as mais diversas funções. Um tipo de satélite artificial também Fonte: ARDUINO, 2019.
muito utilizado é o satélite para telecomunicações. Com este tipo Para que o módulo GPS funcione adequadamente, devemos
de satélite podemos compartilhar informações com locais que não conectá-lo a uma antena, pois os sinais de RF provenientes dos satélites
possuem infraestrutura para redes de dados e internet. são de baixa potência e a antena auxilia na melhora da recepção dos
Para integrarmos a localização por GPS em um projeto de IoT, sinais de RF. Na Figura 31 podemos observar um modelo de antena
podemos utilizar o módulo GPS Neo 6M. Este módulo possui pequenas apropriada para o módulo.
dimensões e um custo acessível, sendo de fácil implementação em
qualquer projeto. Na Figura 30, é mostrado o módulo GPS Neo 6M.

56 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Nome Função
VCC Tensão de alimentação de 3,3 V
TX Comunicação serial RS232 (Transmissão)
RX Comunicação serial RS232 (Recepção)
GND Aterramento

Quadro 10 - Funções dos pinos do módulo GPS NEO 6M


Fonte: LIMA, 2018.

Figura 31 - Antena conectada ao módulo GPS NEO 6M A Listagem 7 mostra um exemplo de código para localização GPS
Fonte: LIMA, 2018. utilizando o módulo em uma placa Arduino UNO.
Para conectarmos o módulo a um projeto de IoT, devemos conhe-
cer as funções dos pinos para conectá-los às portas corretas da placa
Arduino ou qualquer outro sistema que utilize o módulo. No quadro
abaixo, são mostradas as funções dos pinos do módulo Neo 6M.

57 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


_
sketch_uc8 | Arduino 1.8.10

Arquivo Editar Sketch Ferramentas Ajuda


x
Os dados recebidos e mostrados no terminal do ambiente Ardui-
no possuem um formato chamado de sentença NMEA (National Mari-
sketch_uc8

1
2
/*
Rui Santos
ne Electrinics Association); esta padronização de sentença permite que
3
4
Detalhes do Projeto completo em: https://randomnerdtutorials.com
*/ possamos identificar e separar as informações enviadas pelo módulo.
5
6
7
#include <SoftwareSerial.h>
Na Figura 32, podemos observar um exemplo de formato dos dados en-
8 // Conexão serial com o módulo de GPS
9 SoftwareSerial ss(4, 3); viados ao monitor Arduino.
10
11 void setup(){
12 Serial.begin(9600);
13 ss.begin(9600);
14 }
15
16 void loop(){
17 while (ss.available() > 0){
18 // Recebe os dados do GPS
19 byte gpsData = ss.read();
20 Serial.write(gpsData);
21 }
22 }

22 Arduino/genuino Uno em COM4


Figura 32 - Formato de sentença NMEA
Fonte: RANDON NERD TUTORIALS, 2019
Listagem 7 - Código para o módulo neo 6M para Arduino UNO
Como podemos observar na Figura 32 o formato envia muitas in-
O código da Listagem 7 utiliza a biblioteca SoftwareSerial.h que per- formações em uma única linha. As sentenças iniciam com o caractere $
mitirá a interpretação dos dados enviados pelo módulo à placa Arduino. e cada informação é separada por vírgula. As siglas GP indicam posicio-
A aquisição dos dados de localização GPS é muito simples, namento GPS.
utilizando apenas a variável gpsData para receber os valores lidos na
porta serial da placa Arduino.

58 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Na primeira linha as siglas GPGGA indicam as informações principais Na forma como recebemos as informações da sentença, devemos
sobre a localização GPS. Separamos as informações da seguinte forma: separar os dados antes de exibi-los em uma tela. Para facilitar a separação
desses dados, podemos utilizar a biblioteca TinyGPSPlus.h, que permite
110617: representa o tempo no qual as informações foram obtidas
que façamos uso de funções que fornecem dados específicos, como o
(11:06:16 UTC)
valor da latitude, gps.location.lat(), e da longitude, gps.location.lng().
41XX.XXXXX,N – latitude 41 graus XX.XXXXX’N
Essas funções são mostradas na Listagem 8.
00831.54761,W – longitude 008 graus 31.54761’W _
sketch_uc8 | Arduino 1.8.10 x
1 – qualidade do sinal Arquivo Editar Sketch Ferramentas Ajuda

05 – número de satélites pesquisados sketch_uc8

2.68 – diluição da posição horizontal 1


2
void loop(){
// Essa programação exibe a informação cada vez que a localização é atualizada.
3
129.0,M – altitude em metros acima do nível do mar 4 while (ss.available() > 0){
5 gps.encode(ss.read());
50.1,M – discrepância entre a superfície da geoide e a elipsoide 6 if (gps.location.isUpdated()){
7 Serial.print("Latitude= ");
WGS84 8 Serial.print(gps.location.lat(), 6);
9 Serial.print(" Longitude= ");
Campo vazio - tempo em segundos desde a última atualização de 10 Serial.println(gps.location.lng(), 6);
11 }
dados 12 }
13 }
Campo vazio – Identificação do satélite
*42 – checagem de informação (checksum)

13 Arduino/genuino Uno em COM4

Listagem 8 - Utilização de funções longitude e latitude

59 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


As funções da biblioteca permitem que sejam exibidas somente as
Banda Faixa de frequências
informações de longitude e latitude, entre outras funções.
Banda P 200-400 MHz
Banda S 2.700-3.500 MHz
4.8.2 Satélite para comunicações
3.700-4.200 Mhz
Banda C 4.400-4.700 Mhz
Satélites para comunicações geralmente possuem órbitas esta- 5.725-6.425 MHz
cionárias, ou seja, permanecem fixos em relação a um ponto da Terra e Banda X 7.900-8.400 MHz
possuem altitudes entre 35.800 km e 36.000 km. Para que um satélite Banda Ku1
10,7-11,75 GHz
envie seus dados, ele precisa utilizar bandas de RF. O envio de informa- (Banda PSS)
ções (uplink), e o recebimento de informações do satélite (downlink), Banda Ku2
11,75-12,5 GHz
(Banda DBS)
são realizados em frequências diferentes para não ocorrerem interfe-
Banda Ku3
rências entre o recebimento e a transmissão das informações. No Qua- (Banda Telecom)
12,5-12,75 GHz
dro 11, é mostrada uma lista de bandas para satélites de comunicação. 17,7-21,2 GHz
Banda Ka
Banda K 27,5-31,0 GHz

Quadro 11 - Bandas de frequências para satélites de comunicação


Fonte: LEÃO, 2002.

O padrão idealizado para satélites de comunicação é o VSAT (Very


Small Aperture Terminal). A intensão desse tipo de padrão é a de integrar
localidades terrestres distantes entre si, através do satélite artificial.

60 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Uma rede VSAT é composta por três elementos básicos: estações
remotas; estação mestre (HUB), que tem a finalidade de gerenciar a
rede numa determinada topologia e controlar o acesso ao provedor de
serviço; satélite de retransmissão.

O sistema VSAT utiliza antenas de pequeno diâmetro, menores


VSAT

que 2,5 m para terminais e menores que 4 m para HUBs, implicando em


um baixo custo de implantação. HUB

O satélite é o componente mais crítico em um sistema VSAT. Figura 33 - Sistema VSAT de comunicação
Fonte: SENAI DR PR, 2019.
Havendo problemas em um de seus painéis solares ou no seu sistema
Os satélites de comunicação comerciais podem operar em três
de geonavegação, a comunicação fica impossibilitada. Com isso, a
bandas distintas mostradas no quadro, cada uma das bandas apresenta
tecnologia aplicada em satélites é a mais avançada, tentando minimizar
um tipo de problema característico, implicando em uma desvantagem
falhas técnicas durante sua vida útil.
para cada tipo de banda.
A Figura 33 mostra um exemplo de sistema de comunicação VSAT.
Banda Downlink Uplink Problemas
C 3,7 a 4,2 GHz 5,92 a 6,42 GHz Vulnerável a interferências terrestres
Ku 11,7 a 12,2 GHz 14,0 a 14,5 GHz Bloqueio de sinal por chuva
Bloqueio de sinal por chuva e
Ka 17,7 a 21,7 GHz 27,5 a 30,5 GHz custo elevado do equipamento

Quadro 12 - Bandas de comunicação comerciais


Fonte: LEÃO, 2002.

61 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Satélites de comunicação são muito utilizados para aplicações 4.9.1 Sensor de luminosidade (LDR)
militares, científicas e comerciais. Mesmo sendo uma solução de custo
elevado e susceptível a fatores técnicos e climáticos, mostra-se como Sensores do tipo LDR (Light Dependent Resistor) são analógicos e
uma solução muito útil para comunicação de dados em localizações denominados de foto-resistores, pois possuem resistências variáveis. Esta
geográficas remotas, sem infraestrutura para telecomunicações. variação é ocasionada pela intensidade luminosa a qual estão expostos.
Quando a luz incide sobre o LDR, o valor da sua resistência diminui. Com
esse comportamento podemos utilizar a variação em sua resistência para
4.9 SENSORES EM ARDUINO informar à placa Arduino quando um ambiente está iluminado ou escuro.
Além dos módulos e shields já mencionados até aqui, podemos Na Figura 34, temos um modelo do componente LDR.
utilizar diversos tipos de sensores em uma placa Arduino. Como vi-
mos no Capítulo 1.1, temos sensores do tipo analógico e digital. Ve-
remos neste capítulo alguns exemplos de utilização de sensores em
placas Arduino.

Figura 34 - LDR (Light Dependent Resistor)


Fonte: SHUTTERSTOCK, 2019.
Um projeto com LDR, utilizando placa Arduino, está ilustrado na
Figura 35.

62 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Este projeto funciona acionando o LED quando a luz do ambiente
está apagada, e desligando o LED quando a luz está acesa. Na Listagem

GND

RX0 -0
SCL
50A
AREF

~11
13
12

~10
~9
8

7
~6
~5
4
~3
2
TX0 1
L

9, temos um modelo de código para realizar a leitura do sensor LDR e


TX
RX ON

executar a ação pretendida.


_
POWER ANALOG IN

RESET
IOREF
x

Gnd
Gnd
3V3

VIN

A2
A3
A4
A0

A5
A1
sketch_uc8 | Arduino 1.8.10

5V
Arquivo Editar Sketch Ferramentas Ajuda

sketch_uc8

1 const int ledPin = 13;


2 const int ldrPin = 0;
3
4 void setup() {
5 Serial.begin(9600);
6 pinMode(ledPin, OUTPUT);
7 pinMode(ldrPin, INPUT);
8 }
9
10 void loop() {

Figura 35 - Projeto Arduino com LDR 11


12
int ldrStatus = analogRead(ldrPin);
if (ldrStatus <= 200) {
Fonte: ADAPTADO DE ARDUINO, 2019. 13
14
digitalWrite(ledPin, HIGH);
Serial.print("It is DARK, so turn on the LED: ");

Componentes:
15 Serial.println(ldrStatus);
16 }
17 else {

• Placa Arduino UNO 18


19
digitalWrite(ledPin, LOW);
Serial.print("It is BRIGHT, so turn off the LED: ");
20 Serial.println(ldrStatus);
• Protoboard 21 }
22 }

• Resistor de 10 kΩ
• Resistor de 220 Ω
• LED 22 Arduino/genuino Uno em COM4

• LDR Listagem 9 - Código Arduino para sensor LDR

63 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


O sensor LDR tem um de seus pinos ligado à entrada analógica
LM35
A0, conforme a linha 2, e o outro pino recebe alimentação de 3,3 V ou 5
V, dependendo do modelo. Um resistor de 10 kΩ deve ser ligado entre
o GND e o pino A0. O LED é ligado a um resistor limitador de corrente
1 4-20V
de 220 Ω e na saída digital 13 da placa, conforme a linha 1, com o outro 2 OUT
3 GND
pino ligado ao GND. O sinal de tensão no pino A0 será convertido em
Figura 36 - Sensor de temperatura LM35
informação digital, com valores entre 0 e 1023.
Fonte: SENAI DR PR, 2019.
Um exemplo da utilização do sensor de temperatura pode ser vi-
4.9.2 Sensor de temperatura sualizado na Figura 37.

Utilizando um sensor específico, podemos fazer com que uma


placa Arduino receba informações de temperatura ambiente. O sensor

GND

RX0 -0
SCL
50A
AREF

~11
13
12

~10
~9
8

7
~6
~5
4
~3
2
TX0 1
LM35 é muito utilizado para essa finalidade, por ser de simples ligação e
RESET 1

ICSP2

10

15

20

25

30
1

5
F G H I J
L

de baixo custo. Ele é do tipo analógico e utiliza uma faixa de tensões para
TX
RX ON
LM
35

1
informar as diferentes temperaturas do ambiente no qual está inserido.

A B C D E
ICSP

A Figura 36 mostra o encapsulamento do sensor LM35.


POWER ANALOG IN

RESET
IOREF

Gnd
Gnd
3V3

VIN

A2
A3
A4
A0

A5
A1
5V
Figura 37 - Montagem do circuito
Fonte: ADAPTADO DE ARDUINO, 2019.

64 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


3 int maxtemp = -100,mintemp = 100;
4 int i;
5
6 void setup()
7 {
8 Serial.begin(9600);
9 pinMode(13, OUTPUT);
10 pinMode(12, OUTPUT);
11 pinMode(11, OUTPUT);
12 }

No exemplo, o sensor LM35 medirá a temperatura ambiente e os 13


14 void loop()
15 {

LEDs indicarão em qual faixa de temperatura está o ambiente. 16


17
for (i = 0;i<=7;i++){
samples[i] = (5.0 * analogRead(pin) * 100.0) / 1024.0;
18 a.tempc = tempc + samples[i];
19 delay(100);
Componentes: 20
21
}

22 tempc = tempc/8.0;

• Arduino UNO
23 tempf = (tempc * 9)/ 5 + 32;
24 if (tempc > maxtemp) {maxtemp = tempc;}
25 if (tempc < mintemp) {mintemp = tempc;}
26
• Protoboard 27
28
if (tempc < 25)
{
29 digitalWrite(13, HIGH);
• Resistores de 330 Ω 30
31
digitalWrite(12, LOW);
digitalWrite(11, LOW);
32 }

• Resistor de 1 kΩ 33
34
if (tempc > 28)
{
35 digitalWrite(12, HIGH);

• LM35 36
37
digitalWrite(13, LOW);
digitalWrite(11, LOW);
38 }

• LEDs
39
40 if ((tempc > 25) && (tempc < 28))
41 {
42 digitalWrite(11, HIGH);
Programamos a placa Arduino com o código da Listagem 10 43
44
digitalWrite(12, LOW);
digitalWrite(13, LOW);

abaixo.
45 }
46
47 Serial.print(tempc,DEC);
48 Serial.print(" Cels., ");
_ 49 Serial.print(tempf,DEC);
sketch_uc8 | Arduino 1.8.10 x 50 Serial.print(" Fahr. -> ");
Arquivo Editar Sketch Ferramentas Ajuda 51 Serial.print(" Min: ");
52 Serial.print(mintemp,DEC);
53 Serial.print(" Max: ");
sketch_uc8
54 Serial.println(maxtemp,DEC);
1 int pin = 0; 55
2 int samples[8]; 56 tempc = 0;
3 int maxtemp = -100,mintemp = 100; 57 delay(1000);
58 }
4 int i;
5
6 void setup()
7 {
8 Serial.begin(9600);
9 pinMode(13, OUTPUT);
10 pinMode(12, OUTPUT); 58 Arduino/genuino Uno em COM4
11 pinMode(11, OUTPUT);
12 }
13 Listagem 10 - Código Arduino para sensor LM35
14 void loop()
15 {
16 for (i = 0;i<=7;i++){
17 samples[i] = (5.0 * analogRead(pin) * 100.0) / 1024.0;
18 a.tempc = tempc + samples[i];
19 delay(100);
20
21
}
65 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ
22 tempc = tempc/8.0;
23 tempf = (tempc * 9)/ 5 + 32;
No código podemos medir a temperatura em unidades Celsius e 4.9.3 Sensor de presença
Fahrenheit. A linha define o pino A0 como entrada de sinal analógico
do sensor LM35. A linha 14 define uma sequência de oito repetições O sensor de presença é utilizado quando desejamos monitorar
de leitura do sinal do sensor. Na linha 15, temos a conversão do sinal a passagem ou presença de uma pessoa que se desloca em uma
analógico convertido em sinal digital e o valor decimal entre 0 e determinada localização próxima ao sensor. O sensor de presença PIR
(Passive Infrared) é sensibilizado por radiação infravermelha, invisível ao
1023 convertido em valor decimal de medida de temperatura, que é
olho humano, mas emitida pela dissipação de calor, que ao ser detectada
armazenado na variável samples[i]. ]. A variável tempc armazena a
pelo sensor, faz com que ele acione um sinal indicativo em sua saída.
soma das oito medidas feitas durante a repetição.
O sensor de movimento modelo HC-SR501 é um tipo de sensor
Os LEDs estão ligados aos pinos 11, 12 e 13 da placa. Se a
de sinal digital, ou seja, indica apenas dois estados em sua saída: 0 V
temperatura for menor que 25° C, o LED da porta 13 permanecerá aceso.
(low), quando detecta movimento e 3,3 V (high), quando não detecta
Se a temperatura aumentar para a uma faixa de valores entre 25 e 27° C, movimento. Este sensor possui dois ajustes, ilustrados em laranja na
o LED da porta 11 acenderá. Finalmente, se a temperatura for maior que Figura 38, sendo que o da direita permite alterar sua sensibilidade e o
28° C, o LED da porta 12 acenderá. da esquerda o atraso de tempo.
Na linha 18, temos a média das temperaturas medidas em Celsius e
na linha 19 temos a variável tempf recebendo o resultado da conversão
do valor Celsius para Fahrenheit.

Figura 38 - Sensor de presença HC-SR501


Fonte: RANDOM NERD TUTORIALS, 2019.

66 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


A Figura 39 mostra um exemplo de utilização do sensor com uma • Placa Arduino UNO
placa Arduino UNO. Neste exemplo, o sensor envia o sinal para a placa • Protoboard
Arduino, que está programada para apagar o LED caso um movimento • Sensor de presença HC-SR501
seja detectado, quando identifica a presença de uma pessoa. Quando o • LED
sensor não detecta movimento, o LED permanece aceso. A Figura 40 mostra a pinagem padrão do sensor. A alimentação
Componentes: do sensor, nos pinos 1 e 3, é fornecida pela tensão de 5 V e pelo GND da
placa Arduino. O sinal de saída do sensor, pino 2, é ligado ao pino 2 do
conjunto de entradas digitais da placa Arduino.
GND

RX0 -0
SCL
50A
AREF

~11
13
12

~10
~9
8

7
~6
~5
4
~3
2
TX0 1
RESET 1
ICSP2

TX
RX ON

ICSP

POWER ANALOG IN
RESET
IOREF

Gnd
Gnd
3V3

VIN

A2
A3
A4
A0

A5
A1
5V

Figura 39 - Ligação do sensor HC-SR501 à placa Arduino UNO


Fonte: ADAPTADO DE ARDUINO, 2019.
VCC 1 3 GND

OUT 2

Figura 40 - Pinagem do sensor HC-SR501


Fonte: SENAI DR PR, 2019.

67 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


_
Na Listagem 11, é mostrado um exemplo de código para Arduino. sketch_uc8 | Arduino 1.8.10 x
Arquivo Editar Sketch Ferramentas Ajuda

Na linha 1 é definido o valor do pino 13 como saída digital para o LED.


Na linha 2, é definido o valor do pino 2 como entrada digital, que recebe
sketch_uc8

1 int led = 13; // A porta onde o LED foi instalado

o sinal do sensor de presença. Esses valores são utilizados na linha 6 2


3
int sensor = 2; // A porta onde o sensor foi instalado
int state = LOW; // por definição, quando não há movimentação detectada
4 int val = 0; // variável que recebe o status do sensor (valor)
para definir a variável led como saída e na linha 7 para definir a variável 5
6 void setup() {
sensor como entrada. 7 pinMode(led, OUTPUT); // Inicializa o LED como uma Saída
8 pinMode(sensor, INPUT); // inicializa o sensor como uma entrada
9 Serial.begin(9600); // inicializa a porta serial
10 }
Além de acender o LED, quando não houver detecção de movi- 11
12 void loop(){
mento, e de apagar o LED, quando o movimento for detectado, este có- 13 val = digitalRead(sensor); // Lê o valor do sensor
14 if (val == HIGH) { // Checa se o sensor foi acionado (HIGH)
digo envia as mensagens das linhas 16 e 24 para que o monitor serial do 15 digitalWrite(led, HIGH); // Liga o LED
16 delay(100); // aguarda por 100 milisegundos
ambiente de programação do Arduino exiba as mensagens, em tempo 17 if (state == LOW) {
18 Serial.println("Motion detected!");
real, na tela do computador durante o funcionamento do projeto. 19
20
state = HIGH; // atualiza a variável para HIGH (ligado)
}
21 }
22 else {
23 digitalWrite(led, LOW); // Desliga o LED
24 delay(200); // aguarda por 200 milisegundos
25 if (state == HIGH){
26 Serial.println("Motion stopped!");
27 state = LOW; // atualiza a variável para LOW (desligado)
28 }
29 }
30 }

30 Arduino/genuino Uno em COM4

Listagem 11 - Código Arduino para sensor HC-SR501

68 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


CASO RELATADO RECAPITULANDO
Primórdios do Arduino Neste capítulo, conhecemos alguns modelos de placa Arduino, suas

O programa de graduação do Instituto de Design de Ivrea, na Itália,


características e sua utilização para aplicações dos mais diversos tipos.
necessitava de circuitos eletrônicos para realizar a prototipagem de Aprendemos sobre sua estrutura de programação e comandos básicos,
modelos de design. Com a finalidade de controlar um ambiente ou e, em seguida, exploramos os tipos mais comuns de comunicação que
objeto interativo, o circuito deveria ser simples, de fácil programação
podem ser utilizados em Arduino, como comunicação via TCP/IP via rede
e que permitisse ser instalado em diversos tipos de ambientes, sem
maiores dificuldades. Um grupo de cinco pesquisadores do instituto Wi-Fi e cabeada, Bluetooth e RFID. Conhecemos como a identificação
se responsabilizou por criar um circuito com tais características, e, em GPS pode ser aplicada em Arduino e como funciona a comunicação de
2005, surge a primeira placa Arduino, como resultado do trabalho dos
dados via satélite. Finalmente, aprendemos sobre a ligação de sensores
cinco pesquisadores. Hoje a placa Arduino é largamente difundida nos
meios acadêmicos, e em comunidades informais de eletrônica, robótica à placa Arduino e como são programados os códigos para realizarem
e diversos outros tipos de prototipagem. suas leituras.

69 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


5 LINGUAGEM C

A linguagem C, criada em 1972 por Dennis Ritchie do Bell Os programas em C são formados por módulos ou peças,
Laboratories, destinava-se a escrever compiladores e sistemas chamadas funções. Podemos estruturar funções diferentes para formar
operacionais. Foi desenvolvida a partir de duas linguagens anteriores, um programa em C, mas também podemos utilizar as funções presentes
a BCPL e a B. Tornou-se muito popular na década de 70, quando ficou em suas bibliotecas padrão.
amplamente conhecida por ser a linguagem de desenvolvimento
Neste capítulo, aprenderemos sobre sua estrutura, suas instruções
do sistema operacional Unix e foi conquistando rapidamente várias
básicas e algumas estruturas de repetição.
plataformas de hardware, já que independe deste. (DEITEL, 2011)

Como permite que aplicativos sejam executados, com poucas


modificações, em diferentes plataformas de hardware, a linguagem
C tornou-se uma ferramenta importante para o desenvolvimento de
softwares para as mais diversas aplicações.

71 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


5.1 ESTRUTURA BÁSICA Na linha 2, temos uma diretiva do pré-processador C. O caractere
# diz ao pré-processador que inclua o conteúdo do cabeçalho-padrão
Utilizaremos um exemplo de programa em C para entendermos a
de entrada/saída <stdio.h>, que contém informações sobre fun-
sua estrutura básica. Na Listagem 12, é mostrado um exemplo simples
ções, como printf.
de um programa para escrever a frase: Bem-vindo ao C.
Na linha 5, a instrução int main( void ) faz parte de qualquer
programa feito em C. Os parêntesis depois de main indicam que main
1 /* Primeiro Programa em C */
2 #include <stdio.h> é um bloco de programa, chamado de função. E todos os programas
3
4 /* Função que inicia o programa */
feitos na linguagem C começam sua execução na função main. A pala-
5 int main( void ) vra-chave int indica que a função main deve retornar um valor numé-
6 {
7 printf( "Bem-vindo ao C!\n " ); rico inteiro. O comando (void) indica que a função main não receberá
8
nenhum tipo de informação.
9 return 0; /* Indica que o programa terminou com sucesso */
10 } /* Fim da função main */
A chave { indica o início do corpo de programação e a chave } in-
Listagem 12 - Programa simples em C dica o fim. O corpo de programação é também chamado de bloco e é
Explicando a estrutura do programa, temos na linha 1 um comen- parte mais importante do código. Nele, a lógica de programação será
tário entre /* e */, utilizado para fazer observações durante a progra- desenvolvida e estruturada.
mação do código. Essas observações não interferem no programa. Po-
demos também utilizar // quando quisermos realizar um comentário
em uma única linha.

72 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


O comando printf indica uma instrução a ser realizado pelo No exemplo, nas linhas 7, 8 e 9, são declaradas três variáveis:
computador. No caso do exemplo, a mensagem entre parêntesis Bem- numero1; numero2 e soma. O comando int, antes de cada va-
-vindo ao C será impressa na tela. O caractere ; indica o fim da instru- riável, indica que serão recebidos valores inteiros para cada uma delas.
ção printf. Os caracteres \n, no final da mensagem, indicam que a Existem outros tipos de dados em variáveis, mas, por enquanto vamos
linguagem C deve seguir com o cursor para uma nova linha, após impri- utilizar somente o exemplo.
mir a mensagem.
O comando scanf é utilizado para ler um valor digitado pelo
A instrução return(0) na linha 9 indica, quando usada no final usuário, é um tipo de função que lê um dado digitado no teclado. Na
de main, a saída de uma função, e o valor (0) indica que o programa foi linha 12, o argumento %d é um controle de formato que indica que o
concluído com sucesso. número deve ser inteiro e o argumento &numero1 possui um ope-
rador de endereço & que informa o endereço de memória no qual a
variável está armazenada.
5.2 OPERAÇÕES MATEMÁTICAS
A operação matemática é realizada pela instrução soma = nu-
A linguagem C é muito utilizada para a realização de cálculos, por mero1 + numero2, na qual a variável soma recebe o resultado da
permitir uma sintaxe simples das expressões matemáticas. soma entre as variáveis numero1 e numero2.
Para entendermos como uma operação matemática é realizada
em linguagem C, vamos utilizar o exemplo da Listagem 13.

73 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


1 /* Programa Soma em C */
Operação em C Operador Expressão Expressão
2 #include <stdio.h> aritmético algébrica em C
3
4 /* Função que inicia o programa */ Adição +
5 int main( void )
a+7 a+7
6 {
7 int numero1; /* primeiro número a ser digitado */
Subtração - b-c b-c
8 int numero2; /* segundo número a ser digitado */
9 int soma; /* recebe o valor da operação */ Multiplicação * d×e d*e
10
11 printf("Digite o número 1 \ n"); Divisão / x/y x/y
12 scanf("%d", &numero1); /* leitura do número 1 */
13 Resto da divisão entre
14 printf("Digite o número 2\n"); % R mod s R%s
15 scanf("%d", &numero2); /* leitura do número 2 */ 2 inteiros (modulo)
16
17 soma = numero1 + numero2; /* soma recebe o valor do resultado */ Quadro 13 - Operadores aritméticos em linguagem C
18
19 printf("A soma é igual a %d\n", soma); /* imprime o valor soma */ Fonte: SENAI DR PR, 2019.
20
21 return 0; /* indica que o programa terminou com sucesso */
22 } /* Fim da função main */ Podemos combinar expressões algébricas utilizando parêntesis,
como por exemplo, multiplicar a pela quantidade b – c: a * (b – c).
Listagem 13 - Programa de soma em linguagem C
Para realizarmos operações aritméticas precisamos seguir algumas
Na linha 19 é realizada a impressão do resultado na tela. A instru- regras para programação:
ção %d\n indica que um número inteiro será exibido pela variável soma. • Operadores em expressões entre parêntesis são calculadas
primeiro;
No quadro são mostradas as operações e seus operadores aritmé-
• Operações de multiplicação, divisão e módulo são realizadas
ticos no formato da linguagem C, assim como alguns exemplos de ex- primeiro;
pressões algébricas. • Operações de adição e subtração são avaliadas em seguida.

74 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Nas expressões abaixo podemos observar duas formas diferentes
CASO RELATADO
de obter o mesmo resultado.
Problema matemático
a=x*b–c (1)
Um aluno, em uma disciplina de programação de computadores,
a = (x * b) – c (2) estava empenhado em programar uma equação matemática para seu
programa. Criou, a partir da fórmula do livro, a seguinte expressão em
Na expressão 1 será realizado o cálculo x * b primeiro e depois será
linguagem C: x = ((a + b) - c/2*(d-1)).
subtraído c, o cálculo sempre segue da esquerda para a direita.
O aluno percebeu que sua expressão não obtinha o resultado esperado.
Na expressão 2, o parêntesis será calculado primeiro. Uma obser- Verificou várias vezes a expressão do livro e não encontrou erro nas
vação sobre o parêntesis é que este força a realização do cálculo sepa- operações. Depois de alguns minutos de análise, percebeu que, na
verdade, havia deixado de utilizar parêntesis no termo (a + b) - c/2.
radamente. É uma ferramenta muito útil para realizarmos contas mais
Dessa forma, a nova expressão ficou com a seguinte sintaxe: x = (((a
complexas, como da expressão 3. + b) – c /2)*(d-1)), mudando completamente o resultado matemático
da expressão. Observando esse caso, podemos ver a importância da
a = (((x-y)/z)*k) (3) utilização correta dos parêntesis em expressões matemáticas, pois
expressões muito simples podem nos confundir e exigir algum tempo
Na expressão 3, será primeiramente realizada a subtração x – y, da nossa análise.
cujo resultado será dividido pelo valor z e a solução será multiplicada
pelo valor k. Dessa forma, os cálculos são realizados dos parêntesis mais
internos para os mais externos.

75 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


5.3 TIPOS DE VARIÁVEIS Quadro 14 temos os tipos de variáveis mais comuns, declaradas
em linguagem C. Quando declaramos uma variável inteira, como no
Para que possamos trabalhar com valores e palavras em linguagem exemplo abaixo:
C, precisamos declarar o que chamamos de variáveis. A função das
int numero1; /* primeiro número inteiro*/
variáveis é facilitar a programação, pois evitam comandos repetitivos.
Assim podemos declarar uma variável, que pode assumir diversos Esta variável, chamada numero1, está pronta para receber qual-
valores, de acordo com sua função no código. quer valor de número inteiro.

Quando precisamos ler um valor digitado no teclado e associar


Formato
Variável Função
I/O esse valor à variável, utilizamos a instrução:
char Guarda um caracter %c
scanf(“%d”, &numero1);
Int Guarda um número inteiro %d
Quando precisamos exibir na tela o valor dessa variável, utilizamos
oat Guarda um número real %f
a instrução:
void Tipo vazio -
Guarda um número real printf(“%d é o valor digitado do número 1”,
double
com precisão maior que %lf numero1);
o tipo oat
Observe que na leitura ou na exibição do valor da variável, deve-
Quadro 14 - Tipos de variáveis em linguagem C
mos INDICAR O formato de entrada e saída ou formato I/O, %d, específi-
Fonte: SENAI DR PR, 2019.
co para este tipo de variável, conforme o QUADRO 13.

76 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


5.4 TOMADA DE DECISÃO IF Operadores
na álgebra
Operador em
Linguagem C
Exemplo em
Linguagem C
Signi cado

Em algum momento, no desenvolvimento do código de progra- Operadores de igualdade

mação, precisaremos de um comando de decisão que examine alterna- = == X == Y X igual a Y

tivas diferentes com base nos parâmetros e execute as condições dadas ≠ != X != Y X diferente de Y

de acordo com um resultado obtido. Operadores relacionais


> > X>Y X maior que Y
A instrução if é comumente utilizada para executarmos uma con-
< < X<Y X menor que Y
dição de tomada de decisão. Para que possamos estruturar a instrução
≥ >= X >= Y X maior ou igual a Y
if corretamente, precisamos utilizar operadores que fornecerão a con-
≤ <= X <= Y X menor ou igual a Y
dição apropriada para condições específicas. No Quadro 15, podemos
Quadro 15 - Operadores em Linguagem C
observar a utilização dos operadores para a linguagem C.
Fonte: SENAI DR PR, 2019.

FIQUE ALERTA!

É muito comum, ao digitarmos as linhas de código do programa,


ocorrerem erros de sintaxe. Erros de sintaxe são falhas que aparecem
durante a compilação do código fonte, gerados pela digitação incorreta.
Para evitar erros de sintaxe, devemos ficar sempre atentos às instruções
digitadas em cada linha do código, para que não ocorram erros de
digitação ou uso incorreto de instruções.

77 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


No Quadro 14, podemos visualizar os operadores de igualdade, Na Listagem 14, temos um exemplo de aplicação da instrução if. No
indicados para identificar uma condição de igualdade ou desigualdade exemplo, o programa realiza a leitura de dois números inteiros e, após isso,
entre dois valores, e os operadores relacionais, indicados para identificar compara os dois valores através das instruções if. Como os valores perten-
se um valor é maior ou menor que outro, ou os valores podem, além de cerão obrigatoriamente a uma ou mais condições if, quando satisfizerem
serem maiores ou menores, serem iguais. a condição, será impressa na tela a mensagem correspondente à condição
1 #include <stdio.h> verificada para os dois números.
2
3 int main(void)
4 { Como a instrução if executa uma ação somente quando a condição
5 int numero1; /* primeiro número inteiro */
6 int numero2; /* segundo número inteiro */ for verdadeira, ou seja, somente quando a condição é atendida. Caso não
7
8 printf("Digite dois números: "); seja, ela é desprezada.
9 scanf("%d%d", &numero1, &numero2); /* Lê dois inteiros */
10 if (numero1 == numero2){
11 printf("%d é igual a %d\n", numero1, numero2); Podemos utilizar uma estrutura de seleção para indicar uma ação, caso
12 }
13
14
if (numero1 != numero2){
printf("%d é diferente de %d\n", numero1, numero2);
a condição não seja verdadeira. Essa estrutura é if...else, que permite
15
16
}
if (numero1 < numero2){
executar uma ação quando a condição for verdadeira, ou outra quando for
17 printf("%d é menor que %d\ n", numero1, numero2);
18 } falsa. Na Listagem 15, temos um exemplo de utilização dessa estrutura.
19 if (numero1 > numero2){
20 printf("%d é maior que %d\n", numero1, numero2);
21 }
22 if (numero1 <= numero2){
1 if (numero1 >= numero2){
23 printf("%d é menor ou igual a %d\n", numero1, numero2); 2 printf("número 1 maior ou igual ao número 2");
24 } 3 } /* nal da estrutura if */
25 if (numero1 >= numero2){
26 printf("%d é maior ou igual a %d\n", numero1, numero2); 4 else {
27 } 5 printf ("número 1 não é maior ou igual a 2");
28 return (0);
29 }/* Fim do programa */ 6 } / * nal da estrutura else * /

Listagem 14 - Uso da condição if na linguagem C Listagem 15 - Uso da estrutura else em linguagem C

78 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


5.5 ESTRUTURA DE REPETIÇÃO WHILE 1 #include <stdio.h>
2
Uma estrutura de repetição permite que uma ação seja repetida até 3 int main(void)
4 {
que uma determinada condição deixe de ser verdadeira.
5 int contador = 1; /* valor de inicialização da repetição */
6 while ( contador <= 100 ) { /* condição de repetição */
A Listagem 16 mostra um exemplo de aplicação da estrutura while.
7 printf ("%d\n",contador); /* mostra o valor atual do contador */
8 contador++;
1 numero = 3; 9 } /* m da repetição while */
2 while ( numero != 50 ) { 10 return 0;
3 numero++; 11 }
4 } /* m da instrução while */
Listagem 17 - Estrutura de repetição while com contador
Listagem 16 - Uso da estrutura de repetição while em linguagem C A expressão da linha 3, numero++, é equivalente a numero =
Na Listagem 16 temos a variável numero recebendo o valor 3, na numero + 1. Significa que, dentro da estrutura de repetição, a variável
linha 2 a instrução while define que, enquanto a variável numero for partirá do valor inicial 3 até o valor final 49, quando então a repetição
diferente de 50, a variável numero será incrementada (somada) de uma será interrompida.
unidade. Uma estrutura de repetição muito utilizada é a repetição por
contador. Neste tipo de repetição, ela é executada um determinado
número de vezes, até que o contador atinja determinado valor. Na
Listagem 17, é mostrado um exemplo deste tipo de repetição.

No exemplo, é atribuído o valor 1 à variável contador, isso para


que na instrução while o valor inicial seja 1. Na linha 6, é definido que

79 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


a repetição seja executada até que a varável contador receba o valor
1 numero = 3;
100. Na linha 7, é realizada a impressão do valor atualizado da variável 2 while ( numero != 50 ) {
contador. Na linha 8, o valor atribuído a variável contador recebe 3 numero++;
4 } /* m da instrução while */
um incremento de 1 a cada repetição.
Listagem 18 - Estrutura de repetição for em linguagem C
CURIOSIDADES Na linha 7 temos o formato da instrução for, composta por três
partes:
Muitos sistemas operacionais que utilizamos em nossos dispositivos
e computadores são, parcial ou totalmente, feitos em linguagem C. O • contador = 3: Definimos o valor inicial 3 para a variável
sistema operacional UNIX, criado em 1960, utilizou a linguagem C para ser
contador;
desenvolvido. Atualmente, sistemas operacionais como Windows, Linux e
Android têm grande parte de sua origem na linguagem C. • contador <= 100: Estabelecemos a condição de que a
variável contador receba valores de 3 a 100;
• contador++: O valor da variável contador é incrementado de 1
unidade a cada repetição.
5.6 ESTRUTURA DE REPETIÇÃO FOR
A estrutura de repetição for funciona de forma semelhante à SAIBA MAIS
estrutura while, mas na for podemos introduzir na mesma instrução o
Para desenvolver seus conhecimentos em programação utilizando a lingua-
valor recebido pela variável, a condição a ser verificada a cada repetição
gem C, você pode acessar o link abaixo e participar de desafios de progra-
e o incremento da variável. Na Listagem 18, podemos observar um mação da URI Judge:
exemplo de estrutura de repetição com a instrução for, que fornecerá o https://www.urionlinejudge.com.br/judge/en/login
mesmo resultado da repetição while da Listagem 17.

80 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


5.7 OPERADORES DE IGUALDADE ( = ) E ( == ) Devemos tomar cuidado, pois o compilador não diferencia o uso
dos operadores de igualdade, portanto não avisará nenhum erro quan-
É muito comum nos confundirmos na utilização dos operadores de do forem utilizados de forma incorreta.
igualdade = e ==. Quando utilizamos o operador = estamos atribuindo
um valor a uma variável, ou seja, estamos gravando um valor no espaço de
memória da variável. Quando utilizamos == estamos comparando o valor RECAPITULANDO
de uma variável a um valor que será obtido ou definido pelo programa. Neste capítulo, aprendemos sobre a estrutura básica para um pro-
grama em linguagem C. Aprendemos sobre como converter operações
1 if ( senha == 7 ){
matemáticas básicas em linguagem de código C para que os programas
2 printf("Aceso liberado");
possam realizar as operações. Conhecemos os tipos de variáveis que
Listagem 19 - Uso do operador de igualdade ==
utilizamos durante a programação e como cada uma delas é definida.
Na Listagem 19, a utilização da igualdade está correta, a mensagem Exploramos as estruturas de repetição WHILE e FOR conhecendo a di-
“Acesso Liberado” somente será impressa quando a variável senha ferença entre as duas e sua utilidade para realizarmos qualquer tipo de
receber o valor numérico 7. Na Listagem 20, o uso errado da condição de contagem. E, finalmente, aprendemos a diferença no uso entre os ope-
igualdade faz com que qualquer valor diferente de zero seja considerado radores de igualdade = e == da linguagem C.
verdadeiro e a mensagem “Acesso Liberado” sempre aparecerá.

1 if ( senha = 7 ){
2 printf("Acesso liberado");

Listagem 20 - Uso do operador de igualdade =

81 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


6 REDES DE COMPUTADORES

Precisamos de um meio que nos permita enviar e receber dados, 6.1 NOMENCLATURAS DE REDE E INTERNET
simultaneamente, para que possamos compartilhar informações. Para
isso, utilizamos as estruturas de rede, que permitem nos conectar a Para entendermos melhor o funcionamento de uma rede, devemos
outros computadores. dividi-la em partes e utilizar nomes para identificar cada uma dessas
partes. Os nomes de cada parte são termos técnicos que qualquer
Tanto em redes locais como na utilização da WEB, as estruturas de
técnico ou engenheiro pode identificar.
rede permitem que um computador, em uma determinada localização,
conecte-se a outro que está localizado a poucos metros ou a milhares de
quilômetros da sua localização.

Neste capítulo, são apresentados alguns conceitos básicos sobre


redes de computadores.

83 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


6.1.1 Endereço IP
O endereço IP (Internet Protocol) é uma identificação única para
cada dispositivo conectado em uma rede local. Não existem, porém,
números de IP distintos para todos os dispositivos e computadores INTERNET

disponíveis no mundo. Em uma rede doméstica, existem dois tipos de


endereço IP: o endereço local, visto por todos os computadores da rede
local, e o endereço global, que é visto pelos computadores conectados MODEM

à internet, fora da rede local.

O endereço IP local identifica cada um dos dispositivos ligados a


uma rede local. Os dispositivos desta rede podem se comunicar entre si.
ROTEADOR
Um modem ou roteador liga uma rede local à uma rede global por meio
do endereço IP global do modem ou roteador. Isso permite que a rede
local possa trocar informações com redes externas e com a internet.
COMPUTADOR

GND

RX0 -0
SCL
50A
AREF

~11
13
12

~10
~9
8

7
~6
~5
4
~3
2
TX0 1
RESET 1

ICSP2
NOTEBOOK
A Figura 41 mostra um exemplo de conexão entre uma rede local e a
L

TX DESKTOP / CABO
WIRELESS
RX ON

1
ICSP

internet. Na figura podemos observar que o limite entre a internet e a POWER ANALOG IN

RESET
IOREF

Gnd
Gnd
3V3

VIN

A0

A2
A3
A4
A5
A1
5V
rede local é o modem. ARDUINO
LIGA/DESLIGA

Figura 41 - Conexão de uma rede local com a internet


Fonte: SENAI DR PR, 2019.

84 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


6.1.3 Endereço MAC
CURIOSIDADES

Você sabia que o endereço IP, além da sua representação decimal, na forma Diferente do endereço IP, o endereço MAC (Media Access Control)
como normalmente o conhecemos, como por exemplo 192.168.0.1, possui é único para qualquer dispositivo ou computador com capacidade de
também uma representação binária?
conexão de rede. É uma identificação física e inalterável, gravada na
Por exemplo, o endereço 192.168.0.1 é representado na sua forma binária
memória ROM do hardware da interface Ethernet. Esse tipo de endereço
como 11000000.10101000.00000000.00000001, ou seja, cada segmento
possui 1 byte de 8 bits, por isso é chamado octeto. Então, o endereço IP é útil para diferenciarmos sistemas físicos conectados em rede.
possui 4 octetos, com cada um deles podendo assumir valores decimais
entre 0 e 255.

6.1.4 HTML
HTML (Hypertext Markup Language) é uma linguagem utilizada
6.1.2 Network Address Translation (NAT) na internet para exibir páginas web. A linguagem HTML permite que
Os roteadores criam redes isoladas, fornecendo endereços IP sejam desenvolvidas interfaces interativas para usuários web. Dessa
locais aos computadores e dispositivos dessa rede. Para conectar um forma, os usuários podem acessar diferentes conteúdos interligados
computador ou dispositivo a redes externas, é preciso utilizar o NAT por links, dentro de uma mesma página web, bastando para isso clicar
através do roteador da rede local. O NAT permite que um computador nos disponíveis. O HTML representou uma revolução na forma como
externo à sua rede solicite uma conexão a um dispositivo local, acessamos os conteúdos da internet, por facilitar a navegação para
possibilitando que esse dispositivo receba ou envie informações. usuários sem muita experiência em informática.

85 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


6.1.5 HTTP 6.1.7 DNS
HTTP (Hypertext Transfer Protocol) é o protocolo de comunicação O DNS (Domain Name System) funciona como um índice de um
para a internet, responsável pela definição da estrutura das informações livro. Podemos ler o índice do livro e ir diretamente para a página que
que trafegam pela web. O protocolo HTTP define como a página será nos interessa, sem precisar folheá-lo até encontrarmos o texto que
exibida e se foi recebida e reconhecida com sucesso. desejamos.

Quando digitamos um endereço em um navegador web, por


6.1.6 DHCP exemplo, sistemafiep.org.br, o servidor DNS verifica em uma tabela de
A função do DHCP (Dynamic Host Configuration Protocol) é facilitar endereços IP qual é o associado ao endereço digitado, em seguida envia
a conexão de dispositivos em uma rede local. Ao nos conectarmos a o IP ao navegador para que este consiga acessar o servidor no qual está
uma rede local, não precisamos configurar manualmente um endereço o endereço URL digitado.
de IP, pois uma solicitação DHCP é enviada ao roteador, que permitirá o
uso de um endereço IP disponível. SAIBA MAIS

FIQUE ALERTA! Conheça alguns detalhes sobre endereços IP e servidores DNS, acessando o
link e assistindo ao vídeo disponibilizado pela Khan Academy: https://www.
Ao conectarmos um dispositivo à uma rede com servidor DHCP, devemos khanacademy.org/computing/computer-science/internet-intro/internet-
desabilitar qualquer endereço IP fixo, pois este pode ser igual a um endereço works-intro/v/the-internet-ip-addresses-and-dns
que está sendo utilizado na rede do servidor DHCP a qual desejamos nos
conectar, podendo causar problemas de conexão nessa rede.

86 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


6.1.8 Nomenclaturas de área 6.1.9 Redes Industriais
Para identificarmos a abrangência das redes, as classificamos de As redes industriais são estruturadas de forma diferente, se com-
acordo com seu alcance. Seguem abaixo as classificações de rede em paradas às redes que utilizamos em estabelecimentos comerciais, espa-
relação à sua abrangência: ços públicos e em nossa residência.

• PAN (Personal Area Network): redes de curto alcance e de baixo Em uma rede industrial podemos ter diferentes tipos de dispositi-
desempenho. Por exemplo, a conexão entre dois smartphones vos, sensores e computadores compartilhando a mesma rede, mas com
ou um smartphone e um computador; alguns protocolos de comunicação diferentes. A conexão e o gerencia-
• LAN (Local Area Network): redes onde as conexões são feitas em mento destes diferentes protocolos tornam as redes industriais mais
uma sala ou em um prédio. Possui extensão de até aproximada- complexas.
mente 200 metros;
Na Figura 42, temos a estrutura organizacional de uma rede indus-
• CAN (Campus Area Network): redes de alcance médio. Por exem- trial, disposta em forma de pirâmide, a qual é conhecida como Pirâmide
plo, a conexão entre dois prédios, com extensão de até aproxi-
da Automação. Por meio dela, são mostrados todos os níveis presentes
madamente 5 quilômetros;
em uma indústria e como eles se comunicam entre si através dos dife-
• MAN (Metropolitan Area Network): redes nas quais a comunica-
rentes protocolos de rede que podem estar presentes.
ção será efetuada entre locais diferentes em uma mesma cidade.
Possui extensão de até aproximadamente 50 quilômetros;
• WAN (Wide Area Network): redes de longa distância, nas quais
duas cidades distantes entre si, em quaisquer pontos do globo ter-
restre, comunicam-se. Possui extensão acima de 50 quilômetros.

87 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


• Camada de Apresentação: formatação, semântica e sintaxe
Níveis de pirâmide Protocolos

Nível 5:
das informações. Permite a interpretação da informação e é a
camada responsável pela criptografia;
Administração de recursos da empresa. Gerenciamento
Neste nível encontram-se so ware para Corpora vo
gestão de vendas e financeira Mainframe Ethernet
MAC
Nível responsável pela programação e pelo planejamento
de produção, realizando o controle, agendamento e a
Nível 4:
Gerenciamento de planta
TCP/IP
• Camada de Sessão: responsável por controlar a comunicação
logísca de suprimentos. Workstaon Ethernet
MAC
TCP/IP
entre sistemas, agrupa mensagens, coordena a transferência de
Permite a supervisão e omização de processo. Nível 3:
Normalmente possui banco de dados com
informações relavas ao processo.
Supervisão
Workstaon, PC, IHM ControlNet, dados entre as camadas e sincroniza a troca de dados;
Profibus FMS,
Fieldbus HSE
• Camada de Transporte: responsável por gerenciar a comunicação
Nível onde se encontram os equipamentos que Nível 2:
executam o controle automáco centralizado Controle
ou não das avidades da planta. CLP, PC, CNC, SDCD
Fieldbus H1

Nível de chão-de-fábrica, máquinas


CAN
Profibus DP, PA entre dois sistemas;
e componentes da planta. Neste Nível 1: HART
nível também se encontram os Disposi vos de campo, sensores e atuadores AsI
equipamentos que executam
controle automáco distribuído.
Sensores digitais e analógicos LonWorks
InterBus • Camada de Rede: responsável por gerenciar o roteamento e o
tráfego de dados pela rede;
Figura 42 - Pirâmide da automação
Fonte: ADAPTADO DE SANTOS, 2012. • Camada de Enlace de Dados: responsável por garantir que os
As redes industriais são padronizadas pela norma OSI (Open dados no local de destino sejam exatamente os mesmos da
Systems Interconnection), que define as camadas de rede e como elas origem, evitando que dados colidam durante a comunicação;
se comunicam entre si. • Camada Física: responsável pela comunicação ou transporte dos
As camadas de rede padrão OSI são as seguintes: dados a nível de bits, em um circuito de comunicação. Conecta
componentes como modems, conectores etc.
• Camada de aplicação: interface entre o protocolo de
Na figura abaixo, podemos observar a organização da sequência
comunicação e o aplicativo que solicita e/ou recebe dados da
rede para o usuário; de cada camada em uma rede OSI, que é organizada em ordem
crescente de 1 a 7.

88 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Camada 7 Aplicação
Apresentação Internet
Camada 6
Camada 5 Sessão
Camada 4 Transporte
Camada 3 Rede
Camada 2 Enlade de Dados
Camada 1 Física

Figura 43 - Organização das camadas no padrão OSI Mesh Network Topology


Star Network Topology
Fonte: SENAI DR PR, 2019. Fully Conected Network Topology
Dependendo do protocolo de comunicação, nem todas as camadas
serão utilizadas. Isso dependerá do tipo de aplicação de cada protocolo.
Ring
Em redes industriais, podemos organizar as conexões físicas da rede
de formas diferentes, chamadas de topologia de redes. Na Figura 44, po-
demos observar alguns dos diferentes tipos de topologia de redes. Common Bus Topology

Cada topologia deve ser aplicada conforme o tipo de rede que será Figura 44 - Topologia de redes
desenvolvida. Por exemplo, em uma rede doméstica, onde conectamos Fonte: SENAI DR PR, 2019.
computadores, smartphones e smartTVs à internet, utilizamos a topolo- Abaixo segue uma breve descrição das topologias da Figura 44:
gia Estrela, na qual um nó central gerencia a comunicação entre várias
• Topologia Estrela: todos os dispositivos ou computadores são
máquinas e o acesso à internet.
conectados a um nó central (hub), que controla toda a comu-
nicação, distribuindo os dados entre os dispositivos que funcio-
nam independentemente;

89 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


• Topologia Barramento: todos os dispositivos compartilham da
CASO RELATADO
mesma linha de comunicação, ou seja, toda comunicação é in-
terligada e, consequentemente, muito suscetível a falhas; Conexão de rede

• Topologia em Anel: é um tipo de conexão ponto-a-ponto, na O técnico de TI de uma transportadora foi acionado para resolver um
qual cada dispositivo da rede é conectado a outro, fechando a problema de conexão de rede, no qual todo o departamento de emis-
conexão entre o último e o primeiro dispositivos, permitindo re- são de conhecimento de entrega havia sido afetado. Nenhum dos com-
dundância e continuidade; putadores do setor conseguia acessar a rede local, o que paralisou todo
o departamento.
• Topologia em Malha (Mesh): os dispositivos estão interligados
Ao chegar ao local, o técnico de TI, percebendo que todos os computa-
entre si por mais de uma conexão e existem vários caminhos que
dores estavam sem conexão, supôs que o problema estava concentra-
podem ser utilizados para enviar e receber dados, caso ocorra do em um único ponto da rede. Dirigiu-se com rapidez até o armário no
algum problema com a conexão entre os dispositivos; qual estava instalado o switch que interligava todos os computadores
• Topologia em Árvore (Hierárquica): os dispositivos estão inter- do departamento ao servidor principal da rede. Observou que todo o
painel indicador não mostrava nenhum tráfego e que os cabos estavam
ligados por uma estrutura hierárquica, onde há um nó central,
todos ligados corretamente. Dessa forma, o técnico desligou o switch
chamado também de raiz, que está ligado a todos os outros ele- e aguardou alguns segundos para religá-lo. Feito isso, o técnico pode
mentos da rede e sub-redes; observar que os LEDS do painel passaram a indicar o tráfego normal na
rede, indicando que o problema estava resolvido. Ao se certificar que
• Topologia Híbrida: o layout dos dispositivos é desenhado para
todos os computadores do departamento voltaram a acessar a rede, o
que se adequem a uma grande rede. É composta por duas ou
técnico pode concluir sua ordem de serviço.
mais topologias diferentes, como por exemplo, Barramento-Es-
trela, Anel-Estrela, e assim por diante.

90 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


RECAPITULANDO
Neste capítulo, iniciamos nossos estudos conhecendo as nomen-
claturas mais utilizadas em redes e na internet, conhecendo a impor-
tância do endereço IP, da NAT e do endereço MAC. Aprendemos sobre
a importância do HTML para a navegação de páginas web, entendemos
o funcionamento do HTTP como protocolo de comunicação na internet
e vimos como o DHCP facilita a conexão em redes locais e o DNS atua
na identificação dos servidores onde estão as informações que procura-
mos. Estudamos a abrangência da cobertura das redes em cada classifi-
cação e aprendemos os conceitos básicos de redes industriais.

91 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


7 ROBÓTICA

A robótica, hoje largamente difundida, começou seu desenvol- 7.1 BREVE HISTÓRICO E EVOLUÇÃO
vimento tecnológico no século 20, com o objetivo de tornar possível
A origem da palavra robô é da palavra tcheca robotnik, que significa
a substituição da mão de obra humana em determinadas atividades
servo. O termo foi utilizado pela primeira vez em 1923, por Karel Copek,
na indústria.
fazendo referência a um homem mecânico, personagem de sua peça
Hoje a robótica está presente não somente na indústria, mas
teatral intitulada RUR (Rosumovi Univerzální Roboti), lançado no Brasil
em locais públicos, residências, estabelecimentos comerciais e onde
com o título A fábrica de Robôs. Há relatos da construção de autômatos
mais puder ser utilizada como ferramenta de trabalho.
antes do século XX, como homens mecânicos construídos por relojoeiros
Neste capítulo, vamos estudar os conceitos básicos dos sistemas para apresentações em feiras, no Japão da era medieval.
robóticos industriais que são referência para outros tipos de robôs.

93 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


A construção de robôs começou se tornar consistente no início • 1963: O robô comercial Versatran é introduzido no mercado,
do século XX, com a finalidade de melhorar a produção industrial e a produzido pela American Machine & Foundruy Company (AMF).
qualidade dos produtos da época. Abaixo, mostram-se os períodos e Utiliza diversos tipos de braços manipuladores;
fatos que marcaram o desenvolvimento da robótica. • 1969: O homem pisa na Lua utilizando tecnologia de
manipuladores para coleta de amostras e executar pequenas
• Século IV a.C. (Grécia): Os primeiros princípios da robótica,
tarefas, como escavações por controle remoto;
relatados por Aristóteles, enfatizando o conceito mestre e
escravo na relação do homem com os instrumentos de trabalho; • 1974: Primeiro robô industrial controlado por computador,
produzido pela empresa Cincinnati Milacron, capaz de mover
• Século XVIII: A revolução industrial traz consigo novas formas
objetos na linha de montagem. Aprofundam-se a pesquisa e o
de energia, novas ferramentas e instrumentos mecanizados.
desenvolvimento de sensores;
Máquinas podem controlar uma série de ações sequenciadas;
• 1980: A General Motors, em Detroit, utiliza um robô industrial
• 1928: Um robô mecânico abre uma exposição de modelos
com inteligência eletrônica capaz de reconhecer e selecionar
técnicos em Londres;
diferentes componentes em uma tela transportadora.
• 1940: O escritor Isaac Asimov estabelece leis simples para a
Podemos observar que, neste breve histórico, ocorreram várias
robótica;
evoluções tecnológicas consideráveis na robótica. Muitas adaptações
• 1948: É criado nos Estados Unidos o primeiro robô manipulador
continuam sendo feitas nos dias de hoje, para manter a produção
copiador bidirecional, chamado Modelo 1. Operado por controle
competitiva e com menores custos.
remoto.
• 1959: O primeiro robô industrial é apresentado por George
Devol e Joseph F. Engelberger, capaz de ser reprogramado para
executar diferentes tarefas;

94 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


SAIBA MAIS

Segundo o escritor Isaac Asimov, os robôs devem respeitar as seguintes leis:

Lei Zero: um robô não pode causar danos à humanidade, ou por omissão,
permitir que a humanidade corra riscos;

Primeira Lei: um robô não pode causar danos a nenhum ser humano, ou por
omissão, permitir que um ser humano corra riscos;

Primeira Lei: um robô deve obedecer às ordens dadas pelos seres humanos,
exceto quando estas ordens entrarem em conflito com a Primeira Lei;

Segunda Lei: um robô deve proteger sua própria integridade, desde que Figura 45 - Braço robótico industrial marca KUKA modelo KR Quantec ultra
para isso não ocorram conflitos com a Primeira e Segunda Leis.
Fonte: KUKA, 2019.

7.2.1 Base fixa


7.2 SISTEMAS ROBOTIZADOS
É a fixação da base do robô em paredes, teto, plataformas, piso,
Para que um robô realize suas tarefas, ele precisa de uma estrutura e
entre outros. Fornece a sustentação necessária ao robô.
de ferramentas adequadas. Para um robô industrial, temos basicamente
quatro componentes estruturais: base fixa, braço articulado, unidade de
controle e dispositivo de programação. A Figura 45 mostra um modelo
de braço robótico industrial.

95 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


7.2.2 Raio e nuvem de trabalho As informações do raio e da nuvem de trabalho do robô são
importantes para o desenvolvimento do projeto do espaço físico, no
qual o robô irá atuar.

FIQUE ALERTA!

Ao trabalhar em ambientes onde existem sistemas robotizados, preste


atenção à sinalização de segurança do local para não correr risco de sofrer
acidente mecânico ao entrar nas áreas de trabalho dos robôs.

7.2.3 Braço articulado


Figura 46 - Raio (esquerda) e nuvem de trabalho (direita) de um braço robótico O braço articulado realiza os movimentos dos equipamentos.
Fonte: SENAI DR PR, 2019.
Para que possa se movimentar de forma satisfatória no seu campo de
Na Figura 46, são mostradas duas características físicas de um típico trabalho, o robô é composto de alguns elementos como juntas e elos.
braço robótico industrial. O raio de trabalho define o ângulo de trabalho As juntas podem ser prismática ou linear, parafuso, esférica, cilíndrica
que é coberto pelo movimento do braço, de 340° para o braço da figura, e/ou planar. Os elos são as partes rígidas do braço robótico. A Figura 47
o órgão terminal não está instalado no desenho da figura. A nuvem de mostra a distribuição dos elos e juntas em um braço robótico.
trabalho representa a região tridimensional no entorno do braço robótico,
na qual ocorrerá a movimentação das partes componentes do robô.

96 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Junta

Elo

Elo

Órgão terminal Órgão terminal Órgão terminal


Garra Soldagem Usinagem
Figura 48 - Órgãos terminais do braço robótico
Fonte: SENAI DR PR, 2019.
Figura 47 - Elos e juntas em um braço robótico Para medirmos a precisão do trabalho executado pelo órgão
Fonte: SENAI DR PR, 2019.
terminal, podemos fazer uso dos conceitos de exatidão e repetibilidade,
Para que se movimente, o braço robótico é composto de atuado- ilustrados na Figura 49. Exatidão é a capacidade do robô em manter a
res de juntas, acionados por comandos eletromecânicos, pneumáticos posição no lugar marcado e repetibilidade é a capacidade de repetir a
ou hidráulicos. mesma tarefa sem variar sua posição.
Para localizar suas posições, as juntas possuem sensores, geralmen-
te do tipo encoder, que informam as localizações específicas de cada uma
delas, permitindo que seu controlador tenha o controle das posições.

O órgão terminal é a ferramenta que será utilizada no braço ro- EXATIDÃO BOA EXATIDÃO BOA EXATIDÃO RUIM EXATIDÃO RUIM
REPETIBILIDADE BOA REPETIBILIDADE RUIM REPETIBILIDADE BOA REPETIBILIDADE RUIM
bótico. Para cada função existe um órgão terminal específico. A Figura
Figura 49 - Exatidão e repetibilidade
48 mostra três exemplos de órgãos terminais. Fonte: SENAI DR PR, 2019.

97 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


O órgão terminal é fixado no punho do braço robótico e possui
CASO RELATADO
três juntas, normalmente giratórias. A Figura 50 mostra a localização do
punho em um braço robótico. Robôs na Medicina

O avanço tecnológico, na área da robótica, levou os robôs às salas de


cirurgia. Cirurgias antes consideradas ergonomicamente difíceis de
serem feitas pelos cirurgiões hoje podem ser realizadas com o auxílio
de robôs. No Brasil, de junho de 2008 a abril de 2010, pacientes de um
hospital particular de São Paulo concordaram em serem os primeiros
pacientes operados por robô, em cirurgias abdominais no Brasil.

O robô utilizado possuía quatro braços, uma câmera e um console


para ser comandado pelo cirurgião. A sala de operações era adaptada
à utilização do robô. Os procedimentos foram realizados com
sucesso, mostrando vantagem, em relação às cirurgias convencionais,
diminuição no tempo de recuperação dos pacientes devido às incisões
menores e melhoria na ergonomia do cirurgião que instrui o robô
durante a operação.
Figura 50 - Punho do braço robótico
Fonte: SHUTTERSTOCK, 2019 Fonte: http://www.scielo.br/pdf/abcd/v26n3/07.pdf

98 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


7.2.4 Unidade de controle O controle em malha aberta consiste em não utilizar sensores
para realimentar o sistema, ou seja, caso o manipulador realize um
A unidade de controle transforma os dados fornecidos pelo movimento errado, o sistema não consegue corrigir a sua trajetória. A
operador em sinais elétricos que controlam a movimentação do vantagem desse tipo de sistema é seu baixo custo de investimento, por
braço robótico. Essa unidade também fornece informações sobre o ser mais simples, sua velocidade e alta capacidade de repetições.
posicionamento e o estado de funcionamento do sistema. Uma unidade
O controle em malha fechada utiliza sensores para a realimentação
de controle é mostrada na Figura 51.
do sistema, caso a posição do manipulador não seja a desejada. O
sistema, por meio de sensores, identifica a falha da posição e a corrige
automaticamente. Sistemas em malha fechada são mais complexos e,
consequentemente, mais caros, porém proporcionam maior precisão
e torque, podendo realizar tarefas que exijam procedimentos mais
qualificados e complexos.

Figura 51 - Unidade de controle


7.2.5 Dispositivo de programação
Fonte: NTC, 2019.
Para que o braço robótico realize sua tarefa, primeiramente
Para que a unidade controle o braço robótico, ela precisa que seu
precisamos definir qual será sua trajetória de trabalho e como utilizará
sistema de gerenciamento utilize um método para controle dos motores
seu órgão terminal. Utilizamos, para isto, os dispositivos de programação,
e sensores do braço. Existem dois sistemas de controle: controle em
que funcionam como interfaces entre o operador e a unidade de
malha aberta e controle em malha fechada.

99 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


controle, transmitindo as informações necessárias para que o sistema 7.3.1 Geometria
trabalhe corretamente. Na Figura 52, podemos observar três tipos de
dispositivos de programação. Os diferentes graus de liberdade de um robô, forma de analisarmos
a limitação física de seus movimentos, dependem das combinações
rotacionais e lineares possíveis de serem realizadas mecanicamente.

Segundo Rosário (2005), Classificamos os manipuladores em cinco


classes geométricas principais, segundo o tipo de junta de revolução ou
rotação (R) e junta de translação ou prismática (P): cartesiana, cilíndrica,
JOYSTICK
TEACH PENDANT TECLADO esférica (ou polar), de revolução (ou articulada) e SCARA (Selective
Figura 52 - Dispositivos de programação Compliant Articulated Robot for Assembly). Assim, utilizamos um
Fonte: SENAI DR PR, 2019.
código com três letras, cada uma identificando as três articulações mais
próximas da base do robô, por exemplo.
7.3 CLASSIFICAÇÃO
A classificação de um robô industrial é feita de acordo com 7.3.1.1 Coordenadas Cartesianas
o número de juntas, o tipo de controle, o tipo de acionamento e a
geometria. É usual classificar os robôs pelas três juntas mais próximas ovimenta-se em linha reta, deslocando-se horizontalmente e
da base do robô. verticalmente, como o modelo da Figura 53.

100 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


P P

P P
P

Figura 53 - Coordenadas cartesianas


Fonte: SENAI DR PR, 2019. Figura 54 - Coordenadas cilíndricas
Fonte: SENAI DR PR, 2019.
Orientam-se em função de pontos de coordenadas cartesianas x,
Possui uma área de trabalho maior, se comparada a coordenada
y e z, e possuem três articulações prismáticas (deslizantes), sendo então
cartesiana, mas seu controle é mais complexo. Seus graus de liberdade
classificadas como PPP (Prismático- Prismático- Prismático).
são classificados como RPP (Rotacional-Prismático-Prismático).

7.3.1.2 Coordenadas Cilíndricas


7.3.1.3 Coordenada Polar ou Esférica
Utilizam a combinação de movimentos lineares com movimentos
Possui dois movimentos rotacionais e um linear deslizante, como
rotacionais, descrevendo um espaço de movimento cilíndrico. Possui
mostra a Figura 55. Neste tipo de coordenada, a área de trabalho é maior
uma junta de movimento rotacional e outras duas de movimento linear.
que na coordenada cilíndrica, mas possui a desvantagem de ter uma
A Figura 54 mostra os movimentos deste tipo de coordenada.
rigidez mecânica menor.

101 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Classificados como RRP (Rotacional-Prismático-Prismático), são R
mais complexos em relação ao controle de seu movimento de rotação.

R R

R
Figura 56 - Coordenadas de revolução ou articulado
Fonte: SENAI DR PR, 2019.
Codificados como RRR (Rotacional-Rotacional-Rotacional), pos-
Figura 55 - Coordenadas esféricas ou polares
suem três juntas de revolução.
Fonte: SENAI DR PR, 2019.

7.3.1.4 COORDENADAS DE REVOLUÇÃO OU ARTICULADO 7.3.1.5 SCARA

Semelhante ao braço humano, esse tipo de coordenada foi Utilizado, geralmente, para trabalhos de montagem, possui duas
desenvolvido para atender às necessidades da indústria automobilística. juntas de revolução e uma deslizante. Possui menor área de trabalho, se
Possui a maior área de trabalho entre todas as coordenadas, mas com comparado ao modelo esférico, e seu terceiro eixo possui movimento
baixa rigidez mecânica. A Figura 56 mostra o arranjo das coordenadas linear vertical. É codificado como RRP (Rotacional-Rotacional-Prismático).
de revolução. A Figura 57 mostra os eixos do robô SCARA.

102 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


R
R
7.3.2.2 ACIONAMENTO HIDRÁULICO

Este tipo de acionamento proporciona maior força, mas com menor


velocidade de trabalho. São aplicados em trabalhos de movimentação
P
de grandes cargas.

7.3.2.3 ACIONAMENTO PNEUMÁTICO

Utiliza o ar comprimido para realizar seus movimentos. Possuem


alta velocidade, mas forças menores. Muito aplicado na manipulação
Figura 57 - Robô scara
Fonte: SENAI DR PR, 2019. de peças pequenas.

7.3.2 Tipo de Acionamento 7.3.3 Aplicação


Segundo Rosário (2005), a forma de acionamento de um braço Podemos classificar os robôs de acordo com sua aplicação
robótico pode ser classificada de acordo com a transformação de energia específica. Muitos fabricantes disponibilizam seus modelos de robôs de
em acionamento elétrico, hidráulico e pneumático. acordo com as áreas de aplicação de cada modelo.

7.3.2.1 ACIONAMENTO ELÉTRICO 7.3.3.1 MONTAGEM


Utiliza servomotores para realizar seus movimentos. Os servomotores Muito utilizados na indústria automotiva, sua função é unir
possuem encoders para identificar seu posicionamento e controlar sua componentes, realizando montagens completas ou parciais, de acordo
velocidade. Podem alcançar grandes velocidades de trabalho. com o tipo de linha de montagem.

103 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


7.3.3.2 INSPEÇÃO 7.3.3.6 TRANSPORTE

Detectam falhas em produtos, utilizando diversos tipos de sensores Podem ser robôs fixos, possuindo robustez para o transporte
para realizar a avaliação de inspeção. Podem detectar falta de peças ou local de cargas, ou podem ser robôs móveis, menores controlados
peças erradas em um conjunto. por sistemas automatizados para deslocar ferramentas, coleta e
armazenamento de cargas.
7.3.3.3 USINAGEM
7.3.3.7 MANIPULAÇÃO
Este tipo de robô realiza processos de usinagem, possuindo uma
ferramenta de corte como órgão terminal. São muito utilizados para a movimentação de peças pesadas,
em setores de fundição e forja, realizando empilhamento de material,
7.3.3.4 PINTURA
alimentação de máquinas e remoção de peças.
São utilizados em ambientes de trabalho mais insalubres, devido
à grande quantidade de elementos químicos suspensos no ar, pela CURIOSIDADES
dispersão da tinta no processo de pintura.
Atualmente, além das aplicações industriais, a robótica á aplicada em
7.3.3.5 SOLDAGEM funções domésticas. Existem robôs para as mais diversas aplicações, como
limpeza de animais de estimação, limpeza de pisos e piscinas, cortadores de
Realiza diversos tipos de soldagem. Muito aplicado na indústria grama, e muitos outros fins. Confira alguns tipos de robôs comercializados,
automobilística, aumenta a qualidade da solda devido ao alto grau de acessando o link: https://www.robotshop.com/en/

padronização obtido. Aumenta a segurança em áreas de soldagem,


substituindo completamente a mão de obra humana.

104 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


7.4 PROGRAMAÇÃO Linguagem Signi cado
AL Assembly Language
Segundo Rosário (2005), a maioria dos fabricantes de robôs utiliza AML A Manufacturing Language
uma linguagem específica. Cada fabricante disponibiliza uma linguagem MCL Machine Control Language
e um sistema de programação próprios. Existem comandos básicos, SIGLA Sigma Language
que são comuns a todos os robôs industriais, e recebem instruções VAL Victor’s Assembly Language
padronizadas, de acordo com a linguagem desenvolvida para este fim. VAL II Victor’s Assembly Language II
No Quadro 15 - Linguagens de programação de robôs industriais LM Language Manipulation
são mostradas as diferentes linguagens utilizadas para a programação IRL Institute Robot Language

de robôs industriais. AUTOPAS Automated Parts Assembly System


ROBOT-BASIC Robot Basic
MAL Multipurpose Assembly Language
LPR Langage de Programmation de Robot
SERF Sankyo Easy Robot Formula
ROBEX Robot Exapt
PLAW Programming Language of Arc Welding
RAPT Robot APT
ROL Robot Language

Quadro 15 - Linguagens de programação de robôs industriais


Fonte: SENAI DR PR, 2019.

105 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Todas as linguagens obedecem aos mesmos conceitos: Comando Signi cado

• Inteligência limitada; Movimentação do robô, sem considerar


Move eixo ou tipo de movimento, a melhor
• Controle dos movimentos; trajetória será calculada pelo robô
Move C Movimento circular do robô
• Comunicação e processamento de dados;
Move L Movimento linear do robô
• Capacidade de possuir sensores avançados.
Open Abre a garra do órgão terminal
Close Fecha a garra do órgão terminal
7.4.1 Comandos de programação Return Retorno a uma subrotina
For Repetições de instruções do programa
Os comandos de programação devem disponibilizar os recursos
Test Teste do programa
necessários para que o robô realize suas tarefas. Para Rosário (2005), as
Accel Aceleração ou desaceleração do sistema
instruções são dadas por linhas de comandos. A sintaxe dos comandos
Speed Velocidade de movimento do braço
varia de acordo com cada fabricante, e cada comando executa uma
Reset Reestabelecer o sistema
função específica. No Quadro 16, temos alguns exemplos de comandos
Break Pausa
básicos utilizados para a programação de robôs. Esses comandos são
Exit Sair
apresentados em um formato generalizado de sintaxe. Linguagens
Stop Parar
específicas podem possuir nomenclaturas diferentes para o mesmo
Servo Inicializa motores servos do robô
significado.
Quadro 16 - Comandos de programação de robôs
Fonte: SENAI DR PR, 2019.

106 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


7.4.2 Método de Programação online Origem Programa
P1
---
Neste tipo de programação, o operador movimenta o braço do
P2 Move_linear P1
robô, guiando-o pela trajetória a ser percorrida pelo braço robótico. P3 Move_linear P2
Move_joint P3
Enquanto o operador movimenta o braço robótico, o robô grava Move_circ P4
P4
a trajetória e as ações em sua programação. Para que o operador P8
P5
Move_circ P5
Move_joint P6
movimente o braço robótico, ele utiliza o teach pedant, ou joystick, P6 Move_joint P7
P7
para comandar os movimentos. Para Rosário (2205), todo o processo de
Figura 58 - Programação ponto a ponto
programação on-line é realizado a partir do objeto a ser trabalhado. Fonte: SENAI DR PR, 2019.
Este método de programação é útil em muitos processos porque
A Figura 58 mostra a trajetória de uma programação ponto a
facilita o entendimento da ação que será executada após a programação
ponto, mostrando também o programa resultante desta trajetória.
e permite a avaliação dos limites físicos do trabalho a ser executado.

Por necessitar de interrupção na produção, para realizar o processo


de programação do robô, este método torna-se inviável em certas 7.4.3 Método de Programação off-line
plantas industriais. Outra desvantagem é a possibilidade dos pontos e
A programação off-line é realizada por meio de um software,
trajetórias não possuírem grande precisão, dependendo dos ângulos e
disponibilizado pelo fabricante ou por uma empresa especializada, no
trajetos.
qual o programador utiliza um modelo em 3D, similar aos softwares
CAD, para simular a linha de trabalho na qual o braço robótico está
inserido. Segundo Rosário (2005), a programação off-line possibilita o

107 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


planejamento de tarefas, ambientes e ferramentas sem a necessidade • Internos (proprioceptivos): fornecem informações sobre a
de interromper o trabalho do braço robótico. Nesse ambiente, é possível atuação do robô, são sensores componentes de sua estrutura;
simular os movimentos do robô e a execução da atividade, o que é muito • Externos (exteroceptivos): fornecem informações sobre o
vantajoso por não necessitar de um robô real, pois o software realiza ambiente que circunda o robô, podem ser utilizados para
toda a simulação. Após definidos os movimentos e ações que o robô segurança, limitação de atuação, informação sobre outros
deve executar, o software gera um arquivo de programação, que será componentes do sistema.
enviado para o robô real. Para obtermos informações sobre posicionamento das partes
componentes do braço robótico, através do posicionamento de seus
Este tipo de programação possui a vantagem de não interromper
atuadores, é comum utilizarmos sensores do tipo encoder, ópticos ou
o trabalho do robô, ou interromper por períodos menores, além de
magnéticos. A função dos encoders é a de transformar a rotação angular
diminuir o tempo de contato do operador com o robô, o que garante
de um eixo em sinal em forma de pulsos de onda quadrada. Encoders
maior segurança. Geralmente, os softwares que fazem a programação
ópticos possuem boa precisão e baixo custo, podem ser incrementais ou
podem ser integrados a sistemas CAD/CAM.
absolutos e são muito utilizados para informar posição e velocidade de
rotação. Sensores magnéticos são indicados para medida de velocidade
7.5 SENSORES de rotação de eixos. Na Figura 59, são mostradas as estruturas básicas
para os dois tipos de encoders.
Os sensores permitem ao robô fazer uma leitura do ambiente de
trabalho e de sua atuação na execução da ação programada. Os sensores
utilizados em sistemas robotizados são classificados, conforme ROSÁRIO
(2005), em dois tipos principais:

108 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Disco
A B I A B para identificar o posicionamento correto do sistema. Este processo é
LED Marca ópco Sensor magnéco
chamado de inicialização de posição.

Fototransitores N O encoder óptico absoluto é mais complexo e de maior custo de


fabricação, mas, em contrapartida, dispensa o processo de inicialização
Eixo do Eixo do S Rotor
magnéco
de posição. Seu sinal é, geralmente, codificado em código gray (código
motor motor
binário reduzido).
Construção simplificada Construção simplificada
de um encoder ópco de um encoder magnéco
Figura 59 - Modelo de sensor encoder óptico(esquerda) e
sensor encoder magnético (direita)
Fonte: SENAI DR PR, 2019. 7.6 ATUADORES
O encoder óptico é composto por um LED emissor de luz, um
Os atuadores são utilizados para realizar os movimentos dos
conjunto de foto-transistores que recebem o sinal luminoso e um disco
eixos do robô. Podem ser, segundo Rosário (2010), do tipo pneumático,
perfurado que interrompe sequencialmente o sinal luminoso à medida
hidráulico ou elétrico.
que gira em torno de um eixo central. A frequência das interrupções
gera um sinal que indica velocidade ou posicionamento do eixo. Atuadores hidráulicos são utilizados para movimentação de
cargas, por possuírem elevado torque e grande velocidade de resposta,
O encoder óptico incremental gera um trem de pulsos que será
mas exigem uma estrutura complexa para garantir seu funcionamento.
tratado por um circuito digital apropriado para processar essa informação
Atuadores pneumáticos são mais simples, mas não possuem
e enviá-la à central de comando do robô. Esse tipo de encoder é simples
grande precisão no processo de controle do movimento. Atuadores
e de baixo custo, mas necessita de uma calibração inicial toda a vez
elétricos, motores de corrente contínua (CA) ou alternada (CA), são
em que o sistema é ligado, a fim de marcar uma posição de referência
proporcionalmente mais baratos e podem ser controlados com precisão

109 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


satisfatória, por esse motivo são muito aplicados em robótica. RECAPITULANDO
Neste capítulo, iniciamos nossos estudos com um breve histórico
da evolução da robótica, com as datas e fatos mais importantes.
Conhecemos os sistemas robotizados, sua fixação, raio de trabalho, as
partes integrantes do braço articulado e as partes que compõem um
sistema robotizado. Seguimos com as classificações de acordo com a
geometria, tipo de acionamento e aplicação dos robôs. Aprendemos
os aspectos da programação on-line e off-line de robôs, de acordo
Figura 60 - Servomotor do robô marca kuka modelo KR150 com padrões gerais determinados pelos fabricantes, e, em seguida,
Fonte: KUKA, 2019. estudamos os tipos de sensores internos e externos que compõem
O servomotor da Figura 60 é um exemplo de atuador que um braço robótico. Finalizamos nossos estudos com os atuadores que
movimenta um eixo do robô. Servomotores possuem um encoder acionam o braço robótico, formados por servomotores, de alimentação
acoplado ao motor. Por esse motivo, possui dois ou mais conectores para AC ou DC, e encoders.
separar o sinal do encoder de posicionamento da alimentação elétrica
dos enrolamentos do motor, evitando interferências no envio de sinal.

Servomotores de robôs industriais possuem características


específicas para trabalhar em regimes mais severos de trabalho; são
mais robustos e, consequentemente, tem maior durabilidade.

110 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


8 CONECTIVIDADE DE SOFTWARE

O termo conectividade significa, segundo o dicionário on- 8.1 PROTOCOLO MESSAGE QUEUING TELEMETRY
line Michaelis, a “Capacidade de um computador, de um programa, TRANSPORT (MQTT)
de um sistema operacional etc. de operar em rede”. Neste capítulo
O protocolo MQTT (Message Queuing Telemetry Transport) é um
adicionaremos a essa definição, a capacidade de dispositivos trocarem
protocolo para envio de mensagens curtas, que ocupam poucos bytes,
informações entre si, operando em uma rede. Nosso desafio é encontrar
criado pela IBM no final dos anos 1990. Este protocolo é indicado para
uma forma de comunicarmos dispositivos a grandes distâncias, utilizando
redes de conexões frágeis, com baixa largura de banda e limitação
como meio uma rede que permita essa comunicação. Alguns protocolos
de dados. Sendo assim, a finalidade deste protocolo é a de permitir
permitem realizar a conectividade entre dispositivos, como o REST
a troca de informações entre dispositivos menores e mais simples
(Representational State Transfer), OPC (Open Plataform Communications),
que os computadores, funcionando de forma robusta e permitindo
entre outros. O Protocolo que apresentamos neste capítulo é o MQTT
compartilhamento de informações entre dois ou mais dispositivos,
(Message Queuing Telemetry Transport), e surge como uma opção de
independente dos sistemas operacionais nativos de cada um.
conectividade com grandes vantagens em relação à simplicidade de
uso e campos de aplicação.

111 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


chamado Broker, que disponibilizará a informação caso outro
FIQUE ALERTA!
dispositivo, que possua a mesma identificação da mensagem, solicite
Existem muitos provedores de serviço MQTT na Web. A grande maioria ao Broker o recebimento da mensagem. A Figura 61 mostra uma visão
oferece interfaces amigáveis e armazenamento de dados, mas são geral da comunicação entre dois dispositivos, via protocolo MQTT,
provedores pagos que limitam a utilização de seus serviços de alguma
utilizando a internet como rede. O dispositivo 1 envia a mensagem
forma. Para desenvolver soluções mais básicas, temos opções gratuitas
como o servidor MQTT Eclipse Mosquitto, usado neste capítulo, que são identificada, o dispositivo 2 solicita o recebimento da mensagem, em
mais simples, mas oferecem o mesmo padrão de protocolo. seguida recebe a informação.

8.2 VISÃO GERAL INTERNET


(BROKER)
A conectividade para um sistema de IoT deve, principalmente,
permitir que diferentes tipos de dispositivos se comuniquem entre si. RECEBE
MENSAGEM
As informações não devem necessariamente serem centralizadas em ENVIA
ENVIA
MENSAGEM
um único concentrador para serem interpretadas somente por ele, SOLICITAÇÃO

mas também devem ter a possibilidade de serem compartilhadas com


outros dispositivos ligados à rede.

O protocolo MQTT permite que dois ou mais dispositivos troquem


DISPOSITIVO 1 DISPOSITIVO 2
informações entre si, utilizando o gerenciamento de mensagens. Um Figura 61 - Comunicação via protocolo MQTT
dispositivo envia uma mensagem identificada para um gerenciador, Fonte: SENAI DR PR, 2019.

112 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Os dispositivos 1 e 2 podem estar a vários quilômetros distantes Como o MQTT é um protocolo livre, um servidor de serviço MQTT
um do outro, mesmo assim a informação é transmitida de um para pode ser criado por qualquer usuário ou pode utilizar serviços de Brokers
outro. O processo de monitoramento, controle, e transmissão a distância gratuitos disponíveis na Web, para os diversos tipos de clientes.
é identificado como telemetria.
No Quadro 17, são listados alguns provedores e seus tipos de
serviços MQTT.
CURIOSIDADES
Servidor/Broker Clientes suportados
Controles industriais também podem utilizar o protocolo MQTT para conectar C client library (libmosquitto)
diversos dispositivos via Web. Acesse o vídeo e descubra como entender Eclipse MosquittoTM C++ client library (libmosquittocpp)
esse processo: https://www.youtube.com/watch?v=tQmXWNd1pNk Python client module (python-mosquitto)
C client (part of SupportPac IA93)
IBM WebSphere Message Broker Java client (part of SupportPac IA92)
WebSphere-MQTT client (Perl)

8.2.1 Servidor MQTT (Brokers) IBM Lotus Expeditor micro broker


Java client (including JMS)
C cliente
C# client
Para que o protocolo MQTT funcione, é necessário que um servidor
C client API
disponibilize o serviço. O servidor de serviços MQTT é denominado Broker. Really Small Message Broker Java cliente
Eurotech Everyware Device Cloud C client
A IBM disponibiliza o provedor de serviço MQTT chamado WebS- (EDC) C# client
phere MQ Telemetry, que permite a conexão de vários dispositivos clien- Other options available

tes ao servidor Broker. Quadro 17 - Serviços Brokers e clientes suportados


Fonte: BUILDING SMARTER PLANET SOLUTIONS WITH MQTT AND WEBSPHERE
TELEMETRY, 2019.

113 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


o serviço de protocolo MQTT se torna interessante para aplicações que
SAIBA MAIS necessitem trocar informações de estado ou dados numéricos como
valores de temperatura, pressão, velocidade, entre outros.
A Eclipse MosquittoTM é um provedor de serviço MQTT que fornece
um endereço IP e uma porta de acesso a um Broker de teste gratuito. As Para testarmos o serviço MQTT podemos utilizar o software de
informações do servidor Mosquitto são: Endereço: test.mosquitto.org,
simulação de telemetria WMQTT Utility, disponível gratuitamente na
endereço IP: 85.119.83.194 e Porta: 1883.
internet, que possibilita criar um tópico em um servidor de serviço
Para mais informações acesse o link: https://test.mosquitto.org/ MQTT e simular o envio e recebimento de uma mensagem. O software
WMQTT Utility é mostrado na Figura 62.

8.3 CLIENTE MQTT


O cliente MQTT coleta a informação de um dispositivo que envia
informações a distância. Também podemos chamá-lo de dispositivo
de telemetria. Essas informações coletadas chegam até um servidor de
mensagens, responsável por disponibilizá-las. Essas informações são
publicadas em tópicos para que outros clientes possam identificá-las
e se inscreverem para receber as informações (mensagens) do tópico
selecionado.
As informações enviadas e recebidas pelo serviço MQTT são
em forma de strings, textos curtos enviados ao cliente, para que este Figura 62 - Software de simulação WMQTT Utility
interprete os caracteres da string e realize uma ação. Por este motivo, Fonte: SENAI DR PR, 2019.

114 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


No campo Broker TCP/IP address inserimos o endereço IP do servi- 8.4 QUALIDADE DOS NÍVEIS DE SERVIÇO
dor de serviço MQTT escolhido. O endereço IP 85.119.83.194 é do servidor
O protocolo MQTT utiliza três níveis de qualidade de serviço (QoS)
Mosquitto, mostrado no Quadro 17. No campo Subscribe topic digitamos o
para entrega das mensagens. A finalidade do QoS é garantir a entrega
nome do tópico, que identificará a mensagem. A opção Request QoS sele-
da mensagem pelo servidor do protocolo. Um alto nível de QoS fornece
ciona o nível de confirmação de recebimento dos pacotes da mensagem,
maior confiabilidade na entrega da mensagem, mas ao mesmo tempo,
de 0 a 2. No campo Topic, selecionamos o tópico no qual queremos enviar
consome maior largura de banda da rede.
a mensagem que deve ser digitada no campo em branco logo abaixo. Ao
clicar em Publish, a mensagem será enviada ao tópico selecionado e apare- Os três níveis QoS, de acordo com a IBM, são os seguintes:
cerá no campo Received Topics, no espaço cinza logo abaixo. • Nível 0, a menor qualidade, pois envia a mensagem somente
Podemos criar diversos tópicos e fazer com que um dispositivo insira uma vez e não há garantia de entrega nem armazenamento da
mensagens distintas entre eles, como leituras de diferentes sensores. Outro mensagem. Garante, porém, maior velocidade;

dispositivo pode conectar-se ao servidor e buscar as informações que pre- • Nível 1, modo padrão que faz com que a mensagem seja
cisa nos tópicos que forem necessários. entregue ao menos uma vez, podendo ser enviada várias vezes
até que chegue uma confirmação;
• Nível 2, garante que a mensagem seja entregue uma única vez,
armazenando-a até ser processada. Modo mais seguro, porém,
mais lento.

115 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


CASO RELATADO
A implantação do sistema de comunicação deu certo e, além de
Monitoramento e comunicação proporcionar a troca das mensagens entre os caminhões e a sede,
caso a empresa futuramente decidisse instalar melhorias no sistema,
Em uma empresa de transportes rodoviários, a comunicação entre
a utilização do protocolo MQTT possibilitaria adicionar envio de
os caminhões e a sede da empresa era realizada por voz via rádio,
comandos para travamento de freios, acendimento de luzes de
utilizando a faixa de frequência UHF (Ultra High Frequency). A empresa,
alerta, acionamento de indicações no painel do caminhão, ou outros
interessada em melhorar o sistema de monitoramento de suas
acionamentos que achasse interessante.
cargas, investiu em um sistema de localização por GPS, que indicaria
a localização exata de cada um de seus caminhões. Mas restou uma
dúvida: como seriam avisados sobre possíveis futuras mudanças no
trajeto ou sobre imprevistos como falhas mecânicas?
8.5 EXEMPLO DE CONECTIVIDADE MQTT
A solução apontada foi utilizar um canal de comunicação via internet, PARA ARDUINO
utilizando celulares para envio e recebimento de mensagens
padronizadas, que chegariam à sede da empresa e seriam interpretadas Para ilustrar a utilização do protocolo MQTT, faremos a análise de
por um computador. Este avisaria o comando de operações através de
um monitor instalado na sala de comando. Como havia a necessidade
uma aplicação prática para teste do protocolo.
de agilidade no recebimento das mensagens, considerando a variação Para que os comandos relativos ao protocolo MQTT sejam
da qualidade de sinal de internet da região e o envio de uma resposta
à cada mensagem recebida, decidiu-se utilizar o protocolo MQTT para reconhecidos na compilação do código pelo ambiente de programação
efetuar o serviço de envio e recebimento das mensagens. Arduino, é necessário que a biblioteca PubSubClient.h, referente
ao protocolo MQTT, seja instalada. O download da biblioteca pode ser
realizado pelo link:

https://pubsubclient.knolleary.net/

116 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Em Download, clique no link GitHub e escolha o arquivo Source sketch_uc8 | Arduino 1.8.10
_ x
Arquivo Editar Sketch Ferramentas Ajuda

code (zip) e aguarde o download. Após baixar o arquivo “pubsubclient-


2.7.zip”, deve-se inseri-lo na biblioteca Arduino seguindo o caminho no sketch_uc8

1 #include <SPI.h>
menu superior: Sketch> Incluir Biblioteca> Adicionar biblioteca .ZIP. 2 #include <Ethernet.h>
3 #include <PubSubClient.h>
4
Terminado o processo, podemos inserir as instruções específicas, 5 int cont = 0;
6
nas linhas do código, para a utilização das funcionalidades do MQTT. 7 // Atualize estes dados de acordo com a configuração da sua rede.
8 byte mac[ ] = { 0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0xED };

Ao inserir a biblioteca MQTT, alguns exemplos ficam disponíveis 9


10
// Endereço IP (172, 16, 0, 100); Caso você não tenha servidor DNS
IPAddress server(85,119,83,194 );
11
no ambiente Arduino. Para acessar o sketch exemplo siga o caminho no 12 void callback(char* topic, byte* payload, unsigned int length) {
13 Serial.print("Message arrived [");
menu: Arquivo> Exemplos > PubSubClient> mqtt_basic. 14 Serial.print(topic);
15 Serial.print("] ");

Para analisarmos o funcionamento do protocolo, também 16


17
for (int i=0;i<length;i++) {
Serial.print((char)payload[i]);

faremos uso da ferramenta MQTT Utility, abordada no capítulo 10.4. Os 18


19
}
Serial.printIn();
20 }
componentes necessários são a placa Arduino UNO R3 e a placa (shield) 21
22 EthernetClient ethClient;
Ethernet W5100. Também será necessário um ponto de rede ativo e um 23 PubSubClient client(ethClient);
24
cabo de rede. O sketch pode ser visualizada na Listagem 21. 25 void reconnect() {
26 // Repete até que se reconecte
27 while (!client.connected()) {
28 Serial.print("Attempting MQTT connection... ");
29 // Tentativa de conexão
30 if (client.connect("arduinoClient")) {
31 Serial.printIn("connected");
32 // Uma vez conectado, imprime uma frase...
33 client.publish("test_senai","Hello MQTT");
34 // ... e reinscreve
35 client.subscribe("test_senai");
36 } else {
37 Serial.print("failed, rc=");
38 // Imprime na serial o estado do cliente (client.state());
39 Serial.printIn("try again in 5 seconds");
40 // Espera 5 segundos antes de tentar novamente
117 41 delaySENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ
(5000);
42 }
43 }
29 // Tentativa de conexão
30 if (client.connect("arduinoClient")) {
31 Serial.printIn("connected");
32 // Uma vez conectado, imprime uma frase...
33 client.publish("test_senai","Hello MQTT");
34 // ... e reinscreve
35 client.subscribe("test_senai");
36
37
} else {
Serial.print("failed, rc=");
Este código permite que a placa Arduino crie um tópico no servidor
38
39
// Imprime na serial o estado do cliente (client.state());
Serial.printIn("try again in 5 seconds");
MQTT escolhido. O endereço IP do servidor está na linha 8 e possui a fun-
40
41
// Espera 5 segundos antes de tentar novamente
delay(5000);
ção de publicar e receber mensagens do Broker (servidor).
42 }
43 } As bibliotecas utilizadas, nas linhas 1, 2 e 3, são a SPI.h para interface
44 }
45
46
void setup()
{
serial, a Ethernet.h para o protocolo de rede e a PubSubClient.h,
47
48
Serial.begin(57600);
client.setServer(server, 1883);
instalada conforme indicado anteriormente, para o protocolo MQTT.
49 client.setCallback(callback);
50 Ethernet.begin(mac); Antes de transferir o sketch para a placa Arduino, deve-se conectar
51 // Permite que o hardware se auto configure
52 delay(1500); o shield Ethernet W5100, conforme mostra a Figura 26 do Capítulo 3.6.
53 }
54
55 void loop() Após a transferência do código para a placa Arduino UNO, o proto-
56 {
57 if (!client.connected()) { colo entrará em funcionamento, conectando-se ao servidor MQTT, com
58 reconnect();
59 } endereço IP, definido conforme a linha 8 da listagem.
60
61 client.loop();
A função das linhas de código é criar um tópico no servidor MQTT,
chamado test_senai, e publicar a mensagem “Hello MQTT”, conforme
a instrução da linha 28.
61 Arduino/genuino Uno em COM4

Para que a placa Arduino UNO receba as mensagens, as instruções


Listagem 21 - Código MQTT para Arduino UNO
para recebimento da mensagem estão programadas entre as linhas 9 e 17.

118 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Para realizarmos os testes de comunicação, devemos conectar a pla-
ca Arduino à rede local, e utilizar o software MQTT Utility em um compu-
tador, que pode estar conectado na mesma rede da placa Arduino ou em
outra rede.

A tela do Monitor Serial deve ser ativada para que possamos visuali-
zar o status da conexão, conforme mostra a Figura 63. Preferencialmente
devemos ligar a placa Arduino à mesma rede do computador que utiliza-
mos para programá-lo para estarmos próximos à placa Arduino caso ocor-
ra algum problema de conexão ou ajuste de programação. Figura 63 - Tela do monitor serial mostrando a conexão ao servidor MQTT
Fonte: SENAI DR PR, 2019.
Após a realização dos testes iniciais, a placa Arduino pode ser ligada
A Figura 64 mostra a telemetria entre a placa Arduino UNO e o MQTT
fisicamente em outras redes, de locais mais distantes, para que possamos
Utility. Tanto a placa Arduino quanto o MQTT Utility estão conectados ao
verificar o funcionamento da telemetria, tendo em vista a necessidade de
mesmo servidor de serviço MQTT Podemos verificar pelo endereço IP
transmitirmos e recebermos informações a grandes distâncias.
no campo Broker TCP/IP address. Ao digitarmos o nome do tópico
test_senai no campo Subscribe Topic, podemos clicar em
Subscribe para recebermos a mensagem Hello Arduino publicadas
pela placa Arduino no tópico.

Na área Publish Messages devemos selecionar o tópico


test_senai para que possamos enviar mensagens à placa Arduino.

119 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


Quando digitamos Hello Arduino na área branca e, em seguida, clicamos devemos convertê-las em caractere numérico para que possamos tratar
em Publish, a mensagem é automaticamente recebida na tela do corretamente as informações contidas nas mensagens.
Monitor Serial Arduino, conforme mostra a Figura 64.

RECAPITULANDO
Iniciamos este capítulo conhecendo o protocolo de comunicação
MQTT e as aplicações para as quais foi desenvolvido. Em seguida, vimos
uma visão geral do funcionamento do protocolo, como dispositivos
podem trocar informações entre si através do Broker utilizando uma
identificação para as mensagens chamada tópico. Conhecemos com
mais detalhes o funcionamento do servidor MQTT (Broker), como realiza
o gerenciamento do recebimento e envio de mensagens e alguns
servidores disponíveis na Web. Aprendemos como o cliente do serviço
Figura 64 - Tela MQTT Utility e Monitor Serial Arduino MQTT se comunica com o Broker, enviando e recebendo mensagens,
Fonte: WMQTT UTILITY, 2019. com a utilização da ferramenta MQTT Utility. Conhecemos os três níveis
de serviço disponíveis para a qualidade de envio e recebimento de
A função do MQTT Utility é apenas mostrar que a placa Arduino mensagens pelo protocolo. Finalizamos o capítulo com a apresentação
está enviando e recebendo as mensagens publicadas no tópico. de um exemplo, disponível na biblioteca instalada no ambiente de
Podemos utilizar duas placas Arduino para receber e enviar mensagens desenvolvimento Arduino, com o qual utilizamos um Arduino UNO, com
entre si. Como as mensagens são trocadas em forma de string, Shield Ethernet, para troca de mensagens com um Broker.

120 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


9 REFERÊNCIAS

ANATEL, Ato nº 14448, de 04 de dezembro de 2017. Disponível em : BLUM, Jeremy. Explorando o Arduino: Técnicas e Ferramentas para
<http://www.anatel.gov.br/legislacao/atos-de-requisitos-tecnicos-de- Mágicas de Engenharia. Rio de Janeiro: Alta Books, 2016.
certificacao/2017/1139-ato-14448> Acesso em 21/08/2019
COMPONETS. Disponível em: <https://components101.com/wireless/
ARDUINO BASICS, Weather Reporter - Temboo, Ethernet e Arduino, hc-05-bluetooth-module>. Acesso em 21/08/2019
2015. Disponível em : <https://arduinobasics.blogspot.com/search/
DEITEL, Paul; DEITEL, Harvey C: como programar. 6 ed. São Paulo:
label/UTFT> Acesso em 22/08/2019
Pearson Prentice Hall, 2011.
BRITO, Alisson Vasconcelos. Introdução a Arquitetura de Computadores.
ELETROGATE. Disponível em: <https://www.eletrogate.com/modulo-
Disponível em: http://producao.virtual.ufpb.br/books/edusantana/
bluetooth-rs232-hc-05>. Acesso em 21/08/2019
introducao-a-arquitetura-de-computadores-livro/livro/livro.chunked/
Acesso em: 15/08/2019
ESPRESSIF SYSTEMS. ESP8266EX Datasheet. 2018. Disponível em:
< https://www.espressif.com/sites/default/files/documentation/0a-
BUNGART, José Wagner. Redes de Computadores: fundamentos e
esp8266ex_datasheet_en.pdf> Acesso em: 25/05/2019.
protocolos. São Paulo: SENAI, 2017.

121 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


ESPRESSIF SYSTEMS. ESP8266 AT Instruction Set. 2019. Disponível MELL, Peter; GRANCE, Timothy. The NIST Definition of Cloud Computing.
em: <https://www.espressif.com/sites/default/files/documentation/4a- Disponível em : http://faculty.winthrop.edu/domanm/csci411/
esp8266_at_instruction_set_en.pdf > Acesso em 29/05/2019. Handouts/NIST.pdf Acesso em: 15.jun.2019.

H. Tschofenig ARM Ltd et al.INTERNET ARCHITECTURE BOARD (IAB). MICROCHIP INC. PIC16f87X Data Sheet 28/40-Pin 8-Bit CMOC FLASH
Architectural Considerations in Smart Object Networking. 2015. Microcontrolers. DS3029C. 2001. Disponível em: < http://ww1.microchip.
Disponível em: < https://tools.ietf.org/html/rfc7452 > Acesso em: com/downloads/en/devicedoc/30292c.pdf> Acesso em: 29/05/2019.
03/06/2019.
NTC, Robôs De Soldagem OTC-Daihen. Disponível em: <http://npfets.
IBM INTERNATIONAL TECHNICAL SUPPORT ORGANIZATION. Building ru/catalog/all_manuf/robotu_otc_daihen/>. Acesso em: 21/08/2019.
Smarter Planet Solutions with MQTT and IBM WebSphere MQ Telemetry.
RANDON NERD TUTORIALS, Understanding NMEA Sentences.
SG24-8054-00. 2012. Disponível em: < https://www.redbooks.ibm.com/
Disponível em: <https://randomnerdtutorials.com/guide-to-neo-6m-
redbooks/pdfs/sg248054.pdf> Acesso em: 29/05/2019.
gps-module-with-arduino/>. Acesso em: 21/08/2019.
LEÃO, Fabrício. Redes de Computadores I – Disponível em <https://www.
ROSÁRIO, João Maurício. Princípios de Mecatrônica. São Paulo: Prentice
gta.ufrj.br/grad/02_2/vsat/introducao.htm> Acesso em: 21/08/2019.
Hall, 2005.
LIMA, Isabelle, Aprenda a utilizar o módulo GPS com Arduino.
ROSÁRIO, João Maurício. Robótica Industrial I: modelagem, utilização e
Disponível em : < http://autocorerobotica.blog.br/aprenda-utilizar-o-
programação. São Paulo: Baraúna, 2010.
modulo-gps-com-arduino/>. Acesso em 21/08/2019.

122 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


SANTOS, Guilherme. A pirâmide da Automação industrial. Disponível
em: <https://www.automacaoindustrial.info/a-piramide-da-automacao
-industrial/>. Acesso em: 21/08/2019.

SOUSA, L. B. Redes de Computadores: Dados, voz e imagem. São Paulo:


Érica, 1999.

SMAR. Introdução às Redes Industriais. 2011. Disponível em: http://


www.smar.com/brasil2/pats/downloads/Redes_Industriais_Introducao.
pdf Acesso em: 29/05/2019.

SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL. Departamento


Nacional. Departamento Regional do Rio Grande do Sul. Livros Didáticos
Nacionais – SENAI: Sistemas Automatizados de Produção. Brasília: SENAI
DN, 2015. 192p.

WIZNET. W5100 Data Sheet. 2008. Disponível em: < https://www.


sparkfun.com/datasheets/DevTools/Arduino/W5100_Datasheet_
v1_1_6.pdf> Acesso em 29/05/2019.

123 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


MINICURRÍCULO DO
AUTOR

Elizandro Deflon
2008 Licenciado em Física pela Universidade Federal do Paraná – como técnico responsável pela manutenção e atualização de sistema de
UFPR. 2017 Tecnólogo em Automação Industrial pela Universidade automação de pedágio, comunicação via rádio e sistema de pesagem
Tecnológica Federal do Paraná – UTFPR . Na área de pesquisa participou rodoviária. Atuou também na área de automação comercial e sistemas
da publicação de artigos nas áreas de Física do Estado Sólido e de de impressão e leitura de código de barras. Interesses nas áreas de IoT
Ensino de Física em Escolas Públicas. Na área de automação trabalhou (Internet das Coisas) e Automação na Indústria 4.0.

124 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ


CRÉDITOS
SENAI – DEPARTAMENTO REGIONAL DO PARANÁ

José Antônio Fares Iris Jerusa D Amico Burger Willian Bill


Diretor Regional Revisão técnica Ilustrações e Tratamento de Imagens

Giovana Chimentao Punhagui Alexandre Luis Kloch Anderson Calixto de Carvalho


Gerente Executiva de Educação Coordenação Técnica Diagramação, Revisão de Arte e Fechamento de Arquivo

Vanessa Sorda Frason Erica Luz de Souza Ricardo Luiz Freire de Menezes
Gerente de Educação Profissional Orientação Pedagógica Projeto Gráfico

Sandra Cristina Brasil Toloto Karem Morigi


Coordenação Pedagógica Revisão Ortográfica e Gramatical

Elizando Deflon Daniel Gustavo Hella


Elaboração Estela Pereira
Coordenação de Projeto

125 SENAI – SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL DO PARANÁ

Você também pode gostar