Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AWS IoT Core - Scooter Monitor

Sistema IoT completo para monitoramento de scooters elétricos usando AWS IoT Core, com aplicação web para controle de cores e dashboard para monitoramento de bateria.

📋 Visão Geral

Este projeto implementa uma solução IoT completa que inclui:

  • Dispositivo IoT: M5Stack com conectividade WiFi e MQTT
  • Aplicação Web: Interface para controle de cores do scooter
  • Dashboard: Monitoramento em tempo real da bateria
  • Infraestrutura AWS: IoT Core, S3, CloudFront, Cognito e DynamoDB

🏗️ Arquitetura

[M5Stack Device] ←→ [AWS IoT Core] ←→ [DynamoDB]
                          ↓
                    [Web App & Dashboard]
                          ↓
                 [S3 + CloudFront + Cognito]

📁 Estrutura do Projeto

aws-iot-core/
├── scooter-iot/                    # Código do dispositivo M5Stack
│   ├── scooter-iot.ino            # Código principal Arduino
│   ├── secrets.h                   # Configurações e certificados
│   └── Screenshot 2025-08-19...    # Documentação visual
├── scooter-iot-app/                # Aplicação web de controle
│   ├── index.html                  # Interface de controle de cores
│   └── cloud-formation-iot-app.yaml # Infraestrutura AWS
├── scooter-iot-dashboard/          # Dashboard de monitoramento
│   ├── index.html                  # Interface do dashboard
│   └── cloud-formation-iot-dashboard.yaml # Infraestrutura AWS
└── payload_sample.txt              # Exemplos de payloads MQTT

🚀 Funcionalidades

Dispositivo IoT (M5Stack)

  • Conectividade WiFi automática
  • Publicação de dados de bateria (nível, voltagem, corrente, status de carregamento)
  • Recebimento de comandos de mudança de cor
  • Display visual com feedback em tempo real
  • Sincronização de tempo via NTP

Aplicação Web

  • Interface intuitiva para seleção de cores
  • Envio de comandos via AWS IoT Core
  • Autenticação via Cognito Identity Pool
  • Hospedagem via S3 + CloudFront

Dashboard

  • Monitoramento em tempo real da bateria
  • Gráficos históricos (nível, voltagem, corrente)
  • Status de carregamento
  • Interface responsiva

🛠️ Tecnologias Utilizadas

Hardware

  • M5Stack: Dispositivo IoT com display
  • WiFi: Conectividade sem fio
  • MQTT: Protocolo de comunicação

AWS Services

  • AWS IoT Core: Gerenciamento de dispositivos IoT
  • Amazon S3: Hospedagem de aplicações web
  • Amazon CloudFront: CDN para distribuição global
  • Amazon Cognito: Autenticação e autorização
  • Amazon DynamoDB: Armazenamento de dados de telemetria

Frontend

  • HTML5/CSS3/JavaScript: Interface web
  • Chart.js: Visualização de dados
  • AWS SDK JavaScript: Integração com serviços AWS

📦 Pré-requisitos

  • Conta AWS ativa
  • M5Stack ou dispositivo compatível
  • Arduino IDE com bibliotecas:
    • M5Unified
    • WiFi
    • PubSubClient
    • ArduinoJson

🔧 Configuração

1. Infraestrutura AWS

Deploy da Aplicação Web

aws cloudformation create-stack \
  --stack-name scooter-iot-app \
  --template-body file://scooter-iot-app/cloud-formation-iot-app.yaml \
  --capabilities CAPABILITY_IAM

Deploy do Dashboard

aws cloudformation create-stack \
  --stack-name scooter-iot-dashboard \
  --template-body file://scooter-iot-dashboard/cloud-formation-iot-dashboard.yaml \
  --capabilities CAPABILITY_IAM

2. Configuração do Dispositivo

  1. Criar Thing no AWS IoT Core:

    • Acesse o console AWS IoT Core
    • Crie um novo Thing chamado "scooter01"
    • Gere e baixe os certificados
  2. Configurar secrets.h:

    const char* WIFI_SSID = "SUA_REDE_WIFI";
    const char* WIFI_PASSWORD = "SUA_SENHA_WIFI";
    const char* AWS_IOT_ENDPOINT = "SEU_ENDPOINT.iot.REGIAO.amazonaws.com";
    // Adicionar certificados nos campos correspondentes
  3. Upload do código:

    • Abra scooter-iot.ino no Arduino IDE
    • Configure a placa M5Stack
    • Faça o upload do código

3. Configuração das Aplicações Web

  1. Atualizar configurações:

    • Em scooter-iot-app/index.html, atualize:
      const awsConfig = {
          region: 'SUA_REGIAO',
          identityPoolId: 'SEU_IDENTITY_POOL_ID',
          iotEndpoint: 'SEU_IOT_ENDPOINT'
      };
  2. Upload para S3:

    aws s3 cp scooter-iot-app/index.html s3://SEU_BUCKET_APP/
    aws s3 cp scooter-iot-dashboard/index.html s3://SEU_BUCKET_DASHBOARD/

📊 Dados Transmitidos

Telemetria de Bateria (Publicação)

{
    "device": "scooter01",
    "battery": {
        "percentage": 85,
        "isCharging": true,
        "voltage": 4200,
        "current": 500
    },
    "timestamp": "2023-11-14T12:34:56.000Z"
}

Comando de Cor (Subscrição)

{
    "name": "João",
    "scooter": "scooter01",
    "color": "blue",
    "timestamp": "2023-11-14T12:00:00.000Z"
}

🎨 Cores Disponíveis

  • Blue (Azul)
  • Green (Verde)
  • Yellow (Amarelo)
  • Orange (Laranja)
  • Red (Vermelho)

📈 Monitoramento

O dashboard exibe:

  • Status atual: Dispositivo, nível de bateria, status de carregamento
  • Gráfico de bateria: Histórico do nível de carga
  • Gráfico de voltagem: Monitoramento da tensão elétrica
  • Gráfico de corrente: Monitoramento da corrente elétrica

🔒 Segurança

  • Certificados X.509 para autenticação do dispositivo
  • Políticas IAM restritivas
  • Cognito Identity Pool para autenticação web
  • HTTPS/TLS em todas as comunicações

🚨 Troubleshooting

Dispositivo não conecta ao WiFi

  • Verifique SSID e senha no secrets.h
  • Confirme se a rede suporta dispositivos IoT

Erro de certificado AWS IoT

  • Verifique se os certificados estão corretos no secrets.h
  • Confirme se a política IoT permite as ações necessárias

Dashboard não carrega dados

  • Verifique se a tabela DynamoDB scooterbattery existe
  • Confirme as permissões do Cognito Identity Pool

📝 Licença

Este projeto é fornecido como exemplo educacional. Use por sua própria conta e risco.

🤝 Contribuição

Contribuições são bem-vindas! Por favor:

  1. Faça um fork do projeto
  2. Crie uma branch para sua feature
  3. Commit suas mudanças
  4. Push para a branch
  5. Abra um Pull Request

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages