SlideShare uma empresa Scribd logo
1 de 33
Baixar para ler offline
IoT – Primeiros passos utilizando
Python com embarcados
Vinicius J. Leódido Correia | Engº Voluntário
Engenheiros Sem Fronteiras – Núcleo Rio de Janeiro
Agenda
 Dia 1:
 Introdução, usos mais comuns, estrutura de dados em Python, leitura e
escrita de arquivos
 Dia 2:
 Iniciando os passos básicos nas placas, GPIOs, as bibliotecas MRAA /
UPM, ligações seriais USB/TTL.
 Dia 3:
 Lendo os dados dos sensores, encaminhando os dados para a nuvem,
entendendo e adaptando os dados no script Python para gravação via
REST, realizando comunicações via MQTT.
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 2 – Python e Sistema Embarcado
 Sistemas Embarcados
 Unidade de Processamento (Microcontrolador ou Microprocessador)
 Software Interno (Software Embarcado) para processamento de
informações – Firmware
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 2 – Python e Sistema Embarcado
 Sistemas Linux Embarcados
 O que é o Linux?
 É um Sistema Operacional, o qual teve seu Kernel desenvolvido por
Linus Torvald na década de 90 e anos mais tarde, foi integrado pela
GNU GPL, e mantém atualizações e novas distribuições pelas
comunidades Open Source
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 2 – Python e Sistema Embarcado
 Sistemas Linux Embarcados
 Kernel do Linux
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 2 – Python e Sistema Embarcado
 Sistemas Linux Embarcados
 Então o que é um Linux Embarcado?
 Se refere ao Sistema Operacional completo, ou uma distribuição
voltada para dispositivos embarcados (Sistema Embarcado executando
SO Linux)
 Como isso é possível?
 Código fonte do Kernel foi feito para integrar uma vasta gama de
dispositivos, estações de trabalho, servidores e outros periféricos que
se possa imaginar, assim como uma placa eletrônica cuja arquitetura
de Hardware corresponde a um Sistema embarcado, cujo principal
element é um Soc (System-On-a-Chip).
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 2 – Python e Sistema Embarcado
 Sistemas Linux Embarcados
 SoC (System-On-a-Chip)
 Geralmente é um circuito integrado, que reúne todos os elementos
básicos de um Sistema computacional, além de outros barramentos e
periféricos, tais como I2C, UART, SPI, etc.
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 2 – Python e Sistema Embarcado
 Sistemas Linux Embarcados
 Arquitetura de um SoC
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 2 – Python e Sistema Embarcado
 Sistemas Linux Embarcados
 O Kernel Linux é escrito na memória Flash ou outra mídia de
armazenamento presente na placa, como os cartões microSD.
 Com o forte crescimento e cada vez mais surgindo adaptações
voltadas para a tendência à IoT, os fabricantes de SoC têm
reestruturado suas arquiteturas para que possam dar suporte ao
Kernel do Linux e dar abrangência aos diversos tipos de
Hardwares e sensores que estão sendo desenvolvidos.
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 2 – Python e Sistema Embarcado
 Principais Placas que dão Suporte ao Linux Embarcado
 Raspberry Pi 2B+
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
• SoC – Broadcom
BCM2836 quad core
Cortex A7 processor
900MHz;
• Memória do Sistema –
1GB SDRAM.
Dia 2 – Python e Sistema Embarcado
 Principais Placas que dão Suporte ao Linux Embarcado
 Raspberry Pi 2B+
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 2 – Python e Sistema Embarcado
 Principais Placas que dão Suporte ao Linux Embarcado
 Raspberry Pi 3B (WiFi e BLE 4.0 Embutidos)
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
RaspPi 2B+ vs RaspPi 3B BLE 4.0 Módulo
WiFi Antenna• SoC – Broadcom BCM2837
quad core X64 Cortex A53
processor 1.2GHz;
• Memória do Sistema – 1GB
SDRAM.
Dia 2 – Python e Sistema Embarcado
 Principais Placas que dão Suporte ao Linux Embarcado
 Intel Galileo Gen1
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
• Intel® Quark™ SoC X1000
(16K Cache, 400 MHz)
• 256MB RAM DDR3
Dia 2 – Python e Sistema Embarcado
 Principais Placas que dão Suporte ao Linux Embarcado
 Intel Galileo Gen1
 Suporta Pci-e para conecões WiFi (Placas Wireless Notebook)
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 2 – Python e Sistema Embarcado
 Principais Placas que dão Suporte ao Linux Embarcado
 Intel Galileo Gen2
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 2 – Python e Sistema Embarcado
 Principais Placas que dão Suporte ao Linux Embarcado
 Intel Edison
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Intel Edison
• Dimensões: 35.5 × 25.0 × 3.9 mm
• Intel Atom Dual Core 500MHz - MPU
• Intel Quark 100 MHz 32 bits - MCU
• WiFi dual band
• BLE 4.0
• 1GB RAM DDR3
• 4GB eMMC
• 40 GPIO’s
Dia 2 – Python e Sistema Embarcado
 Principais Placas que dão Suporte ao Linux Embarcado
 Intel Edison
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 2 – Python e Sistema Embarcado
 Principais Placas que dão Suporte ao Linux Embarcado
 LinkIt Smart 7688
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 2 – Python e Sistema Embarcado
 Principais Placas que dão Suporte ao Linux Embarcado
 LinkIt Smart 7688
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Processador MIPS24KEc 580 MHz
Dia 2 – Python e Sistema Embarcado
 Principais Placas que dão Suporte ao Linux Embarcado
 LinkIt Smart 7688
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 2 – Python e Sistema Embarcado
 Principais Placas que dão Suporte ao Linux Embarcado
 LinkIt Smart 7688 Duo
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 2 – Python e Sistema Embarcado
 Principais Placas que dão Suporte ao Linux Embarcado
 LinkIt Smart 7688 Duo
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 2 – Python e Sistema Embarcado
 Principais Placas que dão Suporte ao Linux Embarcado
 LinkIt Smart 7688 Duo
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 2 – Python e Sistema Embarcado
 Ligações Seriais USB/TTL ou USB/Paralelo
 A Intel Edison é a única que dispõe de acesso por uma porta
USB client. As demais placas, necessitam de um conversor
USB/TTL ou USB/Paralelo como no caso da Intel Galileo Gen1.
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
A LinkIt Smart 7688 trabalha
com tensão de 5v em seus
sinais lógicos digitais.
Basta utilizarmos os pinos
de TX(P8), RX (P9) e GND.
Dia 2 – Python e Sistema Embarcado
 Ligações Seriais USB/TTL ou USB/Paralelo
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Atenção, a RaspberryPi
trabalha com tensão em 3.3v!
As I/O de TX/RX estão
interligadas direto no SoC
da placa.
O pino de 3.3vcc Power não é
necessário nas versões 2B+ e 3B
Dia 2 – Python e Sistema Embarcado
 Ligações Seriais USB/TTL ou USB/Paralelo
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Também pode ser utilizado um Cabo
TTL / RS232 que tenha tensão adaptada
para 3.3v, utilizando os seguintes pinos:
Nº Pino Nome Cor Descrição
1 GND Preto Terra
2 CTS# Marrom
3 VCC Vermelho
4 TXD Laranja Transmissão Dado
5 RXD Amarelo Recepção Dado
6 RTS# Verde
Dia 2 – Python e Sistema Embarcado
 Exemplo BlinkLed em Python
 Intel Edison e/ou Galileo:
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Pode-se utilizar o shield
da Grove e o conector
para o Led, conforme abaixo:
Dia 2 – Python e Sistema Embarcado
 Exemplo BlinkLed em Python
 Intel Edison e/ou Galileo:
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
import mraa #para acesso as GPIO
import time #para fazermos função de sleep na execução do processo
LED_GPIO = 5 #Vamos usar o pino 5
blinkLed = mraa.Gpio(LED_GPIO) # Obtém a variável com o valor do pino
blinkLed.dir(mraa.DIR_OUT) # Seta o direcionamento como saída
ledState = False # LED se inicia como desligado (False)
blinkLed.write(0)
while True:
if ledState == False:
blinkLed.write(1) # LED está desligado, ligue colocando a saída em nivel alto
ledState = True # LED está ligado
else:
blinkLed.write(0)
ledState = False
print "LED está ligado? nResposta: %s" %(ledState)
# Espera um tempo
time.sleep(1)
Dia 2 – Python e Sistema Embarcado
 Exemplo BlinkLed em Python
 Raspberry Pi (2B+ ou 3B):
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Dia 2 – Python e Sistema Embarcado
 Exemplo BlinkLed em Python
 Raspberry Pi (2B+ ou 3B):
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
import RPi.GPIO as GPIO #para acesso as GPIO
import time #para fazermos função de sleep na execução do processo
LED_GPIO = 7 #Vamos usar o pino 7
GPIO.setmode(GPIO.BOARD) #Configura os pinos no modo BOARD
GPIO.setwarnings(False) #Desativa os avisos
GPIO.setup(LED_GPIO, GPIO.OUT) #Configura o pino do LED como saída
while True:
print("LED ACESOn") #Escreve na Saída e realiza quebra de linha
GPIO.output(LED_GPIO, 1) #Coloca o pino em nível alto, e acende Led
time.sleep(1) #Delay de 1 segundo
print("LED APAGADOn") #Escreve na Saída e realiza quebra de linha
GPIO.output(LED_GPIO, 0) #Coloca o pino em nível alto, e apaga Led
time.sleep(1)
Dia 2 – Python e Sistema Embarcado
 Exemplo BlinkLed em Python
 LinkIt Smart7688 e Smart7688 Duo:
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
import mraa #para acesso as GPIO
import time #para fazermos função de sleep na execução do processo
## Neste exemplo o pino 44 está mapeado para o LED do Wi-Fi na placa
pin = mraa.Gpio(44)
pin.dir(mraa.DIR_OUT) # Seta o direcionamento como saída
while True:
pin.write(1)
time.sleep(1)
pin.write(0)
time.sleep(1)
OBRIGADO
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Vinícius J. L. Correia
E-mail: vini.leodido@gmail.com
br.linkedin.com/in/vinileodido
www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
Realização
Organização
Apoio

Mais conteúdo relacionado

Destaque

Internet of Things TDC 2013
Internet of Things   TDC 2013Internet of Things   TDC 2013
Internet of Things TDC 2013Cezar Taurion
 
Desenvolvimento de Sistemas Embarcados - do hardware ao software
Desenvolvimento de Sistemas Embarcados - do hardware ao softwareDesenvolvimento de Sistemas Embarcados - do hardware ao software
Desenvolvimento de Sistemas Embarcados - do hardware ao softwareRafael Moreira
 
Oportunidades na Internet das Coisas
Oportunidades na Internet das CoisasOportunidades na Internet das Coisas
Oportunidades na Internet das CoisasKiev Gama
 
Minicurso Rede de Sensores Sem Fio com Xbee e Arduino - Introdução
Minicurso Rede de Sensores Sem Fio com Xbee e Arduino - IntroduçãoMinicurso Rede de Sensores Sem Fio com Xbee e Arduino - Introdução
Minicurso Rede de Sensores Sem Fio com Xbee e Arduino - IntroduçãoLucas Cabral
 
Aplicativos de transporte de pessoas e cidades inteligentes
Aplicativos de transporte de pessoas e cidades inteligentesAplicativos de transporte de pessoas e cidades inteligentes
Aplicativos de transporte de pessoas e cidades inteligentesKiev Gama
 
TDC2016SP - Trilha Embarcados
TDC2016SP - Trilha EmbarcadosTDC2016SP - Trilha Embarcados
TDC2016SP - Trilha Embarcadostdc-globalcode
 
Sistema Embarcados - Sistemas operacionais
Sistema Embarcados - Sistemas operacionaisSistema Embarcados - Sistemas operacionais
Sistema Embarcados - Sistemas operacionaisLuiz Eduardo
 
Introdução a Internet das Coisas
Introdução a Internet das CoisasIntrodução a Internet das Coisas
Introdução a Internet das CoisasTiago Barros
 
Plataformas de Hardware para o seu Projeto - Quais seus diferenciais? Uma vis...
Plataformas de Hardware para o seu Projeto - Quais seus diferenciais? Uma vis...Plataformas de Hardware para o seu Projeto - Quais seus diferenciais? Uma vis...
Plataformas de Hardware para o seu Projeto - Quais seus diferenciais? Uma vis...André Curvello
 

Destaque (10)

Internet of Things TDC 2013
Internet of Things   TDC 2013Internet of Things   TDC 2013
Internet of Things TDC 2013
 
Desenvolvimento de Sistemas Embarcados - do hardware ao software
Desenvolvimento de Sistemas Embarcados - do hardware ao softwareDesenvolvimento de Sistemas Embarcados - do hardware ao software
Desenvolvimento de Sistemas Embarcados - do hardware ao software
 
Oportunidades na Internet das Coisas
Oportunidades na Internet das CoisasOportunidades na Internet das Coisas
Oportunidades na Internet das Coisas
 
Minicurso Rede de Sensores Sem Fio com Xbee e Arduino - Introdução
Minicurso Rede de Sensores Sem Fio com Xbee e Arduino - IntroduçãoMinicurso Rede de Sensores Sem Fio com Xbee e Arduino - Introdução
Minicurso Rede de Sensores Sem Fio com Xbee e Arduino - Introdução
 
Internet das coisas na indústria
Internet das coisas na indústriaInternet das coisas na indústria
Internet das coisas na indústria
 
Aplicativos de transporte de pessoas e cidades inteligentes
Aplicativos de transporte de pessoas e cidades inteligentesAplicativos de transporte de pessoas e cidades inteligentes
Aplicativos de transporte de pessoas e cidades inteligentes
 
TDC2016SP - Trilha Embarcados
TDC2016SP - Trilha EmbarcadosTDC2016SP - Trilha Embarcados
TDC2016SP - Trilha Embarcados
 
Sistema Embarcados - Sistemas operacionais
Sistema Embarcados - Sistemas operacionaisSistema Embarcados - Sistemas operacionais
Sistema Embarcados - Sistemas operacionais
 
Introdução a Internet das Coisas
Introdução a Internet das CoisasIntrodução a Internet das Coisas
Introdução a Internet das Coisas
 
Plataformas de Hardware para o seu Projeto - Quais seus diferenciais? Uma vis...
Plataformas de Hardware para o seu Projeto - Quais seus diferenciais? Uma vis...Plataformas de Hardware para o seu Projeto - Quais seus diferenciais? Uma vis...
Plataformas de Hardware para o seu Projeto - Quais seus diferenciais? Uma vis...
 

Semelhante a IoT Python embarcados

Hackeando um SmartBOX (com android) e instalando Linux & JAVA & OpenDevice
Hackeando um SmartBOX (com android) e instalando Linux & JAVA & OpenDeviceHackeando um SmartBOX (com android) e instalando Linux & JAVA & OpenDevice
Hackeando um SmartBOX (com android) e instalando Linux & JAVA & OpenDeviceRicardo Rufino
 
Internet das coisas, conhecendo plataformas de desenvolvimentos
Internet das coisas, conhecendo plataformas de desenvolvimentosInternet das coisas, conhecendo plataformas de desenvolvimentos
Internet das coisas, conhecendo plataformas de desenvolvimentosDouglas Esteves
 
Virtualização de Infraestrutura de Redes por Thiago Leite
Virtualização de Infraestrutura de Redes por Thiago LeiteVirtualização de Infraestrutura de Redes por Thiago Leite
Virtualização de Infraestrutura de Redes por Thiago LeiteThiagoLeite94
 
Micropython - Python para microcontroladores
Micropython - Python para microcontroladoresMicropython - Python para microcontroladores
Micropython - Python para microcontroladoresFabio Souza
 
Programe a STM32L4 Discovery kit IoT node com ARM mbed
Programe a STM32L4 Discovery kit IoT node com ARM mbedPrograme a STM32L4 Discovery kit IoT node com ARM mbed
Programe a STM32L4 Discovery kit IoT node com ARM mbedFabio Souza
 
Introdução a Sistemas Embarcados com Arduino - mini-curso
Introdução a Sistemas Embarcados com Arduino - mini-cursoIntrodução a Sistemas Embarcados com Arduino - mini-curso
Introdução a Sistemas Embarcados com Arduino - mini-cursoFelipe Martins
 
Internet das coisas (IoT) com Raspberry, Python e Node.js
Internet das coisas (IoT) com Raspberry, Python e Node.jsInternet das coisas (IoT) com Raspberry, Python e Node.js
Internet das coisas (IoT) com Raspberry, Python e Node.jsOtávio Calaça Xavier
 
Webinar: Monitorando sensores IoT: Do ESP32 ao Grafana
Webinar: Monitorando sensores IoT: Do ESP32 ao GrafanaWebinar: Monitorando sensores IoT: Do ESP32 ao Grafana
Webinar: Monitorando sensores IoT: Do ESP32 ao GrafanaEmbarcados
 
Arduino Yún - À nuvem e além
Arduino Yún - À nuvem e alémArduino Yún - À nuvem e além
Arduino Yún - À nuvem e alémAndré Curvello
 
Palestra de Conceitos de Fundamentos de Tecnologia da Informação
Palestra de Conceitos de Fundamentos de Tecnologia da InformaçãoPalestra de Conceitos de Fundamentos de Tecnologia da Informação
Palestra de Conceitos de Fundamentos de Tecnologia da InformaçãoDaniel Fernando Pigatto
 
Ferment io t - Distributed and Scalable IoT Solution
Ferment io t - Distributed and Scalable IoT SolutionFerment io t - Distributed and Scalable IoT Solution
Ferment io t - Distributed and Scalable IoT SolutionDonato Vianna
 
Introdução à Ciência da Computação com Raspberry Pi
 Introdução à Ciência da Computação com Raspberry Pi  Introdução à Ciência da Computação com Raspberry Pi
Introdução à Ciência da Computação com Raspberry Pi Eronides Da Silva Neto
 
Perlduino - Interfaceando sua aplicação com o mundo real!
Perlduino - Interfaceando sua aplicação com o mundo real!Perlduino - Interfaceando sua aplicação com o mundo real!
Perlduino - Interfaceando sua aplicação com o mundo real!Samir Siqueira
 

Semelhante a IoT Python embarcados (20)

Hackeando um SmartBOX (com android) e instalando Linux & JAVA & OpenDevice
Hackeando um SmartBOX (com android) e instalando Linux & JAVA & OpenDeviceHackeando um SmartBOX (com android) e instalando Linux & JAVA & OpenDevice
Hackeando um SmartBOX (com android) e instalando Linux & JAVA & OpenDevice
 
Internet das coisas, conhecendo plataformas de desenvolvimentos
Internet das coisas, conhecendo plataformas de desenvolvimentosInternet das coisas, conhecendo plataformas de desenvolvimentos
Internet das coisas, conhecendo plataformas de desenvolvimentos
 
Virtualização de Infraestrutura de Redes por Thiago Leite
Virtualização de Infraestrutura de Redes por Thiago LeiteVirtualização de Infraestrutura de Redes por Thiago Leite
Virtualização de Infraestrutura de Redes por Thiago Leite
 
Python e suas aplicações
Python e suas aplicaçõesPython e suas aplicações
Python e suas aplicações
 
Micropython - Python para microcontroladores
Micropython - Python para microcontroladoresMicropython - Python para microcontroladores
Micropython - Python para microcontroladores
 
Programe a STM32L4 Discovery kit IoT node com ARM mbed
Programe a STM32L4 Discovery kit IoT node com ARM mbedPrograme a STM32L4 Discovery kit IoT node com ARM mbed
Programe a STM32L4 Discovery kit IoT node com ARM mbed
 
Existe vida após o Arduino?
Existe vida após o Arduino?Existe vida após o Arduino?
Existe vida após o Arduino?
 
Introdução a Sistemas Embarcados com Arduino - mini-curso
Introdução a Sistemas Embarcados com Arduino - mini-cursoIntrodução a Sistemas Embarcados com Arduino - mini-curso
Introdução a Sistemas Embarcados com Arduino - mini-curso
 
Canivete python
Canivete pythonCanivete python
Canivete python
 
Internet das coisas (IoT) com Raspberry, Python e Node.js
Internet das coisas (IoT) com Raspberry, Python e Node.jsInternet das coisas (IoT) com Raspberry, Python e Node.js
Internet das coisas (IoT) com Raspberry, Python e Node.js
 
Introducao informatica
Introducao informaticaIntroducao informatica
Introducao informatica
 
Webinar: Monitorando sensores IoT: Do ESP32 ao Grafana
Webinar: Monitorando sensores IoT: Do ESP32 ao GrafanaWebinar: Monitorando sensores IoT: Do ESP32 ao Grafana
Webinar: Monitorando sensores IoT: Do ESP32 ao Grafana
 
Arduino Yún - À nuvem e além
Arduino Yún - À nuvem e alémArduino Yún - À nuvem e além
Arduino Yún - À nuvem e além
 
Palestra de Conceitos de Fundamentos de Tecnologia da Informação
Palestra de Conceitos de Fundamentos de Tecnologia da InformaçãoPalestra de Conceitos de Fundamentos de Tecnologia da Informação
Palestra de Conceitos de Fundamentos de Tecnologia da Informação
 
Ferment io t - Distributed and Scalable IoT Solution
Ferment io t - Distributed and Scalable IoT SolutionFerment io t - Distributed and Scalable IoT Solution
Ferment io t - Distributed and Scalable IoT Solution
 
Arduino e a IOT
Arduino e a IOTArduino e a IOT
Arduino e a IOT
 
Linux Raspberry Pi
Linux Raspberry PiLinux Raspberry Pi
Linux Raspberry Pi
 
CPBR7 - Existe vida depois do Arduino?
CPBR7 - Existe vida depois do Arduino?CPBR7 - Existe vida depois do Arduino?
CPBR7 - Existe vida depois do Arduino?
 
Introdução à Ciência da Computação com Raspberry Pi
 Introdução à Ciência da Computação com Raspberry Pi  Introdução à Ciência da Computação com Raspberry Pi
Introdução à Ciência da Computação com Raspberry Pi
 
Perlduino - Interfaceando sua aplicação com o mundo real!
Perlduino - Interfaceando sua aplicação com o mundo real!Perlduino - Interfaceando sua aplicação com o mundo real!
Perlduino - Interfaceando sua aplicação com o mundo real!
 

IoT Python embarcados

  • 1. IoT – Primeiros passos utilizando Python com embarcados Vinicius J. Leódido Correia | Engº Voluntário Engenheiros Sem Fronteiras – Núcleo Rio de Janeiro
  • 2. Agenda  Dia 1:  Introdução, usos mais comuns, estrutura de dados em Python, leitura e escrita de arquivos  Dia 2:  Iniciando os passos básicos nas placas, GPIOs, as bibliotecas MRAA / UPM, ligações seriais USB/TTL.  Dia 3:  Lendo os dados dos sensores, encaminhando os dados para a nuvem, entendendo e adaptando os dados no script Python para gravação via REST, realizando comunicações via MQTT. www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
  • 3. Dia 2 – Python e Sistema Embarcado  Sistemas Embarcados  Unidade de Processamento (Microcontrolador ou Microprocessador)  Software Interno (Software Embarcado) para processamento de informações – Firmware www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
  • 4. Dia 2 – Python e Sistema Embarcado  Sistemas Linux Embarcados  O que é o Linux?  É um Sistema Operacional, o qual teve seu Kernel desenvolvido por Linus Torvald na década de 90 e anos mais tarde, foi integrado pela GNU GPL, e mantém atualizações e novas distribuições pelas comunidades Open Source www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
  • 5. Dia 2 – Python e Sistema Embarcado  Sistemas Linux Embarcados  Kernel do Linux www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
  • 6. Dia 2 – Python e Sistema Embarcado  Sistemas Linux Embarcados  Então o que é um Linux Embarcado?  Se refere ao Sistema Operacional completo, ou uma distribuição voltada para dispositivos embarcados (Sistema Embarcado executando SO Linux)  Como isso é possível?  Código fonte do Kernel foi feito para integrar uma vasta gama de dispositivos, estações de trabalho, servidores e outros periféricos que se possa imaginar, assim como uma placa eletrônica cuja arquitetura de Hardware corresponde a um Sistema embarcado, cujo principal element é um Soc (System-On-a-Chip). www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
  • 7. Dia 2 – Python e Sistema Embarcado  Sistemas Linux Embarcados  SoC (System-On-a-Chip)  Geralmente é um circuito integrado, que reúne todos os elementos básicos de um Sistema computacional, além de outros barramentos e periféricos, tais como I2C, UART, SPI, etc. www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
  • 8. Dia 2 – Python e Sistema Embarcado  Sistemas Linux Embarcados  Arquitetura de um SoC www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
  • 9. Dia 2 – Python e Sistema Embarcado  Sistemas Linux Embarcados  O Kernel Linux é escrito na memória Flash ou outra mídia de armazenamento presente na placa, como os cartões microSD.  Com o forte crescimento e cada vez mais surgindo adaptações voltadas para a tendência à IoT, os fabricantes de SoC têm reestruturado suas arquiteturas para que possam dar suporte ao Kernel do Linux e dar abrangência aos diversos tipos de Hardwares e sensores que estão sendo desenvolvidos. www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
  • 10. Dia 2 – Python e Sistema Embarcado  Principais Placas que dão Suporte ao Linux Embarcado  Raspberry Pi 2B+ www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br • SoC – Broadcom BCM2836 quad core Cortex A7 processor 900MHz; • Memória do Sistema – 1GB SDRAM.
  • 11. Dia 2 – Python e Sistema Embarcado  Principais Placas que dão Suporte ao Linux Embarcado  Raspberry Pi 2B+ www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
  • 12. Dia 2 – Python e Sistema Embarcado  Principais Placas que dão Suporte ao Linux Embarcado  Raspberry Pi 3B (WiFi e BLE 4.0 Embutidos) www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br RaspPi 2B+ vs RaspPi 3B BLE 4.0 Módulo WiFi Antenna• SoC – Broadcom BCM2837 quad core X64 Cortex A53 processor 1.2GHz; • Memória do Sistema – 1GB SDRAM.
  • 13. Dia 2 – Python e Sistema Embarcado  Principais Placas que dão Suporte ao Linux Embarcado  Intel Galileo Gen1 www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br • Intel® Quark™ SoC X1000 (16K Cache, 400 MHz) • 256MB RAM DDR3
  • 14. Dia 2 – Python e Sistema Embarcado  Principais Placas que dão Suporte ao Linux Embarcado  Intel Galileo Gen1  Suporta Pci-e para conecões WiFi (Placas Wireless Notebook) www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
  • 15. Dia 2 – Python e Sistema Embarcado  Principais Placas que dão Suporte ao Linux Embarcado  Intel Galileo Gen2 www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
  • 16. Dia 2 – Python e Sistema Embarcado  Principais Placas que dão Suporte ao Linux Embarcado  Intel Edison www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br Intel Edison • Dimensões: 35.5 × 25.0 × 3.9 mm • Intel Atom Dual Core 500MHz - MPU • Intel Quark 100 MHz 32 bits - MCU • WiFi dual band • BLE 4.0 • 1GB RAM DDR3 • 4GB eMMC • 40 GPIO’s
  • 17. Dia 2 – Python e Sistema Embarcado  Principais Placas que dão Suporte ao Linux Embarcado  Intel Edison www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
  • 18. Dia 2 – Python e Sistema Embarcado  Principais Placas que dão Suporte ao Linux Embarcado  LinkIt Smart 7688 www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
  • 19. Dia 2 – Python e Sistema Embarcado  Principais Placas que dão Suporte ao Linux Embarcado  LinkIt Smart 7688 www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br Processador MIPS24KEc 580 MHz
  • 20. Dia 2 – Python e Sistema Embarcado  Principais Placas que dão Suporte ao Linux Embarcado  LinkIt Smart 7688 www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
  • 21. Dia 2 – Python e Sistema Embarcado  Principais Placas que dão Suporte ao Linux Embarcado  LinkIt Smart 7688 Duo www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
  • 22. Dia 2 – Python e Sistema Embarcado  Principais Placas que dão Suporte ao Linux Embarcado  LinkIt Smart 7688 Duo www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
  • 23. Dia 2 – Python e Sistema Embarcado  Principais Placas que dão Suporte ao Linux Embarcado  LinkIt Smart 7688 Duo www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
  • 24. Dia 2 – Python e Sistema Embarcado  Ligações Seriais USB/TTL ou USB/Paralelo  A Intel Edison é a única que dispõe de acesso por uma porta USB client. As demais placas, necessitam de um conversor USB/TTL ou USB/Paralelo como no caso da Intel Galileo Gen1. www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br A LinkIt Smart 7688 trabalha com tensão de 5v em seus sinais lógicos digitais. Basta utilizarmos os pinos de TX(P8), RX (P9) e GND.
  • 25. Dia 2 – Python e Sistema Embarcado  Ligações Seriais USB/TTL ou USB/Paralelo www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br Atenção, a RaspberryPi trabalha com tensão em 3.3v! As I/O de TX/RX estão interligadas direto no SoC da placa. O pino de 3.3vcc Power não é necessário nas versões 2B+ e 3B
  • 26. Dia 2 – Python e Sistema Embarcado  Ligações Seriais USB/TTL ou USB/Paralelo www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br Também pode ser utilizado um Cabo TTL / RS232 que tenha tensão adaptada para 3.3v, utilizando os seguintes pinos: Nº Pino Nome Cor Descrição 1 GND Preto Terra 2 CTS# Marrom 3 VCC Vermelho 4 TXD Laranja Transmissão Dado 5 RXD Amarelo Recepção Dado 6 RTS# Verde
  • 27. Dia 2 – Python e Sistema Embarcado  Exemplo BlinkLed em Python  Intel Edison e/ou Galileo: www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br Pode-se utilizar o shield da Grove e o conector para o Led, conforme abaixo:
  • 28. Dia 2 – Python e Sistema Embarcado  Exemplo BlinkLed em Python  Intel Edison e/ou Galileo: www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br import mraa #para acesso as GPIO import time #para fazermos função de sleep na execução do processo LED_GPIO = 5 #Vamos usar o pino 5 blinkLed = mraa.Gpio(LED_GPIO) # Obtém a variável com o valor do pino blinkLed.dir(mraa.DIR_OUT) # Seta o direcionamento como saída ledState = False # LED se inicia como desligado (False) blinkLed.write(0) while True: if ledState == False: blinkLed.write(1) # LED está desligado, ligue colocando a saída em nivel alto ledState = True # LED está ligado else: blinkLed.write(0) ledState = False print "LED está ligado? nResposta: %s" %(ledState) # Espera um tempo time.sleep(1)
  • 29. Dia 2 – Python e Sistema Embarcado  Exemplo BlinkLed em Python  Raspberry Pi (2B+ ou 3B): www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br
  • 30. Dia 2 – Python e Sistema Embarcado  Exemplo BlinkLed em Python  Raspberry Pi (2B+ ou 3B): www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br import RPi.GPIO as GPIO #para acesso as GPIO import time #para fazermos função de sleep na execução do processo LED_GPIO = 7 #Vamos usar o pino 7 GPIO.setmode(GPIO.BOARD) #Configura os pinos no modo BOARD GPIO.setwarnings(False) #Desativa os avisos GPIO.setup(LED_GPIO, GPIO.OUT) #Configura o pino do LED como saída while True: print("LED ACESOn") #Escreve na Saída e realiza quebra de linha GPIO.output(LED_GPIO, 1) #Coloca o pino em nível alto, e acende Led time.sleep(1) #Delay de 1 segundo print("LED APAGADOn") #Escreve na Saída e realiza quebra de linha GPIO.output(LED_GPIO, 0) #Coloca o pino em nível alto, e apaga Led time.sleep(1)
  • 31. Dia 2 – Python e Sistema Embarcado  Exemplo BlinkLed em Python  LinkIt Smart7688 e Smart7688 Duo: www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br import mraa #para acesso as GPIO import time #para fazermos função de sleep na execução do processo ## Neste exemplo o pino 44 está mapeado para o LED do Wi-Fi na placa pin = mraa.Gpio(44) pin.dir(mraa.DIR_OUT) # Seta o direcionamento como saída while True: pin.write(1) time.sleep(1) pin.write(0) time.sleep(1)
  • 32. OBRIGADO www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br Vinícius J. L. Correia E-mail: vini.leodido@gmail.com br.linkedin.com/in/vinileodido