Este documento fornece uma visão geral dos principais conceitos e ferramentas relacionadas à Internet das Coisas (IoT), incluindo:
1) Uma introdução aos principais componentes de uma arquitetura IoT, como dispositivos, nuvem e processamento serverless.
2) Uma explicação dos microcontroladores ESP8266 e ESP32 e do sistema operacional MongooseOS para programação de hardware IoT.
3) Um guia passo-a-passo para integrar dispositivos IoT ao Google Cloud usando ferramentas como Cloud IoT Core,
3. ✓ Prática com os princípios básicos de hardware e IoT
✓ Componentes de uma arquitetura IoT:
✓ Device
✓ Nuvem
✓ Processamento Serverless e armazenamento
✓ Funções de negócio rodando no Firebase
✓ Comunicação bidirecional
O que vamos aprender
Visão geral das ferramentas Cloud IoT Core, Firebase e MongooseOS
6. Estação meteorológica - Arquitetura de ponta a ponta com Google Cloud
!6
Post pessoal foi para o blog do Google Cloud
Acesse: bit.ly/gcloud-weather-station
7. Estação meteorológica - Arquitetura de ponta a ponta
!7
ESP8266/ESP32 rodando MongooseOS
• Programação em Javascript
• Hardware
• Backend com Cloud Functions
• MongooseOS tem suporte ao Cloud IoT
Core
Acesse: bit.ly/gcloud-weather-station
8. Estação meteorológica - Arquitetura de ponta a ponta
!8
Relatório com Data Studio e WebApp
Acesse: bit.ly/gcloud-weather-station
9. Monitoramento de ativos via GPS e Rede Celular
!9
Outro post pessoal foi para o blog do Google Cloud sobre Arquitetura IoT
Acesse: bit.ly/gcloud-asset
10. Monitoramento de ativos via GPS e Rede Celular
!10
Outro post pessoal foi para o blog do Google Cloud sobre Arquitetura IoT
• ESP32 + GPS + GSM
• Aqui é mostrado como configurar
remotamente o dispositivo.
• Trocar tempo entre mensagens
• MongooseOS tem suporte à modem GSM de
forma transparente
Acesse: bit.ly/gcloud-asset
12. O que vamos fazer
3 partes envolvendo diversos conceitos de IoT e Nuvem
✓ Hardware básico
• Programando hardware com Javascript
• Eletrônica Básica: Entrada e Saída Digital, Leitura de Sensores, etc
• Comunicação: Exemplos com MQTT e HTTP
✓ Pipeline em Nuvem
• Configuração de componentes do projeto: Cloud IoT Core, PubSub, BigQuery e Firebase
• Processamento dos dados
• Armazenamento dos dados
✓ Visualização dos Dados
• DataStudio
15. 15
Fonte de energia
Energia é a voltagem de entrada entregue para os componentes nas placas vindo de uma
fonte externa como uma fonte, bateria ou porta USB.
• Vin (Voltagem de entrada) - Voltagem da fonte externa conectada na
placa. Atente-se ao intervalo de voltagem suportado pela placa que
estiver utilizando.
• Vcc (Voltagem Regulada) - Voltagem regulada internamento para os
componentes internos da placa. Os mais comuns são +5V, +3.3V e +1.8V.
• GND (Ground ou Terra) - Referência de 0 volts na placa. Todas as outras
voltagens são medidas de acordo com o terra.
17. 17
Componentes
Entradas e saídas básicas
LEDs - Emitem luzes visíveis quando uma corrente
passa por ele
Botões - Permitem que a eletricidade flua
entre as duas extremidades dos contatos
18. 18
Digital
Entradas e saídas
Digital - Valores binários de sinais de voltagem,
sendo o valor 1 se estiver próximo de Vcc e 0 se
estiver perto do terra.
Serial - Série de 1s e 0s digitais que
representam algum padrão de
comunicação
20. 20
Comunicação Serial
Padrões mais conhecidos e utilizados
• I2C (Síncrono e padrão Master/Slave) - Tipicamente utilizado por sensores
digitais.
• SPI (Síncrono e alta taxa de transmissão) - Tipicamente usado em Display
gráficos e numéricos.
• UART (Assíncrono) - Tipicamente usado em módulos de Radio, GPS,
Displays LCD, Debug Serial, etc.
21. 21
Analógico
Entradas e saídas
Leitura Analógica - Voltagem proporcional a
condição física medida.
PWM - Valores binários de sinais de
voltagem em uma determinada frequência
que “parecem” ter uma saída analógica
22. 22
Resistores
Reduz o fluxo de corrente
Lei de Ohm - A corrente que passa entre dois
condutores é diretamente proporcional a voltagem
entre os dois pontos .
V = I * R
V é voltagem
I é a corrente
R é a resistência
23. 23
Pull-up e Pull-down
Conceitos importante para entradas digitais em geral
Entradas podem ser
• Ligado (5v)
• Desligado (Gnd)
• Aberto (Flutuante)
34. 34
O que vamos usar hoje
Conteúdo do Kit do Workshop
NodeMCU
Wemos D1 Mini
OU
DHT11
Sensor de Temp e Umidade
35. 35
Programação - Micro controladores (MCU)
Como desenvolver hardware para IoT
• C/C++
• MicroPython
• Lua
• Javascript
36. 36
Programação - MongooseOS
Sistema Operacional para IoT
• Facilidade de configuração
• Provisionamento e configuração
• Conector para diversas nuvens
• Google Cloud, Azure, AWS, IBM,
MQTT Genérico
• Javascript para prototipação
• Apache 2.0
• Mudança recente
38. 38
Setup inicial
Vamos começar
• Monte o micro controlador na protoboard
• Conecte o cabo micro-USB
• Tenha o mos instalado no seu computador
• Abra o mos na linha de comando
• Uma interface Web deve abrir
🛠
40. 40
Setup inicial
Programação inicial
• Escolha a porta Serial
• /dev/cu.wchusbserialXXX
• /dev/cu.SLAB_USBtoUART
• Se nenhum aparecer um dos drivers está faltando - CH340 ou CP2102
41. 41
Setup inicial
Programação inicial
• Escolha a plataforma ESP8266 e o app “demo-js”.
• Faça o setup de Wifi de acordo com o que foi passado no treinamento
• gdgcuiaba / gdgcuiaba
• Depois do setup clique em “Done” e o editor de código deve aparecer
🛠
67. 67
Setup do project no Google Cloud
Criar projeto e configurar recursos a serem utilizados
• Criar projeto no Google Cloud
• Criar tabela no BigQuery para armazenar dados
• Criar tópico no PubSub para receber os dados
• Criar registro de dispositivos no Cloud IoT Core
• Associar projeto ao Firebase
• Cloud Function e Database
68. 68
Setup do projeto no Google Cloud
Criar projeto no Google Cloud
console.cloud.google.com
69. 69
Setup do projeto no Google Cloud
Dados que você vai precisar durante o workshop 🛠
70. 70
Setup do projeto no seu computador
Vamos configurar o Google Cloud SDK localmente
🛠
71. 71
Armazenamento
Opções para o armazenamento massivo de dados
• BigQuery
• Data warehouse de baixo custo
• Gerenciado pelo Google e
escalabilidade automática
• Interface SQL ANSI de consulta e
suporte a vários softwares de BI no
mercado
• Append Only - Dados imutáveis
• Gratuito até 1TB por mês analisado e
10GB de dados
72. 72
Setup do project no Google Cloud
Criar tabela no BigQuery para armazenar dados
73. 73
Setup do project no Google Cloud
Criar tabela no BigQuery para armazenar dados
🛠
74. 74
Cloud PubSub
Espinha dorsal do Google Cloud - Mensageria gerenciada pelo Google
• Gerenciado pelo Google
• Escalabilidade automática
• Garantia de entrega
• Conectado com muitos produtos
do Google Cloud
75. 75
Setup do project no Google Cloud
Criar tópico no PubSub para receber os dados
76. 76
Setup do project no Google Cloud
Criar tópico no PubSub para receber os dados
🛠
77. 77
Setup do project no Google Cloud
Criar subscription no tópico do PubSub para ler os dados via terminal
🛠
78. 78
Cloud IoT Core
Serviço gerenciado global para conectar e gerenciar de forma
segura dispositivos
Protocol Bridge
• Endpoints em MQTT e HTTP
• Comunicação Bidirecional
• Escalabilidade automática
• Balanceamento de carga
automático
• Conectado ao Cloud Pub/Sub
• Filas de mensageria
Gerenciamento de dispositivos
• Configure dispositivos individualmente
• Controle de acesso
• Cadastro de certificados de acesso
• APIs para manipulação dos
dispositivos e provisionamento
• Possibilita automação
83. • JSON Web Token (JWT) gerado a partir dos certificados cadastrados
• Chaves privada no dispositivo e publica cadastrada no Google Cloud
• JWT é um formato bem conhecido de autorização
• Padrão de industria - RFC 7519
• Algoritmos suportados para criptografia
• ES256 - ECDSA e SHA-256
• RS256 - RSA e SHA-256
83
Cloud IoT Core - Comunicação
Autenticação/Autorização usando JWT
84. 84
Cloud IoT Core - Comunicação
Via protocolos conhecidos - MQTT e HTTP
• Diferenças entre MQTT e HTTP
• MQTT permite fazer subscrição das mensagens recebidas
• HTTP tem que ficar buscando de forma explicita
• MQTT é mais leve e trafega menos dados na rede, porém fica conectado o tempo todo
• Comunicação Bidirecional
• Existem algumas restrições nisso
• Dados só podem ser enviados pelo dispositivo como telemetry ou state messages
• Dados são recebidos apenas como configuration messages
85. 85
Cloud IoT Core - Comunicação
Parâmetros de Autenticação/Autorização via MQTT
• Host: mqtt.googleapis.com:8883
• User: vazio (não é verificado)
• Pass: token JWT
• Client ID:
projects/{project-id}/locations/{cloud-region}/registries/{registry-id}/devices/{device-id}
devices/{deviceid}/config
devices/{deviceid}/events
devices/{deviceid}/state
Dispositivo
SUB PUB
PUB
86. 86
Setup do project no Google Cloud
Criar registro de dispositivos no Cloud IoT Core
🛠
87. 87
Comunicação - MQTT
Via MQTT - Suporte nativo no MongooseOS e configurável
• Preparado para diversos provedores
• Google Cloud IoT Core
• Adafruit.io
• AWS IoT
• Azure IoT
• Samsung Artik
• Qualquer Server MQTT
89. 89
Provisionamento com MongooseOS e Cloud IoT Core
Associando o hardware ao projeto no Google Cloud
• O MongooseOS consegue fazer isso automagicamente.
• Obter o ID do Device e cadastra-lo no Cloud IoT Core.
• Gerar par de certificados, associar no GCloud a chave pública e gravar no device a chave
privada.
• Configurar endpoint MQTT no device para usar o broker do Cloud IoT Core
• Fazer todo o trabalho de autenticação usando JWT
98. 98
Armazenamento
Armazenamento e sincronização em tempo real
• NoSQL orientado a documento
• Dados em forma de árvore
• Sincronização em tempo real entre os
clientes
• SDK para várias linguagens
• O Firebase possui todo um
ecossistema de produtos voltado a
desenvolvimento de apps
99. !99
Setup do projeto no Google Cloud
Associar projeto ao Firebase
console.firebase.google.com
101. !101
Setup do projeto Firebase localmente
Preparando para publicar Cloud Functions
🛠
102. 102
Processamento desses dados
Opções para o processamento e ingestão dos dados
• Cloud Functions ou Firebase Cloud
Functions
• Serveless computing
• Funções auto escaláveis em Javascript
• As funções podem ser executadas
baseadas em eventos
• PubSub é apenas uma delas
• Cobrança por chamada de função
114. 114
Análise de dados
Obter insight dos dados armazenados
• Google Data Studio
• Ferramenta para visualização de
dados
• Diversas fontes de dados
• SQL, Google Analytics, BigQuery,
Arquivos CSV, etc
• User friendly
• Gratuito
115. 115
Criando um Dashboard no Data Studio
Obter insight dos dados armazenados
datastudio.google.com