A junção das áreas de Machine Learning em ambiente embarcado/IoT tem crescido bastante, sendo atualmente chamada de TinyML. Já temos modelos robustos e pequenos o suficientes para rodar até mesmo em micro controladores com 16kb de memória. Nessa palestra vou mostrar as diferentes formas de se trazer modelos de Machine Learning para ambiente embarcado usando o ecossistema do Tensorflow.
Apresentação sobre a placa Raspberry Pi e sua arquitetura, SoC, GPU, Barramentos internos e externos, e demais componentes, da disciplina de Arquitetura e Organização de Computadores I, do curso de Engenharia de Computação, da Universidade Federal do Vale do São Francisco, Juazeiro/BA.
Desenvolvido pelos alunos: Edwildson Coelho Rodrigues e Samuel de Souza Santana.
L’un des enjeux principaux de Docker est de rapprocher les équipes de développement de celles de la production. Docker permet, en effet, d’aisément installer une application, mais également de la modifier rapidement.
Ce livre blanc s’adresse donc à la fois aux opérationnels et aux développeurs mais aussi à tous ceux qui organisent la DSI ou les différents projets.
Apresentação sobre a placa Raspberry Pi e sua arquitetura, SoC, GPU, Barramentos internos e externos, e demais componentes, da disciplina de Arquitetura e Organização de Computadores I, do curso de Engenharia de Computação, da Universidade Federal do Vale do São Francisco, Juazeiro/BA.
Desenvolvido pelos alunos: Edwildson Coelho Rodrigues e Samuel de Souza Santana.
L’un des enjeux principaux de Docker est de rapprocher les équipes de développement de celles de la production. Docker permet, en effet, d’aisément installer une application, mais également de la modifier rapidement.
Ce livre blanc s’adresse donc à la fois aux opérationnels et aux développeurs mais aussi à tous ceux qui organisent la DSI ou les différents projets.
Introdução a Sistemas Embarcados com Arduino - mini-cursoFelipe Martins
Mini-curso de Introdução a Sistemas Embarcados com Arduino.
Conteúdo:
- Sistemas embarcados;
- Arduino: características de hardware;
- Arduino: características de software;
- Microcontrolador;
- Eletrônica: conceitos básicos;
- Planejamento de programas;
- Sensores digitais (problemas e debounce);
- Sensores analógicos (Intensidade luminosa, deslocamento angular ou linear, Força/Torque, proximidade, aceleração/inclinação, temperatura);
- Comunicação serial (USART, SPI, I2C);
- Controle de cargas com PWM;
- LCD (displays de cristal líquido);
- Armazenamento de dados em cartão SD;
- Acionamento de motores e servomotores;
- Simulação de sistemas com Arduino;
- Práticas (montagem e programação);
- Avançando com o Arduino: shields, comunicação sem fio, Arduino com MATLAB, aplicações em robótica...
Micropython - Python para microcontroladoresFabio Souza
Nessa palestra será apresentado o MicroPython, uma implementação de Python com o foco em microcontroladores. Serão apresentados os detalhes do MicroPython e aplicações em IoT e em educação usando pacas com ESP8266 e também com BBC micro:bit
Internet das coisas, conhecendo plataformas de desenvolvimentosDouglas Esteves
Apresentação na Universidade de Católica de Santos, pelo evento Building Dev's : Internet of Things & Robótica.
https://www.eventbrite.com.br/e/building-devs-internet-of-things-robotica-tickets-46894743440#
Palestra ministrada para falar sobre a internet das coisas.
Passando sobre pequena historia da sua criação, ate no impacto que ela vai ocasionar no plano de negocio de empresas, atuais.
Webinar – Desenvolvendo projetos com a Thunderboard EFR32BG22Embarcados
Nesse webinar vamos explorar o kit de desenvolvimento Thunderboard EFR32BG22 da Silicon Labs. Esse kit traz diversos recursos onboard sendo uma excelente plataforma para desenvolver dispositivos IoT conectados com baixo consumo de energia.
O que você aprenderá nesse webinar?
Recursos da Thunderboard™ EFR32BG22;
Detalhes do SoC EFR32BG22 Wireless Gecko;
Conhecer as ferramentas de desenvolvimento:
Simplicity Studio Version 5
SDKs
Ver demonstrações de aplicações com bluetooth para coleta de dados dos sensores da placa e controle de dispositivos através de Smartphone.
Webinar: Redes Mesh para Monitoramento e Controle de SensoresEmbarcados
Para alcançar o mercado de forma mais rápida e robusta é preciso contar com ferramentas e protocolos que facilitem o desenvolvimento de suas soluções. Neste webinar você será apresentado aos mais modernos kits de desenvolvimento e protocolos de rede mesh já desenvolvidos pela Microchip.
Objetivo do Webinar
Entender os principais padrões de redes sem fio, aplicação de redes sem fio em mesh, topologias de rede, questões de segurança da informação e kits de desenvolvimento disponíveis para tal finalidade.
Assista em: https://www.embarcados.com.br/webinars/redes-mesh-para-monitoramento-e-controle-de-sensores/
Dispositivos IoT com FPGAs - Alto poder de processamento para crescentes dema...André Curvello
Palestra apresentada de forma online para o IoT Weekend 2017, onde procurei apresentar as vantagens, tendências e benefícios de dispositivos com FPGAs para o mundo da Internet das Coisas.
A palestra está disponível online no YouTube em:
https://www.youtube.com/watch?v=E4jIgJ8nUV4
Criando soluções de IoT usando Javascript de Ponta a Ponta: do Hardware até a...Alvaro Viebrantz
Javascript se tornou uma linguagem universal. Você consegue criar aplicações Web, Desktop, Backend e agora até mesmo em microcontroladores. Aqui você verá como criar uma solução completa de IoT, desde a coleta de dados dos dispositivos, usando Javascript na ponta e construindo um pipeline de processamento desses dados na nuvem também apenas usando Javascript. Tudo isso em sua grande maioria usando serviços gerenciados e arquitetura serverless, sem ter que se queimar configurando servidores.
IoT – Internet of Things. Do Básico ao Hello World!Rodolfo Cruz
Apresentação básica sobre Internet das Coisas(IoT - Internet Of Things) e as principais tecnologias envolvidas.
Um pouquinho sobre Arduino e Raspberry PI, finalizando com um projeto no Arduino que faz leitura da temperatura ambiente e imprime em um Display LCD 16x2.
Developing IoT with Zephyr is a journey from hardware all the way to application. It involves multiple teams and expertise, from hardware to cloud and application development. This talk will cover the options for getting a Zephyr app connected (WiFi, Ethernet, Cellular), selecting the right data encoding (JSON/CBOR), securing the data transfer (DTLS/TLS), and choosing a protocol (HTTP/MQTT/COAP). But that’s not the end of the story, the cloud needs to manage devices allowed to connect, consume the data being received, open up options for using that data, and be aware of the continued state of the hardware. And once you have the data you need to build a user-facing application on top of it. Understanding this lifecycle will help us as developers to make good choices on what Zephyr provides, helping ensure successful IoT projects.
Muitas vezes quando desenvolvemos aplicações de escaláveis hoje em dia, acabamos atrelando parte deles a uma nuvem especifica. Porém isso traz problemas para como vendor lock-in, dificuldade de rodar em ambiente local, falta de portabilidade e entre outros problemas. E existem serviços em comum que são acessados em nuvem como Banco de Dados, Filas de Mensageria, Armazenamento de arquivo, logs, tracing e que poderiam ser abstraídos e preferencialmente intercambiáveis entre nuvens. Nessa palestra quero mostrar como desenvolver apps mais portáveis e ainda assim mantendo as vantagem de se rodar em nuvem.
Developing APIs over a RESTful interface with JSON payloads is kind of the de-facto standard nowadays, but it still lacks an easy way to build it with a well-defined interface and document it to be used by others. What if we can leverage gRPC's fast, type-safe, and modern way of building APIs and still be able to provide an interface over REST/JSON ? Check this talk to find out how.
Uma visão geral do que é necessário na grande maioria dos projetos de IoT e ninguém conta.
Definindo em 5 partes os componentes do projeto:
* Coisa
* Conectividade e Comunicação
* Backend
* Frontend
* Analise de dados
Vamos ver o passo a passo de como configurar um ambiente de integração continua e deploy continuo usando ferramentas gerenciadas no Google Cloud, sem se queimar tendo que gerenciar servidores.
Demos
Demo em Flask
https://github.com/alvarowolfx/flask-demo
Demo de Múltiplos Ambientes
https://github.com/alvarowolfx/gcloud-ci-cd-demo
Use Case em IoT
https://medium.com/google-cloud/serverless-continuous-integration-and-ota-update-flow-using-google-cloud-build-and-arduino-d5e1cda504bf
https://github.com/alvarowolfx/gcloud-ota-arduino-update
Referencias
Deploy de aplicativos móveis
Android APK
https://cloud.google.com/community/tutorials/building-android-apk-with-cloud-build-gradle-docker-image
Flutter e Cloud Build
https://medium.com/@lidemin/flutter-ci-cd-with-cloud-build-android-9cd12ade8306
Outros ambientes de execução
Google App Engine
https://medium.com/google-cloud/continuous-delivery-in-google-cloud-platform-cloud-build-with-app-engine-8355d3a11ff5
Cloud Functions
https://cloud.google.com/cloud-build/docs/deploying-builds/deploy-functions
https://medium.com/swlh/how-to-ci-cd-on-google-cloud-platform-1e631cded335
https://cloud.google.com/devops
https://github.com/GoogleCloudPlatform/github-actions/blob/master/get-secretmanager-secrets/README.md
https://docs.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions#github-context
https://cloud.google.com/cloud-build/docs/configuring-builds/substitute-variable-values#yaml_2
https://cloud.google.com/cloud-build/docs/building/build-go#building_using_go_modules
Cloud Run Quickstart - https://www.youtube.com/watch?v=3OP-q55hOUI
https://fireship.io/lessons/ci-cd-with-google-cloud-build/
Rodando uma API Com Django Rest Framework no Google CloudAlvaro Viebrantz
Será mostrado uma aplicação de demonstração em IoT para monitorar o nível de tanques em uma fazenda. Será construída uma API com Django Rest Framework, salvando os dados básicos no Cloud SQL e dados de telemetria dos dispositivos no BigQuery. Tudo isso rodando em ambiente serverless no Google Cloud, sem ter que se queimar configurando servidores. Também veremos o básico de um dispositivo IoT para este projeto feito com MicroPython.
Edge computing na prática com IoT, Machine Learning e Google CloudAlvaro Viebrantz
Conceitos de edge computing sendo mostrado em um experimento envolvendo ESP32 com cameras, um Raspberry pi rodando inferências localmente com Tensorflow e agindo como um gateway no Cloud Iot Core e uma camada serverless na nuvem que armazena os dados processados das imagens.
Iniciando com LoRa, The Things Network e Google CloudAlvaro Viebrantz
Uma introdução ao protocolo de rede LoRa e como ter uma arquitetura em nuvem escalável de processamento de dados com dispositivos usando esse protocolo.
Edge computing na prática com IoT, Machine Learning e Google CloudAlvaro Viebrantz
Conceitos de edge computing sendo mostrado em um experimento envolvendo ESP32 com cameras, um Raspberry pi rodando inferências localmente com Tensorflow e agindo como um gateway no Cloud Iot Core e uma camada serverless na nuvem que armazena os dados processados das imagens.
Palestra falando sobre todos os componentes necessários para construir interfaces de conversa e voz, misturando isso com projetos de hardware e internet das coisas.
Golang é uma linguagem fantástica para se desenvolver aplicações e um fator a ser explorado é o seu uso em dispositivos IoT. A linguagem já conta com diversas ferramentas de cross-compile, alguns pacotes experimentais de comunicação baixo nível e diversos projetos relacionados a hardware.
Arquitetura de IoT na prática com Google Cloud - Join Community 2018Alvaro Viebrantz
Uma introdução a diversas ferramentas e serviços que podem ser utilizados no Google Cloud para a construção de aplicações envolvendo Internet das Coisas. Vamos ver um overview de como construir várias soluções completas de IoT, desde a coleta de dados dos dispositivos de forma segura, armazenamento massivo de informação e como fazer analise e visualização dos dados. Tudo isso em sua grande maioria usando serviços gerenciados, sem ter que se queimar configurando servidores.
Codelab - Google Cloud IoT Core e MongooseOS - I/O Extended Cuiabá 2018Alvaro Viebrantz
Como montar uma arquitetura de processamento de dados utilizando ferramentas do Google Cloud. A idéia é abranger vários níveis de desenvolvedores, já que boa parte dos serviçõs que vão ser mostrados, são gerenciados, ou seja, não precisa ser expert em nuvem para utiliza-los.
Também vários serviços são relacionados ao Firebase, que também tem seu uso bastante facilitado para grande parte dos desenvolvedores. O workshop abrange vários níveis de desenvolvimento, passando de front-end, hardware, analise de dados, infraestrutura, etc.
Codelab - Google Cloud IoT Core e MongooseOS - I/O Extended Cuiabá 2018
TinyML - IoT e Machine Learning
1. MACHINE LEARNING EM IOT
COM TENSORFLOW
Alvaro Viebrantz
Google Developer Expert for IoT and Product Engineer at Leverege
aviebrantz.com
@alvaroviebrantz
2. IoT + ML ?
Tensorflow
para IoT
Projetos
práticos
O que vamos ver hoje ?
4. Dispositivos IoT
Apesar de contar, na maioria das vezes não estamos falando disso
• Celulares
• Carros inteligentes
• Roteadores/Gateways
• Raspberry Pi’s e afins
5. Dispositivos IoT
Essa classe de dispositivos são bem mais poderosos
CPU Cores Memory Storage
Power
Consumption
Usage under Load Price
Raspberry
Pi 3
1.2 Ghz 4 1 GB Up to 32 GB 6W / 400 mA @idle 700 mA @load $35
Pixel 4a 2.2 Ghz 8 6 GB Up to 128 GB 5W / 80mA @idle 900 mA @load $350
Google
Nest Mini
1.4 Ghz 4 512 MB 4 GB 2W / 150 mA @idle 210 mA @load $50
NVIDIA
Drive PX2
1.4 Ghz
8 CPU
4 GPU
16 GB Up to 128 GB 60 W / 16 A @idle 50 A @load $800
7. Dispositivos IoT
Bastante limitados em memoria, cpu e uso de bateria
• Dispositivos bem menores e mais baratos
• Lampadas, Sensores de porta, Fechaduras Smart, Termostatos
• Smartwatches e Fitness bands
• Rastreadores em geral - GPS, rede celular, LoRa, etc
• Assistentes pessoais - Alexa/Google Assistant
• Na maioria das vezes, não tem sistema operacional nenhum
20. Manutenção preditiva
Padrões de vibração em motores
github.com/ShawnHymel/tinyml-example-anomaly-detection
• Detectar anomalias no funcionamento de um
equipamento
• Projeto usando um ESP32 + Accelerometro
• Diferentes modelos testados rodando no
embarcado
• Auto Encoder
• Mahalanobis Distance
• github.com/ShawnHymel/tinyml-example-
anomaly-detection
23. TensorFlow Lite
Mobile e Internet das Coisas
• Plataformas
• Android e iOS
• Linux Embarcado
• Web com TensorFlowJS
• Backend/Delegate
• CPU
• GPU WebGL / OpenCL / Open GL
• iOS Core ML / Metal
• Web Assembly
• Edge TPU ⭐
25. TensorFlow Lite Micro
Micro-controladores e dispositivos com 16kb de ram ou mais
• Arquiteturas
• Arm Cortex-M e CMSIS DSP
• XTensa - ESP32
• Biblioteca em C/C++
• Demos
• Detecção de hotwords - Sim/Não
• Varinha mágica - Detecta diferentes movimentos
• Deteção de Pessoas com Camera
• Conjuntos de instruções limitado
• www.tensorflow.org/lite/microcontrollers/build_convert#operation_support
26. Relembrando alguns devices
Varios tem suporte ao TensorFlow Lite Micro
CPU Memory Flash Connectivity GPIO Arch
Power
Consump
tion
Deep
Sleep
Price
ATMega
328p
16 Mhz 2 Kb 32 Kb None 24
AVR RISC 8
bit
40mA 6uA $1.7
STM32
“Blue Pill”
72 Mhz 20 Kb 64 kb None 32
ARM Cortex
M3
8mA 3uA $2.3
Nordic
nrf52840
64 Mhz 256 Kb 1 MiB
Ble/Zigbee/
Thread
36
ARM Cortex
M4F
16mA 2uA $3
ESP 32
160 Mhz
Dual Core
512 Kb
Up to
16MiB
Wifi/Ble 36
XTensa
32 bit
200mA 10uA $3
27. Digital Signal Processing - DSP
Instruções otimizadas para cálculos complexos em Micro Controladores
• “GPU” para micro controladores
• Instruções especializadas para determinadas tarefas
39. 39
Meu Computador Raspberry Pi 3
TensorFlow.js
Core
8 seconds
per frame
45 seconds
per frame
TensorFlow.js
Node
200 milliseconds
per frame
1 second
per frame
Dica - Use tfjs-node ou tfjs-node-gpu se possível
Performance
48. Melhor dos dois mundos
Detect
Objects using
CocoSSD
Filtrar
gatos e
cortar as
imagens
Classificar
com modelo
customizado
Usar um modelo pré treinado para detecção de objetos primeiro e depois o modelo
customizado
54. 54
Inspirações
Outros projetos de TinyML com Tensorflow
blog.arduino.cc/2019/10/15/get-started-with-machine-learning-on-arduino/
medium.com/@devdevcharlie/play-street-fighter-with-body-movements-using-arduino-and-tensorflow-js-6b0e4734e118
55. 55
Raquete Inteligente
Classificar os diferentes movimentos do tênis - Backhand, forehand e serve
• Capturar dados de movimento
• Acelerômetro e Giroscopio
• Captura via Bluetooth
• Janelas de 1 segundo de captura
• 60*6 pontos por segundo ( 16ms de intervalo ) = 360 de entrada
• Treinar modelo para classificar os movimentos
• Analise espectral dos dados de movimento
• Classificador com Redes Neurais
• Exportar modelo TFLite pra ser usado com TF Lite Micro
61. 61
Exportando o modelo
SDK da Edge Impulse usa Tensorflow Micro + DSP
• Analise espectral usa DSP
• Classificador usa
TensorFlow Micro
• Estatísticas final do
Modelo
• 4kb de RAM e 28k de
Flash 😍
64. 64
Próximos passos
Melhorar o modelo e compartilhar os dados
• Capturar mais dados
• Serve/Saques
• Diferentes pessoas, alturas, estilos de jogo
• Capturar dados em jogo/treino
• Disponibilizar o dataset
• Treinar modelo apenas com TensorFlow
• O quanto o processamento DSP faz diferença ? ( provavelmente
muita )
• Usar com ESP32 - Mais acessível no Brasil