33
IoT – Primeiros passos utilizando Python com embarcados Vinicius J. Leódido Correia | Engº Voluntário Engenheiros Sem Fronteiras – Núcleo Rio de Janeiro

Mini Curso IoT - Sieng 2016 - Dia 2

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

www.sieng.ctc.puc-rio.brwww.sieng.ctc.puc-rio.br

Realização

Organização

Apoio