Internet das Coisas
(IoT)
com Raspberry Pi, Python e Node.js
1
Obrigado por ter vindo!
Otávio Calaça Xavier
Mestre em Ciência da Computação
Professor Universitário na UFG e no IFG
Consultor em Arquitetura de Software e DevOps
otaviocx@gmail.com
2
IoT com Raspberry Pi, Python e Node.js
O que é Internet das Coisas (IoT)?
“Sensores e atuadores embutidos em objetos físicos que
são conectados através de redes cabeadas ou sem fio,
frequentemente usando o mesmo protocolo
utilizado por toda a Internet (IP)”
- McKinsey
3
IoT com Raspberry Pi, Python e Node.js
O que é a Internet das Coisas (IoT)?
Termo cunhado por Kevin Ashton para chamar atenção
ao RFID em 1999
Se tornou popular com as novas plataformas facilitadas
para desenvolvimento de software embarcado:
Arduino, Raspberry ...
Agora em uma nova roupagem:
a Internet de Tudo (IoE - Internet of Everything)
4
IoT com Raspberry Pi, Python e Node.js
Mercado de IoT
Mercado Global de 4.8 trilhões de dólares em 2012.
Previsão para $8.9 trilhões em 2020.
De acordo com a CISCO, em 2013 apenas 0.06% das coisas que podem ser
conectadas, estão conectadas corretamente.
10B de coisas conectadas de um total de 1.5T passíveis de conexão.
Para 2020 estima-se 200B de coisas conectadas na Internet.
IPv6 suporta 3.4 * 10 ^ 38 endereços de internet
340.000.000.000.000.000.000.000.000.000.000.000.000 de IPs
5
IoT com Raspberry Pi, Python e Node.js
Conhecendo o Raspberry Pi
Um computador completo com processador ARM de 4 núcleos
com até 1GB de RAM
Do tamanho de um cartão de crédito
Em sua última versão (3 B) possui processador
de 64 bits, WiFi e Bluetooth nativos
Vários Sistemas Operacionais
compatíveis
Preço: não mais de 35 dólares 6
IoT com Raspberry Pi, Python e Node.js
Comunidade e Eventos
Raspberry Pi Brasil
Arduino Brasil
Robótica Brasil
Pequi Mecânico - UFG e GynBot - IFG
Fórum Latino-Americano de Hardware Livre
Olimpíada Brasileira de Robótica
7
IoT com Raspberry Pi, Python e Node.js
Raspbian
Raspbian é o S.O. oficial do Raspberry
Baseado em Debian
8
IoT com Raspberry Pi, Python e Node.js
Raspberry Pi - GPIOs
General-purpose input/output - entrada e saída para dispositivos eletrônicos.
Raspberry Pi A ou B possui 26 pinos, A+ e B+, Pi2, Pi3 e Pi0 possuem 40 pinos.
Comunicação via: I2C, SPI, UART
Suporta PWM
- 1 porta em Hardware
- qualquer porta via
software (DMA)
9
IoT com Raspberry Pi, Python e Node.js
Mecanismos de Comunicação
UART (Porta Serial)
Universal asynchronous receiver/transmitter
Conexão entre dois dispositivos
Requer a mesma taxa de dados configurada
nas duas vias
Comunicação assíncrona (sem transmissão de clock)
10
IoT com Raspberry Pi, Python e Node.js
Mecanismos de Comunicação
SPI - Serial Peripheral Interface
MOSI - Master Out/Slave In
MISO - Master In/Slave Out
SCLK - Serial Clock
SS/CS - Slave Select/Chip Select
Conexões relativamente rápidas, implementação
simplificada.
Utiliza muitos pinos.
11
IoT com Raspberry Pi, Python e Node.js
Mecanismos de Comunicação
I2C - Inter-Integrated Circuit
Requer apenas dois fios, independente do número de dispositivos
conectados.
Utilizado para comunicações com muitos dispositivos em um barramento.
Pode conter mais de um Master
no mesmo barramento.
Comunicação síncrona baseada em um
protocolo mais complexo. 12
IoT com Raspberry Pi, Python e Node.js
Bibliotecas
RPIO
Entrada e Saida, PWM e Interrupções GPIO.
Interrupções de Socket TCP.
Fácil utilização e boas funcionalidades.
Não suporta SPI nem I2C.
SpiDev para SPI
SMBus para I2C
13
IoT com Raspberry Pi, Python e Node.js
Bibliotecas
RPi.GPIO
Branch raiz do RPIO.
Alguns recursos a menos, outros implementados
de formas diferantes.
Compatível com CPython e PyPy
14
IoT com Raspberry Pi, Python e Node.js
Bibliotecas
WiringPi
Biblioteca em C.
Performance até 150 vezes maior que as
bibliotecas do Python.
Mais verbosa.
Sintaxe semelhante à do Arduíno.
15
IoT com Raspberry Pi, Python e Node.js
Integração com Node.js
python-shell
Chamadas a scripts python.
Permite iniciar um script python e
trocar mensagens entre python
e nodejs.
Tratamento de erros para facilitar
integração.
16
IoT com Raspberry Pi, Python e Node.js
Integração com Node.js
17
IoT com Raspberry Pi, Python e Node.js
Integrações
Broker IoT - Máquina para
Máquina
Desenvolvido em Node.js
Pode ser expandido
facilmente.
18
IoT com Raspberry Pi, Python e Node.js
Exemplos de Dispositivos
19
IoT com Raspberry Pi, Python e Node.js
Vantagens e Desvantagens
Vantagens
Raspberry Pi é um computador completo, multiprocessado.
Pode fazer processamentos complexos e com paralelismo.
Pode disponibilizar vários mecanismos de integração,
utilizando os protocolos da IoT (MQTT, CoAP).
20
IoT com Raspberry Pi, Python e Node.js
Vantagens e Desvantagens
Desvantagens
Por rodar um sistema operacional de propósito geral, não é tempo real.
Mesmo em C, não garante precisão do momento exato
em que as operações serão executadas.
Consome mais energia que plataformas baseadas em microcontrolador
(como Arduino).
21
IoT com Raspberry Pi, Python e Node.js
Exemplos de Projetos
Domótica.
Eletrodomésticos Inteligentes.
Drones e Robótica.
Automação Comercial e em eventos.
Gerenciamento remoto de qualquer
dispositivo conectado.
22
IoT com Raspberry Pi, Python e Node.js
Exemplos de Projetos
Cluster de Raspberry Pi
para processamento
paralelo.
23
IoT com Raspberry Pi, Python e Node.js
Conclusão
Raspberry é uma plataforma barata e muito completa para desenvolvimento de
dispositivos para a Internet das Coisas.
O Raspberry pode se comunicar de diversas formas como UART, I2C e SPI.
Existem uma série de bibliotecas em Python para trabalhar com dispositivos
eletrônicos.
Raspberry não é tempo real e com isso não é recomendado para alguns tipos de
aplicações.
24
IoT com Raspberry Pi, Python e Node.js
Cursos e Livros Indicados
Canal do Youtube - Alexander Baran-Harper
Playlist Raspberry Tutorials
The Raspberry Pi Platform and Python Programming for the Raspberry Pi
Coursera: https://www.coursera.org/learn/raspberry-pi-platform
Programando o Raspberry Pi: Primeiros Passos com Python
Simon Monk - Editora Novatec
25
IoT com Raspberry Pi, Python e Node.js
Referências e Links para Imagens
- http://www.psfk.com/2014/03/internet-of-things-infographic.html
- https://pythonhosted.org/RPIO/
- https://pypi.python.org/pypi/RPi.GPIO
- https://github.com/extrabacon/python-shell
- https://github.com/eclipse/ponte
- http://www.eletrodex.com.br/media/catalog/product/d/h/dht-11.png
- http://sempreupdate.org/wp-content/uploads/2016/02/rpi1bplus.png
- https://farm6.staticflickr.com/5554/14586499818_6dde3d1664_c.jpg
- https://cdn-reichelt.de/bilder/web/xxl_ws/A300/RASP_PI_ZERO_06.png
26
Obrigado por ter ficado
até o fim… :)
Perguntas?
27
Otávio Calaça Xavier
otaviocx@gmail.com

Internet das coisas (IoT) com Raspberry, Python e Node.js

  • 1.
    Internet das Coisas (IoT) comRaspberry Pi, Python e Node.js 1
  • 2.
    Obrigado por tervindo! Otávio Calaça Xavier Mestre em Ciência da Computação Professor Universitário na UFG e no IFG Consultor em Arquitetura de Software e DevOps otaviocx@gmail.com 2
  • 3.
    IoT com RaspberryPi, Python e Node.js O que é Internet das Coisas (IoT)? “Sensores e atuadores embutidos em objetos físicos que são conectados através de redes cabeadas ou sem fio, frequentemente usando o mesmo protocolo utilizado por toda a Internet (IP)” - McKinsey 3
  • 4.
    IoT com RaspberryPi, Python e Node.js O que é a Internet das Coisas (IoT)? Termo cunhado por Kevin Ashton para chamar atenção ao RFID em 1999 Se tornou popular com as novas plataformas facilitadas para desenvolvimento de software embarcado: Arduino, Raspberry ... Agora em uma nova roupagem: a Internet de Tudo (IoE - Internet of Everything) 4
  • 5.
    IoT com RaspberryPi, Python e Node.js Mercado de IoT Mercado Global de 4.8 trilhões de dólares em 2012. Previsão para $8.9 trilhões em 2020. De acordo com a CISCO, em 2013 apenas 0.06% das coisas que podem ser conectadas, estão conectadas corretamente. 10B de coisas conectadas de um total de 1.5T passíveis de conexão. Para 2020 estima-se 200B de coisas conectadas na Internet. IPv6 suporta 3.4 * 10 ^ 38 endereços de internet 340.000.000.000.000.000.000.000.000.000.000.000.000 de IPs 5
  • 6.
    IoT com RaspberryPi, Python e Node.js Conhecendo o Raspberry Pi Um computador completo com processador ARM de 4 núcleos com até 1GB de RAM Do tamanho de um cartão de crédito Em sua última versão (3 B) possui processador de 64 bits, WiFi e Bluetooth nativos Vários Sistemas Operacionais compatíveis Preço: não mais de 35 dólares 6
  • 7.
    IoT com RaspberryPi, Python e Node.js Comunidade e Eventos Raspberry Pi Brasil Arduino Brasil Robótica Brasil Pequi Mecânico - UFG e GynBot - IFG Fórum Latino-Americano de Hardware Livre Olimpíada Brasileira de Robótica 7
  • 8.
    IoT com RaspberryPi, Python e Node.js Raspbian Raspbian é o S.O. oficial do Raspberry Baseado em Debian 8
  • 9.
    IoT com RaspberryPi, Python e Node.js Raspberry Pi - GPIOs General-purpose input/output - entrada e saída para dispositivos eletrônicos. Raspberry Pi A ou B possui 26 pinos, A+ e B+, Pi2, Pi3 e Pi0 possuem 40 pinos. Comunicação via: I2C, SPI, UART Suporta PWM - 1 porta em Hardware - qualquer porta via software (DMA) 9
  • 10.
    IoT com RaspberryPi, Python e Node.js Mecanismos de Comunicação UART (Porta Serial) Universal asynchronous receiver/transmitter Conexão entre dois dispositivos Requer a mesma taxa de dados configurada nas duas vias Comunicação assíncrona (sem transmissão de clock) 10
  • 11.
    IoT com RaspberryPi, Python e Node.js Mecanismos de Comunicação SPI - Serial Peripheral Interface MOSI - Master Out/Slave In MISO - Master In/Slave Out SCLK - Serial Clock SS/CS - Slave Select/Chip Select Conexões relativamente rápidas, implementação simplificada. Utiliza muitos pinos. 11
  • 12.
    IoT com RaspberryPi, Python e Node.js Mecanismos de Comunicação I2C - Inter-Integrated Circuit Requer apenas dois fios, independente do número de dispositivos conectados. Utilizado para comunicações com muitos dispositivos em um barramento. Pode conter mais de um Master no mesmo barramento. Comunicação síncrona baseada em um protocolo mais complexo. 12
  • 13.
    IoT com RaspberryPi, Python e Node.js Bibliotecas RPIO Entrada e Saida, PWM e Interrupções GPIO. Interrupções de Socket TCP. Fácil utilização e boas funcionalidades. Não suporta SPI nem I2C. SpiDev para SPI SMBus para I2C 13
  • 14.
    IoT com RaspberryPi, Python e Node.js Bibliotecas RPi.GPIO Branch raiz do RPIO. Alguns recursos a menos, outros implementados de formas diferantes. Compatível com CPython e PyPy 14
  • 15.
    IoT com RaspberryPi, Python e Node.js Bibliotecas WiringPi Biblioteca em C. Performance até 150 vezes maior que as bibliotecas do Python. Mais verbosa. Sintaxe semelhante à do Arduíno. 15
  • 16.
    IoT com RaspberryPi, Python e Node.js Integração com Node.js python-shell Chamadas a scripts python. Permite iniciar um script python e trocar mensagens entre python e nodejs. Tratamento de erros para facilitar integração. 16
  • 17.
    IoT com RaspberryPi, Python e Node.js Integração com Node.js 17
  • 18.
    IoT com RaspberryPi, Python e Node.js Integrações Broker IoT - Máquina para Máquina Desenvolvido em Node.js Pode ser expandido facilmente. 18
  • 19.
    IoT com RaspberryPi, Python e Node.js Exemplos de Dispositivos 19
  • 20.
    IoT com RaspberryPi, Python e Node.js Vantagens e Desvantagens Vantagens Raspberry Pi é um computador completo, multiprocessado. Pode fazer processamentos complexos e com paralelismo. Pode disponibilizar vários mecanismos de integração, utilizando os protocolos da IoT (MQTT, CoAP). 20
  • 21.
    IoT com RaspberryPi, Python e Node.js Vantagens e Desvantagens Desvantagens Por rodar um sistema operacional de propósito geral, não é tempo real. Mesmo em C, não garante precisão do momento exato em que as operações serão executadas. Consome mais energia que plataformas baseadas em microcontrolador (como Arduino). 21
  • 22.
    IoT com RaspberryPi, Python e Node.js Exemplos de Projetos Domótica. Eletrodomésticos Inteligentes. Drones e Robótica. Automação Comercial e em eventos. Gerenciamento remoto de qualquer dispositivo conectado. 22
  • 23.
    IoT com RaspberryPi, Python e Node.js Exemplos de Projetos Cluster de Raspberry Pi para processamento paralelo. 23
  • 24.
    IoT com RaspberryPi, Python e Node.js Conclusão Raspberry é uma plataforma barata e muito completa para desenvolvimento de dispositivos para a Internet das Coisas. O Raspberry pode se comunicar de diversas formas como UART, I2C e SPI. Existem uma série de bibliotecas em Python para trabalhar com dispositivos eletrônicos. Raspberry não é tempo real e com isso não é recomendado para alguns tipos de aplicações. 24
  • 25.
    IoT com RaspberryPi, Python e Node.js Cursos e Livros Indicados Canal do Youtube - Alexander Baran-Harper Playlist Raspberry Tutorials The Raspberry Pi Platform and Python Programming for the Raspberry Pi Coursera: https://www.coursera.org/learn/raspberry-pi-platform Programando o Raspberry Pi: Primeiros Passos com Python Simon Monk - Editora Novatec 25
  • 26.
    IoT com RaspberryPi, Python e Node.js Referências e Links para Imagens - http://www.psfk.com/2014/03/internet-of-things-infographic.html - https://pythonhosted.org/RPIO/ - https://pypi.python.org/pypi/RPi.GPIO - https://github.com/extrabacon/python-shell - https://github.com/eclipse/ponte - http://www.eletrodex.com.br/media/catalog/product/d/h/dht-11.png - http://sempreupdate.org/wp-content/uploads/2016/02/rpi1bplus.png - https://farm6.staticflickr.com/5554/14586499818_6dde3d1664_c.jpg - https://cdn-reichelt.de/bilder/web/xxl_ws/A300/RASP_PI_ZERO_06.png 26
  • 27.
    Obrigado por terficado até o fim… :) Perguntas? 27 Otávio Calaça Xavier otaviocx@gmail.com