# Trabalho 1 - 2024-2

## 1. Objetivos

- Este trabalho tem como objetivo realizar um estudo aprofundado sobre dispositivos embarcados disponíveis no mercado, com foco em descrever suas características, detalhes arquiteturais e funcionalidades. Em especial, destacamos o **M5StickC PLUS**, da fabricante M5Stack.

---

## 2. Seleção do sistema embarcado

- O M5StickC PLUS é baseado na ESP32, oferecendo conectividade Wi-Fi e Bluetooth, além de uma arquitetura otimizada para aplicações em IoT, automação e prototipagem rápida. Suas funcionalidades incluem uma tela LCD, bateria integrada, sensores embarcados e suporte a uma ampla variedade de periféricos.

- Por meio deste estudo, buscamos não apenas explorar as capacidades técnicas do M5StickC PLUS, mas também demonstrar sua aplicabilidade em projetos reais.

---

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

- O M5StickC PLUS é um dispositivo compacto e versátil baseado no microcontrolador ESP32. Ele possui uma tela colorida, buzzer integrado, e é ideal para aplicações de prototipagem e IoT. Suas principais funções incluem controle de sensores, operação de atuadores e comunicação sem fio via Wi-Fi ou Bluetooth. O M5StickC PLUS é amplamente utilizado em projetos de casas inteligentes, robótica, dispositivos vestíveis e automação.

- Na imagem, o dispositivo está acompanhado de módulos adicionais, como sensores e pequenos motores, destacando sua flexibilidade e aplicações em diferentes segmentos do mercado.

![M5Stick Image](https://shop.m5stack.com/cdn/shop/products/4_1200x1200.webp?v=1659510954)

---

### 4. Listagem de características

- **Unidade de processamento:**  
  Microcontrolador (MCU) ou Microprocessador (MPU): incluir características como arquitetura, fabricante, frequência de clock.

| Tipo             | Arquitetura | Fabricante        | Frequência de Clock |
| ---------------- | ----------- | ----------------- | ------------------- |
| Microcontrolador | RISC        | Espressif Systems | 240Mhz              |

- **Memória:**  
  O M5StickC PLUS utiliza memória flash de 4MB.

- **Sistema Operacional:**

  - O M5StickC PLUS utiliza como base o chip ESP32, que não possui um sistema operacional nativo por padrão. Em vez disso, ele opera sobre uma camada de firmware, como o Espressif IoT Development Framework (ESP-IDF) ou outros firmwares compatíveis. Isso permite aos desenvolvedores criar aplicativos específicos diretamente no hardware. Algumas implementações podem incluir um sistema operacional em tempo real (RTOS), como o FreeRTOS, que é integrado ao ESP-IDF, para gerenciar tarefas e recursos de forma mais eficiente.

- **Sensores e Atuadores:**

  - **Sensores:** O M5StickC PLUS é equipado com sensores integrados e suporte para módulos adicionais, sendo ideal para monitoramento e interação com o ambiente.

    - **Acelerômetro:** Para detecção de movimentos e inclinações.
    - **Sensor de Temperatura e Umidade:** Pode ser adicionado como módulo externo para monitoramento ambiental.
    - **Sensor de Luz ou Proximidade:** Disponíveis como acessórios para detecção de luminosidade ou objetos próximos.

  - **Atuadores:** O M5StickC PLUS permite controle de diversos atuadores, como:

    - **LEDs RGB:** Para indicações visuais (incluindo o LED embutido na unidade).
    - **Motores Servo ou DC:** Para movimentos mecânicos em robôs ou mecanismos automatizados.
    - **Relés:** Para acionamento de dispositivos de alta potência.
    - **Buzzer:** Embutido para alertas sonoros simples.

  - M5StickC PLUS utiliza o ESP32 como MCU, permitindo a conexão com sensores e atuadores por meio de:
  - **GPIOs:** Pinos configuráveis para entrada e saída digital.
  - **Barramentos de Comunicação:** Inclui I2C e SPI, ideais para múltiplos dispositivos conectados com alta eficiência.
  - **Conexão sem fio:** Utilizando Wi-Fi ou Bluetooth integrados no ESP32, possibilitando comunicação remota em dispositivos IoT.

---

### 5. Interfaces de Comunicação com fio do M5StickC PLUS

- I2C, SPI e UART.

---

### 6. Interfaces de Comunicação sem fio do M5StickC PLUS

- Wi-Fi, Bluetooth e IR (Infra-Vermelho).

---

### 7. Unidades de Entrada/Saída (I/O)

- Possui os pinos de GPIO (General Purpose Input/Output).

---

### 8. Fonte de Energia e Sistema de Alimentação

- **Tipos de Fonte de Energia:**

  - **Bateria Interna:**
  - Possui uma bateria de **lítion-ion recarregável** integrada com capacidade de **120 mAh**.
  - **Alimentação USB-C:**
  - Pode ser alimentado diretamente via a porta **USB-C**, com tensão de entrada de **5V**.

- **Gerenciamento de Energia (PMIC):**

  - O M5StickC PLUS utiliza um **Power Management Integrated Circuit (PMIC)** para:
  - Gerenciar o carregamento da bateria de lítio-ion.
  - Regular a tensão para alimentar o microcontrolador ESP32 e periféricos.
  - Proteger contra sobrecarga e curto-circuito.

- **Backup de Energia:**

  - **Capacitor Interno:**

    - O design inclui capacitores para sustentar breves quedas de energia, especialmente em operação Wi-Fi ou Bluetooth.
    - Não possui uma bateria de backup dedicada para dados; funções de armazenamento de dados persistente podem ser implementadas via memória Flash integrada.

  - **Circuitos de Reset:**  
    Inclui circuitos de **reset automáticos**:

    - Garante que o dispositivo seja reinicializado corretamente após falhas.
    - Botão físico de reset disponível para reinicialização manual.

  - **Supervisores de Energia:**
    - Não há supervisores dedicados, mas o PMIC e o firmware gerenciam quedas de tensão e sobrecargas.
    - O ESP32 integrado possui capacidade para monitorar condições de energia e executar ações corretivas, como entrar em modo de baixo consumo (Deep Sleep) durante baixa tensão.

---

### 9. Firmware e Atualizações

- **Firmware:**

  - O firmware básico do M5StickC PLUS é responsável por gerenciar o hardware, incluindo a conectividade Wi-Fi, Bluetooth e periféricos integrados.
  - Utiliza uma combinação do **ESP-IDF** (Espressif IoT Development Framework) e bibliotecas específicas da **M5Stack**, facilitando o controle do dispositivo.
  - Suporte completo a plataformas de desenvolvimento como **Arduino** e **MicroPython**, além de integração com ambientes IoT como AWS IoT, Google Cloud IoT, entre outros.

- **Atualizações Over-the-Air (OTA):**
  - O M5StickC PLUS suporta **OTA (Over-the-Air Updates)**, permitindo que o firmware seja atualizado remotamente via Wi-Fi.

---

### 10. Unidade de Proteção e Segurança

- **Criptografia:**

  - O microcontrolador **ESP32** integrado possui suporte a hardware para **AES, SHA-2, RSA, ECC e HMAC**.

- **Hardware Security Module (HSM):**

  - Embora o ESP32 ofereça funções para armazenamento seguro de chaves (eFuse e flash criptografado), o M5StickC PLUS não possui um HSM dedicado.

- **Outras Características de Segurança:**
  - **Autenticação e Controle de Acesso:** Implementável via software usando protocolos como OAuth2 ou certificados.
  - **TLS/SSL:** Suporte nativo para comunicação segura via Wi-Fi.
  - **Firewall:** Proteções contra ataques são possíveis de serem implementadas no nível do firmware.

---

### 11. Armazenamento Externo

- O M5StickC PLUS não possui suporte integrado para cartões SD. No entanto, expansões externas podem ser conectadas via I2C ou SPI para adicionar armazenamento extra, como módulos de cartão SD.

---

### 12. Interface com o Usuário (UI)

- **Displays:** - O M5StickC PLUS possui um display integrado **TFT LCD colorido** de 1.14" com resolução **135x240 pixels**.
  Suporte a gráficos personalizados para exibição de dados, animações e interfaces ricas.

- **Botões e Sensores de Toque:**
  - **2 Botões físicos** (um principal e outro lateral) para entrada de comandos.
  - O firmware pode personalizar a funcionalidade desses botões para diversas aplicações.

---

## 13. Artigos acadêmicos relacionados

- **Design and Implementation of ESP32-Based IoT Devices:**

  - Apresenta uma análise abrangente do ESP32 como plataforma para aplicações de Internet das Coisas (IoT), com foco em projetos educacionais e protótipos. O ESP32 é destacado por suas capacidades avançadas, incluindo processador dual-core, conectividade Wi-Fi e Bluetooth, e baixo consumo de energia. Estas características tornam a plataforma ideal para uma ampla gama de aplicações, desde automação residencial até monitoramento ambiental e agrícola.
  - A aplicação educacional é um dos principais focos do trabalho, mostrando como a integração de ferramentas como ESP32, sensores modulares (Grove, STEMMA QT, Qwiic) e dispositivos de análise (Analog Discovery 2) podem simplificar o ensino de conceitos de IoT e microcontroladores. Os estudantes, após um curso introdutório, desenvolvem projetos como estações meteorológicas, sistemas de automação e monitoramento de fermentação de vinho, conectando sensores a plataformas online para coleta e análise de dados.
  - Este trabalho ressalta a importância do ESP32 em sistemas embarcados devido à sua flexibilidade e eficiência. Aplicações práticas incluem monitoramento remoto, controle automatizado e redução do consumo de energia, com impactos significativos em educação e inovação tecnológica.

- **A smart energy monitoring system using ESP32 microcontroller:**

  - Aborda o desenvolvimento de um sistema de monitoramento energético baseado em ESP32 para fornecer informações em tempo real sobre consumo de energia em ambientes domésticos. A solução é projetada para enfrentar os desafios de consumidores no contexto de Gaza, onde há um déficit energético significativo. Utilizando a plataforma Blynk para IoT, o sistema coleta dados de medidores de energia, realiza cálculos e transmite informações via WhatsApp, permitindo que os usuários gerenciem seus consumos e despesas de maneira mais eficiente.
  - Os resultados experimentais mostram que o sistema mede com precisão tensão, corrente, potência ativa e consumo cumulativo de energia, otimizando a administração de recursos. Este trabalho destaca o potencial do ESP32 e da tecnologia IoT em aplicações de eficiência energética, oferecendo uma solução econômica e eficiente para monitoramento energético em locais com recursos limitados.

- **Measurement and Data Processing from Internet of Things Modules by Dual-Core Application Using ESP32 Board:**
  - Explora o uso do ESP32, um microcontrolador de dois núcleos, para medições e processamento de dados em dispositivos de Internet das Coisas (IoT). A pesquisa foca na criação de uma arquitetura de software geral, reutilizável, que maximiza o desempenho do hardware e viabiliza soluções econômicas para aplicações embarcadas. O estudo exemplifica essas capacidades por meio de um sistema de medição de vibração com sensores MPU-9250.
  - As contribuições incluem a implementação de um sistema que distribui tarefas entre os dois núcleos do ESP32, utilizando o FreeRTOS para multitarefas, suporte a MQTT para comunicação e interface remota via servidor web. A solução foi testada em condições laboratoriais, demonstrando sua aplicabilidade em aplicações industriais e domésticas, com potencial para expansão em futuros desenvolvimentos.

---

## 14. Produtos relacionados

O **M5Stick Plus**, baseado na arquitetura ESP32, utiliza um microcontrolador poderoso e versátil, amplamente utilizado em diversas categorias de dispositivos embarcados. Aqui estão cinco exemplos de produtos de mercado com arquiteturas semelhantes:

- **Smartwatches**

  - **Exemplo**: [Amazfit Bip U](https://www.gsmarena.com/amazfit_bip_u_review-news-46313.php)
  - **Descrição**: Utiliza microcontroladores embarcados para gerenciar sensores, conectividade Bluetooth e uma interface gráfica simples.

- **Placas de Desenvolvimento IoT**

  - **Exemplo**: [NodeMCU ESP32](https://blogmasterwalkershop.com.br/embarcados/esp32/conhecendo-o-nodemcu-32s-esp32)
  - **Descrição**: Assim como o M5Stick, é baseada no ESP32 e projetada para prototipagem rápida de dispositivos conectados à Internet das Coisas.

- **Tomadas Inteligentes**

  - **Exemplo**: [TP-Link Kasa Smart Plug](https://www.tp-link.com/br/home-networking/smart-plug/kp125m/)
  - **Descrição**: Utilizam microcontroladores ESP para controle remoto via Wi-Fi e integração com assistentes virtuais, como Alexa e Google Assistant.

- **Controladores de Automação Residencial**

  - **Exemplo**: [Sonoff Basic R2](https://sonoff.tech/wp-content/uploads/2021/03/产品参数表-BASICR2-RFR2-20201218-1.pdf)
  - **Descrição**: Baseado no ESP8266 (similar ao ESP32), é usado para controlar dispositivos eletrônicos remotamente através de aplicativos móveis ou assistentes de voz.

- **Drones Compactos**
  - **Exemplo**: [Ryze Tello](https://www.mundoconectado.com.br/produto/drone/ryze-tello/)
  - **Descrição**: Pequenos drones que empregam arquiteturas embarcadas para controle de motores, comunicação por Wi-Fi e processamento de sensores, como giroscópios e câmeras.

## 15. Bibliografia

> Especificações Produto [M5STACK](https://docs.m5stack.com/en/core/m5stickc_plus).

> Micro Controlador [ESP32-PICO](https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/docs/datasheet/core/esp32-pico-d4_datasheet_en.pdf).

> Hercog, D., Lerher, T., Truntić, M., & Težak, O. (2023). Design and Implementation of ESP32-Based IoT Devices. Sensors, 23(15), 6739. https://doi.org/10.3390/s23156739

> El-Khozondar, H. J., Mtair, S. Y., Qoffa, K. O., Qasem, O. I., Munyarawi, A. H., Nassar, Y. F., Bayoumi, E. H. E., & Abd El Halim, A. A. E. B. (2024). A smart energy monitoring system using ESP32 microcontroller. e-Prime - Advances in Electrical Engineering, Electronics and Energy, 9, 100666. https://doi.org/10.1016/j.prime.2024.100666

> Foltýnek, P., Babiuch, M., & Šuránek, P. (2019). Measurement and data processing from Internet of Things modules by dual-core application using ESP32 board. Measurement and Control, 52(7-8), 970–984. https://doi.org/10.1177/0020294019857748

## 16. Integrantes

| Integrantes            | Matrícula |
| ---------------------- | --------- |
| Bruno Henrique Cardoso | 190134275 |
| Guilherme França Dib   | 190108088 |
| João Gabriel Elvas     | 190109599 |
