Você está na página 1de 181

CURSO INTEGRAO

RASPBERRY PI E
ARDUINO
Integrao Raspberry Pi e
Arduino
Introduo ao Raspberry Pi e ao Arduino

2
Integrao Raspberry Pi e
Arduino

Introduo ao Raspberry Pi
Introduo ao Arduino
Instalao IDE Arduino

3
O que um Raspberry Pi?

O Raspberry Pi um computador de placa nica com caractersticas que o


tornam um computador embarcvel:

Hardware com baixo consumo de energia;


Perifricos;
Tamanho reduzido;
Possibilidade de ser colocado um software.

4
O Raspberry Pi 3

Antena 40 pinos de propsito geral 4 portas USB


26 GPIO + 12 alimentao + 2 EEPROM

Conector DSI (Display


Serial Interface)

Microprocessador
BCM2837 - 1,2GHz
quad-core ARM Hub USB
Cortex-A53

LEDs indicativos de Conector Ethernet


funcionamento

Conector micro USB


(para alimentao da Conector para Sada de udio e vdeo
placa: 2A, 5Volts) mdulo Cmera (Conector P2 - 4 Polos)
Conector HDMI

5
O Raspberry Pi 3

Memria RAM 1GB Adaptador WiFi e Bluetooth


( BCM43438 )

Soquete para carto MicroSD:

Possibilidade de gravar um
software

6
Raspbian PIXEL

O novo sistema operacional PIXEL uma verso lanada pelo Raspbian com
algumas diferenas das verses anteriores:

Nova interface, cones e fontes;


Novos recursos para imagens de fundo;
Software de acesso remoto VNC j incorporado;

7
rea de Trabalho PIXEL

O PIXEL possui rea de trabalho diferente dos antigos sistemas operacionais


Raspbian:

8
Aparncia do PIXEL

Novos cones no menu e nova fonte:

9
Aparncia do PIXEL

Nova aparncia das janelas:

10
Nova aplicao no PIXEL

Foi adicionada ao PIXEL uma aplicao para visualizao da rea de trabalho


atravs de outro computador: o VNC.

Deve-se configurar o PIXEL para permitir o acesso de outro computador


atravs do VNC. Uma vez configurado, no necessrio mais alterar as
configuraes, a menos que deseja desativar o recurso.

Para permitir o acesso ao PIXEL atravs do VNC, deve-se acessar as


configuraes do sistema operacional. Isso pode ser feito atravs da interface
grfica, utilizando mouse e monitor HDMI, ou via comando: raspi-config .

11
Ligando o Raspberry Pi

Inserindo o carto
micro-SD

De posse de um carto micro-SD com o


sistema operacional instalado, nesse caso o
Raspbian com PIXEL;

Pegar o Raspberry Pi com o verso voltado


para si;
Colocar o carto micro-SD no soquete do
Raspberry Pi, conforme a figura (observe que
a descrio do carto dever estar voltada
para si).

12
Conectar rede e ligar o
Raspberry Pi

Conexes Raspberry Pi

Conectar o cabo ethernet no


Raspberry Pi e na mesma rede que o
seu computador est conectado;

Conectar a fonte.

13
Indicativos de funcionamento

Verificar funcionamento do Raspberry Pi


Verificar se o LED vermelho prximo conexo da fonte de energia est aceso e se o LED
verde est piscando;

Verificar se os LEDs na conexo do cabo ethernet esto acesos.

14
Configurao PIXEL
OBS: Necessrio estar conectado a
1. Configurar usando a interface grfica: um monitor.

15
Configurao PIXEL
OBS: Necessrio estar conectado a
1. Configurar usando a interface grfica: um monitor.
Na aba Interfaces, selecionar Enabled onde est indicado a opo VNC.

16
Configurao PIXEL

2. Configurar usando acesso SSH.


Para essa configurao no Windows, deve-se usar um programa emulador de
terminal.
O PuTTY um software de emulao de terminal gratuito com suporte SSH
(Secure Shell). Ou seja, ele vai permitir o acesso ao terminal do Raspberry Pi
atravs de um outro computador na mesma rede. Existem outros softwares
emuladores de terminal, mas nesse curso sugere-se o uso do PuTTY.

Download do PuTTY (software de emulao de terminal):


https://the.earth.li/~sgtatham/putty/latest/x86/putty.exe
Abrir o programa, clicando duas vezes no cone.

17
Acesso ao Raspberry Pi

Estabelecer conexo
2. Configurar usando acesso SSH. com Raspberry Pi

Aps abrir a janela do programa PuTTY, deve-se


estabelecer uma conexo do tipo SSH (Secure Shell);
SSH (Secure Shell) , ao mesmo tempo, um programa de
computador e um protocolo de rede que permite a
conexo com outro computador na rede;
A conexo SSH permitir que sejam enviados comandos
remotamente ao Raspberry Pi, fora da interface grfica.
Por exemplo: comando de instalao de programas,
comando para desligar o sistema, etc.;
Os comandos enviados atravs da conexo SSH iro
permitir a configurao inicial do Raspberry Pi.

18
Endereo de IP

Descobrir o IP do
Raspberry Pi Descobrir o endereo de IP do
Link para download do software: Raspberry Pi na rede local
http://www.advanced-ip-scanner.com/ ;

Precisa-se descobrir o endereo IP do Raspberry


Pi;
Ser utilizado o Advanced IP Scanner para isso;
Abrir novamente a pasta para onde foram
copiados os arquivos do pendrive;

Clicar duas vezes no arquivo ipscan24;

Selecionar o idioma Portugus e clicar no boto


OK.

19
Endereo de IP

Descobrir o IP do
Raspberry Pi

Ao abrir a janela, selecionar a ao


Executar e clicar no boto Avanar;
Selecionar Eu aceito os termos do Contrato
e em seguida clicar em Executar, ou
Avanar.

20
Endereo de IP
x
Endereo MAC
O endereo de IP est associado conexo naquela rede. Quem define qual endereo de
IP do Raspberry Pi o roteador, que ir dar os endereos a cada dispositivo que conectado
ele. Esse endereo pode mudar at pelo simples fato de desconect-lo e conect-lo novamente
na mesma rede.

J o endereo MAC o endereo ligado ao dispositivo fsico, ou seja, cada adaptador de


rede possui um endereo MAC associado a ele, e esse nico e inaltervel.
ip
:
19
2.

0
.1.1
1
68

.168
.1

92
.1

ip: 1
1

MAC:
ip
:1 b8:27:eb:27:07:7d
92
.16
8.
1.
12

21
Endereo de IP

Descobrir o IP do
Raspberry Pi

Ao abrir a janela do aplicativo, clicar no boto


Verificar para escanear os dispositivos da rede
em que o computador est conectado.

22
Endereo de IP

Descobrir o IP do
Raspberry Pi

No campo Nome ou Fabricante da janela,


verificar na lista onde est escrito Raspberry Pi;

No campo Endereo MAC da janela, verificar


qual dispositivo que o endereo bate com o da
etiqueta que foi colocada na caixa do seu
Raspberry Pi. O endereo MAC especfico de
cada dispositivo e no muda, independente da
rede em que est conectado;
Anotar o endereo IP do seu Raspberry Pi (ex.:
192.168.2.117).

23
Acesso ao Raspberry Pi
2. Configurar usando acesso SSH. Estabelecer conexo
com Raspberry Pi

Inserir o endereo IP do seu Raspberry Pi


(Ex.: 192.168.1.117) no campo Host Name
(or IP adress), conforme indicado;

No campo Connection type, selecionar a


opo SSH;

Clicar no boto Open.

24
Acesso ao Raspberry Pi

Estabelecer conexo
2. Configurar usando acesso SSH. com Raspberry Pi

No primeiro login, aparecer uma


mensagem de alerta;

Clicar no boto Sim ou Yes;

25
Acesso ao Raspberry Pi

2. Configurar usando acesso SSH.


Fazer login no Raspberry Pi

Em seguida, ao aparecer a tela ao lado,


digitar com letras minsculas:
login as: pi

Pressionar <ENTER>.

26
Acesso ao Raspberry Pi

Login no Raspberry
2. Configurar usando acesso SSH. Pi

Em seguida, ao aparecer a tela ao lado


digitar com letras minsculas:
pi@<IPs> password: raspberry

Pressionar <ENTER>.

OBS.: Por se tratar de uma senha,


nada aparecer na tela enquanto
digitada.

27
Acesso ao Raspberry Pi

Login no Raspberry
2. Configurar usando acesso SSH. Pi

Se a senha escrita estiver errada, a


mensagem de acesso negado ir surgir;

Tentar digitar novamente:

raspberry

Pressionar <ENTER>.

28
Acesso ao Raspberry Pi

2. Configurar usando acesso SSH.


Conexo estabelecida

A tela ao lado ir aparecer;


Neste momento j est estabelecida a
conexo com o Raspberry Pi. A partir de
agora tudo que digitado nesta janela, o
Raspberry Pi entender como um comando;
O Raspbian baseado em sistema
operacional Linux, ento os comandos
aceitos so familiares para quem j trabalha
nessa plataforma.

29
Configuraes iniciais

2. Configurar usando acesso SSH.


Enviar comando ao Raspberry Pi

hora de configurar o Raspberry Pi;


Para isso, o usurio deve estar com o perfil
de administrador;
Para ter permisso de administrador do
sistema, deve-se digitar sudo antes de
qualquer comando;
Para abrir o programa que ir configurar o
Raspberry Pi, digitar sudo raspi-config e
pressionar <ENTER>.

30
Configuraes iniciais

2. Configurar usando acesso SSH.


Aparecer a seguinte janela de configurao:

31
Configuraes iniciais

2. Configurar usando acesso SSH.


Com a seta para baixo, navegar at a opo 9 Advanced Options e pressionar
<ENTER>.

32
Configuraes iniciais

2. Configurar usando acesso SSH.


Com a seta para baixo, navegar at a opo A5 VNC e pressionar <ENTER>.

33
Configuraes iniciais

2. Configurar usando acesso SSH.


Com a seta para esquerda, navegar at a opo YES e pressionar <ENTER>.

34
Configuraes iniciais

2. Configurar usando acesso SSH.


Selecionar OK e pressionar <ENTER>.

35
Configuraes iniciais

2. Configurar usando acesso SSH.


Com a seta para direita, navegar at a opo <Finish> e pressionar <ENTER>.

36
Acesso remoto ao PIXEL

Instalar o RealVNC-viewer para acesso


remoto interface grfica
Deve-se fazer o download do programa no link:
https://www.realvnc.com/;
Clicar na aba DOWNLOAD;

37
Acesso remoto ao PIXEL

Instalar o RealVNC-viewer para acesso


remoto interface grfica
Clicar no link VNC Viewer;

38
Acesso remoto ao PIXEL

Instalar o RealVNC-viewer para acesso


remoto interface grfica
Selecionar o sistema operacional ou o aplicativo que ir usar;
Selecionar o formato EXE e a verso 64 bits (x64) ou 32 bits (x86), de acordo com o
sistema operacional instalado na sua mquina;
Clicar em DOWNLOAD VNC VIEWER X.X.X;

39
Acesso remoto ao PIXEL

Instalar o RealVNC-viewer para acesso


remoto interface grfica
Aguardar o fim do download;
Executar o arquivo VNC-Viewer-X.X.X-Windows-XXbit.exe;

40
Acesso remoto ao PIXEL

Instalar o RealVNC-viewer para acesso


remoto interface grfica
Se desejar enviar dados para ajudar no desenvolvimento do VNC Viewer, deixe a opo
selecionada. Se no, desmarque-a;
Em seguida, clicar em GOT IT;

41
Acesso remoto ao PIXEL

No VNC Viewer, clicar em >File >New Connection...

42
Acesso remoto ao PIXEL

No campo VNC Server, colocar o IP


do Raspberry Pi;

No campo Name, d um nome


qualquer para a conexo, por
exemplo, Raspi;
Clicar em OK;

43
Acesso remoto ao PIXEL

Uma nova conexo apareceu na tela inicial. Clicar duas vezes para iniciar.

44
Acesso remoto ao PIXEL

Acesso interface grfica

Escrever o Username pi e Password raspberry;


Clicar no boto OK e aguardar a conexo.

45
Acesso remoto ao PIXEL

Resoluo padro
A resoluo padro do sistema operacional deve ser ajustada para melhorar a aparncia
da interface grfica.

46
Configuraes iniciais

Configurar a resoluo da tela.

No terminal de comandos do PuTTY, digitar:

~$ sudo nano /boot/config.txt

e pressionar <ENTER>.

47
Configuraes iniciais

Configurar a resoluo da tela.

Encontrar as linhas:

#framebuffer_width=1280

#framebuffer_height=720

Caso no consiga visualizar

as linhas, basta maximizar

a janela.

48
Configuraes iniciais

Configurar a resoluo da tela.

Apagar o caracter #:

framebuffer_width=1280

framebuffer_height=720

49
Configuraes iniciais

Configurar a resoluo da tela.

Pressionar <CTRL> + <O> para salvar, depois <ENTER> para confirmar o nome.

50
Configuraes iniciais

Configurar a resoluo da tela.

Pressionar <CTRL> + <X> para sair do editor nano.

51
Configuraes iniciais
Configurar a resoluo da tela.

Reiniciar o sistema com o comando ~ $ sudo reboot now <ENTER>, em seguida

Clicar em OK na mensagem de erro do PuTTY e fechar o aplicativo.

52
Configuraes iniciais

Configurar a resoluo da tela.

Aguardar que o sistema seja reiniciado e a conexo retorne ao VNC Viewer.

53
Acesso remoto ao PIXEL

Esta a janela com a resoluo escolhida (1280 X 720). Pode ser escolhida tambm a
resoluo 1920 x 1080, a escolha varia com a resoluo que melhor se adaptar a tela do
seu computador.

54
Acesso remoto ao PIXEL

Quando o mouse posicionado no centro superior da janela, possvel ver o menu do


VNC Viewer, onde so encontrados alguns recursos:

Transferir Informaes da Fechar


Ajuste da tela arquivos conexo conexo

Tela cheia Enviar Chat Propriedades


Ctrl+Alt+Del

55
Transferir arquivos via VNC

Clicar no boto File transfer do menu;

Na nova janela, clicar em Send files...

56
Transferir arquivos via VNC

Entrar na pasta Curso_IoT_3.

57
Transferir arquivos via VNC

Selecionar o arquivo arduino-1.6.13-linuxarm.tar e clicar no boto Abrir.

58
Transferir arquivos via VNC

Fechar a janela de transferncia de arquivos.

59
Transferir arquivos via VNC

Aguardar o fim da transferncia do arquivo.

60
Transferir arquivos via VNC

Fechar a janela de transferncia do arquivo.

61
Extrair arquivos compactados

Clicar duas vezes no arquivo transferido.

62
Extrair arquivos compactados

Aguardar que o sistema carregue os arquivos compactados.

63
Extrair arquivos compactados

Clicar com o boto direito na pasta arduino-1.6.12 e clicar em Extract.


Confirmar o destino da pasta (/home/pi/Desktop) e clicar novamente em Extract.

64
Extrair arquivos compactados

Aguardar o processo de extrao.

65
Extrair arquivos compactados

Ignorar a mensagem de erro. Clicar no boto OK.

66
Executar arquivo de instalao
da IDE Arduino
Entrar na pasta arduino-1.6.13 e clicar duas vezes no arquivo install.sh.
Na janela de execuo, clicar em Execute.

67
Abrir IDE

Verificar se, aps instalao, o programa aparece no Menu > Programming;


Clicar em Arduino IDE para abrir a Interface de Desenvolvimento Integrada (IDE).

68
Integrao Raspberry Pi e
Arduino

Introduo ao Raspberry Pi
Introduo ao Arduino
Instalao IDE Arduino

69
Arduino - Conceito

O que Arduino?
Arduino uma plataforma de hardware livre, projetada com um
microcontrolador Atmel AVR de placa nica, com suporte de entrada/sada embutido e
uma linguagem de programao padro.
O que necessrio para programar o Arduino?
Uma linguagem de programao padro, que essencialmente baseada em C/C++.
O que possvel fazer com Arduino?
AUTOMAO Residencial ou Comercial;

ROBTICA Superviso ou Controle;

MONITORAMENTO Sensores (ex.: Estao Meteorolgica);

Etc.

70
Alguns Tipos Disponveis

PRO-MINI

UNO
DUEMILANOVE
(descontinuado)
NANO

LILY PAD MEGA


LEONARDO

71
UNO Rev.3 X MEGA

O Arduino UNO Rev.3 possui mais dois pinos SDA e SCL e dois
outros pinos adicionais prximos ao RESET, sendo um o IOREF
que permite aos shields se adaptarem voltagem fornecida pela
placa e um segundo pino que no est conectado. O conversor
RS232 / USB possui um ATMEGA168 substituindo o ATMEGA8.00

O Arduino MEGA conta com 54 portas I/O digitais,


sendo 03 portas Tx, 03 portas Rx, 16 portas I/O
analgicas, conversor A/D de 10 bits, comunicao via
USB, SPI, I2C, Canais PWM, alimentao via USB ou
externa atravs de fonte de alimentao e seu
microcontrolador o ATMEGA256 com 256KB (Mem.
Flash), rodando a 16MHz.

72
Arduino Padro
s
i g itai
os D A)
Pin x. 40m
Boto de Reset (m

Microcontrolador

a da
t r
En B
US

Conversor USB

n t r ada
i n o s E ca
P algi
a
o
ta o An
e nt
Alimxterna Al i men
s
E Pino
73
Conexo
Raspberry Pi + Arduino
Conexo USB do Arduino com o Raspberry Pi

A comunicao entre o Arduino e o Raspberry Pi ser feita utilizando o cabo USB:

Conectar o Arduino no Raspberry Pi utilizando o cabo USB.

74
Conexo
Raspberry Pi + Arduino
Para verificar se o Raspberry Pi reconhece o Arduino conectado, digitar o comando

~ $ lsusb no terminal PuTTY e pressionar <ENTER>.

75
Conexo
Raspberry Pi + Arduino

Verificar se Arduino Uno aparece nas opes de dispositivos conectados.

76
Integrao Raspberry Pi e
Arduino

Introduo ao Raspberry Pi
Introduo ao Arduino
Opes de instalao IDE Arduino

77
Instalar IDE do repositrio
OPO 1
Para instalar a IDE (Interface de Desenvolvimento Integrada) do Arduino, diretamente
do repositrio, deve-se digitar na linha de comando:
sudo apt-get install arduino

Pressionar <ENTER> e aguardar.


OBS: A verso do repositrio no necessariamente a mais nova lanada no
site oficial arduino.cc. Por isso, para o curso, foi passada a verso mais atual
por pendrive.
78
Instalar IDE do repositrio
OPO 1
Confirmar a instalao do programa;
Apertar <ENTER> e aguardar.

OBS: A verso do repositrio no necessariamente a mais nova lanada no


site oficial arduino.cc. Por isso, para o curso, foi passada a verso mais atual
por pendrive.
79
Abrir IDE
OPO 1
Finalizada a instalao, verificar se o programa aparece no Menu;
Abrir a Arduino IDE.

80
Baixar IDE do site oficial
OPO 2
Entrar no site www.arduino.cc e acessar a aba Download;

81
Baixar IDE do site oficial
OPO 2
Clicar em Linux ARM (experimental);

82
Baixar IDE do site oficial
OPO 2
Se no desejar fazer nenhuma contribuio aos desenvolvedores clicar no boto JUST
DOWNLOAD;

83
Instalar IDE do site oficial
OPO 2
Para instalar a IDE baixada do site oficial, basta seguir os passos j mostrados para
extrair arquivos compactados e executar o arquivo de instalao.

84
Software de Desenvolvimento

Essa a IDE Arduino para o Raspberry Pi.

85
Software de Desenvolvimento

Carregar Abrir

Compilar Novo Salvar Monitor


Serial

86
Ciclo de Desenvolvimento

Compilar Carregar

87
Selecionar porta e placa

Para selecionar a porta COM correspondente que o Arduino est conectado, clicar na
aba Tools > Port;
Escolher a porta que aparece o Arduino;

88
Selecionar porta e placa

Para selecionar o tipo da placa correspondente do Arduino que est sendo utilizado,
clicar na aba Tools > Board: ...;
Escolher a placa do Arduino usado.

89
Programa exemplo

Para abrir um exemplo, clicar na aba File, selecionar Examples > 01.Basics > Blink

90
Programa exemplo

Verificar o cdigo completo. Se achar melhor, maximizar a tela.

91
Upload programa exemplo

Para carregar o programa para o Arduino, clicar no boto Upload.

92
Selecionar porta e placa

Selecionar a porta COM correspondente que o Arduino est conectado, se aparecer a


mensagem de Porta Serial no encontrada, ou pelo menu, na aba Tools > Serial Port.

93
Upload programa exemplo

Aguardar o fim do upload.

94
Verificar funcionamento

Verificar se o LED do Arduino est piscando.

95
Integrao Raspberry Pi e
Arduino
Oficina 1: Raspberry Pi para Arduino
Hello Arduino!

96
Oficina 1
Hello Arduino

Oficina 1

Objetivo: Fazer com que o Raspberry Pi envie mensagens para o Arduino.

Materiais:

Raspberry Pi;
Arduino UNO;
Cabo USB.

97
Integrao Raspberry Pi e
Arduino - Oficina 1

Cdigo Arduino
Cdigo Python

98
Oficina 1
Hello Arduino!
1. Digitar o novo cdigo para Arduino; Cdigo Arduino

99
Oficina 1
Hello Arduino!
1. Digitar o novo cdigo para Arduino; Cdigo Arduino

Declarao de varivel que indica a porta que


o LED est conectado

100
Oficina 1
Hello Arduino!
1. Digitar o novo cdigo para Arduino; Cdigo Arduino

Comea a comunicao serial com o


Raspberry Pi na taxa de 9600bps (baud)

101
Oficina 1
Hello Arduino!
1. Digitar o novo cdigo para Arduino; Cdigo Arduino

Declara o pino correspondente ao led como


pino de sada

102
Oficina 1
Hello Arduino!
1. Digitar o novo cdigo para Arduino; Cdigo Arduino

Condio que indica mensagem proveniente


do Raspberry Pi (comunicao serial)

103
Oficina 1
Hello Arduino!
1. Digitar o novo cdigo para Arduino; Cdigo Arduino

char_recebido ir armazenar o caractere


recebido do Raspberry Pi. A funo que l
esse caractere Serial.read( )

104
Oficina 1
Hello Arduino!
1. Digitar o novo cdigo para Arduino; Cdigo Arduino

Estrutura que compara o caractere recebido


com A, que nesse caso foi o caractere
escolhido para mandar Arduino piscar o LED

105
Upload programa Oficina1

Para carregar o programa para o Arduino, clicar no boto Upload. Mas antes deve-se
salvar o programa;

Ento , ao abrir a janela

Save sketch folder as,

clicar no campo Name e nomear

o programa para Oficina1;

Para facilitar, salvar no Desktop

(rea de Trabalho);
Clicar no boto Save;
E aguardar o fim do upload.

106
Integrao Raspberry Pi e
Arduino - Oficina 1

Cdigo Arduino
Cdigo Python

107
Oficina 1
Hello Arduino

Cdigo Python

Objetivo: Testar comunicao entre Arduino e Raspberry Pi usando a linguagem de


programao Python.

Recursos computacionais:

Mdulo time: Funo write:


Adicionar atrasos ao cdigo. Enviar uma mensagem ao
Mdulo serial: Arduino.
Comunicao serial. Funo print:
Estrutura de repetio while: Imprimir algo na tela do
Rodar cdigo infinitamente. Python Shell.

108
Oficina 1
Hello Arduino!

2. Abrir o programa Python 2 (IDLE): clicar em menu > Programming > Python 2 (IDLE);

109
Oficina 1
Hello Arduino

Configurao da IDE: no menu Options, selecionar Configure IDLE...

110
Oficina 1
Hello Arduino

Configurao da IDE: selecionar a aba Fonts/Tabs;

Identao de
4 espaos

OK

111
Oficina 1
Hello Arduino!

3. Para criar um novo arquivo, clicar em File > New File, ou usar as
teclas de atalho: <CTRL> + <N>;

#Escreva seu cdigo aqui

112
Oficina 1
Hello Arduino!
Cdigo Python
4. Digitar o novo cdigo em Python;

import serial
import time
ser = serial.Serial ('/dev/ttyACM0', 9600)

while( 1 ):
ser.write('A')
print('Mensagem enviada')
time.sleep(1)

113
Oficina 1
Hello Arduino!
Cdigo Python
4. Digitar o novo cdigo em Python;

import serial Importao dos mdulos necessrios: serial


permite comunicao com o Arduino e time
import time permite atrasos no cdigo.
ser = serial.Serial ('/dev/ttyACM0', 9600)

while( 1 ):
ser.write('A')
print('Mensagem enviada')
time.sleep(1)

114
Oficina 1
Hello Arduino!
Cdigo Python
4. Digitar o novo cdigo em Python;

import serial
import time
ser = serial.Serial ('/dev/ttyACM0', 9600)
Assim como no Arduino, deve ser indicada a
while( 1 ): taxa da comunicao serial. A taxa deve ser a
ser.write('A') mesma utilizada no programa do Arduino
print('Mensagem enviada') aqui no programa em Python para o
Raspberry Pi.
time.sleep(1) Na funo Serial deve-se indicar a porta
COM correspondente ao Arduino e a taxa de
comunicao.

115
Oficina 1
Hello Arduino!
Cdigo Python
4. Digitar o novo cdigo em Python;

import serial
import time
ser = serial.Serial ('/dev/ttyACM0', 9600)

while( 1 ): Estrutura de repetio para rodar


infinitamente.
ser.write('A')
print('Mensagem enviada') ser.write: funo que ir enviar o caractere
time.sleep(1) A para o Arduino.
print: funo que imprime mensagem na
tela do Python Shell.
time.sleep: funo para esperar 1 segundo

116
Oficina 1
Hello Arduino!

import serial
import time
ser = serial.Serial ('/dev/ttyACM0', 9600)

while( 1 ):
ser.write('A')
print('Mensagem enviada')
time.sleep(1)

O tempo de espera do LED ligado do Arduino


(delay (100) = 100ms) no deve superar o perodo
das mensagens enviadas pelo Raspberry Pi
(time.sleep(1) = 1s). Isso causaria uma perda de
mensagens entre os dois dispositivos.

117
Oficina 1
Hello Arduino!
Cdigo Python
5. Executar o cdigo: selecionar Run > Run Module, ou pressionar <F5>;

118
Oficina 1
Hello Arduino!
Cdigo Python
6. Ser solicitado que salve o arquivo. Pressionar OK;

119
Oficina 1
Hello Arduino!
Cdigo Python
7. Para facilitar, salvar no Desktop (rea de Trabalho), escolher um
nome e clicar no boto Save;

120
Oficina 1
Hello Arduino!

8. Verificar funcionamento:

121
Integrao Raspberry Pi e
Arduino
Oficina 2a: Leitura analgica

122
Oficina 2a
Leitura analgica

Sensor de Temperatura - LM35

Sensor conhecido como qualquer componente ou circuito eletrnico que permita a


anlise de uma determinada condio do ambiente, podendo ela ser algo simples como
a temperatura;
O LM35 um sensor linear de temperatura que possui escalas de leituras entre -55C
at 150C, convertendo a temperatura em sinais de corrente eltrica entre 400A
5mA, com sensibilidade de 10mA a cada grau Celsius de temperatura (10mV/C);

Especificaes:
- Tenso de operao (VSS): 4 a 30V;
- Faixa de operao: -55C at 150C;

- Preciso a 25C: 0,5C;

- Corrente de consumo: (ILOAD): 60A.

123
Oficina 2a
Leitura analgica

Oficina 2a

Objetivo: Fazer o Arduino enviar os dados de leitura analgica para o Raspberry Pi.

Materiais:

Raspberry Pi;
Arduino UNO;
Cabo USB;
Jumpers macho-fmea;
Sensor - LM35.

124
Oficina 2a
Leitura analgica

Circuito com o Arduino


1. Montar o circuito a seguir:

5V GND

A1

125
Integrao Raspberry Pi e
Arduino - Oficina 2a

Cdigo Arduino
Cdigo Python

126
Oficina 2a
Leitura analgica
2. Digitar o novo cdigo para Arduino; Cdigo Arduino

127
Oficina 2a
Leitura analgica
2. Digitar o novo cdigo para Arduino; Cdigo Arduino

Declarao de duas novas variveis:


leitura_analgica: varivel inteira para
armazenar leitura analgica feita pelo sensor
temperatura: varivel real para armazenar a
temperatura calculada

128
Oficina 2a
Leitura analgica
2. Digitar o novo cdigo para Arduino; Cdigo Arduino

leitura_analgica ir armazenar o valor lido


pelo sensor LM35. A funo que l esse valor
analogRead( ). A1 a porta ao qual o sensor
conectado na placa do Arduino

129
Oficina 2a
Leitura analgica
2. Digitar o novo cdigo para Arduino; Cdigo Arduino

A varivel temperatura ir armazenar o


valor calculado da temperatura

130
Oficina 2a
Leitura analgica
2. Digitar o novo cdigo para Arduino; Cdigo Arduino

A funo Serial.println ir enviar uma


mensagem contendo o valor de temperatura
na porta Serial com a taxa indicada na funo
void setup ( )
Como o programa em Python tambm ir
comunicar usando essa taxa, o Raspberry Pi
ir receber essa mensagem

131
Upload programa Oficina2a

Para carregar o programa para o Arduino, clicar no boto Upload. Mas antes deve-se
salvar o programa;

Ento , ao abrir a janela

Save sketch folder as,

clicar no campo Name e nomear

o programa para Oficina2a;

Para facilitar, salvar no Desktop

(rea de Trabalho);
Clicar no boto Save;
E aguardar o fim do upload.

132
Integrao Raspberry Pi e
Arduino - Oficina 2a

Cdigo Arduino
Cdigo Python

133
Oficina 2a
Leitura analgica

Cdigo Python
Objetivo: Requisitar valores de temperatura do Arduino com uma frequncia
determinada, usando a linguagem de programao Python.

Recursos computacionais:
Funo write:
Mdulo time:
Enviar uma mensagem ao Arduino.
Adicionar atrasos ao cdigo.
Funo float():
Mdulo serial:
Transformar valor lido pela serial
Comunicao serial.
em real.
Estrutura de repetio while:
Funo print:
Rodar cdigo infinitamente.
Imprimir algo na tela do Python
Funo readline:
Shell.
Ler os bytes de uma mensagem at o
Funo len():
fim da linha.
Verificar tamanho da mensagem.

134
Oficina 2a
Leitura analgica
Cdigo Python
3. Digitar o novo cdigo em Python;

135
Oficina 2a
Leitura analgica
Cdigo Python
3. Digitar o novo cdigo em Python;

atribudo um valor timeout na funo


Serial. Isso indica um tempo mximo para
esperar resposta da funo que recebe a
mensagem ( readline( ) )

136
Oficina 2a
Leitura analgica
Cdigo Python
3. Digitar o novo cdigo em Python;
A varivel temperatura ir armazenar o
valor recebido pela porta Serial
A funo ser.readline( ) ir ler a mensagem
do Arduino at acabar a linha, ou seja, at o
\n, do tipo String. O Arduino ir enviar a
mensagem usando a funo println, que j
adiciona o \n ao final da mensagem

137
Oficina 2a
Leitura analgica
Cdigo Python
3. Digitar o novo cdigo em Python;

A funo len ( ) retorna o tamanho da


varivel temperatura. No caso, essa varivel
s ter tamanho maior que 0 caso tenha
recebido alguma mensagem do Arduino

138
Oficina 2a
Leitura analgica
Cdigo Python
3. Digitar o novo cdigo em Python;

A funo float( ) um cast, isto , uma


converso de tipo. A mensagem lida como
String ser transformada em um tipo float

139
Oficina 2a
Leitura analgica

140
Oficina 2a
Leitura analgica
Cdigo Python
4. Executar o cdigo: selecionar Run > Run Module, ou pressionar <F5>;

141
Oficina 2a
Leitura analgica
Cdigo Python
5. Ser solicitado que salve o arquivo. Pressionar OK;

142
Oficina 2a
Leitura analgica
Cdigo Python
6. Para facilitar, salvar no Desktop (rea de Trabalho), escolher um
nome e clicar no boto Save.

143
Oficina 2a
Leitura analgica

7. Verificar funcionamento, colocando os dedos no sensor para que possam ser vistas
mudanas na temperatura:

144
Integrao Raspberry Pi e
Arduino
Oficina 2b: Leitura analgica e resposta com rel

145
Oficina 2b
Leitura analgica

Oficina 2b

Objetivo: Fazer o Arduino enviar os dados de leitura analgica para o Raspberry Pi,
que ir decidir se o Arduino acionar um aparelho, usando o mdulo rel, para
resfriar o sensor.

Materiais:

Raspberry Pi;
Arduino UNO;
Cabo USB;
Jumpers macho-fmea;
Mdulo Rel;
Sensor - LM35.
146
Oficina 2b
Leitura analgica

Circuito com o Arduino


1. Montar circuito a seguir:

5V GND

A1

147
Integrao Raspberry Pi e
Arduino - Oficina 2b

Cdigo Arduino
Cdigo Python

148
Oficina 2b
Leitura analgica
2. Digitar o novo cdigo para Arduino; Cdigo Arduino

149
Oficina 2b
Leitura analgica
2. Digitar o novo cdigo para Arduino; Cdigo Arduino

Declarao de nova varivel inteira


correspondente porta que ser conectado o
mdulo rel

150
Oficina 2b
Leitura analgica
2. Digitar o novo cdigo para Arduino; Cdigo Arduino

Declara o pino correspondente ao rele como


pino de sada

151
Oficina 2b
Leitura analgica
2. Digitar o novo cdigo para Arduino; Cdigo Arduino

Caso a mensagem recebida seja B, liga a


porta onde est conectado o mdulo rel

152
Oficina 2b
Leitura analgica
2. Digitar o novo cdigo para Arduino; Cdigo Arduino

Caso a mensagem recebida seja C, desliga a


porta onde est conectado o mdulo rel

153
Upload programa Oficina2b

Para carregar o programa para o Arduino, clicar no boto Upload. Mas antes deve-se
salvar o programa;

Ento , ao abrir a janela

Save sketch folder as,

clicar no campo Name e nomear

o programa para Oficina2b;

Para facilitar, salvar no Desktop

(rea de Trabalho);
Clicar no boto Save;
E aguardar o fim do upload.

154
Integrao Raspberry Pi e
Arduino - Oficina 2b

Cdigo Arduino
Cdigo Python

155
Oficina 2b
Leitura analgica

Cdigo Python
Objetivo: Requisitar valores de temperatura do Arduino com uma frequncia
determinada, que decidir se acionar um mdulo rel. Neste exemplo a temperatura de
acionamento do mdulo rel foi ajustada em 30C, podendo ser alterada no programa.
Recursos computacionais:
Funo write:
Mdulo time: Enviar uma mensagem ao Arduino.
Adicionar atrasos ao cdigo. Funo float():
Mdulo serial: Transformar valor lido pela serial
Comunicao serial. em real.
Estrutura de repetio while: Funo print:
Rodar cdigo infinitamente. Imprimir algo na tela do Python
Funo readline: Shell.
L os bytes de uma mensagem at Funo len():
fim da linha. Verificar tamanho da mensagem.

156
Oficina 2b
Leitura analgica
Cdigo Python
3. Digitar o novo cdigo em Python;

157
Oficina 2b
Leitura analgica
Cdigo Python
3. Digitar o novo cdigo em Python;

O valor de temperatura passado pelo


Arduino comparado com um valor, que
nesse caso foi definido como 30graus,
podendo ser ajustado como desejar no seu
programa. Caso seja maior que esse valor, a
mensagem B enviada e ser interpretada
pelo Arduino para ligar o mdulo rel. Caso
contrrio, enviado C, para que desligue o
mdulo rel

158
Oficina 2b
Leitura analgica
Cdigo Python
4. Executar o cdigo: selecionar Run > Run Module, ou pressionar <F5>;

159
Oficina 2b
Leitura analgica
Cdigo Python
5. Ser solicitado que salve o arquivo. Pressionar OK;

160
Oficina 2b
Leitura analgica
Cdigo Python
6. Para facilitar, salvar no Desktop (rea de Trabalho), escolher um
nome e clicar no boto Save.

161
Oficina 2a
Leitura analgica

7. Verificar funcionamento, colocando os dedos no sensor para que possam ser vistas
mudanas na temperatura:

162
Integrao Raspberry Pi e
Arduino
Oficina Bnus: Enviar e-mail de alerta da temperatura pelo GMAIL

163
Oficina Bnus

Liberar segurana de aplicativos menos seguros do GMAIL

Acessar o link https://www.google.com/settings/security/lesssecureapps e selecionar a


opo Ativar;

164
Oficina Bnus

Buscar Servidor SMTP e porta para STARTTLS

No GMAIL, entrar nas configuraes;

165
Oficina Bnus
Buscar Servidor SMTP e porta para STARTTLS
Abrir aba Encaminhamento e POP/IMAP e clicar no link de Instrues de
configurao de outros aplicativos;

166
Oficina Bnus

Buscar Servidor SMTP e porta para STARTTLS


Procurar pelo Servidor de envio de e-mails (SMTP) e porta para STARTTLS.

167
Integrao Raspberry Pi e
Arduino - Oficina Bnus

Cdigo Python

168
Oficina Bnus
Alerta de temperatura

Cdigo Python
Objetivo: Enviar por e-mail quando a temperatura for superior a um limiar, usando a
linguagem de programao Python.

Recursos computacionais:

Mdulo time:
Adicionar atrasos ao cdigo.
Mdulo serial:
Comunicao serial.
Mdulo smtplib:
Contm funes SMTP para enviar e-mails.

169
Oficina Bnus
Alerta de temperatura
import serial Cdigo Python
import time
import smtplib

ser = serial.Serial ( '/dev/ttyACM0' , 9600)

def envia_email ( ) :
server = smtplib.SMTP ( 'smtp.gmail.com' , 587 )
server.starttls ( )
server.login ('cursos4flyers@gmail.com' , 'cursoiot3' )

msg = "Alerta! Temperatura muito alta!"


server.sendmail ('cursos4flyers@gmail.com' , 'contato4flyers@gmail.com', msg )
server.quit ( )

while (1):
ser.write ('A')
time.sleep(1)
temperatura = float ( ser.readline ( ) )
print (temperatura)
if (temperatura > 30.0):
envia_email ( )

170
Oficina Bnus
Alerta de temperatura
import serial Cdigo Python
import time
import smtplib Importao da biblioteca smtplib
ser = serial.Serial ( '/dev/ttyACM0' , 9600)

def envia_email ( ) :
server = smtplib.SMTP ( 'smtp.gmail.com' , 587 )
server.starttls ( )
server.login ('cursos4flyers@gmail.com' , 'cursoiot3' ) Funo que envia
e-mail
msg = "Alerta! Temperatura muito alta!"
server.sendmail ('cursos4flyers@gmail.com' , 'contato4flyers@gmail.com', msg )
server.quit ( )

while (1):
ser.write ('A')
time.sleep(1)
temperatura = float ( ser.readline ( ) )
print (temperatura)
if (temperatura > 30.0):
envia_email ( ) Chamada da funo
que envia e-mail

171
Oficina Bnus
Alerta de temperatura
import serial Cdigo Python
import time
import smtplib

ser = serial.Serial ( '/dev/ttyACM0' , 9600)

def envia_email ( ) : Configurao do servidor SMTP e porta


server = smtplib.SMTP ( 'smtp.gmail.com' , 587 ) para STARTTLS (indicados pelo servidor
server.starttls ( )
de e-mail)
server.login ('cursos4flyers@gmail.com' , 'cursoiot3' )

msg = "Alerta! Temperatura muito alta!"


server.sendmail ('cursos4flyers@gmail.com' , 'contato4flyers@gmail.com', msg )
server.quit ( )

while (1):
ser.write ('A')
time.sleep(1)
temperatura = float ( ser.readline ( ) )
print (temperatura)
if (temperatura > 30.0):
envia_email ( )

172
Oficina Bnus
Alerta de temperatura
import serial Cdigo Python
import time
import smtplib

ser = serial.Serial ( '/dev/ttyACM0' , 9600)

def envia_email ( ) :
server = smtplib.SMTP ( 'smtp.gmail.com' , 587 )
server.starttls ( )
Funo STARTTLS para comear o
server.login ('cursos4flyers@gmail.com' , 'cursoiot3' ) protocolo TLS usado nesse caso

msg = "Alerta! Temperatura muito alta!"


server.sendmail ('cursos4flyers@gmail.com' , 'contato4flyers@gmail.com', msg )
server.quit ( )

while (1):
ser.write ('A')
time.sleep(1)
temperatura = float ( ser.readline ( ) )
print (temperatura)
if (temperatura > 30.0):
envia_email ( )

173
Oficina Bnus
Alerta de temperatura
import serial Cdigo Python
import time
import smtplib

ser = serial.Serial ( '/dev/ttyACM0' , 9600)

def envia_email ( ) :
server = smtplib.SMTP ( 'smtp.gmail.com' , 587 ) login com o endereo de e-mail e senha.
server.starttls ( ) Para o curso, pode-se usar o endereo:
server.login ('cursos4flyers@gmail.com' , 'cursoiot3' ) cursos4flyers@gmail.com e senha:
cursoiot3
msg = "Alerta! Temperatura muito alta!"
server.sendmail ('cursos4flyers@gmail.com' , 'contato4flyers@gmail.com', msg )
server.quit ( )

while (1):
ser.write ('A')
time.sleep(1)
temperatura = float ( ser.readline ( ) )
print (temperatura)
if (temperatura > 30.0):
envia_email ( )

174
Oficina Bnus
Alerta de temperatura
import serial Cdigo Python
import time
import smtplib

ser = serial.Serial ( '/dev/ttyACM0' , 9600)

def envia_email ( ) :
server = smtplib.SMTP ( 'smtp.gmail.com' , 587 )
server.starttls ( )
server.login ('cursos4flyers@gmail.com' , 'cursoiot3' )
msg uma varivel que armazena a
msg = "Alerta! Temperatura muito alta!" mensagem que deseja enviar no corpo do
server.sendmail ('cursos4flyers@gmail.com' , 'contato4flyers@gmail.com', msg ) e-mail
server.quit ( )

while (1):
ser.write ('A')
time.sleep(1)
temperatura = float ( ser.readline ( ) )
print (temperatura)
if (temperatura > 30.0):
envia_email ( )

175
Oficina Bnus
Alerta de temperatura
import serial Cdigo Python
import time
import smtplib

ser = serial.Serial ( '/dev/ttyACM0' , 9600)

def envia_email ( ) :
server = smtplib.SMTP ( 'smtp.gmail.com' , 587 )
server.starttls ( )
server.login ('cursos4flyers@gmail.com' , 'cursoiot3' )

msg = "Alerta! Temperatura muito alta!"


server.sendmail ('cursos4flyers@gmail.com' , 'contato4flyers@gmail.com', msg )
server.quit ( )
Funo sendmail com a sintaxe:
while (1):
ser.write ('A') (<email_remetente>, <email_destino>, <mensagem>)
time.sleep(1)
temperatura = float ( ser.readline ( ) ) Ou seja, envia a mesagem msg do e-mail
print (temperatura) cursos4flyers@gmail.com para o endereo
if (temperatura > 30.0): contato4flyers@gmail.com
envia_email ( )

176
Oficina Bnus
Alerta de temperatura
import serial Cdigo Python
import time
import smtplib

ser = serial.Serial ( '/dev/ttyACM0' , 9600)

def envia_email ( ) :
server = smtplib.SMTP ( 'smtp.gmail.com' , 587 )
server.starttls ( )
server.login ('cursos4flyers@gmail.com' , 'cursoiot3' )

msg = "Alerta! Temperatura muito alta!"


server.sendmail ('cursos4flyers@gmail.com' , 'contato4flyers@gmail.com', msg )
server.quit ( )
Funo quit sai do servidor SMTP
while (1):
ser.write ('A')
time.sleep(1)
temperatura = float ( ser.readline ( ) )
print (temperatura)
if (temperatura > 30.0):
envia_email ( )

177
Dvidas?

178
Contatos
contato4flyers@gmail.com
www.4flyers.com.br
contato@huinfinito.com.br
www.huinfinito.com.br

179
Links recomendados
www.instructables.com
www.raspberrypi.org
www.arduino.cc
www.fritzing.org

180
Bibliografia
Primeiros passos com o Raspberry Pi - Matt Richardson e Shawn
Wallace
Arduino Bsico - Michael McRoberts

181