SlideShare uma empresa Scribd logo
1 de 55
Baixar para ler offline
WEB BLUETOOTH / WEB USB
CONECTANDO SEU HARDWARE A WEB
Alvaro Viebrantz
aviebrantz.com.br
@alvaroviebrantz
1
Alvaro Viebrantz
Google Developer Expert em Internet das Coisas
Cuiabá - MT
2
aviebrantz.com.br
@alvaroviebrantz
3
Como interagir com um objeto fisico ?
4
!Obtendo mais informações
QR Codes e links curtos
5
!Obtendo mais informações
QR Codes e links curtos
6
Você tem a idéia genial de produto
Mas como seu usuário vai configurar ele ?
7
Mas como seu usuário vai configurar ele ?
Ele não vai baixar a IDE do Arduino !!!
8
!Comunicação serial via cabo
Precisa de drivers e as vezes um software a ser instalado
9
!Comunicação sem fio
Via rede com Wifi
ESP8266 👑
+ Ecossistema Arduino
+ Wifi embutido
10
! “Como eu acesso ?”
“Só digitar essa url aqui:
192.168.0.1 ou minhalampada.local,
mas precisa estar na mesma rede”
“Baixa meu app aqui.
Mas só funciona com meu projeto.”
11
!Comunicação sem fio
Bluetooth Classic e Low Energy
• Bluetooth classic utiliza pareamento
• Pior experiência possível
• Até então só funciona em apps nativos
• Mobile
• Desktop
• “Baixe na Store”
!12
13
🚀A vantagem da web é que ela é mais acessível
O santo Graal dos dias atuais
4.7
bilhões de
página
Era do
Zetabyte*
* 1000 Exabytes
36.000
anos
de video em
hd
Últimos
20anos
http://www.livescience.com/54094-how-big-is-the-internet.html
14
🚀A partir da web você tem alcance muito grande
Engajamento muito alto
• Todo celular tem um navegador
• Sem impedimentos de acesso
• “Baixe na Store”
• Muitos usuários não vão fazer isso!
• Usuários Android acessam mais website do que usam
aplicativos
15
”Mas aplicativos nativos são melhores”
Realmente tem algumas vantagens em se tratando de User Experience
O F F L I N E
P E R F O R
M A N C E
FA M I L I A R
H O M E 

S C R E E N
R Á P I D O
A P I S
N AT I VA S
!16
• Progressive Web Apps
• Linda performance de UI
• Instalável
• Offline
• Compartilhável
• Responsivo
• Appy-like
Progressive Web Apps
Seus problemas acabaram !!!
!17
“ S i t e s q u e t o m a ra m a s
v i t a m i n a s c e r t a s ”
Progressive Apps: Escaping Tabs Without Losing Our Soul
Progressive Web Apps
Seus problemas acabaram !!!
!18
Progressive Web Apps
Exemplos hoje
19
Mas o foco aqui não são PWAs
Mas agora a Web tem mais poderes
• Chamadas nativas
• Bluetooth 4.0 e comunicação USB Serial
• Câmera
• Microfone
• Localização
• Etc…
20
Web Bluetooth
Comunicação sem fio direto com o browser
21
Web Bluetooth
Compatibilidade
22
Web Bluetooth API
Comunicação sem fio direto com o browser
• Baseado em Bluetooth 4.0 (BLE)
• Você pode construir um dispositivo cross-platform
• Sem drivers nativos
• Baixo custo e baixo consumo de energia
• Segurança
• Apenas via HTTPS
23
Web Bluetooth API
Arquitetura basica BLE
Browser Atua como Central
Pilha de um dispositivo BLE
Device > Services > Characteristic > Value
https://learn.adafruit.com/introduction-to-bluetooth-low-energy/gatt
24
Web Bluetooth API
Services BLE
• Existem alguns perfis padrões
• Batimentos cardiacos
• Estado da bateria
• Pressão sangüínea
• Notificações
• Muitos outros
25
Web Bluetooth
Demo - Sensor de Batimentos Cardiacos
https://webbluetoothcg.github.io/demos/heart-rate-sensor/
26
Web Bluetooth
Demos e examples oficiais
• Device Info
• Battery Level
• Reset Energy
• Characteristic Properties
• Notifications
• Device Disconnect
• Get Characteristics
• Get Descriptors
https://developers.google.com/web/updates/2015/07/interact-with-ble-devices-on-the-web
27
Como fazer o seu próprio [1]
Arduino + Módulo Bluetooth 4.0
• Qualquer placa Arduino e um módulo
bluetooth de comunicação serial
• O mais conhecido é o HM-10
• Apenas um Service fixo, não há possibilidade
de implementar seu próprios Services e
Characteristics
• No lado do Arduino é como se fosse uma
porta Serial
2$
28
Braço Robótico controlado via Web Bluetooth
Arduino + Módulo Bluetooth 4.0
https://github.com/alvarowolfx/mearm-web-bluetooth
• Arduino Uno
• Módulo HM-10
• 4 servo motores
• Braço robótico MeArm
• Controlado via WebBluetooth
29
Braço Robótico controlado via Web Bluetooth
Demo video
30
Como fazer o seu próprio [2]
Arduino e ESP32 ao resgate
• ESP32 tem Bluetooth 4.0
• Suporte ao ecossistema Arduino
• Possibilidade de implementar seu próprios Services e
Characteristics
• Biblioteca:

https://github.com/nkolban/ESP32_BLE_Arduino
ESP32 👑
+ Ecossistema Arduino
+ Wifi embutido
+ Bluetooth
+ Dual Core!!!
7$
31
Cubo Led Fisico, IMU e Web Bluetooth
ESP32 + Acc e Gyro + 3D no browser
https://github.com/alvarowolfx/
physical-cube-imu-web-bluetooth-esp32
• ESP32 + Ecossistema Arduino
• MPU6050 - Accelerometro + Giroscopio
• Anel de 16 Neopixels
• Case Impressa em 3d
• Bateria 240 mAh
• Interface em 3D rodando no Browser
• React e ThreeJS
32
Cubo Led Fisico, IMU e Web Bluetooth
Demo
https://github.com/alvarowolfx/
physical-cube-imu-web-bluetooth-esp32
33
Cubo Led Fisico, IMU e Web Bluetooth
Como foi feito [Hardware]
• Definição de services e characteristics
• IMU - Inertial measurement unit
• Color
• UUIDs
• Ids únicos
https://github.com/alvarowolfx/
physical-cube-imu-web-bluetooth-esp32
34
Cubo Led Fisico, IMU e Web
Bluetooth
Como foi feito [Hardware]
• Servidor GATT com biblioteca
ESP32 BLE Arduino
• Leitura manual dos sensores e
consolidada com algoritmo
MadgwickAHRS
https://github.com/alvarowolfx/
physical-cube-imu-web-bluetooth-esp32
35
Cubo Led Fisico, IMU e Web
Bluetooth
Como foi feito [Hardware]
• Lida com callbacks quando
forem recebidas novas
informações
• Mais fácil que ficar fazendo
parse de comunicação Serial
https://github.com/alvarowolfx/
physical-cube-imu-web-bluetooth-esp32
36
Cubo Led Fisico, IMU e Web
Bluetooth
Como foi feito [Web]
https://github.com/alvarowolfx/
physical-cube-imu-web-bluetooth-esp32
• navigator.bluetooth.requestDevice
• Filtra os UUIDs e nomes do
dispositivo
• Mostra UI para seleção do
dispositivo
37
Cubo Led Fisico, IMU e Web Bluetooth
Como foi feito [Web]
38
Cubo Led Fisico, IMU e Web Bluetooth
Como foi feito [Web]
• Seleciona os services e
characteristics por UUID
39
Cubo Led Fisico, IMU e Web Bluetooth
Como foi feito [Web]
• Le os valores das
characteristics em um
intervalo fixo de tempo
40
Cubo Led Fisico, IMU e Web Bluetooth
Como foi feito [Web]
• Escreve na Characteristic quando necessita envio de dados
41
42
Web USB
Comunicação serial direto com o Browser
43
Web USB
Comunicação serial direto com o Browser
• Disponível no Android, macOS, Windows e Linux
• Funciona sem instalação de drivers adicionais na maioria deles
• Diferentes usos
• Upgrade de firmware (DFU)
• Comunicação Serial
• Bastante simples de se utilizar
• Padrão Web
• https://github.com/wicg/webusb
44
Já tem produto usando WebUSB
Para atualização de firmware e configuração
• Calculadora da NumWorks
https://blog.adafruit.com/2018/02/09/writing-a-device-updater-seriously-consider-webusb-numworks/
45
Web USB
Comunicação serial direto com o Browser
• WebUSB ❤ Arduino
• Arduino Leonardo
• Arduino/Genuino Micro
• Arduino/Genuino Zero
• Arduino MKR1000
• Arduino MKRZero
• Arduino MKRFox1200
• Adafruit Feather 32u4
• https://github.com/webusb/arduino/
• Necessita de modelo com suporte 

a USB Nativo
46
Demo - Luminária LED WebUSB
Arduino Micro e alguns Neopixels
• Arduino Micro ou equivalente
• Case impressa em 3D
• Anel de 16 Neopixels
https://github.com/alvarowolfx/

physical-led-ring-webusb-arduino
47
Luminária LED WebUSB
Como foi feito [Hardware]
• Biblioteca WebUSB Arduino
• Configura o site associado
• Comunicação serial padrão do
Arduino
https://github.com/alvarowolfx/

physical-led-ring-webusb-arduino
48
Luminária LED WebUSB
Como foi feito [Web]
• navigator.usb.requestDevice()
• Podemos filtrar os
identificadores de fabricantes
conhecidos
49
Luminária LED WebUSB
Como foi feito [Web]
• navigator.usb.getDevices()
• Obtém conexões USB de sessões anteriores
50
Luminária LED WebUSB
Como foi feito [Web]
• Interface de seleção dos dispositivos e notificações
51
52
Passador de Slides Bluetooth com gestos
Arduino + Bluetooth HID
• LightBlue Bean
• Arduino AtMega328p
• Módulo ADPS9660
• Gestos
• Cores
• Bateria 240ma
• Case impressa em 3D
53
Futuro
Existem outras API para a Web a serem exploradas
• Physical Web e Beacons
• WebMIDI
• WebNFC
• Payment Request API
“Nada neste mundo te faz aprender mais
do que a sua própria curiosidade.”


Abrace o espirito maker e

Faça você mesmo !
54
OBRIGADO
ISSO É TUDO PESSOAL
55
Alvaro Viebrantz
aviebrantz.com.br
@alvaroviebrantz

Mais conteúdo relacionado

Semelhante a Conectando hardware à web via Bluetooth e USB

Arquitetura de IoT na prática com Google Cloud - Join Community 2018
Arquitetura de IoT na prática com Google Cloud - Join Community 2018Arquitetura de IoT na prática com Google Cloud - Join Community 2018
Arquitetura de IoT na prática com Google Cloud - Join Community 2018Alvaro Viebrantz
 
AMP Roadshow SP 2019 - Web Apps Modernas
AMP Roadshow SP 2019 - Web Apps ModernasAMP Roadshow SP 2019 - Web Apps Modernas
AMP Roadshow SP 2019 - Web Apps ModernasDan Vitoriano
 
WebAssembly além da Web - Casos de Uso em IoT
WebAssembly além da Web - Casos de Uso em IoTWebAssembly além da Web - Casos de Uso em IoT
WebAssembly além da Web - Casos de Uso em IoTGDGFoz
 
Arquitetura de Internet das Coisas usando Google Cloud
Arquitetura de Internet das Coisas usando Google CloudArquitetura de Internet das Coisas usando Google Cloud
Arquitetura de Internet das Coisas usando Google CloudAlvaro Viebrantz
 
Write once, run "everywhere"
Write once, run "everywhere"Write once, run "everywhere"
Write once, run "everywhere"Stefan Horochovec
 
Evento IoT Weekend - Azure IoT Edge
Evento IoT Weekend - Azure IoT EdgeEvento IoT Weekend - Azure IoT Edge
Evento IoT Weekend - Azure IoT EdgeWalter Coan
 
Soluções de IoT usando Google Cloud e Firebase
Soluções de IoT usando Google Cloud e FirebaseSoluções de IoT usando Google Cloud e Firebase
Soluções de IoT usando Google Cloud e FirebaseAlvaro Viebrantz
 
Como utilizar a Qualcomm DragonBoard 410c em seus projetos IoT
Como utilizar a Qualcomm DragonBoard 410c em seus projetos IoTComo utilizar a Qualcomm DragonBoard 410c em seus projetos IoT
Como utilizar a Qualcomm DragonBoard 410c em seus projetos IoTFrederico Martins Pedroso Junior
 
Desenvolvimento HTML5 para Smartphones e Tablets BlackBerry
Desenvolvimento HTML5 para Smartphones e Tablets BlackBerryDesenvolvimento HTML5 para Smartphones e Tablets BlackBerry
Desenvolvimento HTML5 para Smartphones e Tablets BlackBerryfelipebzr
 
Desenvolvendo Produtos para Internet das Coisas
Desenvolvendo Produtos para Internet das CoisasDesenvolvendo Produtos para Internet das Coisas
Desenvolvendo Produtos para Internet das CoisasMarco Antonio Maciel
 
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...tdc-globalcode
 
Progressive Web Apps: Um novo mundo
Progressive Web Apps: Um novo mundoProgressive Web Apps: Um novo mundo
Progressive Web Apps: Um novo mundoAndre Baltieri
 
Robótica e PHP com Arduino - PHPn' Rio 2011
Robótica e PHP com Arduino - PHPn' Rio 2011Robótica e PHP com Arduino - PHPn' Rio 2011
Robótica e PHP com Arduino - PHPn' Rio 2011Marco Antonio Maciel
 
Seminário de Desenvolvimento Mobile - Etec Cafelândia
Seminário de Desenvolvimento Mobile - Etec CafelândiaSeminário de Desenvolvimento Mobile - Etec Cafelândia
Seminário de Desenvolvimento Mobile - Etec CafelândiaDiego Cavalca
 
TDC2016POA | Trilha Web - Realtime applications com Socket.io
TDC2016POA | Trilha Web - Realtime applications com Socket.ioTDC2016POA | Trilha Web - Realtime applications com Socket.io
TDC2016POA | Trilha Web - Realtime applications com Socket.iotdc-globalcode
 
HTML 5, CSS 3 e o futuro da Web
HTML 5, CSS 3 e o futuro da WebHTML 5, CSS 3 e o futuro da Web
HTML 5, CSS 3 e o futuro da WebDiego Pessoa
 
Palestra FLISOL 2013 - Java + Arduino + Raspberry PI = Uma combinação perfeita
Palestra FLISOL 2013 - Java + Arduino + Raspberry PI = Uma combinação perfeitaPalestra FLISOL 2013 - Java + Arduino + Raspberry PI = Uma combinação perfeita
Palestra FLISOL 2013 - Java + Arduino + Raspberry PI = Uma combinação perfeitaWaelson Negreiros Nunes
 
Internet das coisas - Conectando seus dispositivos à nuvem de forma inteligente
Internet das coisas - Conectando seus dispositivos à nuvem de forma inteligenteInternet das coisas - Conectando seus dispositivos à nuvem de forma inteligente
Internet das coisas - Conectando seus dispositivos à nuvem de forma inteligenteAlvaro Viebrantz
 

Semelhante a Conectando hardware à web via Bluetooth e USB (20)

Arquitetura de IoT na prática com Google Cloud - Join Community 2018
Arquitetura de IoT na prática com Google Cloud - Join Community 2018Arquitetura de IoT na prática com Google Cloud - Join Community 2018
Arquitetura de IoT na prática com Google Cloud - Join Community 2018
 
AMP Roadshow SP 2019 - Web Apps Modernas
AMP Roadshow SP 2019 - Web Apps ModernasAMP Roadshow SP 2019 - Web Apps Modernas
AMP Roadshow SP 2019 - Web Apps Modernas
 
WebAssembly além da Web - Casos de Uso em IoT
WebAssembly além da Web - Casos de Uso em IoTWebAssembly além da Web - Casos de Uso em IoT
WebAssembly além da Web - Casos de Uso em IoT
 
Arquitetura de Internet das Coisas usando Google Cloud
Arquitetura de Internet das Coisas usando Google CloudArquitetura de Internet das Coisas usando Google Cloud
Arquitetura de Internet das Coisas usando Google Cloud
 
Write once, run "everywhere"
Write once, run "everywhere"Write once, run "everywhere"
Write once, run "everywhere"
 
Evento IoT Weekend - Azure IoT Edge
Evento IoT Weekend - Azure IoT EdgeEvento IoT Weekend - Azure IoT Edge
Evento IoT Weekend - Azure IoT Edge
 
Soluções de IoT usando Google Cloud e Firebase
Soluções de IoT usando Google Cloud e FirebaseSoluções de IoT usando Google Cloud e Firebase
Soluções de IoT usando Google Cloud e Firebase
 
Como utilizar a Qualcomm DragonBoard 410c em seus projetos IoT
Como utilizar a Qualcomm DragonBoard 410c em seus projetos IoTComo utilizar a Qualcomm DragonBoard 410c em seus projetos IoT
Como utilizar a Qualcomm DragonBoard 410c em seus projetos IoT
 
Desenvolvimento HTML5 para Smartphones e Tablets BlackBerry
Desenvolvimento HTML5 para Smartphones e Tablets BlackBerryDesenvolvimento HTML5 para Smartphones e Tablets BlackBerry
Desenvolvimento HTML5 para Smartphones e Tablets BlackBerry
 
Nokia Web 1- 5 SDK para Série 40
Nokia Web 1- 5 SDK para Série 40Nokia Web 1- 5 SDK para Série 40
Nokia Web 1- 5 SDK para Série 40
 
Desenvolvendo Produtos para Internet das Coisas
Desenvolvendo Produtos para Internet das CoisasDesenvolvendo Produtos para Internet das Coisas
Desenvolvendo Produtos para Internet das Coisas
 
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
 
Progressive Web Apps: Um novo mundo
Progressive Web Apps: Um novo mundoProgressive Web Apps: Um novo mundo
Progressive Web Apps: Um novo mundo
 
Robótica e PHP com Arduino - PHPn' Rio 2011
Robótica e PHP com Arduino - PHPn' Rio 2011Robótica e PHP com Arduino - PHPn' Rio 2011
Robótica e PHP com Arduino - PHPn' Rio 2011
 
Seminário de Desenvolvimento Mobile - Etec Cafelândia
Seminário de Desenvolvimento Mobile - Etec CafelândiaSeminário de Desenvolvimento Mobile - Etec Cafelândia
Seminário de Desenvolvimento Mobile - Etec Cafelândia
 
TDC2016POA | Trilha Web - Realtime applications com Socket.io
TDC2016POA | Trilha Web - Realtime applications com Socket.ioTDC2016POA | Trilha Web - Realtime applications com Socket.io
TDC2016POA | Trilha Web - Realtime applications com Socket.io
 
arduino presentation
arduino presentationarduino presentation
arduino presentation
 
HTML 5, CSS 3 e o futuro da Web
HTML 5, CSS 3 e o futuro da WebHTML 5, CSS 3 e o futuro da Web
HTML 5, CSS 3 e o futuro da Web
 
Palestra FLISOL 2013 - Java + Arduino + Raspberry PI = Uma combinação perfeita
Palestra FLISOL 2013 - Java + Arduino + Raspberry PI = Uma combinação perfeitaPalestra FLISOL 2013 - Java + Arduino + Raspberry PI = Uma combinação perfeita
Palestra FLISOL 2013 - Java + Arduino + Raspberry PI = Uma combinação perfeita
 
Internet das coisas - Conectando seus dispositivos à nuvem de forma inteligente
Internet das coisas - Conectando seus dispositivos à nuvem de forma inteligenteInternet das coisas - Conectando seus dispositivos à nuvem de forma inteligente
Internet das coisas - Conectando seus dispositivos à nuvem de forma inteligente
 

Mais de Alvaro Viebrantz

BigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage APIBigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage APIAlvaro Viebrantz
 
End to End IoT projects with Zephyr.pdf
End to End IoT projects with Zephyr.pdfEnd to End IoT projects with Zephyr.pdf
End to End IoT projects with Zephyr.pdfAlvaro Viebrantz
 
Carreira de Desenvolvimento
Carreira de DesenvolvimentoCarreira de Desenvolvimento
Carreira de DesenvolvimentoAlvaro Viebrantz
 
Construindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em GoConstruindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em GoAlvaro Viebrantz
 
Prototipação em hackathons
Prototipação em hackathonsPrototipação em hackathons
Prototipação em hackathonsAlvaro Viebrantz
 
Building REST APIs using gRPC and Go
Building REST APIs using gRPC and GoBuilding REST APIs using gRPC and Go
Building REST APIs using gRPC and GoAlvaro Viebrantz
 
TinyML - IoT e Machine Learning
TinyML -  IoT e Machine LearningTinyML -  IoT e Machine Learning
TinyML - IoT e Machine LearningAlvaro Viebrantz
 
O que projetos de IoT precisam ?
O que projetos de IoT precisam ?O que projetos de IoT precisam ?
O que projetos de IoT precisam ?Alvaro Viebrantz
 
Ambiente de CI/CD com Google Cloud
Ambiente de CI/CD com Google CloudAmbiente de CI/CD com Google Cloud
Ambiente de CI/CD com Google CloudAlvaro Viebrantz
 
Big Query - Escalabilidade Infinita para os seus Dados
Big Query  - Escalabilidade Infinita para os seus DadosBig Query  - Escalabilidade Infinita para os seus Dados
Big Query - Escalabilidade Infinita para os seus DadosAlvaro Viebrantz
 
Rodando uma API Com Django Rest Framework no Google Cloud
Rodando uma API Com Django Rest Framework  no Google CloudRodando uma API Com Django Rest Framework  no Google Cloud
Rodando uma API Com Django Rest Framework no Google CloudAlvaro Viebrantz
 
Edge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing na prática com IoT, Machine Learning e Google CloudEdge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing na prática com IoT, Machine Learning e Google CloudAlvaro Viebrantz
 
Edge computing in practice using IoT, Tensorflow and Google Cloud
Edge computing in practice using IoT, Tensorflow and Google CloudEdge computing in practice using IoT, Tensorflow and Google Cloud
Edge computing in practice using IoT, Tensorflow and Google CloudAlvaro Viebrantz
 
Iniciando com LoRa, The Things Network e Google Cloud
Iniciando com LoRa, The Things Network e Google CloudIniciando com LoRa, The Things Network e Google Cloud
Iniciando com LoRa, The Things Network e Google CloudAlvaro Viebrantz
 
Construindo projetos para o Google Assistant - I/O 2019 Recap São Paulo
Construindo projetos para o Google Assistant - I/O 2019 Recap São PauloConstruindo projetos para o Google Assistant - I/O 2019 Recap São Paulo
Construindo projetos para o Google Assistant - I/O 2019 Recap São PauloAlvaro Viebrantz
 
Edge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing na prática com IoT, Machine Learning e Google CloudEdge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing na prática com IoT, Machine Learning e Google CloudAlvaro Viebrantz
 
Construindo projetos com Google Assistant e IoT
Construindo projetos com Google Assistant e IoTConstruindo projetos com Google Assistant e IoT
Construindo projetos com Google Assistant e IoTAlvaro Viebrantz
 
Explorando Go em Ambiente Embarcado
Explorando Go em Ambiente EmbarcadoExplorando Go em Ambiente Embarcado
Explorando Go em Ambiente EmbarcadoAlvaro Viebrantz
 
Soluções de IoT usando Arduino e Google Cloud
Soluções de IoT usando Arduino e Google CloudSoluções de IoT usando Arduino e Google Cloud
Soluções de IoT usando Arduino e Google CloudAlvaro Viebrantz
 
Criando soluções de IoT usando Javascript de Ponta a Ponta: do Hardware até a...
Criando soluções de IoT usando Javascript de Ponta a Ponta: do Hardware até a...Criando soluções de IoT usando Javascript de Ponta a Ponta: do Hardware até a...
Criando soluções de IoT usando Javascript de Ponta a Ponta: do Hardware até a...Alvaro Viebrantz
 

Mais de Alvaro Viebrantz (20)

BigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage APIBigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage API
 
End to End IoT projects with Zephyr.pdf
End to End IoT projects with Zephyr.pdfEnd to End IoT projects with Zephyr.pdf
End to End IoT projects with Zephyr.pdf
 
Carreira de Desenvolvimento
Carreira de DesenvolvimentoCarreira de Desenvolvimento
Carreira de Desenvolvimento
 
Construindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em GoConstruindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em Go
 
Prototipação em hackathons
Prototipação em hackathonsPrototipação em hackathons
Prototipação em hackathons
 
Building REST APIs using gRPC and Go
Building REST APIs using gRPC and GoBuilding REST APIs using gRPC and Go
Building REST APIs using gRPC and Go
 
TinyML - IoT e Machine Learning
TinyML -  IoT e Machine LearningTinyML -  IoT e Machine Learning
TinyML - IoT e Machine Learning
 
O que projetos de IoT precisam ?
O que projetos de IoT precisam ?O que projetos de IoT precisam ?
O que projetos de IoT precisam ?
 
Ambiente de CI/CD com Google Cloud
Ambiente de CI/CD com Google CloudAmbiente de CI/CD com Google Cloud
Ambiente de CI/CD com Google Cloud
 
Big Query - Escalabilidade Infinita para os seus Dados
Big Query  - Escalabilidade Infinita para os seus DadosBig Query  - Escalabilidade Infinita para os seus Dados
Big Query - Escalabilidade Infinita para os seus Dados
 
Rodando uma API Com Django Rest Framework no Google Cloud
Rodando uma API Com Django Rest Framework  no Google CloudRodando uma API Com Django Rest Framework  no Google Cloud
Rodando uma API Com Django Rest Framework no Google Cloud
 
Edge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing na prática com IoT, Machine Learning e Google CloudEdge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing na prática com IoT, Machine Learning e Google Cloud
 
Edge computing in practice using IoT, Tensorflow and Google Cloud
Edge computing in practice using IoT, Tensorflow and Google CloudEdge computing in practice using IoT, Tensorflow and Google Cloud
Edge computing in practice using IoT, Tensorflow and Google Cloud
 
Iniciando com LoRa, The Things Network e Google Cloud
Iniciando com LoRa, The Things Network e Google CloudIniciando com LoRa, The Things Network e Google Cloud
Iniciando com LoRa, The Things Network e Google Cloud
 
Construindo projetos para o Google Assistant - I/O 2019 Recap São Paulo
Construindo projetos para o Google Assistant - I/O 2019 Recap São PauloConstruindo projetos para o Google Assistant - I/O 2019 Recap São Paulo
Construindo projetos para o Google Assistant - I/O 2019 Recap São Paulo
 
Edge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing na prática com IoT, Machine Learning e Google CloudEdge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing na prática com IoT, Machine Learning e Google Cloud
 
Construindo projetos com Google Assistant e IoT
Construindo projetos com Google Assistant e IoTConstruindo projetos com Google Assistant e IoT
Construindo projetos com Google Assistant e IoT
 
Explorando Go em Ambiente Embarcado
Explorando Go em Ambiente EmbarcadoExplorando Go em Ambiente Embarcado
Explorando Go em Ambiente Embarcado
 
Soluções de IoT usando Arduino e Google Cloud
Soluções de IoT usando Arduino e Google CloudSoluções de IoT usando Arduino e Google Cloud
Soluções de IoT usando Arduino e Google Cloud
 
Criando soluções de IoT usando Javascript de Ponta a Ponta: do Hardware até a...
Criando soluções de IoT usando Javascript de Ponta a Ponta: do Hardware até a...Criando soluções de IoT usando Javascript de Ponta a Ponta: do Hardware até a...
Criando soluções de IoT usando Javascript de Ponta a Ponta: do Hardware até a...
 

Conectando hardware à web via Bluetooth e USB

  • 1. WEB BLUETOOTH / WEB USB CONECTANDO SEU HARDWARE A WEB Alvaro Viebrantz aviebrantz.com.br @alvaroviebrantz 1
  • 2. Alvaro Viebrantz Google Developer Expert em Internet das Coisas Cuiabá - MT 2 aviebrantz.com.br @alvaroviebrantz
  • 3. 3 Como interagir com um objeto fisico ?
  • 4. 4 !Obtendo mais informações QR Codes e links curtos
  • 5. 5 !Obtendo mais informações QR Codes e links curtos
  • 6. 6 Você tem a idéia genial de produto Mas como seu usuário vai configurar ele ?
  • 7. 7 Mas como seu usuário vai configurar ele ? Ele não vai baixar a IDE do Arduino !!!
  • 8. 8 !Comunicação serial via cabo Precisa de drivers e as vezes um software a ser instalado
  • 9. 9 !Comunicação sem fio Via rede com Wifi ESP8266 👑 + Ecossistema Arduino + Wifi embutido
  • 10. 10 ! “Como eu acesso ?” “Só digitar essa url aqui: 192.168.0.1 ou minhalampada.local, mas precisa estar na mesma rede” “Baixa meu app aqui. Mas só funciona com meu projeto.”
  • 11. 11 !Comunicação sem fio Bluetooth Classic e Low Energy • Bluetooth classic utiliza pareamento • Pior experiência possível • Até então só funciona em apps nativos • Mobile • Desktop • “Baixe na Store”
  • 12. !12
  • 13. 13 🚀A vantagem da web é que ela é mais acessível O santo Graal dos dias atuais 4.7 bilhões de página Era do Zetabyte* * 1000 Exabytes 36.000 anos de video em hd Últimos 20anos http://www.livescience.com/54094-how-big-is-the-internet.html
  • 14. 14 🚀A partir da web você tem alcance muito grande Engajamento muito alto • Todo celular tem um navegador • Sem impedimentos de acesso • “Baixe na Store” • Muitos usuários não vão fazer isso! • Usuários Android acessam mais website do que usam aplicativos
  • 15. 15 ”Mas aplicativos nativos são melhores” Realmente tem algumas vantagens em se tratando de User Experience O F F L I N E P E R F O R M A N C E FA M I L I A R H O M E 
 S C R E E N R Á P I D O A P I S N AT I VA S
  • 16. !16 • Progressive Web Apps • Linda performance de UI • Instalável • Offline • Compartilhável • Responsivo • Appy-like Progressive Web Apps Seus problemas acabaram !!!
  • 17. !17 “ S i t e s q u e t o m a ra m a s v i t a m i n a s c e r t a s ” Progressive Apps: Escaping Tabs Without Losing Our Soul Progressive Web Apps Seus problemas acabaram !!!
  • 19. 19 Mas o foco aqui não são PWAs Mas agora a Web tem mais poderes • Chamadas nativas • Bluetooth 4.0 e comunicação USB Serial • Câmera • Microfone • Localização • Etc…
  • 20. 20 Web Bluetooth Comunicação sem fio direto com o browser
  • 22. 22 Web Bluetooth API Comunicação sem fio direto com o browser • Baseado em Bluetooth 4.0 (BLE) • Você pode construir um dispositivo cross-platform • Sem drivers nativos • Baixo custo e baixo consumo de energia • Segurança • Apenas via HTTPS
  • 23. 23 Web Bluetooth API Arquitetura basica BLE Browser Atua como Central Pilha de um dispositivo BLE Device > Services > Characteristic > Value https://learn.adafruit.com/introduction-to-bluetooth-low-energy/gatt
  • 24. 24 Web Bluetooth API Services BLE • Existem alguns perfis padrões • Batimentos cardiacos • Estado da bateria • Pressão sangüínea • Notificações • Muitos outros
  • 25. 25 Web Bluetooth Demo - Sensor de Batimentos Cardiacos https://webbluetoothcg.github.io/demos/heart-rate-sensor/
  • 26. 26 Web Bluetooth Demos e examples oficiais • Device Info • Battery Level • Reset Energy • Characteristic Properties • Notifications • Device Disconnect • Get Characteristics • Get Descriptors https://developers.google.com/web/updates/2015/07/interact-with-ble-devices-on-the-web
  • 27. 27 Como fazer o seu próprio [1] Arduino + Módulo Bluetooth 4.0 • Qualquer placa Arduino e um módulo bluetooth de comunicação serial • O mais conhecido é o HM-10 • Apenas um Service fixo, não há possibilidade de implementar seu próprios Services e Characteristics • No lado do Arduino é como se fosse uma porta Serial 2$
  • 28. 28 Braço Robótico controlado via Web Bluetooth Arduino + Módulo Bluetooth 4.0 https://github.com/alvarowolfx/mearm-web-bluetooth • Arduino Uno • Módulo HM-10 • 4 servo motores • Braço robótico MeArm • Controlado via WebBluetooth
  • 29. 29 Braço Robótico controlado via Web Bluetooth Demo video
  • 30. 30 Como fazer o seu próprio [2] Arduino e ESP32 ao resgate • ESP32 tem Bluetooth 4.0 • Suporte ao ecossistema Arduino • Possibilidade de implementar seu próprios Services e Characteristics • Biblioteca:
 https://github.com/nkolban/ESP32_BLE_Arduino ESP32 👑 + Ecossistema Arduino + Wifi embutido + Bluetooth + Dual Core!!! 7$
  • 31. 31 Cubo Led Fisico, IMU e Web Bluetooth ESP32 + Acc e Gyro + 3D no browser https://github.com/alvarowolfx/ physical-cube-imu-web-bluetooth-esp32 • ESP32 + Ecossistema Arduino • MPU6050 - Accelerometro + Giroscopio • Anel de 16 Neopixels • Case Impressa em 3d • Bateria 240 mAh • Interface em 3D rodando no Browser • React e ThreeJS
  • 32. 32 Cubo Led Fisico, IMU e Web Bluetooth Demo https://github.com/alvarowolfx/ physical-cube-imu-web-bluetooth-esp32
  • 33. 33 Cubo Led Fisico, IMU e Web Bluetooth Como foi feito [Hardware] • Definição de services e characteristics • IMU - Inertial measurement unit • Color • UUIDs • Ids únicos https://github.com/alvarowolfx/ physical-cube-imu-web-bluetooth-esp32
  • 34. 34 Cubo Led Fisico, IMU e Web Bluetooth Como foi feito [Hardware] • Servidor GATT com biblioteca ESP32 BLE Arduino • Leitura manual dos sensores e consolidada com algoritmo MadgwickAHRS https://github.com/alvarowolfx/ physical-cube-imu-web-bluetooth-esp32
  • 35. 35 Cubo Led Fisico, IMU e Web Bluetooth Como foi feito [Hardware] • Lida com callbacks quando forem recebidas novas informações • Mais fácil que ficar fazendo parse de comunicação Serial https://github.com/alvarowolfx/ physical-cube-imu-web-bluetooth-esp32
  • 36. 36 Cubo Led Fisico, IMU e Web Bluetooth Como foi feito [Web] https://github.com/alvarowolfx/ physical-cube-imu-web-bluetooth-esp32 • navigator.bluetooth.requestDevice • Filtra os UUIDs e nomes do dispositivo • Mostra UI para seleção do dispositivo
  • 37. 37 Cubo Led Fisico, IMU e Web Bluetooth Como foi feito [Web]
  • 38. 38 Cubo Led Fisico, IMU e Web Bluetooth Como foi feito [Web] • Seleciona os services e characteristics por UUID
  • 39. 39 Cubo Led Fisico, IMU e Web Bluetooth Como foi feito [Web] • Le os valores das characteristics em um intervalo fixo de tempo
  • 40. 40 Cubo Led Fisico, IMU e Web Bluetooth Como foi feito [Web] • Escreve na Characteristic quando necessita envio de dados
  • 41. 41
  • 42. 42 Web USB Comunicação serial direto com o Browser
  • 43. 43 Web USB Comunicação serial direto com o Browser • Disponível no Android, macOS, Windows e Linux • Funciona sem instalação de drivers adicionais na maioria deles • Diferentes usos • Upgrade de firmware (DFU) • Comunicação Serial • Bastante simples de se utilizar • Padrão Web • https://github.com/wicg/webusb
  • 44. 44 Já tem produto usando WebUSB Para atualização de firmware e configuração • Calculadora da NumWorks https://blog.adafruit.com/2018/02/09/writing-a-device-updater-seriously-consider-webusb-numworks/
  • 45. 45 Web USB Comunicação serial direto com o Browser • WebUSB ❤ Arduino • Arduino Leonardo • Arduino/Genuino Micro • Arduino/Genuino Zero • Arduino MKR1000 • Arduino MKRZero • Arduino MKRFox1200 • Adafruit Feather 32u4 • https://github.com/webusb/arduino/ • Necessita de modelo com suporte 
 a USB Nativo
  • 46. 46 Demo - Luminária LED WebUSB Arduino Micro e alguns Neopixels • Arduino Micro ou equivalente • Case impressa em 3D • Anel de 16 Neopixels https://github.com/alvarowolfx/
 physical-led-ring-webusb-arduino
  • 47. 47 Luminária LED WebUSB Como foi feito [Hardware] • Biblioteca WebUSB Arduino • Configura o site associado • Comunicação serial padrão do Arduino https://github.com/alvarowolfx/
 physical-led-ring-webusb-arduino
  • 48. 48 Luminária LED WebUSB Como foi feito [Web] • navigator.usb.requestDevice() • Podemos filtrar os identificadores de fabricantes conhecidos
  • 49. 49 Luminária LED WebUSB Como foi feito [Web] • navigator.usb.getDevices() • Obtém conexões USB de sessões anteriores
  • 50. 50 Luminária LED WebUSB Como foi feito [Web] • Interface de seleção dos dispositivos e notificações
  • 51. 51
  • 52. 52 Passador de Slides Bluetooth com gestos Arduino + Bluetooth HID • LightBlue Bean • Arduino AtMega328p • Módulo ADPS9660 • Gestos • Cores • Bateria 240ma • Case impressa em 3D
  • 53. 53 Futuro Existem outras API para a Web a serem exploradas • Physical Web e Beacons • WebMIDI • WebNFC • Payment Request API
  • 54. “Nada neste mundo te faz aprender mais do que a sua própria curiosidade.” 
 Abrace o espirito maker e
 Faça você mesmo ! 54
  • 55. OBRIGADO ISSO É TUDO PESSOAL 55 Alvaro Viebrantz aviebrantz.com.br @alvaroviebrantz