Até pouco tempo atrás, conectar seu hardware ao browser envolvia a instalação de plugins nativos no sistema operacional ou desenvolvendo um App hibrido rodando nativamente em um smartphone. Mas hoje temos as APIs WebUSB e WebBluetooth, que permite a comunicação direta entre o navegador, abrindo um mundo de possibilidades para o desenvolvimento de hardwares conectados com a web.
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”
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…
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
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
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
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