# Análise do M5Stack Core2 como Dispositivo Embarcado

## 1. Objetivos
Este trabalho visa realizar um estudo aplicado ao **M5Stack Core2**, um dispositivo embarcado amplamente utilizado no mercado para soluções de **IoT**, **automação** e **prototipagem rápida**. A análise inclui suas características técnicas, funcionalidades e segmentação de mercado.

## 2. Seleção do Sistema Embarcado
O **M5Stack Core2** foi escolhido por ser um dispositivo modular e versátil, amplamente utilizado em áreas como IoT, educação e automação. Ele se destaca como um produto de mercado com diversas funcionalidades, sendo um dos poucos kits IoT que integram touchscreen e conectividade sem fio por padrão.

## 3. Informações a serem levantadas sobre o sistema

O **M5Stack Core2** é um microcomputador compacto, baseado em arquitetura de microcontrolador, projetado para facilitar o desenvolvimento de aplicações de IoT (Internet das Coisas), automação e prototipagem rápida. É amplamente utilizado em segmentos como educação, pesquisa, automação residencial e industrial, além de projetos makers.

#### Principais funções:

- Processamento de dados.
- Coleta de informações através de sensores embutidos e externos.
- Controle de dispositivos externos usando atuadores e GPIOs.
- Comunicação com fio e sem fio para aplicações de IoT.

#### Aplicações:

- Monitoramento ambiental.
- Desenvolvimento de interfaces gráficas (tela touchscreen).
- Controle de equipamentos industriais e domésticos.
- Educação em tecnologia embarcada.

![img0](assets/image.png)

![img1](assets/image-1.png)

![img2](assets/image-2.png)

Fonte: [M5Stack Core2 - ESP32 IoT Development Kit](https://shop.m5stack.com/products/m5stack-core2-esp32-iot-development-kit?srsltid=AfmBOor9EJva6UC12KIAnLMErn9pzMPA6TxjGgIwnlpW2x_z3kBEhW5B)

### Listagem de Características

1. **Unidade de Processamento**:
- **MCU**: ESP32-D0WDQ6-V3 (Espressif Systems).
- **Arquitetura**: Dual-core Xtensa LX6, 32-bit RISC.
- **Frequência de Clock**: Até 240 MHz.
- **Referências**:
  - [Datasheet ESP32](https://www.espressif.com/sites/default/files/documentation/esp32_datasheet_en.pdf)
  - [Página Oficial M5Stack Core2](https://shop.m5stack.com/products/m5stack-core2-esp32-iot-development-kit?srsltid=AfmBOooR6QpFKb2W_mXc2cGd_P4szXbDHZ6R5rCNa7OvU7re23pgp1iP)

2. **Memória**:
- **RAM**: 520 KB de SRAM interna do ESP32.
- **PSRAM**: 8 MB de PSRAM externa para expansão de memória volátil.
- **Flash**: 16 MB de memória flash externa QSPI para armazenamento de firmware e dados.
- **EEPROM**: 8 MB simulada na Flash, mas não é fisicamente uma EEPROM dedicada.
- **Referências**: 
  - [M5Stack Technical Specs](https://shop.m5stack.com/products/m5stack-core2-esp32-iot-development-kit?srsltid=AfmBOooR6QpFKb2W_mXc2cGd_P4szXbDHZ6R5rCNa7OvU7re23pgp1iP)
  - [Espressif Technical Reference](https://www.espressif.com)

3. **Sistema Operacional**:
- **RTOS**: FreeRTOS pré-instalado e é usado para gerenciar tarefas em tempo real, permitindo multitarefa e controle eficiente do hardware.
- **Bare-metal**: Suporte para execução em projetos simples.
- **Referências:**
  - [FreeRTOS](https://www.freertos.org/)
  - [M5Stack Docs](https://docs.m5stack.com/en/core/core2)

4. **Sensores e Atuadores**:
- **Sensores**:
  - Sensor CST816S (detecta  toque capacitivo na tela).
  - Acelerômetro MPU6886 (detecta movimento e inclinação).
  - Microfone embutido SPM1423.
- **Atuadores**:
  - Alto-falante embutido.
  - Tela touchscreen.
  - LEDs programáveis.
- **Conexão**:
  - GPIO (periféricos externos)
  - I2C (sensores internos)
  - SPI
- **Referências:**
  - [MPU6886 Docs](https://shop.m5stack.com/products/6-axis-imu-unitmpu6886?srsltid=AfmBOorHuUJQHUX9dUB95Htyv0mHmCBYCAxxGI8gOVFqtP-ZRZDsj0nU)
  - [M5Stack Docs](https://docs.m5stack.com/en/core/core2)

5. **Interfaces de Comunicação sem Fio**:
- I2C, SPI, UART: Disponíveis para expansão de hardware e conexão com sensores, atuadores.
- **Referências:**
  - [M5Stack Core2](https://docs.m5stack.com/en/core/core2)

6. **Interfaces de Comunicação sem Fio**:
- Wi-Fi (802.11 b/g/n)
- Bluetooth BLE 4.2
- Bluetooth Clássico.
- **Referências:**
  - [Datasheet ESP32](https://www.espressif.com/sites/default/files/documentation/esp32_datasheet_en.pdf)

7. **Unidades de Entrada/Saída**:
- **GPIO**: Pinos programáveis para interação com hardware externo.
- **ADC**: Conversor analógico-digital de 12 bits.
- **PWM**: Sinais modulados (controle de motores e LEDs através de pinos dedicados).
- **Referências:**
  - [M5Stack Docs](http://docs.m5stack.com/en/core/core2)

8. **Fonte de Energia e Gerenciamento**:
- **Especificação**: Gerenciamento via AXP192.
- **Bateria**: Embutida, 500 mAh Li-ion.
- **Alimentação**: USB-C ou bateria embutida de 500 mAh.
- **Modos de Economia de Energia**: Deep Sleep suportado.
- **Referências:**
  - [M5Stack Specs](https://docs.m5stack.com/en/core/core2)

9. **Firmware e Atualizações**:
- **Firmware**: Baseado em C/C++ e MicroPython;
- **OTA (Over-the-Air)**: Atualizações remotas.
- **Referências:**
  - [M5Stack Specs](https://docs.m5stack.com/en/core/core2)
  
10.  **Unidade de Proteção e Segurança**:
- **Criptografia**: AES-256, RSA.
- **Referências:**
  - [Espressif Security Features](https://www.espressif.com)

11.  **Armazenamento Externo**:
- Slot para cartão microSD (máx. 16 GB).
- **Referências:**
  - [M5Stack Docs](http://docs.m5stack.com/en/core/core2)

12.  **Interface com o Usuário**:
- **Display**: Tela touchscreen (2") FT6336U (320x240 TFT);
- **Botões**: Sensíveis ao toque.
- **Referências:**
  - [M5Stack Docs](http://docs.m5stack.com/en/core/core2)

## 4. Artigos Acadêmicos Relacionados

### 4.1 **Remote Monitoring of Electrical Parameters Using M5Stack Core2**
- **Resumo**: O artigo Remote Monitoring of Electrical Parameters Using M5Stack Core2 aborda o uso da Internet das Coisas (IoT) para monitorar parâmetros elétricos em tempo real. A solução emprega o dispositivo M5Stack Core2 junto com o sensor PZEM-004T V3.0, que mede variáveis como tensão, corrente, potência ativa, fator de potência e energia. Os dados são enviados para a plataforma ThingSpeak, onde são exibidos graficamente com atualizações a cada 15 segundos.
O estudo inclui um exemplo prático no qual o consumo elétrico de uma impressora 3D foi monitorado. A precisão do sistema foi validada por meio de comparações com um medidor comercial, alcançando um erro de 0,176% na medição de tensão e 7,085% para corrente. Os resultados demonstram que a proposta é viável para monitoramento em ambientes domésticos e industriais, oferecendo uma solução de baixo custo e eficiente.
- **Aplicação**: Monitoramento remoto de parâmetros elétricos em ambientes domésticos e industriais, utilizando IoT para coleta e envio de dados para análise e tomada de decisões.
- **Link**: [BibSonomy Link](https://www.bibsonomy.org/bibtex/11a992bb5bfbc4a5a740ed52710ce6a75)

### 4.2 **Desenvolvimento de um Sistema Embarcado para Coleta de Dados de Vibração em Drones**
- **Resumo**: Este trabalho propõe o desenvolvimento de um sistema embarcado para monitoramento de vibrações em drones, utilizando a Teoria do Caos e a técnica SAC-DM (Análise de Sinal Baseada no Caos com Densidade de Máximos). O objetivo é aumentar a confiabilidade e a segurança operacional dos drones, identificando padrões de vibração que possam indicar falhas estruturais ou operacionais. Para isso, foi utilizado o acelerômetro MPU6886, integrado ao kit de desenvolvimento com ESP32. O MPU6886 foi escolhido devido à sua capacidade de fornecer dados precisos de aceleração nos três eixos (X, Y e Z) e sua compatibilidade com o protocolo de comunicação I2C, permitindo coleta de dados com frequência superior às exigências do projeto. Os dados coletados são enviados para uma plataforma na nuvem, onde análises e diagnósticos podem ser realizados remotamente. A abordagem visa melhorar a segurança do equipamento e das pessoas envolvidas no uso de drones.
- **Aplicação**: O MPU6886 foi utilizado como sensor principal para coleta de dados de vibração do drone. Operando via protocolo I2C, ele forneceu medições de aceleração em tempo real nos três eixos (X, Y e Z), essenciais para os cálculos de vibração do sistema. Embora o sensor também ofereça dados de giroscópio, apenas as medições de acelerômetro foram utilizadas, devido ao foco na análise de vibrações. A frequência de coleta de dados foi ajustada para 500 Hz, adequando-se às necessidades do projeto. Além disso, o MPU6886 foi integrado a um sistema embarcado com ESP32, onde um componente específico inicializou e configurou o sensor, garantindo que ele funcionasse adequadamente como parte do monitoramento contínuo do desempenho do drone.
- **Link**: [Repositório UFPB](https://repositorio.ufpb.br/jspui/bitstream/123456789/32557/1/Mateus%20Antonio%20da%20Silva_TCC.pdf)

### 4.3 **Open Source FreeRTOS as a Case Study in Real-Time Operating System Evolution**
- **Resumo**: Este artigo explora a evolução do FreeRTOS, um dos sistemas operacionais em tempo real mais utilizados no ramo de sistemas embarcados. Os autores realizam análises e exploram as mudanças de desempenho e comportamento ao longo de 10 anos, identificando de maneira minunciosa por meio de medição de latência, criação e alternância de threads, gerenciamento de semáforos e mutexes. A análise destaca mudanças significativas na performance e na confiabilidade do FreeRTOS, ao mesmo tempo que identifica problemas introduzidos ao longo do tempo, reforçando a necessidade de um controle de qualidade rigoroso.
- **Aplicação**: O FreeRTOS é ampliamento utilizado em sistemas embarcados, suas principais aplicações são em: 
  - Dispositivos IOT, visto que suporta protocolos MQTT e TCP/IP;
  - Automações Industriais, visto sua capacidade de operar em operações críticas;
  - Dispositivos Médicos, em que a resposta em tempo real é primordial;
- **Link**: [Elsevier - FreeRTOS Evolution](https://doi.org/10.1016/j.jss.2016.04.063)

## 5. Produtos Relacionados
- **Sonoff Dual R3**: Automação residencial baseada em ESP32;
- **T-Watch 2020**: Relógio inteligente DIY;
- **ESP32-CAM**: Câmera embarcada para monitoramento;
- **LILYGO T-SIM7000G**: Placa com LTE e GPS;
- **NodeMCU-32S**: Placa genérica para desenvolvimento.

## 6. Integrantes

- Ana Beatriz - 200060783
- Mateus de Almeida Dias - 190142260
- Rafael Nobre - 200026488