Skip to content

lucianobajr/internet-of-things

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IOT (internet of things)

Microcontroladores

Um microcontrolador é um circuito integrado compacto projetado para controlar uma operação específica em um sistema embarcado. Um microcontrolador típico inclui um processador, memória e periféricos de entrada/saída (E/S) em um único chip.

Às vezes chamados de controlador embarcado ou unidade de microcontrolador (MCU), os microcontroladores são encontrados em veículos, robôs, máquinas de escritório, dispositivos médicos, transceptores de rádio móveis, máquinas de venda automática e eletrodomésticos, entre outros dispositivos. Eles são essencialmente computadores pessoais (PCs) em miniatura simples projetados para controlar pequenos recursos de um componente maior, sem um sistema operacional (SO) front-end complexo.

MSP430

Os MSP430 são microcontroladores RISC de 16 bits voltados para aplicações de baixo consumo de energia. São fabricados pela Texas Instruments e estão disponíveis em quatro famílias básicas: 1xx - voltados para aplicações gerais (1 a 60kb de memória flash e 128 a 10240 bytes de memória RAM)

Especificação

  • Arquitetura Von Neumann, RISC
  • 16 KB de memória Flash
  • 512 Bytes de memória RAM
  • 24 GPIOs
  • 2 Timers de 16 bits
  • Módulos ADC e comparadores
  • UART, SPI, I2C

Instalação Compilador MSP430

$ sudo apt-get install msp430-libc mspdebug msp430mcu binutils-msp430 gcc-msp430 gdb-msp430

Instalação Putty

$ sudo apt-get install putty

Para compilar

$ msp430-gcc -Os -mmcu=msp430g2231 blink.c -o blink.elf
$ msp430-gcc -Os -mmcu=msp430g2553 test.c -o test.elf

Agora conecte a Launchpad na USB da sua máquina

$ dmesg

Para gravar na Launchpad basta chamar a ferramenta mspdebug

$ sudo mspdebug rf2500

Primeiro programe o arquivo elf gerado:

$ prog blink.elf

Execute a aplicação

$ run

Arduino Tiny Machine Learning Kit

O Tiny Machine Learning Kit, combinado com os emocionantes cursos TinyML Applications e Deploying TinyML on Microcontrollers, que fazem parte da especialização Tiny Machine Learning (TinyML) da EdX, fornecerão todas as ferramentas necessárias para dar vida às suas visões de ML!

O kit é composto por uma poderosa placa equipada com um microcontrolador e uma ampla variedade de sensores (Arduino Nano 33 BLE Sense*). A placa pode detectar movimento, aceleração, rotação, temperatura, umidade, pressão barométrica, sons, gestos, proximidade, cor e intensidade da luz. O kit também inclui um módulo de câmera (OV7675) e um escudo Arduino personalizado para facilitar a conexão de seus componentes e criar seu próprio projeto TinyML exclusivo. Você poderá explorar casos de uso práticos de ML usando algoritmos clássicos e redes neurais profundas desenvolvidas pelo TensorFlow Lite Micro. As possibilidades são limitadas apenas por sua imaginação!

Especificações Técnicas

  • 1 placa Arduino Nano 33 BLE Sense
  • 1 câmera OV7675
  • 1 Arduino Tiny Machine Learning Shield
  • 1 cabo USB A para Micro USB

Arduino nano 33 BLE

  • Sensor de Gestos e de Cor APDS-9960
  • Sensor de umidade e temperatura digital capacitivo HTS221
  • O LPS22HB é um sensor de pressão absoluta piezoresistivo ultracompacto que funciona como um barômetro de saída digital
  • Permite que você leia os valores do acelerômetro, magnetômetro e giroscópio da IMU LSM9DS1 em seu Arduino Nano 33 BLE Sense.
  • Uso de microfones PDM para o Arduino Zero / Adafruit Feather M0 (processador SAMD21).

ESP32

O ESP32 é um pequeno microcontrolador desenvolvido com a capacidade de proporcionar comunicação sem fio através do Wifi e através do próprio sistema Bluetooth. Ele pode funcionar como um sistema autônomo completo ou como um dispositivo escravo para um MCU host, reduzindo a sobrecarga da pilha de comunicação no processador principal do aplicativo. O ESP32 pode interagir com outros sistemas para fornecer funcionalidade Wi-Fi e Bluetooth por meio de suas interfaces SPI/SDIO ou I2C/UART.

Especificação

  • Protocolo WI-FI: 802.11 b/g/n (802.11n, até 150 mbps);
  • Faixa de frequência 2.4 - 2.5 GHz;
  • Protocolo Bluetooth: compatível com os padrões de bluetooth v4.2 br/edr e ble;
  • Tensão de entrada: 3 - 3,6 V;

Firebase - ESP32

Firebase - ESP32

AWS IOT - ESP32

Práticas

Práticas MSP

Práticas Arduino

Práticas ESP

Projetos

Este projeto teve como foco a fiscalização de containers de carga, sendo possível classificar o seu status de movimentação entre 4 rótulos:

LABEL LED
IDLE -
LIFT VERDE
TERRESTRIAL VERMELHO
MARITIME AZUL

De forma geral, o projeto envolve dois microcontroladores o ESP32 e o Arduino nano 33 BLE. Com o Arduino nano 33 BLE foi treinado um modelo de Machine Learning, utilizando o sensor de acelerômetro (LSM9DS1) com auxílio da plataforma Edge Impulse. Com o ESP32 recebemos o status do container via Protocolo Bluetooth vindo do Arduino nano 33 BLE e em seguida os dados são enviados para um banco de dados Realtime do Firebase. Por fim, foi desenvolvido um aplicativo mobile com React Native com intuito de fiscalizar/inspecionar todos os containers que contenham o kit com dois microcontroladores do projeto.

Sendo assim, o fluxo E2E, ficou da seguinte forma:

01-intro

O projeto se encontra público pela próprio Edge Impulse sendo possível ver todo fluxo dês da extração dos dados até o deploy para o Arduino nano 33 BLE.

App Mobile

Splash Screen Login Home Info

O My Replenisher é um projeto com foco em informar ao usuário quando os alimentos essenciais de sua casa estão em falta, sendo eles: arroz, feijão,açucar e café.

De forma geral, o projeto envolve dois microcontroladores o ESP32 e o Arduino nano 33 BLE. Com o Arduino nano 33 BLE foi treinado um modelo de Machine Learning, utilizando a câmera do kit (OV7675) com auxílio da plataforma Edge Impulse, sendo que foi criada uma base com mais de 200 imagens capturadas. Com o ESP32 recebemos o status dos alimentos via Protocolo Bluetooth vindo do Arduino nano 33 BLE e em seguida os dados são enviados para um worker da clouflare utilizando edge computing e o serverless database upstash . Por fim, foi desenvolvido um aplicativo mobile com React Native que utiliza de uma api feita em express com typescript,prisma, jwt, dentre outras tecnologias com foco na autenticação do usuário para isso, a api foi hospedada na plataforma railway utilizando um banco de dados relacional postgreSQL. Além disso, o app faz uso do realtime database do firebase. O objetivo da aplicação mobile vai além de oferecer ao usuário a fiscalização dos alimentos essenciais. É possível criar com o app listas de compras em tempo real (compartilhadas entre vários usuários), sendo que sempre no topo da lista de forma obrigatória para criação teremos os alimentos essenciais que estão em falta, capturados utilizando as etapas anteriores já explicadas.

Sendo assim, o fluxo E2E, ficou da seguinte forma:

01-intro (1)

CloudFlare Workers

A Cloudflare oferece serviços de computação sem servidor por meio do Cloudflare Workers, uma plataforma para a criação e implantação de funções JavaScript que são executadas na rede de borda da Cloudflare. A execução do código na borda, o mais próximo possível do usuário final, ajuda a reduzir a latência e aumentar o desempenho do aplicativo. Cada "Worker' pode modificar e responder às solicitações HTTP.

A edge computing, ou computação de borda, é aquela na qual o processamento acontece no local físico (ou próximo) do usuário ou da fonte de dados. Com o processamento mais próximo, os usuários se beneficiam de serviços mais rápidos e confiáveis, enquanto as empresas usufruem da flexibilidade da cloud computing híbrida. A edge computing é uma das formas como uma empresa pode usar e distribuir um pool de recursos por um grande número de locais.

Upstash

É um banco de dados em nuvem na memória sem servidor da Upstash Inc, uma empresa com sede na Califórnia.

É um serviço Redis sem servidor. Ele pode ser usado para camada de cache ou como um banco de dados. O legal é que você não precisa gerenciar nenhum servidor de banco de dados ou clusters. É totalmente sem servidor. Você usa e paga apenas o que usar.

Problemas modernos exigem soluções modernas, é exatamente isso que tecnologias Serverless como Upstash fazem.

Uma das grandes vantagens de usar o Upstash sobre outros serviços é o preço por solicitação, você não paga nada com o Upstash se não estiver usando.

Railway

A Railway é uma plataforma de implantação na qual você pode provisionar a infraestrutura, desenvolver com essa infraestrutura localmente e, em seguida, implantar na nuvem. Este serviço foi utilizado para implantação do backend da aplicação voltado para autenticação dos usuários

Edge Impulse

O projeto se encontra público pela próprio Edge Impulse sendo possível ver todo fluxo dês da extração dos dados até o deploy para o Arduino nano 33 BLE.

LABEL'S
ALL
MISSING RICE
MISSING COFFEE
MISSING SUGAR
MISSING BEAN
MISSING RICE COFFEE
MISSING RICE SUGAR
MISSING BEAN COFFEE
MISSING BEAN SUGAR
MISSING COFFEE SUGAR
MISSING RICE BEAN COFFEE
MISSING RICE BEAN SUGAR
MISSING BEAN COFFEE SUGAR
NONE

01-intro

App Mobile

Splash Screen Onboarding Login SignUp
Home Listas Criar Lista Perfil

📝 License

This project is under the MIT license. See the LICENSE for more information.