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.
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
[M5Stack Device] ←→ [AWS IoT Core] ←→ [DynamoDB]
↓
[Web App & Dashboard]
↓
[S3 + CloudFront + Cognito]
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
- 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
- Interface intuitiva para seleção de cores
- Envio de comandos via AWS IoT Core
- Autenticação via Cognito Identity Pool
- Hospedagem via S3 + CloudFront
- Monitoramento em tempo real da bateria
- Gráficos históricos (nível, voltagem, corrente)
- Status de carregamento
- Interface responsiva
- M5Stack: Dispositivo IoT com display
- WiFi: Conectividade sem fio
- MQTT: Protocolo de comunicação
- 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
- HTML5/CSS3/JavaScript: Interface web
- Chart.js: Visualização de dados
- AWS SDK JavaScript: Integração com serviços AWS
- Conta AWS ativa
- M5Stack ou dispositivo compatível
- Arduino IDE com bibliotecas:
- M5Unified
- WiFi
- PubSubClient
- ArduinoJson
aws cloudformation create-stack \
--stack-name scooter-iot-app \
--template-body file://scooter-iot-app/cloud-formation-iot-app.yaml \
--capabilities CAPABILITY_IAMaws cloudformation create-stack \
--stack-name scooter-iot-dashboard \
--template-body file://scooter-iot-dashboard/cloud-formation-iot-dashboard.yaml \
--capabilities CAPABILITY_IAM-
Criar Thing no AWS IoT Core:
- Acesse o console AWS IoT Core
- Crie um novo Thing chamado "scooter01"
- Gere e baixe os certificados
-
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
-
Upload do código:
- Abra
scooter-iot.inono Arduino IDE - Configure a placa M5Stack
- Faça o upload do código
- Abra
-
Atualizar configurações:
- Em
scooter-iot-app/index.html, atualize:const awsConfig = { region: 'SUA_REGIAO', identityPoolId: 'SEU_IDENTITY_POOL_ID', iotEndpoint: 'SEU_IOT_ENDPOINT' };
- Em
-
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/
{
"device": "scooter01",
"battery": {
"percentage": 85,
"isCharging": true,
"voltage": 4200,
"current": 500
},
"timestamp": "2023-11-14T12:34:56.000Z"
}{
"name": "João",
"scooter": "scooter01",
"color": "blue",
"timestamp": "2023-11-14T12:00:00.000Z"
}- Blue (Azul)
- Green (Verde)
- Yellow (Amarelo)
- Orange (Laranja)
- Red (Vermelho)
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
- 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
- Verifique SSID e senha no
secrets.h - Confirme se a rede suporta dispositivos IoT
- Verifique se os certificados estão corretos no
secrets.h - Confirme se a política IoT permite as ações necessárias
- Verifique se a tabela DynamoDB
scooterbatteryexiste - Confirme as permissões do Cognito Identity Pool
Este projeto é fornecido como exemplo educacional. Use por sua própria conta e risco.
Contribuições são bem-vindas! Por favor:
- Faça um fork do projeto
- Crie uma branch para sua feature
- Commit suas mudanças
- Push para a branch
- Abra um Pull Request