Upload
vinicius-leodido-correia
View
74
Download
4
Embed Size (px)
Citation preview
IoT – Primeiros passos utilizandoPython 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 pelaGNU GPL, e mantém atualizações e novas distribuições pelascomunidades 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 executandoSO 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 quese possa imaginar, assim como uma placa eletrônica cuja arquiteturade 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çõesvoltadas para a tendência à IoT, os fabricantes de SoC têmreestruturado suas arquiteturas para que possam dar suporte aoKernel 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 – BroadcomBCM2836 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 conversorUSB/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 trabalhacom tensão de 5v em seussinais lógicos digitais.Basta utilizarmos os pinosde 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 RaspberryPitrabalha com tensão em 3.3v!As I/O de TX/RX estãointerligadas direto no SoCda 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 CaboTTL / RS232 que tenha tensão adaptadapara 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 shieldda Grove e o conectorpara 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 GPIOimport time #para fazermos função de sleep na execução do processo
LED_GPIO = 5 #Vamos usar o pino 5blinkLed = mraa.Gpio(LED_GPIO) # Obtém a variável com o valor do pinoblinkLed.dir(mraa.DIR_OUT) # Seta o direcionamento como saídaledState = 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 altoledState = True # LED está ligado
else:blinkLed.write(0)ledState = False
print "LED está ligado? \nResposta: %s" %(ledState)# Espera um tempotime.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 GPIOimport time #para fazermos função de sleep na execução do processo
LED_GPIO = 7 #Vamos usar o pino 7GPIO.setmode(GPIO.BOARD) #Configura os pinos no modo BOARDGPIO.setwarnings(False) #Desativa os avisosGPIO.setup(LED_GPIO, GPIO.OUT) #Configura o pino do LED como saída
while True:print("LED ACESO\n") #Escreve na Saída e realiza quebra de linhaGPIO.output(LED_GPIO, 1) #Coloca o pino em nível alto, e acende Ledtime.sleep(1) #Delay de 1 segundoprint("LED APAGADO\n") #Escreve na Saída e realiza quebra de linhaGPIO.output(LED_GPIO, 0) #Coloca o pino em nível alto, e apaga Ledtime.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 GPIOimport 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 placapin = 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. CorreiaE-mail: [email protected]/in/vinileodido