CURSO INTEGRAÇÃO RASPBERRY PI E ARDUINO
Integração Raspberry Pi e Arduino Introdução ao Raspberry Pi e ao Arduino
Integração Raspberry Pi e Arduino
⊡
Introdução ao Raspberry Pi
⊡
Introdução ao Arduino
⊡
Instalação IDE Arduino
O que é um Raspberry Pi?
O Raspberry Pi é um computador de placa única com características que o tornam um computador embarcável: ⊡
Hardware com baixo consumo de energia;
⊡
Periféricos;
⊡
Tamanho reduzido;
⊡
Possibilidade de ser colocado um software.
O Raspberry Pi 3
Antena
40 pinos de propósito geral 26 GPIO + 12 alimentação + 2 EEPROM
4 portas USB
Conector DSI ( Display Display Serial Interface)
Microprocessador BCM2837 - 1,2GHz quad-core ARM Cortex-A53
Hub USB
Conector Ethernet
LEDs indicativos de funcionamento Conector micro USB (para alimentação da placa: 2A 2A,, 5Volts 5Volts))
Conector HDMI
Conector para módulo Câmera
Saída de áudio e vídeo (Conector P2 - 4 Polos)
O Raspberry Pi 3
Memória RAM 1GB
Adaptador WiFi e Bluetooth ( BCM43438 ) Soquete para cartão MicroSD: Possibilidade de gravar um software
Raspbian PIXEL
O novo sistema operacional PIXEL PIXEL é é uma versão lançada pelo Raspbian com algumas diferenças das versões anteriores: ⊡
Nova interface, ícones e fontes;
⊡
Novos recursos para imagens de fundo;
⊡
Software de acesso remoto VNC já incorporado; incorporado ;
Área de Trabalho PIXEL
O PIXEL possui área de trabalho diferente dos antigos sistemas operacionais Raspbian:
Aparência do PIXEL
Novos ícones no menu e nova fonte:
Aparência do PIXEL
Nova aparência das janelas:
Nova aplicação no PIXEL
Foi adicionada ao PIXEL uma aplicação para visualização da área de trabalho através de outro computador: o VNC. Deve-se configurar o PIXEL para permitir o acesso de outro computador através do VNC. Uma vez configurado, não é necessário mais alterar as configurações, a menos que deseja desativar o recurso.
Para permitir o acesso ao PIXEL através do VNC, deve-se acessar as configurações do sistema operacional. Isso pode ser feito através da interface gráfica, utilizando mouse e monitor HDMI, ou via comando: raspi-config .
Ligando o Raspberry Pi
Inserindo o cartão micro-SD
⊡
De posse de um cartão 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 cartão micro-SD no soquete do Raspberry Pi, conforme a figura (observe que a descrição do cartão deverá estar voltada para si).
Conectar à rede e ligar o Raspberry Pi
Conexões Raspberry Pi
⊡
Conectar
o
cabo
ethernet
no
Raspberry Pi e na mesma rede que o seu computador está conectado; ⊡
Conectar a fonte.
Indicativos de funcionamento
Verificar funcionamento do Raspberry Pi ⊡
Verificar se o LED vermelho próximo à conexão da fonte de energia está aceso e se o LED verde está piscando;
⊡
Verificar se os LEDs na conexão do cabo ethernet estão acesos.
Configuração PIXEL
1.
Configurar usando a interface gráfica:
OBS: Necessário estar conectado a um monitor.
Configuração PIXEL
OBS: Necessário estar conectado a um monitor. Na aba Interfaces, selecionar Enabled onde está indicado a opção VNC. 1.
Configurar usando a interface gráfica:
Configuração PIXEL
2.
Configurar usando acesso SSH. Para essa configuração no Windows, deve-se usar um programa emulador de
terminal. O PuTTY é um software de emulação de terminal gratuito com suporte SSH (Secure Shell). Ou seja, ele vai permitir o acesso ao terminal do Raspberry Pi através 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
emulação
https://the.earth.li/~sgtatham/putty/latest/x86/putty.exe ⊡
Abrir o programa, clicando duas vezes no ícone.
de
terminal):
Acesso ao Raspberry Pi
2.
Configurar usando acesso SSH. ⊡
Estabelecer conexão com Raspberry Pi
Após abrir a janela do programa PuTTY, deve-se estabelecer uma conexão do tipo SSH (Secure Shell);
⊡
SSH (Secure Shell) é, ao mesmo tempo, um programa de computador e um protocolo de rede que permite a conexão com outro computador na rede;
⊡
A conexão SSH permitirá que sejam enviados comandos remotamente ao Raspberry Pi, fora da interface gráfica. Por exemplo: comando de instalação de programas, comando para desligar o sistema, etc.;
⊡
Os comandos enviados através da conexão SSH irão permitir a configuração inicial do Raspberry Pi.
Endereço de IP
Descobrir o IP do Raspberry Pi
Descobrir o endereço de IP do Raspberry Pi na rede local
Link para download do software : http://www.advanced-ip-scanner.com/ ; ⊡
Precisa-se descobrir o endereço 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 Português e clicar no botão OK.
Endereço de IP
Descobrir o IP do Raspberry Pi
⊡
Ao abrir a janela, selecionar a ação
⊡
Executar e clicar no botão Avançar; Selecionar “Eu aceito os termos do Contrato” e em seguida clicar em Executar, ou Avançar.
Endereço de IP x Endereço MAC
O endereço de IP está associado à conexão naquela rede. Quem define qual endereço de IP do Raspberry Pi é o roteador, que irá dar os endereços a cada dispositivo que é conectado à ele. Esse endereço pode mudar até pelo simples fato de desconectá-lo e conectá-lo novamente na mesma rede. Já o endereço MAC é o endereço ligado ao dispositivo físico, ou seja, cada adaptador de rede possui um endereço MAC associado a ele, e esse é único e inalterável. i p : 1 9 2 . 1 6 8 . 1 . 1 1
0 . 1. 1 . 1 6 8 2 9 i p : 1
i p : 1 9 2 . 1 6 8 . 1 . 1 2
MAC: b8:27:eb:27:07:7d
Endereço de IP
Descobrir o IP do Raspberry Pi
⊡
Ao abrir a janela do aplicativo, clicar no botão Verificar para escanear os dispositivos da rede em que o computador está conectado.
Endereço 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 “Endereço MAC” da janela, verificar qual dispositivo que o endereço bate com o da etiqueta que foi colocada na caixa do seu Raspberry Pi. O endereço MAC é específico de cada dispositivo e não muda, independente da rede em que está conectado;
⊡
Anotar o endereço IP do seu Raspberry Pi (ex.: 192.168.2.117).
Acesso ao Raspberry Pi
2.
Configurar usando acesso SSH.
Estabelecer conexão com Raspberry Pi ⊡
Inserir o endereço 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 opção SSH;
⊡
Clicar no botão Open.
Acesso ao Raspberry Pi
2.
Estabelecer conexão com Raspberry Pi
Configurar usando acesso SSH.
⊡
No
primeiro
login,
aparecerá
mensagem de alerta; ⊡
Clicar no botão Sim ou Yes;
uma
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 minúsculas: login as: pi
⊡
Pressionar
.
Acesso ao Raspberry Pi
2.
Login no Raspberry Pi
Configurar usando acesso SSH.
⊡
Em seguida, ao aparecer a tela ao lado digitar com letras minúsculas: pi@ password: raspberry
⊡
Pressionar . OBS.: Por se tratar de uma senha, nada aparecerá na tela enquanto é digitada.
Acesso ao Raspberry Pi
2.
Login no Raspberry Pi
Configurar usando acesso SSH.
⊡
Se a senha escrita estiver errada, a mensagem de acesso negado irá surgir;
⊡
Tentar digitar novamente: raspberry
⊡
Pressionar .
Acesso ao Raspberry Pi
2.
Configurar usando acesso SSH.
Conexão estabelecida ⊡
A tela ao lado irá aparecer;
⊡
Neste momento já está estabelecida a conexão 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, então os comandos aceitos são familiares para quem já trabalha nessa plataforma.
Configurações iniciais
2.
Configurar usando acesso SSH.
Enviar comando ao Raspberry Pi ⊡
É hora de configurar o Raspberry Pi;
⊡
Para isso, o usuário deve estar com o perfil de administrador;
⊡
Para ter permissão 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 .
Configurações iniciais
2.
Configurar usando acesso SSH. Aparecerá a seguinte janela de configuração:
Configurações iniciais
2.
Configurar usando acesso SSH. Com a seta para baixo, navegar até a opção 9 Advanced Options e pressionar
.
Configurações iniciais
2.
Configurar usando acesso SSH. Com a seta para baixo, navegar até a opção A5 VNC e pressionar .
Configurações iniciais
2.
Configurar usando acesso SSH. Com a seta para esquerda, navegar até a opção YES e pressionar .
Configurações iniciais
2.
Configurar usando acesso SSH. Selecionar OK e pressionar .
Configurações iniciais
2.
Configurar usando acesso SSH. Com a seta para direita, navegar até a opção e pressionar .
Acesso remoto ao PIXEL
Instalar o RealVNC-viewer para acesso remoto à interface gráfica ⊡
⊡
Deve-se fazer o https://www.realvnc.com/; Clicar na aba DOWNLOAD;
download
do
programa
no
link:
Acesso remoto ao PIXEL
Instalar o RealVNC-viewer para acesso remoto à interface gráfica ⊡
Clicar no link VNC Viewer;
Acesso remoto ao PIXEL
Instalar o RealVNC-viewer para acesso remoto à interface gráfica ⊡ ⊡
⊡
Selecionar o sistema operacional ou o aplicativo que irá usar ; Selecionar o formato EXE e a versão 64 bits (x64) ou 32 bits (x86), de acordo com o sistema operacional instalado na sua máquina; Clicar em DOWNLOAD VNC VIEWER X.X.X;
Acesso remoto ao PIXEL
Instalar o RealVNC-viewer para acesso remoto à interface gráfica ⊡ ⊡
Aguardar o fim do download; Executar o arquivo VNC-Viewer-X.X.X-Windows-XXbit.exe;
Acesso remoto ao PIXEL
Instalar o RealVNC-viewer para acesso remoto à interface gráfica ⊡
⊡
Se desejar enviar dados para ajudar no desenvolvimento do VNC Viewer, deixe a opção selecionada. Se não, desmarque-a; Em seguida, clicar em GOT IT;
Acesso remoto ao PIXEL ⊡
No VNC Viewer, clicar em >File >New Connection...
Acesso remoto ao PIXEL
⊡
No campo VNC Server, colocar o IP do Raspberry Pi;
⊡
No campo Name, dê um nome qualquer para a conexão, por exemplo, Raspi;
⊡
Clicar em OK;
Acesso remoto ao PIXEL ⊡
Uma nova conexão apareceu na tela inicial. Clicar duas vezes para iniciar.
Acesso remoto ao PIXEL
Acesso à interface gráfica ⊡ ⊡
Escrever o Username pi e Password raspberry; Clicar no botão OK e aguardar a conexão.
Acesso remoto ao PIXEL
Resolução padrão ⊡
A resolução padrão do sistema operacional deve ser ajustada para melhorar a aparência da interface gráfica.
Configurações iniciais
Configurar a resolução da tela. No terminal de comandos do PuTTY, digitar: ~$ sudo nano /boot/config.txt
e pressionar .
Configurações iniciais
Configurar a resolução da tela. Encontrar as linhas: #framebuffer_width=1280 #framebuffer_height=720
Caso não consiga visualizar as linhas, basta maximizar a janela.
Configurações iniciais
Configurar a resolução da tela. Apagar o caracter #: framebuffer_width=1280 framebuffer_height=720
Configurações iniciais
Configurar a resolução da tela. Pressionar + para salvar, depois para confirmar o nome.
Configurações iniciais
Configurar a resolução da tela. Pressionar + para sair do editor nano.
Configurações iniciais
Configurar a resolução da tela. Reiniciar o sistema com o comando ~ $ sudo reboot now , em seguida Clicar em OK na mensagem de erro do PuTTY e fechar o aplicativo.
Configurações iniciais
Configurar a resolução da tela. Aguardar que o sistema seja reiniciado e a conexão retorne ao VNC Viewer.
Acesso remoto ao PIXEL ⊡
Esta é a janela com a resolução escolhida (1280 X 720). Pode ser escolhida também a resolução 1920 x 1080, a escolha varia com a resolução que melhor se adaptar a tela do seu computador.
Acesso remoto ao PIXEL ⊡
Quando o mouse é posicionado no centro superior da janela, é possível ver o menu do VNC Viewer, onde são encontrados alguns recursos: Ajuste da tela
Tela cheia
Transferir arquivos
Enviar Ctrl+Alt+Del
Informações da conexão
Chat
Fechar conexão
Propriedades
Transferir arquivos via VNC
⊡
Clicar no botão File transfer do menu;
⊡
Na nova janela, clicar em Send files...
Transferir arquivos via VNC ⊡
Entrar na pasta Curso_IoT_3.
Transferir arquivos via VNC ⊡
Selecionar o arquivo arduino-1.6.13-linuxarm.tar e clicar no botão Abrir.
Transferir arquivos via VNC ⊡
Fechar a janela de transferência de arquivos.
Transferir arquivos via VNC ⊡
Aguardar o fim da transferência do arquivo.
Transferir arquivos via VNC ⊡
Fechar a janela de transferência do arquivo.
Extrair arquivos compactados ⊡
Clicar duas vezes no arquivo transferido.
Extrair arquivos compactados ⊡
Aguardar que o sistema carregue os arquivos compactados.
Extrair arquivos compactados ⊡ ⊡
Clicar com o botão direito na pasta arduino-1.6.12 e clicar em Extract. Confirmar o destino da pasta (/home/pi/Desktop) e clicar novamente em Extract.
Extrair arquivos compactados ⊡
Aguardar o processo de extração.
Extrair arquivos compactados ⊡
Ignorar a mensagem de erro. Clicar no botão OK.
Executar arquivo de instalação da IDE Arduino ⊡ ⊡
Entrar na pasta arduino-1.6.13 e clicar duas vezes no arquivo install.sh. Na janela de execução, clicar em Execute.
Abrir IDE ⊡
Verificar se, após instalação, o programa aparece no Menu > Programming;
⊡
Clicar em Arduino IDE para abrir a Interface de Desenvolvimento Integrada (IDE).
Integração Raspberry Pi e Arduino
⊡
Introdução ao Raspberry Pi
⊡
Introdução ao Arduino
⊡
Instalação IDE Arduino
Arduino - Conceito
O que Arduino? Arduino é uma plataforma de hardware livre,
projetada com um
microcontrolador Atmel AVR de placa única, com suporte de entrada/saída embutido e uma linguagem de programação padrão. O que é necessário para programar o Arduino? Uma linguagem de programação padrão, que é essencialmente baseada em C/C++. O que é possível fazer com Arduino? AUTOMAÇÃO – Residencial ou Comercial; ROBÓTICA – Supervisão ou Controle; MONITORAMENTO – Sensores (ex.: Estação Meteorológica); Etc.
Alguns Tipos Disponíveis
PRO-MINI
UNO
DUEMILANOVE (descontinuado) NANO
LEONARDO
LILY PAD
MEGA
UNO Rev.3 X MEGA O Arduino UNO Rev.3 possui mais dois pinos SDA e SCL e dois outros pinos adicionais próximos ao RESET, sendo um o IOREF que permite aos shields se adaptarem à voltagem fornecida pela placa e um segundo pino que não 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 analógicas, conversor A/D de 10 bits, comunicação via USB, SPI, I2C, Canais PWM, alimentação via USB ou externa através de fonte de alimentação e seu microcontrolador é o ATMEGA256 com 256KB (Mem. Flash), rodando a 16MHz.
Botão de Reset
Arduino Padrão s i t a i g i o s D A ) P i n x. 4 0 m ( m á
Microcontrolador
d a a t r n E B U S Conversor USB
ç ã o a t e n A l i m x t e r n a E
d a a r t E n a s o n ic P i al ó g ão A n ç a t e n m i l s A P in o
Conexão Raspberry Pi + Arduino
Conexão USB do Arduino com o Raspberry Pi A comunicação entre o Arduino e o Raspberry Pi será feita utilizando o cabo USB: ⊡
Conectar o Arduino no Raspberry Pi utilizando o cabo USB.
Conexão Raspberry Pi + Arduino ⊡
Para verificar se o Raspberry Pi reconhece o Arduino conectado, digitar o comando ~ $ lsusb no terminal PuTTY e pressionar .
Conexão Raspberry Pi + Arduino ⊡
Verificar se Arduino Uno aparece nas opções de dispositivos conectados.
Integração Raspberry Pi e Arduino
⊡
Introdução ao Raspberry Pi
⊡
Introdução ao Arduino
⊡
Opções de instalação IDE Arduino
OPÇÃO 1 ⊡
Instalar IDE do repositório
Para instalar a IDE (Interface de Desenvolvimento Integrada) do Arduino, diretamente do repositório, deve-se digitar na linha de comando: sudo apt-get install arduino
⊡
Pressionar e aguardar. OBS: A versão do repositório não é necessariamente a mais nova lançada no site oficial arduino.cc. Por isso, para o curso, foi passada a versão mais atual por pendrive.
OPÇÃO 1
Instalar IDE do repositório
⊡
Confirmar a instalação do programa;
⊡
Apertar e aguardar.
OBS: A versão do repositório não é necessariamente a mais nova lançada no site oficial arduino.cc. Por isso, para o curso, foi passada a versão mais atual por pendrive.
OPÇÃO 1
Abrir IDE
⊡
Finalizada a instalação, verificar se o programa aparece no Menu;
⊡
Abrir a Arduino IDE.
OPÇÃO 2 ⊡
Baixar IDE do site oficial
Entrar no site www.arduino.cc e acessar a aba Download;
OPÇÃO 2 ⊡
Baixar IDE do site oficial
Clicar em Linux ARM (experimental);
OPÇÃO 2 ⊡
Baixar IDE do site oficial
Se não desejar fazer nenhuma contribuição aos desenvolvedores clicar no botão JUST DOWNLOAD;
OPÇÃO 2 ⊡
Instalar IDE do site oficial
Para instalar a IDE baixada do site oficial, basta seguir os passos já mostrados para extrair arquivos compactados e executar o arquivo de instalação.
Software de Desenvolvimento ⊡
Essa é a IDE Arduino para o Raspberry Pi.
Software de Desenvolvimento
Carregar
Compilar
Abrir
Novo
Salvar Monitor Serial
Ciclo de Desenvolvimento
Compilar
Carregar
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;
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.
Programa exemplo ⊡
Para abrir um exemplo, clicar na aba File, selecionar Examples > 01.Basics > Blink
Programa exemplo ⊡
Verificar o código completo. Se achar melhor, maximizar a tela.
Upload programa exemplo ⊡
Para carregar o programa para o Arduino, clicar no botão Upload.
Selecionar porta e placa
⊡
Selecionar a porta COM correspondente à que o Arduino está conectado, se aparecer a mensagem de “Porta Serial não encontrada”, ou pelo menu, na aba Tools > Serial Port.
Upload programa exemplo
⊡
Aguardar o fim do upload.
Verificar funcionamento ⊡
Verificar se o LED do Arduino está piscando.
Integração Raspberry Pi e Arduino Oficina 1: Raspberry Pi para Arduino “ Hello Arduino!”
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.
Integração Raspberry Pi e Arduino - Oficina 1
⊡
Código Arduino
⊡
Código Python
Oficina 1 “Hello Arduino!”
1.
Digitar o novo código para Arduino;
Código Arduino
Oficina 1 “Hello Arduino!”
1.
Digitar o novo código para Arduino;
Código Arduino
Declaração de variável que indica a porta que o LED está conectado
Oficina 1 “Hello Arduino!”
1.
Digitar o novo código para Arduino;
Código Arduino
Começa a comunicação serial com o Raspberry Pi na taxa de 9600bps ( baud)
Oficina 1 “Hello Arduino!”
1.
Digitar o novo código para Arduino;
Código Arduino
Declara o pino correspondente ao led como pino de saída
Oficina 1 “Hello Arduino!”
1.
Digitar o novo código para Arduino;
Código Arduino
Condição que indica mensagem proveniente do Raspberry Pi (comunicação serial)
Oficina 1 “Hello Arduino!”
1.
Digitar o novo código para Arduino;
Código Arduino
char_recebido irá armazenar o caractere recebido do Raspberry Pi. A função que lê esse caractere é Serial.read( )
Oficina 1 “Hello Arduino!”
1.
Digitar o novo código para Arduino;
Código Arduino
Estrutura que compara o caractere recebido com ‘A’, que nesse caso foi o caractere escolhido para mandar Arduino piscar o LED
Upload programa programa Oficina1 ⊡
Para carregar o programa para o Arduino, clicar clicar no no botão Upload Upload.. Mas antes deve-se salvar o programa;
⊡
Então , ao abrir a janela “Save sketch folder as”, as ”, clicar no campo Name e nomear o programa para “Oficina1 “Oficina1”; ”;
⊡
Para facilitar, salvar salvar no no Desktop
⊡
(Área de Trabalho); Clicar no botão Save Save;; E aguardar o fim do upload.
⊡
Integração Raspberry Pi e Arduino - Oficina 1
⊡
Código Arduino
⊡
Código Python
Oficina 1 “Hello Arduino”
Código Python Objetivo:: Testar comunicação entre Arduino e Raspberry Pi usando a linguagem de Objetivo programação Python Python.. Recursos computacionais: computacionais : ⚀
Módulo time time:: □
⚀
Adicionar atrasos ao código.
Função write Função write:: □
Módulo serial serial:: □
⚀
⚀
Comunicação serial.
Estrutura de repetição while repetição while:: □
Rodar código infinitamente.
Enviar uma mensagem ao Arduino.
⚀
Função print print:: □
Imprimir algo na tela do Python Shell. Shell .
Oficina 1 “Hello Arduino!” Arduino!”
2.
Abrir o programa Python 2 (IDLE): (IDLE): clicar em menu > Programming > Python 2 (IDLE); (IDLE);
Oficina 1 “Hello Arduino”
⊡
Configuração da IDE: no menu Options, selecionar Configure IDLE...
Oficina 1 “Hello Arduino”
⊡
Configuração da IDE: selecionar a aba Fonts/Tabs;
Identação de 4 espaços
OK
Oficina 1 “Hello Arduino!”
3.
Para criar um novo arquivo, clicar em File > New File, ou usar as teclas de atalho: + ;
#Escreva seu código aqui
Oficina 1 “Hello Arduino!”
Código Python 4.
Digitar o novo código em Python;
import serial import time ser = serial.Serial ('/dev/ttyACM0', 9600) while( 1 ): ser.write('A') print('Mensagem enviada') time.sleep(1)
Oficina 1 “Hello Arduino!”
Código Python 4.
Digitar o novo código em Python;
Importação dos módulos necessários: serial import serial permite comunicação com o Arduino e time import time permite atrasos no código. ser = serial.Serial ('/dev/ttyACM0', 9600)
while( 1 ): ser.write('A') print('Mensagem enviada') time.sleep(1)
Oficina 1 “Hello Arduino!”
Código Python 4.
Digitar o novo código em Python;
import serial import time ser = serial.Serial ('/dev/ttyACM0', 9600) while( 1 ): ser.write('A') print('Mensagem enviada') time.sleep(1)
Assim como no Arduino, deve ser indicada a taxa da comunicação serial. A taxa deve ser a mesma utilizada no programa do Arduino aqui no programa em Python para o Raspberry Pi. Na função Serial deve-se indicar a porta COM correspondente ao Arduino e a taxa de comunicação.
Oficina 1 “Hello Arduino!”
Código Python 4.
Digitar o novo código em Python;
import serial import time ser = serial.Serial ('/dev/ttyACM0', 9600) while( 1 ): ser.write('A') print('Mensagem enviada') time.sleep(1)
Estrutura de repetição para rodar infinitamente. ser.write: função que irá enviar o caractere ‘A’ para o Arduino. print: função que imprime mensagem na tela do Python Shell. time.sleep: função para esperar 1 segundo
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) não deve superar o período das mensagens enviadas pelo Raspberry Pi (time.sleep(1) = 1s). Isso causaria uma perda de mensagens entre os dois dispositivos.
Oficina 1 “Hello Arduino!”
5.
Executar o código: selecionar Run > Run Module, ou pressionar ;
Código Python
Oficina 1 “Hello Arduino!”
6.
Será solicitado que salve o arquivo. Pressionar OK;
Código Python
Oficina 1 “Hello Arduino!”
7.
Para facilitar, salvar no Desktop (Área de Trabalho), escolher um nome e clicar no botão Save;
Código Python
Oficina 1 “Hello Arduino!”
8.
Verificar funcionamento:
Integração Raspberry Pi e Arduino Oficina 2a: Leitura analógica
Oficina 2a Leitura analógica
Sensor de Temperatura - LM35 ⊡
⊡
⊡
Sensor é conhecido como qualquer componente ou circuito eletrônico que permita a análise de uma determinada condição do ambiente, podendo ela ser algo simples como a temperatura; O LM35 é um sensor linear de temperatura que possui escalas de leituras entre -55ºC até 150ºC, convertendo a temperatura em sinais de corrente elétrica entre 400µA à 5mA, com sensibilidade de 10mA a cada grau Celsius de temperatura (10mV/ºC); Especificações: - Tensão de operação (VSS): 4 a 30V; - Faixa de operação: -55ºC até 150ºC; - Precisão a 25ºC: 0,5ºC; - Corrente de consumo: (ILOAD): 60µA.
Oficina 2a Leitura analógica
Oficina 2a Objetivo: Fazer o Arduino enviar os dados de leitura analógica para o Raspberry Pi.
Materiais: ⊡
Raspberry Pi;
⊡
Arduino UNO;
⊡
Cabo USB;
⊡ ⊡
Jumpers macho-fêmea; Sensor - LM35.
Oficina 2a Leitura analógica
Circuito com o Arduino 1.
Montar o circuito a seguir: 5V
A1
GND
Integração Raspberry Pi e Arduino - Oficina 2a
⊡
Código Arduino
⊡
Código Python
2.
Oficina 2a Leitura analógica
Digitar o novo código para Arduino;
Código Arduino
2.
Oficina 2a Leitura analógica
Digitar o novo código para Arduino;
Código Arduino Declaração de duas novas variáveis: leitura_analógica: variável inteira para armazenar leitura analógica feita pelo sensor temperatura: variável real para armazenar a temperatura calculada
2.
Oficina 2a Leitura analógica
Digitar o novo código para Arduino;
Código Arduino
leitura_analógica irá armazenar o valor lido pelo sensor LM35. A função que lê esse valor é analogRead( ). A1 é a porta ao qual o sensor é conectado na placa do Arduino
2.
Oficina 2a Leitura analógica
Digitar o novo código para Arduino;
Código Arduino
A variável temperatura irá armazenar o valor calculado da temperatura
2.
Oficina 2a Leitura analógica
Digitar o novo código para Arduino;
Código Arduino
A função Serial.println irá enviar uma mensagem contendo o valor de temperatura na porta Serial com a taxa indicada na função void setup ( ) Como o programa em Python também irá comunicar usando essa taxa, o Raspberry Pi irá receber essa mensagem
Upload programa Oficina2a ⊡
Para carregar o programa para o Arduino, clicar no botão Upload. Mas antes deve-se salvar o programa;
⊡
Então , 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 botão Save; E aguardar o fim do upload.
⊡
Integração Raspberry Pi e Arduino - Oficina 2a
⊡
Código Arduino
⊡
Código Python
Oficina 2a Leitura analógica
Código Python Objetivo: Requisitar valores de temperatura do Arduino com uma frequência determinada, usando a linguagem de programação Python. Recursos computacionais: ⚀
Módulo time: Adicionar atrasos ao código. Módulo serial: Comunicação serial. Estrutura de repetição while: Rodar código infinitamente. Função readline: Ler os bytes de uma mensagem até o fim da linha.
⚀
□
□
⚀
⚀
□
□
⚀
□
⚀
Função write: Enviar uma mensagem ao Arduino. Função float(): Transformar valor lido pela serial em real. Função print: Imprimir algo na tela do Python Shell. Função len(): Verificar tamanho da mensagem.
⚀
□
□
⚀
□
Oficina 2a Leitura analógica
Código Python 3.
Digitar o novo código em Python;
Oficina 2a Leitura analógica
Código Python 3.
Digitar o novo código em Python;
É atribuído um valor à timeout na função Serial. Isso indica um tempo máximo para esperar resposta da função que recebe a mensagem ( readline( ) )
Oficina 2a Leitura analógica
Código Python 3.
Digitar o novo código em Python; A variável temperatura irá armazenar o valor recebido pela porta Serial A função 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 função println, que já adiciona o \n ao final da mensagem
Oficina 2a Leitura analógica
Código Python 3.
Digitar o novo código em Python;
A função len ( ) retorna o tamanho da variável temperatura. No caso, essa variável só terá tamanho maior que 0 caso tenha recebido alguma mensagem do Arduino
Oficina 2a Leitura analógica
Código Python 3.
Digitar o novo código em Python;
A função float( ) é um cast, isto é, uma conversão de tipo. A mensagem lida como String será transformada em um tipo float
Oficina 2a Leitura analógica
Oficina 2a Leitura analógica
4.
Executar o código: selecionar Run > Run Module, ou pressionar ;
Código Python
Oficina 2a Leitura analógica
5.
Será solicitado que salve o arquivo. Pressionar OK;
Código Python
Oficina 2a Leitura analógica
6.
Para facilitar, salvar no Desktop (Área de Trabalho), escolher um nome e clicar no botão Save.
Código Python
Oficina 2a Leitura analógica
7.
Verificar funcionamento, colocando os dedos no sensor para que possam ser vistas mudanças na temperatura:
Integração Raspberry Pi e Arduino Oficina 2b: Leitura analógica e resposta com relé
Oficina 2b Leitura analógica
Oficina 2b Objetivo: Fazer o Arduino enviar os dados de leitura analógica para o Raspberry Pi, que irá decidir se o Arduino acionará um aparelho, usando o módulo relé, para resfriar o sensor. Materiais: ⊡
Raspberry Pi;
⊡
Arduino UNO;
⊡
Cabo USB;
⊡
Jumpers macho-fêmea;
⊡
Módulo Relé;
⊡
Sensor - LM35.
Oficina 2b Leitura analógica
Circuito com o Arduino 1.
5V
A1
Montar circuito a seguir:
GND
Integração Raspberry Pi e Arduino - Oficina 2b
⊡
Código Arduino
⊡
Código Python
2.
Oficina 2b Leitura analógica
Digitar o novo código para Arduino;
Código Arduino
2.
Oficina 2b Leitura analógica
Digitar o novo código para Arduino;
Código Arduino Declaração de nova variável inteira correspondente à porta que será conectado o módulo relé
2.
Oficina 2b Leitura analógica
Digitar o novo código para Arduino;
Código Arduino
Declara o pino correspondente ao rele como pino de saída
2.
Oficina 2b Leitura analógica
Digitar o novo código para Arduino;
Código Arduino
Caso a mensagem recebida seja ‘B’, liga a porta onde está conectado o módulo relé
2.
Oficina 2b Leitura analógica
Digitar o novo código para Arduino;
Código Arduino
Caso a mensagem recebida seja ‘C’, desliga a porta onde está conectado o módulo relé
Upload programa Oficina2b ⊡
Para carregar o programa para o Arduino, clicar no botão Upload. Mas antes deve-se salvar o programa;
⊡
Então , 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 botão Save; E aguardar o fim do upload.
⊡
Integração Raspberry Pi e Arduino - Oficina 2b
⊡
Código Arduino
⊡
Código Python
Oficina 2b Leitura analógica
Código Python Objetivo: Requisitar valores de temperatura do Arduino com uma frequência determinada, que decidirá se acionará um módulo relé. Neste exemplo a temperatura de acionamento do módulo relé foi ajustada em 30ºC, podendo ser alterada no programa. Recursos computacionais: ⚀ ⚀
Módulo time: Adicionar atrasos ao código. Módulo serial: Comunicação serial. Estrutura de repetição while: Rodar código infinitamente. Função readline: Lê os bytes de uma mensagem até fim da linha. □
⚀
□
⚀
□
□
⚀
⚀
□
⚀
□
Função write: Enviar uma mensagem ao Arduino. Função float(): Transformar valor lido pela serial em real. Função print: Imprimir algo na tela do Python Shell. Função len(): Verificar tamanho da mensagem. □
⚀
□
Oficina 2b Leitura analógica
Código Python 3.
Digitar o novo código em Python;
Oficina 2b Leitura analógica
Código Python 3.
Digitar o novo código 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 módulo relé. Caso contrário, é enviado ‘C’, para que desligue o módulo relé
Oficina 2b Leitura analógica
4.
Executar o código: selecionar Run > Run Module, ou pressionar ;
Código Python
Oficina 2b Leitura analógica
5.
Será solicitado que salve o arquivo. Pressionar OK;
Código Python
Oficina 2b Leitura analógica
6.
Para facilitar, salvar no Desktop (Área de Trabalho), escolher um nome e clicar no botão Save.
Código Python
Oficina 2a Leitura analógica
7.
Verificar funcionamento, colocando os dedos no sensor para que possam ser vistas mudanças na temperatura:
Integração Raspberry Pi e Arduino Oficina Bônus: Enviar e-mail de alerta da temperatura pelo GMAIL
Oficina Bônus
Liberar segurança de aplicativos menos seguros do GMAIL ⊡
Acessar o link https://www.google.com/settings/security/lesssecureapps e selecionar a opção “Ativar”;
Oficina Bônus
Buscar Servidor SMTP e porta para STARTTLS ⊡
No GMAIL, entrar nas configurações;
Oficina Bônus
Buscar Servidor SMTP e porta para STARTTLS ⊡
Abrir aba Encaminhamento e POP/IMAP e clicar no link de Instruções de configuração de outros aplicativos;
Oficina Bônus
Buscar Servidor SMTP e porta para STARTTLS ⊡
Procurar pelo Servidor de envio de e-mails (SMTP) e porta para STARTTLS.
Integração Raspberry Pi e Arduino - Oficina Bônus
⊡
Código Python
Oficina Bônus Alerta de temperatura
Código Python Objetivo: Enviar por e-mail quando a temperatura for superior a um limiar, usando a linguagem de programação Python. Recursos computacionais: ⚀
Módulo time: Adicionar atrasos ao código. Módulo serial: Comunicação serial. Módulo smtplib: Contém funções SMTP para enviar e-mails. □
⚀
□
⚀
□
Oficina Bônus Alerta de temperatura import serial import time import smtplib
Código Python
ser = serial.Serial ( '/dev/ttyACM0' , 9600) def envia_email ( ) : server = smtplib.SMTP ( 'smtp.gmail.com' , 587 ) server.starttls ( ) server.login ('[email protected]' , 'cursoiot3' ) msg = "Alerta! Temperatura muito alta!" server.sendmail ('[email protected]' , '[email protected]', msg ) server.quit ( ) while (1): ser.write ('A') time.sleep(1) temperatura = float ( ser.readline ( ) ) print (temperatura) if (temperatura > 30.0): envia_email ( )
Oficina Bônus Alerta de temperatura import serial import time import smtplib
Código Python Importação da biblioteca smtplib
ser = serial.Serial ( '/dev/ttyACM0' , 9600) def envia_email ( ) : server = smtplib.SMTP ( 'smtp.gmail.com' , 587 ) server.starttls ( ) server.login ('[email protected]' , 'cursoiot3' ) msg = "Alerta! Temperatura muito alta!" server.sendmail ('[email protected]' , '[email protected]', msg ) server.quit ( ) while (1): ser.write ('A') time.sleep(1) temperatura = float ( ser.readline ( ) ) print (temperatura) if (temperatura > 30.0): Chamada da função envia_email ( )
que envia e-mail
Função que envia e-mail
Oficina Bônus Alerta de temperatura
Código Python
import serial import time import smtplib ser = serial.Serial ( '/dev/ttyACM0' , 9600) def envia_email ( ) : server = smtplib.SMTP ( 'smtp.gmail.com' , 587 ) server.starttls ( ) server.login ('[email protected]' , 'cursoiot3' )
Configuração do servidor SMTP e porta para STARTTLS (indicados pelo servidor de e-mail)
msg = "Alerta! Temperatura muito alta!" server.sendmail ('[email protected]' , '[email protected]', msg ) server.quit ( ) while (1): ser.write ('A') time.sleep(1) temperatura = float ( ser.readline ( ) ) print (temperatura) if (temperatura > 30.0): envia_email ( )
Oficina Bônus Alerta de temperatura
Código Python
import serial import time import smtplib ser = serial.Serial ( '/dev/ttyACM0' , 9600) def envia_email ( ) : server = smtplib.SMTP ( 'smtp.gmail.com' , 587 ) server.starttls ( ) server.login ('[email protected]' , 'cursoiot3' )
Função STARTTLS para começar o protocolo TLS usado nesse caso
msg = "Alerta! Temperatura muito alta!" server.sendmail ('[email protected]' , '[email protected]', msg ) server.quit ( ) while (1): ser.write ('A') time.sleep(1) temperatura = float ( ser.readline ( ) ) print (temperatura) if (temperatura > 30.0): envia_email ( )
Oficina Bônus Alerta de temperatura
Código Python
import serial import time import smtplib ser = serial.Serial ( '/dev/ttyACM0' , 9600) def envia_email ( ) : server = smtplib.SMTP ( 'smtp.gmail.com' , 587 ) server.starttls ( ) server.login ('[email protected]' , 'cursoiot3' )
login com o endereço de e-mail e senha. Para o curso, pode-se usar o endereço: [email protected] e senha: cursoiot3
msg = "Alerta! Temperatura muito alta!" server.sendmail ('[email protected]' , '[email protected]', msg ) server.quit ( ) while (1): ser.write ('A') time.sleep(1) temperatura = float ( ser.readline ( ) ) print (temperatura) if (temperatura > 30.0): envia_email ( )
Oficina Bônus Alerta de temperatura import serial import time import smtplib
Código Python
ser = serial.Serial ( '/dev/ttyACM0' , 9600) def envia_email ( ) : server = smtplib.SMTP ( 'smtp.gmail.com' , 587 ) server.starttls ( ) server.login ('[email protected]' , 'cursoiot3' )
msg é uma variável que armazena a mensagem que deseja enviar no corpo do msg = "Alerta! Temperatura muito alta!" server.sendmail ('[email protected]' , '[email protected]', 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 ( )
Oficina Bônus Alerta de temperatura
Código Python
import serial import time import smtplib ser = serial.Serial ( '/dev/ttyACM0' , 9600) def envia_email ( ) : server = smtplib.SMTP ( 'smtp.gmail.com' , 587 ) server.starttls ( ) server.login ('[email protected]' , 'cursoiot3' ) msg = "Alerta! Temperatura muito alta!" server.sendmail ('[email protected]' , '[email protected]', msg ) server.quit ( ) while (1): ser.write ('A') time.sleep(1) temperatura = float ( ser.readline ( ) ) print (temperatura) if (temperatura > 30.0): envia_email ( )
Função sendmail com a sintaxe: (, , ) Ou seja, envia a mesagem msg do e-mail [email protected] para o endereço [email protected]
Oficina Bônus Alerta de temperatura import serial import time import smtplib
Código Python
ser = serial.Serial ( '/dev/ttyACM0' , 9600) def envia_email ( ) : server = smtplib.SMTP ( 'smtp.gmail.com' , 587 ) server.starttls ( ) server.login ('[email protected]' , 'cursoiot3' ) msg = "Alerta! Temperatura muito alta!" server.sendmail ('[email protected]' , '[email protected]', msg ) server.quit ( ) Função 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 ( )
Dúvidas?
Contatos ⊡
[email protected] www.4flyers.com.br
⊡
[email protected] www.huinfinito.com.br
Links recomendados ⊡ ⊡
www.instructables.com www.raspberrypi.org ⊡ ⊡
www.arduino.cc www.fritzing.org