SlideShare uma empresa Scribd logo
1 de 78
Workshop de IoT
com DragonBoard
410c
Rodrigo Ferraz Azevedo
www.rodrigoazevedo.com
rodrigo.azevedo@sintesoft.com
Nossa Agenda
- Conceituar IoT
- Protocolos de comunicação
- Qualcomm DragonBoard
- 96Boards Mezzanine
- Bibliotecas Python
- Mão na massa
Sobre mim
Rodrigo Ferraz Azevedo
Profissional de TI desde 2000
IoT: Internet of Things
(Internet das Coisas)
Internet das Coisas
Definição
IoT é um conceito tecnológico em que todos os objetos da vida cotidiana estariam conectados à
internet, agindo de modo inteligente e sensorial.
Medir / Atuar
Sensores:
Dispositivos que respondem a um estímulo físico/químico de maneira específica e que pode ser
transformado em outra grandeza física para fins de medição e/ou monitoramento.
Atuadores:
Atuador é um elemento que realiza uma ação, atendendo a comandos que podem ser manuais,
eléctricos ou mecânicos.
Comunicação
Comunicação Camada Física:
- Wireless Lan
- Ethernet Lan
- Rede telefonia (GSM, 3G, EDGE, HPSA, 4G e LTE)
- LoRaWAN
- Sigfox etc
Protocolos de Comunicação:
- DDS
- CoAP
- AMQP
- XMPP
- MQTT etc
Publish/subscribe
MQTT
Computação em Nuvem
Internet das Coisas
Aplicações conhecidas que utilizam o conceito de IoT:
Internet das Coisas
Aplicações conhecidas que utilizam o conceito de IoT:
Internet das Coisas
Aplicações conhecidas que utilizam o conceito de IoT:
Qualcomm DragonBoard 410c
● SoC: Processador SnapDragon 410E;
● CPU: Quad-core ARM® Cortex® A53 1.2 GHz por núcleo com suporte 32-bit e 64-bit;
● Memória: 1GB RAM DDR3 533MHz;
Qualcomm DragonBoard 410c
● Armazenamento: Interno de 8GB e entrada para cartão microSD 3.0
● Gráfico: Qualcomm Adreno 306 GPU com suporte a OpenGL, OpenCL e DirectX
● Vídeo: 1080p 30fps HD
● Conectividade e Localização: Wi-Fi 802.11 b/g/n 2.4GHz, Bluetooth 4.1, GPS Qualcomm®
Izat™, Wi-Fi, Bluetooth e GPS
● I/O: HDMI, microUSB, USB 2.0, entrada microSD
● Expansões:
● Conector de 40 pinos: UART, SPI, I2S, 2x I2C, 12x GPIO;
● Conector de 60 pinos: 4L MIPI-DSI, USB, 2x I2C, 2L+4L MIPI-CSI;
● Conector de 16 pinos: entrada/saída de som e sinais analógicos;
Qualcomm DragonBoard 410c
● Sistemas Operacionais Suportados:
○ Android 5.1 (Lollipop) com Kernel Linux 3.10
○ Linux. Destaques: Linaro, Ubuntu Core e Fedora
○ Windows 10 IoT Core
● Sistema Operacional utilizado nesta oficina:
○ Linux Linaro (www.linaro.org)
Internet das Coisas
Dragonboard:
● GPIO
● I2C
● UART
● SPI
96Boards Linksprite Mezzanine
● Kit de desenvolvimento
● Sensores: Temperatura, humidade
● Atuadores: Botão, LED, relé
MRAA
Biblioteca criada pela Intel para interação com dispositivos de IoT
sudo mraa-gpio
Listar GPIOs disponíveis na placa:
sudo mraa-gpio list
sudo mraa-i2c detect 0
Setar GPIO 25 (D2):
sudo mraa-gpio set 25 1
sudo mraa-gpio set 25 0
Monitorar GPIO específica (D1):
sudo mraa-gpio monitor 23
Objetivo
DragonBoard 410c + Linux + Python
Preparando o ambiente:
1. Conectar notebook no roteador:
● SSID: LHC | Senha: dragonboard
2. Instalar cliente SSH se estiver usando Windows (Linux nativo): Putty;
3. Instalar cliente SFTP se usando Windows: Filezilla;
4. Conectar via SSH na Dragonboard;
5. Instalar Thingspeak:
● git clone https://github.com/rodrigoferrazazevedo/ThingSpeakC
● cd ThingSpeakC
● make
DragonBoard 410c + Linux + Python
Iniciando o projeto:
1. Criar conta no Thingspeak (thingspeak.com)
○ Criar canal
○ Verificar as chaves de acesso
2. Criar os arquivos baseados nos código-fonte a seguir:
○ blink.py
○ touch.py
○ touchcloud.py
DragonBoard 410c + Linux + Python
Blink.py:
DragonBoard 410c + Linux + Python
Blink.py:
import mraa
DragonBoard 410c + Linux + Python
Blink.py:
import mraa
import time
DragonBoard 410c + Linux + Python
Blink.py:
import mraa
import time
led = mraa.Gpio(25) #D2
DragonBoard 410c + Linux + Python
Blink.py:
import mraa
import time
led = mraa.Gpio(25) #D2
led.dir(mraa.DIR_OUT)
DragonBoard 410c + Linux + Python
Blink.py:
import mraa
import time
led = mraa.Gpio(25) #D2
led.dir(mraa.DIR_OUT)
while True:
DragonBoard 410c + Linux + Python
Blink.py:
while True:
led.write(1)
DragonBoard 410c + Linux + Python
Blink.py:
import mraa
import time
led = mraa.Gpio(25) #D2
led.dir(mraa.DIR_OUT)
while True:
led.write(1)
time.sleep(0.2)
DragonBoard 410c + Linux + Python
Blink.py:
import mraa
import time
led = mraa.Gpio(25) #D2
led.dir(mraa.DIR_OUT)
while True:
led.write(1)
time.sleep(0.2)
led.write(0)
DragonBoard 410c + Linux + Python
Blink.py:
while True:
led.write(1)
time.sleep(0.2)
led.write(0)
time.sleep(0.2) # 200ms
DragonBoard 410c + Linux + Python
touch.py:
DragonBoard 410c + Linux + Python
touch.py:
import mraa
DragonBoard 410c + Linux + Python
touch.py:
import mraa
import time
DragonBoard 410c + Linux + Python
touch.py:
import mraa
import time
sensor = mraa.Gpio(23) #D1
DragonBoard 410c + Linux + Python
touch.py:
import mraa
import time
sensor = mraa.Gpio(23) #D1
sensor.dir(mraa.DIR_IN)
DragonBoard 410c + Linux + Python
touch.py:
import mraa
import time
sensor = mraa.Gpio(23) #D1
sensor.dir(mraa.DIR_IN)
while True:
DragonBoard 410c + Linux + Python
touch.py:
import mraa
import time
sensor = mraa.Gpio(23) #D1
sensor.dir(mraa.DIR_IN)
while True:
porta_status = sensor.read()
DragonBoard 410c + Linux + Python
touch.py:
import mraa
import time
sensor = mraa.Gpio(23) #D1
sensor.dir(mraa.DIR_IN)
while True:
porta_status = sensor.read()
if porta_status == 0:
DragonBoard 410c + Linux + Python
touch.py:
import mraa
import time
sensor = mraa.Gpio(23) #D1
sensor.dir(mraa.DIR_IN)
while True:
porta_status = sensor.read()
if porta_status == 0:
print ("Touch liberado / Sensor = ") + str(porta_status)
DragonBoard 410c + Linux + Python
touch.py:
import mraa
import time
sensor = mraa.Gpio(23) #D1
sensor.dir(mraa.DIR_IN)
while True:
porta_status = sensor.read()
if porta_status == 0:
print ("Touch liberado / Sensor = ") + str(porta_status)
else:
DragonBoard 410c + Linux + Python
touch.py:
import mraa
import time
sensor = mraa.Gpio(23) #D1
sensor.dir(mraa.DIR_IN)
while True:
porta_status = sensor.read()
if porta_status == 0:
print ("Touch liberado / Sensor = ") + str(porta_status)
else:
print ("Touch pressionado / Sensor = ") + str(porta_status)
DragonBoard 410c + Linux + Python
touch.py:
porta_status = sensor.read()
if porta_status == 0:
print ("Touch liberado / Sensor = ") + str(porta_status)
else:
print ("Touch pressionado / Sensor =
")+str(porta_status)
DragonBoard 410c + Linux + Python
touchcloud.py:
DragonBoard 410c + Linux + Python
touchcloud.py:
import os
DragonBoard 410c + Linux + Python
touchcloud.py:
import os
import mraa
DragonBoard 410c + Linux + Python
touchcloud.py:
import os
import mraa
import time
DragonBoard 410c + Linux + Python
touchcloud.py:
import os
import mraa
import time
sensor = mraa.Gpio(23) #D1
DragonBoard 410c + Linux + Python
touchcloud.py:
import os
import mraa
import time
sensor = mraa.Gpio(23) #D1
sensor.dir(mraa.DIR_IN)
DragonBoard 410c + Linux + Python
touchcloud.py:
import os
import mraa
import time
sensor = mraa.Gpio(23) #D1
sensor.dir(mraa.DIR_IN)
while True:
DragonBoard 410c + Linux + Python
touchcloud.py:
import os
import mraa
import time
sensor = mraa.Gpio(23) #D1
sensor.dir(mraa.DIR_IN)
while True:
porta_status = sensor.read()
DragonBoard 410c + Linux + Python
touchcloud.py:
import os
import mraa
import time
sensor = mraa.Gpio(23) #D1
sensor.dir(mraa.DIR_IN)
while True:
porta_status = sensor.read()
if porta_status == 0:
DragonBoard 410c + Linux + Python
touchcloud.py:
import os
import mraa
import time
sensor = mraa.Gpio(23) #D1
sensor.dir(mraa.DIR_IN)
while True:
porta_status = sensor.read()
if porta_status == 0:
print ("Touch liberado / Sensor = ") + str(porta_status)
DragonBoard 410c + Linux + Python
touchcloud.py:
import os
import mraa
import time
sensor = mraa.Gpio(23) #D1
sensor.dir(mraa.DIR_IN)
while True:
porta_status = sensor.read()
if porta_status == 0:
print ("Touch liberado / Sensor = ") + str(porta_status)
else:
DragonBoard 410c + Linux + Python
touchcloud.py:
import os
import mraa
import time
sensor = mraa.Gpio(23) #D1
sensor.dir(mraa.DIR_IN)
while True:
porta_status = sensor.read()
if porta_status == 0:
print ("Touch liberado / Sensor = ") + str(porta_status)
else:
print ("Touch pressionado / Sensor = ") + str(porta_status)
DragonBoard 410c + Linux + Python
touchcloud.py:
import os
import mraa
import time
sensor = mraa.Gpio(23) #D1
sensor.dir(mraa.DIR_IN)
while True:
porta_status = sensor.read()
if porta_status == 0:
print ("Touch liberado / Sensor = ") + str(porta_status)
else:
print ("Touch pressionado / Sensor = ") + str(porta_status)
caminho = 'sudo ../ThingSpeakC/./ThingSpeakC IXXUSHRU2S9899G5 ' + str(porta_status)
os.system(caminho)
DragonBoard 410c + Linux + Python
touchcloud.py:
import os
import mraa
import time
sensor = mraa.Gpio(23) #D1
sensor.dir(mraa.DIR_IN)
while True:
porta_status = sensor.read()
if porta_status == 0:
print ("Touch liberado / Sensor = ") + str(porta_status)
else:
print ("Touch pressionado / Sensor = ") + str(porta_status)
caminho = 'sudo ../ThingSpeakC/./ThingSpeakC IXXUSHRU2S9899G5 ' + str(porta_status)
os.system(caminho)
time.sleep(5)
DragonBoard 410c + MQTT
MQTT:
DragonBoard 410c + MQTT
Mosquitto:
DragonBoard 410c + MQTT
Preparando o ambiente:
1. Conectar notebook no roteador:
● SSID: LHC | Senha: dragonboard
2. Instalar PIP Python: $ sudo apt-get install python-pip
3. Instalar MQTT Python client: pip install paho-mqtt
mqtt-subscribe.py:
# -*- coding: utf-8 -*-
import paho.mqtt.client as mqtt
mqtt-subscribe.py:
# -*- coding: utf-8 -*-
import paho.mqtt.client as mqtt
def on_connect(self, client, userdata, rc):
print("Connected with result code "+str(rc))
self.subscribe("hello/world", 0)
mqtt-subscribe.py:
# -*- coding: utf-8 -*-
import paho.mqtt.client as mqtt
def on_connect(self, client, userdata, rc):
print("Connected with result code "+str(rc))
self.subscribe("hello/world", 0)
def on_message(client, userdata, msg):
print("Topic: "+ msg.topic + "Message: "+str(msg.payload))
mqtt-subscribe.py:
# -*- coding: utf-8 -*-
import paho.mqtt.client as mqtt
def on_connect(self, client, userdata, rc):
print("Connected with result code "+str(rc))
self.subscribe("hello/world", 0)
def on_message(client, userdata, msg):
print("Topic: "+ msg.topic + "Message: "+str(msg.payload))
client = mqtt.Client()
mqtt-subscribe.py:
# -*- coding: utf-8 -*-
import paho.mqtt.client as mqtt
def on_connect(self, client, userdata, rc):
print("Connected with result code "+str(rc))
self.subscribe("hello/world", 0)
def on_message(client, userdata, msg):
print("Topic: "+ msg.topic + "Message: "+str(msg.payload))
client = mqtt.Client()
client.on_connect = on_connect
mqtt-subscribe.py:
# -*- coding: utf-8 -*-
import paho.mqtt.client as mqtt
def on_connect(self, client, userdata, rc):
print("Connected with result code "+str(rc))
self.subscribe("hello/world", 0)
def on_message(client, userdata, msg):
print("Topic: "+ msg.topic + "Message: "+str(msg.payload))
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
mqtt-subscribe.py:
# -*- coding: utf-8 -*-
import paho.mqtt.client as mqtt
def on_connect(self, client, userdata, rc):
print("Connected with result code "+str(rc))
self.subscribe("hello/world", 0)
def on_message(client, userdata, msg):
print("Topic: "+ msg.topic + "Message: "+str(msg.payload))
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("localhost") #test.mosquitto.org
mqtt-subscribe.py:
# -*- coding: utf-8 -*-
import paho.mqtt.client as mqtt
def on_connect(self, client, userdata, rc):
print("Connected with result code "+str(rc))
self.subscribe("hello/world", 0)
def on_message(client, userdata, msg):
print("Topic: "+ msg.topic + "Message: "+str(msg.payload))
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("localhost") #test.mosquitto.org
client.loop_forever()
mqtt-publish.py:
# -*- coding: utf-8 -*-
import paho.mqtt.client as mqtt
mqtt-publish.py:
# -*- coding: utf-8 -*-
import paho.mqtt.client as mqtt
mqttc = mqtt.Client("python_pub")
mqtt-publish.py:
# -*- coding: utf-8 -*-
import paho.mqtt.client as mqtt
mqttc = mqtt.Client("python_pub")
mqttc.connect("localhost", 1883)
mqtt-publish.py:
# -*- coding: utf-8 -*-
import paho.mqtt.client as mqtt
mqttc = mqtt.Client("python_pub")
mqttc.connect("localhost", 1883)
mqttc.publish("hello/world", "Campus Party Natal")
mqtt-publish.py:
# -*- coding: utf-8 -*-
import paho.mqtt.client as mqtt
mqttc = mqtt.Client("python_pub")
mqttc.connect("localhost", 1883)
mqttc.publish("hello/world", "Campus Party Natal")
mqttc.loop(2)
Obrigado!
Dúvidas?
Rodrigo Ferraz Azevedo
rodrigo.azevedo@sintesoft.com

Mais conteúdo relacionado

Semelhante a Workshop de IoT Campus Party Natal

Android things, Inteligência Artificial e Máquinas de Doces - Android Dev Con...
Android things, Inteligência Artificial e Máquinas de Doces - Android Dev Con...Android things, Inteligência Artificial e Máquinas de Doces - Android Dev Con...
Android things, Inteligência Artificial e Máquinas de Doces - Android Dev Con...Alvaro Viebrantz
 
Python: Cabe no seu bolso, no seu micro, no seu cérebro.
Python: Cabe no seu bolso, no seu micro, no seu cérebro.Python: Cabe no seu bolso, no seu micro, no seu cérebro.
Python: Cabe no seu bolso, no seu micro, no seu cérebro.Rodrigo Senra
 
Programando em ruby para arduino
Programando em ruby para arduinoProgramando em ruby para arduino
Programando em ruby para arduinoRicardo Ogliari
 
TDC2014 - Desenvolvendo com CocoSharp e Intel Perceptual
TDC2014 - Desenvolvendo com CocoSharp e Intel PerceptualTDC2014 - Desenvolvendo com CocoSharp e Intel Perceptual
TDC2014 - Desenvolvendo com CocoSharp e Intel PerceptualPedro Kayatt
 
Pwn3d IoT - CryptoRave 2017
Pwn3d IoT - CryptoRave 2017Pwn3d IoT - CryptoRave 2017
Pwn3d IoT - CryptoRave 2017Jhonathan Davi
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
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
 
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
 
Workshop Franzininho: um Arduino para todos
Workshop Franzininho: um Arduino para todosWorkshop Franzininho: um Arduino para todos
Workshop Franzininho: um Arduino para todosEronides Da Silva Neto
 
Funtoo escla
Funtoo esclaFuntoo escla
Funtoo esclaDaniel
 
GSoC tcptest - TCP/IP Regression Test
GSoC tcptest - TCP/IP Regression TestGSoC tcptest - TCP/IP Regression Test
GSoC tcptest - TCP/IP Regression TestVictor Hugo Bilouro
 
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
 

Semelhante a Workshop de IoT Campus Party Natal (20)

Android things, Inteligência Artificial e Máquinas de Doces - Android Dev Con...
Android things, Inteligência Artificial e Máquinas de Doces - Android Dev Con...Android things, Inteligência Artificial e Máquinas de Doces - Android Dev Con...
Android things, Inteligência Artificial e Máquinas de Doces - Android Dev Con...
 
Python: Cabe no seu bolso, no seu micro, no seu cérebro.
Python: Cabe no seu bolso, no seu micro, no seu cérebro.Python: Cabe no seu bolso, no seu micro, no seu cérebro.
Python: Cabe no seu bolso, no seu micro, no seu cérebro.
 
Programando em ruby para arduino
Programando em ruby para arduinoProgramando em ruby para arduino
Programando em ruby para arduino
 
Intel Perceptual Computing SDK
Intel Perceptual Computing SDKIntel Perceptual Computing SDK
Intel Perceptual Computing SDK
 
TDC2014 - Desenvolvendo com CocoSharp e Intel Perceptual
TDC2014 - Desenvolvendo com CocoSharp e Intel PerceptualTDC2014 - Desenvolvendo com CocoSharp e Intel Perceptual
TDC2014 - Desenvolvendo com CocoSharp e Intel Perceptual
 
Bento Quirino Apresentação
Bento Quirino ApresentaçãoBento Quirino Apresentação
Bento Quirino Apresentação
 
Mini Curso IoT - Sieng 2016 - Dia 2
Mini Curso IoT - Sieng 2016 - Dia 2Mini Curso IoT - Sieng 2016 - Dia 2
Mini Curso IoT - Sieng 2016 - Dia 2
 
Pwn3d IoT - CryptoRave 2017
Pwn3d IoT - CryptoRave 2017Pwn3d IoT - CryptoRave 2017
Pwn3d IoT - CryptoRave 2017
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
OpenKinect, o Kinect para todos
OpenKinect, o Kinect para todosOpenKinect, o Kinect para todos
OpenKinect, o Kinect para todos
 
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
 
Computação física com arduino
Computação física com arduinoComputação física com arduino
Computação física com arduino
 
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
 
Workshop Franzininho: um Arduino para todos
Workshop Franzininho: um Arduino para todosWorkshop Franzininho: um Arduino para todos
Workshop Franzininho: um Arduino para todos
 
Python for Maemo
Python for MaemoPython for Maemo
Python for Maemo
 
Pentest conisli07
Pentest conisli07Pentest conisli07
Pentest conisli07
 
Arduino Overview
Arduino OverviewArduino Overview
Arduino Overview
 
Funtoo escla
Funtoo esclaFuntoo escla
Funtoo escla
 
GSoC tcptest - TCP/IP Regression Test
GSoC tcptest - TCP/IP Regression TestGSoC tcptest - TCP/IP Regression Test
GSoC tcptest - TCP/IP Regression Test
 
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
 

Workshop de IoT Campus Party Natal

  • 1. Workshop de IoT com DragonBoard 410c Rodrigo Ferraz Azevedo www.rodrigoazevedo.com rodrigo.azevedo@sintesoft.com
  • 2. Nossa Agenda - Conceituar IoT - Protocolos de comunicação - Qualcomm DragonBoard - 96Boards Mezzanine - Bibliotecas Python - Mão na massa
  • 3. Sobre mim Rodrigo Ferraz Azevedo Profissional de TI desde 2000
  • 4. IoT: Internet of Things (Internet das Coisas)
  • 5. Internet das Coisas Definição IoT é um conceito tecnológico em que todos os objetos da vida cotidiana estariam conectados à internet, agindo de modo inteligente e sensorial.
  • 6. Medir / Atuar Sensores: Dispositivos que respondem a um estímulo físico/químico de maneira específica e que pode ser transformado em outra grandeza física para fins de medição e/ou monitoramento. Atuadores: Atuador é um elemento que realiza uma ação, atendendo a comandos que podem ser manuais, eléctricos ou mecânicos.
  • 7. Comunicação Comunicação Camada Física: - Wireless Lan - Ethernet Lan - Rede telefonia (GSM, 3G, EDGE, HPSA, 4G e LTE) - LoRaWAN - Sigfox etc Protocolos de Comunicação: - DDS - CoAP - AMQP - XMPP - MQTT etc
  • 9.
  • 11. Internet das Coisas Aplicações conhecidas que utilizam o conceito de IoT:
  • 12. Internet das Coisas Aplicações conhecidas que utilizam o conceito de IoT:
  • 13. Internet das Coisas Aplicações conhecidas que utilizam o conceito de IoT:
  • 14.
  • 15. Qualcomm DragonBoard 410c ● SoC: Processador SnapDragon 410E; ● CPU: Quad-core ARM® Cortex® A53 1.2 GHz por núcleo com suporte 32-bit e 64-bit; ● Memória: 1GB RAM DDR3 533MHz;
  • 16. Qualcomm DragonBoard 410c ● Armazenamento: Interno de 8GB e entrada para cartão microSD 3.0 ● Gráfico: Qualcomm Adreno 306 GPU com suporte a OpenGL, OpenCL e DirectX ● Vídeo: 1080p 30fps HD ● Conectividade e Localização: Wi-Fi 802.11 b/g/n 2.4GHz, Bluetooth 4.1, GPS Qualcomm® Izat™, Wi-Fi, Bluetooth e GPS ● I/O: HDMI, microUSB, USB 2.0, entrada microSD ● Expansões: ● Conector de 40 pinos: UART, SPI, I2S, 2x I2C, 12x GPIO; ● Conector de 60 pinos: 4L MIPI-DSI, USB, 2x I2C, 2L+4L MIPI-CSI; ● Conector de 16 pinos: entrada/saída de som e sinais analógicos;
  • 17. Qualcomm DragonBoard 410c ● Sistemas Operacionais Suportados: ○ Android 5.1 (Lollipop) com Kernel Linux 3.10 ○ Linux. Destaques: Linaro, Ubuntu Core e Fedora ○ Windows 10 IoT Core ● Sistema Operacional utilizado nesta oficina: ○ Linux Linaro (www.linaro.org)
  • 18. Internet das Coisas Dragonboard: ● GPIO ● I2C ● UART ● SPI
  • 19. 96Boards Linksprite Mezzanine ● Kit de desenvolvimento ● Sensores: Temperatura, humidade ● Atuadores: Botão, LED, relé
  • 20. MRAA Biblioteca criada pela Intel para interação com dispositivos de IoT sudo mraa-gpio Listar GPIOs disponíveis na placa: sudo mraa-gpio list sudo mraa-i2c detect 0 Setar GPIO 25 (D2): sudo mraa-gpio set 25 1 sudo mraa-gpio set 25 0 Monitorar GPIO específica (D1): sudo mraa-gpio monitor 23
  • 21.
  • 23. DragonBoard 410c + Linux + Python Preparando o ambiente: 1. Conectar notebook no roteador: ● SSID: LHC | Senha: dragonboard 2. Instalar cliente SSH se estiver usando Windows (Linux nativo): Putty; 3. Instalar cliente SFTP se usando Windows: Filezilla; 4. Conectar via SSH na Dragonboard; 5. Instalar Thingspeak: ● git clone https://github.com/rodrigoferrazazevedo/ThingSpeakC ● cd ThingSpeakC ● make
  • 24. DragonBoard 410c + Linux + Python Iniciando o projeto: 1. Criar conta no Thingspeak (thingspeak.com) ○ Criar canal ○ Verificar as chaves de acesso 2. Criar os arquivos baseados nos código-fonte a seguir: ○ blink.py ○ touch.py ○ touchcloud.py
  • 25. DragonBoard 410c + Linux + Python Blink.py:
  • 26. DragonBoard 410c + Linux + Python Blink.py: import mraa
  • 27. DragonBoard 410c + Linux + Python Blink.py: import mraa import time
  • 28. DragonBoard 410c + Linux + Python Blink.py: import mraa import time led = mraa.Gpio(25) #D2
  • 29. DragonBoard 410c + Linux + Python Blink.py: import mraa import time led = mraa.Gpio(25) #D2 led.dir(mraa.DIR_OUT)
  • 30. DragonBoard 410c + Linux + Python Blink.py: import mraa import time led = mraa.Gpio(25) #D2 led.dir(mraa.DIR_OUT) while True:
  • 31. DragonBoard 410c + Linux + Python Blink.py: while True: led.write(1)
  • 32. DragonBoard 410c + Linux + Python Blink.py: import mraa import time led = mraa.Gpio(25) #D2 led.dir(mraa.DIR_OUT) while True: led.write(1) time.sleep(0.2)
  • 33. DragonBoard 410c + Linux + Python Blink.py: import mraa import time led = mraa.Gpio(25) #D2 led.dir(mraa.DIR_OUT) while True: led.write(1) time.sleep(0.2) led.write(0)
  • 34. DragonBoard 410c + Linux + Python Blink.py: while True: led.write(1) time.sleep(0.2) led.write(0) time.sleep(0.2) # 200ms
  • 35. DragonBoard 410c + Linux + Python touch.py:
  • 36. DragonBoard 410c + Linux + Python touch.py: import mraa
  • 37. DragonBoard 410c + Linux + Python touch.py: import mraa import time
  • 38. DragonBoard 410c + Linux + Python touch.py: import mraa import time sensor = mraa.Gpio(23) #D1
  • 39. DragonBoard 410c + Linux + Python touch.py: import mraa import time sensor = mraa.Gpio(23) #D1 sensor.dir(mraa.DIR_IN)
  • 40. DragonBoard 410c + Linux + Python touch.py: import mraa import time sensor = mraa.Gpio(23) #D1 sensor.dir(mraa.DIR_IN) while True:
  • 41. DragonBoard 410c + Linux + Python touch.py: import mraa import time sensor = mraa.Gpio(23) #D1 sensor.dir(mraa.DIR_IN) while True: porta_status = sensor.read()
  • 42. DragonBoard 410c + Linux + Python touch.py: import mraa import time sensor = mraa.Gpio(23) #D1 sensor.dir(mraa.DIR_IN) while True: porta_status = sensor.read() if porta_status == 0:
  • 43. DragonBoard 410c + Linux + Python touch.py: import mraa import time sensor = mraa.Gpio(23) #D1 sensor.dir(mraa.DIR_IN) while True: porta_status = sensor.read() if porta_status == 0: print ("Touch liberado / Sensor = ") + str(porta_status)
  • 44. DragonBoard 410c + Linux + Python touch.py: import mraa import time sensor = mraa.Gpio(23) #D1 sensor.dir(mraa.DIR_IN) while True: porta_status = sensor.read() if porta_status == 0: print ("Touch liberado / Sensor = ") + str(porta_status) else:
  • 45. DragonBoard 410c + Linux + Python touch.py: import mraa import time sensor = mraa.Gpio(23) #D1 sensor.dir(mraa.DIR_IN) while True: porta_status = sensor.read() if porta_status == 0: print ("Touch liberado / Sensor = ") + str(porta_status) else: print ("Touch pressionado / Sensor = ") + str(porta_status)
  • 46. DragonBoard 410c + Linux + Python touch.py: porta_status = sensor.read() if porta_status == 0: print ("Touch liberado / Sensor = ") + str(porta_status) else: print ("Touch pressionado / Sensor = ")+str(porta_status)
  • 47. DragonBoard 410c + Linux + Python touchcloud.py:
  • 48. DragonBoard 410c + Linux + Python touchcloud.py: import os
  • 49. DragonBoard 410c + Linux + Python touchcloud.py: import os import mraa
  • 50. DragonBoard 410c + Linux + Python touchcloud.py: import os import mraa import time
  • 51. DragonBoard 410c + Linux + Python touchcloud.py: import os import mraa import time sensor = mraa.Gpio(23) #D1
  • 52. DragonBoard 410c + Linux + Python touchcloud.py: import os import mraa import time sensor = mraa.Gpio(23) #D1 sensor.dir(mraa.DIR_IN)
  • 53. DragonBoard 410c + Linux + Python touchcloud.py: import os import mraa import time sensor = mraa.Gpio(23) #D1 sensor.dir(mraa.DIR_IN) while True:
  • 54. DragonBoard 410c + Linux + Python touchcloud.py: import os import mraa import time sensor = mraa.Gpio(23) #D1 sensor.dir(mraa.DIR_IN) while True: porta_status = sensor.read()
  • 55. DragonBoard 410c + Linux + Python touchcloud.py: import os import mraa import time sensor = mraa.Gpio(23) #D1 sensor.dir(mraa.DIR_IN) while True: porta_status = sensor.read() if porta_status == 0:
  • 56. DragonBoard 410c + Linux + Python touchcloud.py: import os import mraa import time sensor = mraa.Gpio(23) #D1 sensor.dir(mraa.DIR_IN) while True: porta_status = sensor.read() if porta_status == 0: print ("Touch liberado / Sensor = ") + str(porta_status)
  • 57. DragonBoard 410c + Linux + Python touchcloud.py: import os import mraa import time sensor = mraa.Gpio(23) #D1 sensor.dir(mraa.DIR_IN) while True: porta_status = sensor.read() if porta_status == 0: print ("Touch liberado / Sensor = ") + str(porta_status) else:
  • 58. DragonBoard 410c + Linux + Python touchcloud.py: import os import mraa import time sensor = mraa.Gpio(23) #D1 sensor.dir(mraa.DIR_IN) while True: porta_status = sensor.read() if porta_status == 0: print ("Touch liberado / Sensor = ") + str(porta_status) else: print ("Touch pressionado / Sensor = ") + str(porta_status)
  • 59. DragonBoard 410c + Linux + Python touchcloud.py: import os import mraa import time sensor = mraa.Gpio(23) #D1 sensor.dir(mraa.DIR_IN) while True: porta_status = sensor.read() if porta_status == 0: print ("Touch liberado / Sensor = ") + str(porta_status) else: print ("Touch pressionado / Sensor = ") + str(porta_status) caminho = 'sudo ../ThingSpeakC/./ThingSpeakC IXXUSHRU2S9899G5 ' + str(porta_status) os.system(caminho)
  • 60. DragonBoard 410c + Linux + Python touchcloud.py: import os import mraa import time sensor = mraa.Gpio(23) #D1 sensor.dir(mraa.DIR_IN) while True: porta_status = sensor.read() if porta_status == 0: print ("Touch liberado / Sensor = ") + str(porta_status) else: print ("Touch pressionado / Sensor = ") + str(porta_status) caminho = 'sudo ../ThingSpeakC/./ThingSpeakC IXXUSHRU2S9899G5 ' + str(porta_status) os.system(caminho) time.sleep(5)
  • 61. DragonBoard 410c + MQTT MQTT:
  • 62. DragonBoard 410c + MQTT Mosquitto:
  • 63. DragonBoard 410c + MQTT Preparando o ambiente: 1. Conectar notebook no roteador: ● SSID: LHC | Senha: dragonboard 2. Instalar PIP Python: $ sudo apt-get install python-pip 3. Instalar MQTT Python client: pip install paho-mqtt
  • 64. mqtt-subscribe.py: # -*- coding: utf-8 -*- import paho.mqtt.client as mqtt
  • 65. mqtt-subscribe.py: # -*- coding: utf-8 -*- import paho.mqtt.client as mqtt def on_connect(self, client, userdata, rc): print("Connected with result code "+str(rc)) self.subscribe("hello/world", 0)
  • 66. mqtt-subscribe.py: # -*- coding: utf-8 -*- import paho.mqtt.client as mqtt def on_connect(self, client, userdata, rc): print("Connected with result code "+str(rc)) self.subscribe("hello/world", 0) def on_message(client, userdata, msg): print("Topic: "+ msg.topic + "Message: "+str(msg.payload))
  • 67. mqtt-subscribe.py: # -*- coding: utf-8 -*- import paho.mqtt.client as mqtt def on_connect(self, client, userdata, rc): print("Connected with result code "+str(rc)) self.subscribe("hello/world", 0) def on_message(client, userdata, msg): print("Topic: "+ msg.topic + "Message: "+str(msg.payload)) client = mqtt.Client()
  • 68. mqtt-subscribe.py: # -*- coding: utf-8 -*- import paho.mqtt.client as mqtt def on_connect(self, client, userdata, rc): print("Connected with result code "+str(rc)) self.subscribe("hello/world", 0) def on_message(client, userdata, msg): print("Topic: "+ msg.topic + "Message: "+str(msg.payload)) client = mqtt.Client() client.on_connect = on_connect
  • 69. mqtt-subscribe.py: # -*- coding: utf-8 -*- import paho.mqtt.client as mqtt def on_connect(self, client, userdata, rc): print("Connected with result code "+str(rc)) self.subscribe("hello/world", 0) def on_message(client, userdata, msg): print("Topic: "+ msg.topic + "Message: "+str(msg.payload)) client = mqtt.Client() client.on_connect = on_connect client.on_message = on_message
  • 70. mqtt-subscribe.py: # -*- coding: utf-8 -*- import paho.mqtt.client as mqtt def on_connect(self, client, userdata, rc): print("Connected with result code "+str(rc)) self.subscribe("hello/world", 0) def on_message(client, userdata, msg): print("Topic: "+ msg.topic + "Message: "+str(msg.payload)) client = mqtt.Client() client.on_connect = on_connect client.on_message = on_message client.connect("localhost") #test.mosquitto.org
  • 71. mqtt-subscribe.py: # -*- coding: utf-8 -*- import paho.mqtt.client as mqtt def on_connect(self, client, userdata, rc): print("Connected with result code "+str(rc)) self.subscribe("hello/world", 0) def on_message(client, userdata, msg): print("Topic: "+ msg.topic + "Message: "+str(msg.payload)) client = mqtt.Client() client.on_connect = on_connect client.on_message = on_message client.connect("localhost") #test.mosquitto.org client.loop_forever()
  • 72. mqtt-publish.py: # -*- coding: utf-8 -*- import paho.mqtt.client as mqtt
  • 73. mqtt-publish.py: # -*- coding: utf-8 -*- import paho.mqtt.client as mqtt mqttc = mqtt.Client("python_pub")
  • 74. mqtt-publish.py: # -*- coding: utf-8 -*- import paho.mqtt.client as mqtt mqttc = mqtt.Client("python_pub") mqttc.connect("localhost", 1883)
  • 75. mqtt-publish.py: # -*- coding: utf-8 -*- import paho.mqtt.client as mqtt mqttc = mqtt.Client("python_pub") mqttc.connect("localhost", 1883) mqttc.publish("hello/world", "Campus Party Natal")
  • 76. mqtt-publish.py: # -*- coding: utf-8 -*- import paho.mqtt.client as mqtt mqttc = mqtt.Client("python_pub") mqttc.connect("localhost", 1883) mqttc.publish("hello/world", "Campus Party Natal") mqttc.loop(2)
  • 77.