Como fazer dispositivos para a Internet das Coisas usando Raspberry e programando em Python. Além disso, disponibilizar integrações Web a partir do Node.js e o Express integrados ao Python.
2. 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
3. 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
4. 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
5. 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
6. 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
7. 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
8. IoT com Raspberry Pi, Python e Node.js
Raspbian
Raspbian é o S.O. oficial do Raspberry
Baseado em Debian
8
9. 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
10. 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
11. 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
12. 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
13. 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
14. 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
15. 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
16. 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
20. 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
21. 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
22. 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
23. IoT com Raspberry Pi, Python e Node.js
Exemplos de Projetos
Cluster de Raspberry Pi
para processamento
paralelo.
23
24. 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
25. 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
26. 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
27. Obrigado por ter ficado
até o fim… :)
Perguntas?
27
Otávio Calaça Xavier
otaviocx@gmail.com