O documento discute os requisitos principais para projetos de Internet das Coisas (IoT). Ele explica que hardware apropriado, comunicação confiável e análise de dados são essenciais. O documento também discute opções para microcontroladores, placas de computação única, protocolos de comunicação e armazenamento/processamento de dados na nuvem.
10. Single Board Computers ( SBC )
Basicamente computadores de bolso
• Mais memória, mais CPU, gerenciamento de tarefas pelo SO
• Linux 👑
• Rode a linguagem que seu coração mandar
• Muita coisa em Python, NodeJS e Java
• Acesso ao hardware
• CPU Registers ou SYSFS
• Gateways, Edge Computing, Multimedia, etc
11. Raspberry Pi 4 👑
+ Ecossistema gigante
+ Wifi e Bluetooth embutido
+ Muito material na internet
+ CPU ARMv8 e 2~8Gb de ram
Orange Pi Zero 🍊
- Documentação ruim
+ Wifi e Bluetooth embutido
+ Muito barato
+ CPU ARMv6 e 512mb de ram
Onion Omega2
+ Low Profile
+ Larga escala
+ Wifi embutido
+ CPU MIPS e 64mb de ram
15. Configuração dos dispositivos
Pontos importantes quando pensar no hardware
• ID do Dispositivo
• Setup Inicial
• Wifi, Bluetooth, Serial
• Provisionamento
• Atualização remota
• Reset de Fabrica
16. Design Final
Tem que parecer bonito pro usuário final
• Usar placas de prototipagem é valido ?
• Case
• Proteção pode depender do ambiente que vai ser instalado
• Placa de Circuito Impresso (PCB)
• Componentes (BOM)
• Otimizar custos e também prever demanda
• Montagem/Soldagem em larga escala
• Certificação
20. Comunicação - Camada Fisica
Formas de conectar dispositivos
• Não IP
• Bluetooth
• Zigbee / ZWave
• LoRa
• Sigfox
• Ultra-wide band
• RF em geral
• Protocolos
• LoRaWan
• Bluetooth LE
• Bluetooth Mesh
• Zigbee Cluster Library
• LoRa Mesh
34. Modelagem e Armazenamento de dados
Dicas de como salvar dados de dispositivos de IoT
• Dado Atual / Tempo Real
• Series temporais ( Time Series ) e Eventos
• Associação
• Famosos CRUDs
• Lampada > Comodo > Casa > Usuario
• Rastreador > Veiculo > Frota > Empresa > Usuario
• Sensor > Silo > Fazenda > Usuario
• Poucos dados normalmente
35. Dados em Tempo Real
Como funciona e alguns bancos que podem ser utilizados
• Salva apenas último dado do dispositivo
• Pode ser o mesmo que o de associação
• Exemplos
• Firebase Realtime Database ( Não recomendo o Firestore nesse contexto )
• Clientes podem receber atualização em tempo real
• AWS Dynamo DB
• Elastic Search
• Mongo DB ( e outros orientados a documento )
36. Dados temporais e eventos/alertas
Como funciona e alguns bancos que podem ser utilizados
• Append Only - Apenas insira dados - Dados imutáveis
• Escolha um DB que escale de forma fácil e que tenho bom suporte a consultas
• Exemplos
• GCP BigQuery ( SQL )
• AWS Redshift ( SQL )
• Timescale DB ( PostgreSQL )
• InfluxDB
• SnowflakeDB
• MongoDB / ElasticSearch ( não tão bons pra consulta )
37. Dados de Associação
Como funciona e alguns bancos que podem ser utilizados
• Não tem muitas recomendações, escolha o que o seu coração mandar
• Fluxo de dados não é tão intenso quanto nos outros dois casos
• Exemplos
• Firebase / DynamoDB
• MySQL / Postgres
• ElasticSearch / MongoDB
39. Autenticação e Autorização
Como seus dispositivos vão ser permitidos a se comunicar com seu backend
• Pode ser uma simples validação de Serial / ID do dispositivo
• Baseado em Token
• Par de chaves ( API Key/Secret )
• Chave/Certificado Assimétricos
• Muita gente esquece disso
• Ex: Usa broker mosquitto mas ele é bem ruim para adicionar auth em cima
• Afeta o processo de provisionamento que falamos antes
• Quanto essas chaves vão ser passadas pro device ?
40. Envio - Nuvem => Dispositivo
Como mandamos comandos para nosso dispositivo ?
• Depende do protocolo escolhido e da necessidade do projeto
• Exemplos
• MQTT e Websockets permitem comunicação em tempo real
• HTTP/CoAP - Dispositivo pode checar o backend de tempos em tempos
• LoRa / LoRaWan
• Rede Celular
• Integração com a rede celular para “acordar” o dispositivo
41. Recebimento - Dispositivo => Nuvem
Como mandamos dados para a nuvem
• Depende do protocolo escolhido
• Alta disponibilidade
• Não podemos perder dados importantes
• Deixar a camada bem fina e sem muita logica
• Com mensageria fica mais fácil
43. Mensageria ⭐
Uma das melhores formas de escalar sistemas
• Jogue seus dados pra uma fila o mais cedo possível
• Ajuda a processar grande quantidade de dados
• Escalabilidade Horizontal
• Redução de perda de dados
• Exemplos
• Se estiver em nuvem, use o que tem lá - AWS SQS e GCP PubSub
• NSQ, NATS, RabbitMQ, Kafka
45. Front End
Nada muito especial
• Web
• Escolha seu framework favorito
• Dá pra ser feliz com qualquer um
• Mobile
• Nativo
• Hibrido
• Flutter, React Native, Xamarin
• Administração / Back office
• CRUDzão
47. Visualização de Dados
Algumas ferramentas para monitorar os dispositivos
• Depende do banco que você escolheu para armazenar os dados temporais
• Exemplos
• Grafana
• PowerBI
• Tableau
• Google Data Studio
50. Machine Learning
Temos muitos dados, o que fazer com isso ?
• Manutenção preditiva
• Detecção de Imagens
• Análise de Sons/Audio
• Preenchimento de falhas
51. Edge Computing / Tiny ML
Rodar processamento na borda
• Faz muito sentido em entradas de Imagens/Audio
• Também em sensor com dados muito frequentes
• Acelerômetro, vibração, rotação
• Importantes em manutenção preditiva
• Reduzir banda/trafego de dados
• Privacidade
• Latência e Confiabilidade
52. • Faz muito sentido em entradas de Imagens/Audio
• Também em sensor com dados muito frequentes
• Acelerometro, vibração, rpm
• Importantes em manutenção preditiva
• Reduzir banda/trafego de dados
• Privacidade
• Latência e Confiabilidade
Edge Computing / Tiny ML
Rodar processamento na borda
Sparkfun Edge
56. Em alguns casos o hardware pode ser terceirizado
Pode existir soluções que já resolvam alguns problemas
• Rastreadores GPS/3G
• Software Traccar
• Placas da Particle
• Já vem com OTA e plataforma de gerenciamento de hardware
• Arduino está investindo em plataforma de IoT mais completa
• Tags Bluetooth/iBeacon prontas e gateways Wifi/BLE
• Sensores LoRa já prontos
• Busque por produtos LoraWan Certified
58. Geralmente nuvem publicas não são soluções completas
De novo, não existe melhor nuvem para IoT
• Google Cloud, AWS e Azure tem soluções de comunicação com o dispositivo
• Autenticação e Autorização
• Broker MQTT
• Gateway HTTP
• Mas não vão muito além disso, você tem que construir
59. Terceirize a plataforma de IoT
As vezes sua especialidade é justamente em Hardware
• Things.io
• LoRa - The Things Network ( TTN )
• Tago e ProIoT ( BR )
• Thing Speak
• Arduino Cloud
• Particle Cloud
60. Terceirize a parte de Machine Learning
Algumas plataformas hoje facilitam como começar com isso
• AWS Sage Maker
• GCP AI Platform / Auto ML / Firebase ML
• Edge Impulse ⭐