# Thumby chaveiro console

| Nome| Matrícula |
| :--- | :--- |
| Maria Eduarda Barbosa Santos | 200023934 |
| Raphael Mendes da Silva | 211039690 |


## 1. Descrição
### 1.1 Funções principais, público-alvo e contexto de uso
| | |
|---|---|
| ![Thumby 1](assets/thumby1.png) | ![Thumby 2](assets/thumby2.png) |

**Funções principais**: 

O Thumby é um chaveiro interativo programável que funciona como um minúsculo console de jogos desenvolvido pela TinyCircuits. A ideia principal dele não é apenas para entreter com jogos e servir de decoração, também é uma ferramenta para aprender programação e criar jogos. Eles fornecem um site chamado [Thumby Code Editor](https://thumby.us/)  no qual ensinam como desenvolver jogos e implementar no Thumby.

Entre suas principais funcionalidades, estão:
Execução de jogos digitais pré instalados em uma minúscula tela OLED monocromática; 
Instalação e execução de jogos digitais feitos pela comunidade ou pelo próprio jogador;
Suporte a multiplayer por meio de conexão física com cabo Thumby Link;
6 botões funcionais.
Bateria recarregável.

**Público-alvo**:  entusiastas de jogos retrô, colecionadores, iniciantes em programação, desenvolvedores de jogos, educadores.

**Contexto de uso**: utilizado como item de decoração, entretenimento, em ambientes de aprendizado, experimentação ou qualquer outro ambiente seja interno ou externo.
### 1.2 Componentes e sensores utilizados

- **Tela:** OLED monocromática  
- **Processador:** Raspberry Pi Pico RP2040  
- **Memória:** 2 MB de armazenamento total  
- **Conectividade:** micro USB e cabo Thumby Link  
- **Áudio:** buzzer piezoelétrico  
- **Entradas:** 6 botões táteis   
- **Alimentação:** interruptor de energia e bateria LiPo recarregável de 40 mAh, proporcionando cerca de 2 horas de jogo 
 
### 1.3 Tecnologias de comunicação e controle embarcadas

- **Micro USB:** utilizada para programação, carregamento e transferência de dados.  
- **Thumby Link:** comunicação cabeada serial half-duplex para modo multijogador entre dispositivos.
- **Raspberry Pi Pico RP2040:** microcontrolador responsável pelo processamento e controle do sistema.  
- **MicroPython:** tecnologia utilizada para programação e desenvolvimento de aplicações para o dispositivo.


# 2. Análise técnica do funcionamento

### 2.1 Principais módulos do sistema 

| | |
|---|---|
| ![thumbyEspecifico1](assets/thumbyEspecifico1.png)| ![thumbyEspecifico2](assets/thumbyEspecifico2.png) |

| Categoria | Características | Imagem |
|------------|----------------|---------|
| **Entrada e Controle Manual** | • D-pad de 4 direções<br>• 2 botões de ação | !<img src="assets/botoesThumby.png" height="200"> |
| **Atuadores e Saídas** | • Tela OLED monocromática de 72 × 40 pixels para exibição visual<br>• Buzzer piezoelétrico para geração de áudio | <img src="assets/oled.png" height="200"> |
| **Controle** | • Microcontrolador Raspberry Pi Pico RP2040 responsável pelo processamento e controle do sistema | <img src="assets/rasp.png" height="200">|
| **Interface** | • Plataforma web para desenvolvimento e configuração do console<br>• Interface física baseada em botões táteis<br>• Interface visual por meio da tela OLED monocromática<br>• Feedback sonoro fornecido pelo buzzer | — |
| **Conectividade** | • Porta micro USB para programação, carregamento e transferência de dados<br>• Comunicação multijogador utilizando o cabo Thumby Link | <img src="assets/cabo.png" height="200"> |


### 2.2 Identificação de tecnologias críticas 

| Categoria | Descrição |
|-----------|-----------|
| **Comunicação cabeada** | Interface Micro USB para programação, alimentação e transferência de dados. |
| **Tecnologia para multijogador** | Comunicação entre dispositivos por meio do cabo Thumby Link. |
| **Sistema operacional embarcado** | Não possui sistema operacional embarcado; os programas são executados diretamente no hardware. |
| **Programação embarcada** | Suporte ao desenvolvimento de aplicações utilizando MicroPython e a IDE Arduino. |

> Essas informações da análise técnica foram retiradas do site oficial https://thumby.us/ e também em https://tinycircuits.com/products/thumby?srsltid=AfmBOoqG0TXr2_kQA2kao2ccyqepoXpywfB-dMOqNQVvxOk-3bo_baWX 


# 3. Proposta de reprodução com ESP32

### 3.1 Descrição conceitual

#### Objetivo da Proposta
A proposta é implementar parcialmente as funcionalidades do Thumby, focando no aspecto acadêmico e conceitual da implementação de um console de videogame compacto e minimalista.

#### Arquitetura e Plataforma de Implementação

A implementação utiliza uma ESP32 como microcontrolador principal, responsável pelo processamento do jogo e gerenciamento dos periféricos. A ESP32 substituiria o Raspberry Pi RP2040 original e fornece capacidade de processamento e controle de entradas. O microcontrolador também utiliza o sistema operacional de tempo real FreeRTOS o que pode trazer vantagens no gerenciamento de tarefas.

#### Interface Gráfica

Para a exibição gráfica, será utilizado uma tela OLED de 0.98 ”, reproduzindo a interface visual para visualizar o jogo. "A tela OLED seria conectada à ESP32 por meio de uma interface SPI ou I2C, dependendo do modelo selecionado.

#### Botões

As entradas do usuário serão implementadas utilizando botões táteis conectados às GPIOs da ESP32, representando os 6 botões originais. O sistema fará a leitura desses comandos para controlar os jogos e navegar pela interface.

#### Áudio

Para a geração de áudio, será utilizado um buzzer passivo conectado às saídas da ESP32, permitindo produzir efeitos sonoros por meio de sinais PWM.

#### Conexão

A conectividade será realizada por USB ou comunicação serial para programação e transferência de dados.

Para implementar funcionalidades multijogador, dado a natureza do Thumby Link original e o escopo da implementação, mostra-se mais adequado a adoção da interface UART.

#### Camada de Abstração 

Será desenvolvida uma camada de abstração responsável pelo controle da tela, leitura dos botões e geração de áudio, permitindo que jogos sejam implementados sem acesso direto aos periféricos

#### Jogo

Como validação da plataforma proposta, será desenvolvido ao menos um jogo simples capaz de utilizar os recursos implementados, incluindo entrada por botões, exibição gráfica e geração de áudio.


### Diagrama conceitual do sistema

(pode ser esquemático ou em diarama de blocos)

![diagrama](assets/diagrama_blocos_trab_2.png)


### Limitações e desafios esperados

#### Conectividade geral e multiplayer

A comunicação original do Thumby é realizada por meio de um cabo específico, o [Thumby Link](https://tinycircuits.com/products/thumby-link-cable), utilizado para funcionalidades multijogador e transferir códigos. Como o projeto será adaptado para a plataforma ESP32, essa dependência representa uma limitação técnica, pois o método original de conexão não é diretamente compatível com a nova arquitetura.

Dessa forma, um dos desafios esperados consiste em implementar uma alternativa de comunicação utilizando USB ou comunicação serial para conexão multiplayer.


# 4. Pesquisa bibliográfica e tecnológica

### Análise de buzzers piezoelétricos como coletores de energia vibracional

**Autores:**  MISHRA, R.; JAIN, S.; DURGAPRASAD, C.

**Ano:** 2025

**Publicação:** IEEE

**Link PDF:** [Real-time audio stream aggregation in Bluetooth personal networks ](https://doi.org/10.30525/978-9934-26-597-6-25)

Este artigo estuda a capacidade de coleta de energia de elementos piezoelétricos de buzzer, utilizados principalmente em aplicações eletroacústicas. Os resultados demonstram que os buzzers piezoelétricos são viáveis ​​como coletores de energia vibracional, capazes de alimentar dispositivos microeletrônicos de baixa potência.
 
### Construção do Jogo Ice Cold Beer Utilizando Sistema Embarcado IoT


**Ano**: 2019
**Autor(es)**: Erik J. F. do Nascimento, Ana C. S. Abreu Sandro C. S. Jucá, Filipe A. Lira e José N. M. Júnior.

**Publicação**: Escola Regional de Computação Aplicada à Saúde (ERCAS)
**Link**: https://sol.sbc.org.br/index.php/ercas/article/view/9036


Este trabalho apresenta a para a reconstrução do jogo arcade de fliperama Ice Cold Beer. A importância do artigo se dá pela utilização da plataforma ESP32 para implementação de um sistema de jogo multiplayer, explorando recursos de comunicação entre dispositivos e processamento embarcado. O artigo demonstra a viabilidade da ESP32 para aplicações interativas que exigem troca de informações entre múltiplos usuários em tempo real.


A relevância deste trabalho para o projeto proposto está na utilização da ESP32 como plataforma de entretenimento digital e na demonstração de mecanismos de comunicação que podem ser adaptados para futuras funcionalidades multijogador inspiradas no sistema Thumby Link. Além disso, o trabalho comprova a capacidade da plataforma para executar aplicações de jogos mesmo sob limitações de hardware típicas de sistemas embarcados.




### Coding a 2D Game Engine for ESP32: A Showcase of Design Patterns

**Autor**: David Jean Raymond Gianadda

**Instituição**: Haaga-Helia University of Applied Sciences

**Ano**: 2024

**Link**: https://www.theseus.fi/handle/10024/863283


Esta monografia apresenta o desenvolvimento de uma engine de jogos 2D para a plataforma ESP32, enfatizando a utilização de padrões de projeto de software para organizar o código, facilitar a manutenção e permitir a expansão das funcionalidades do sistema.




O trabalho é particularmente relevante para o projeto proposto por demonstrar que arquiteturas de software mais estruturadas podem ser empregadas mesmo em dispositivos com recursos limitados. Os conceitos apresentados podem ser utilizados no desenvolvimento da camada de abstração responsável pelo gerenciamento da tela, dos botões e do sistema de áudio, contribuindo para a organização e modularização do software do console.




### Play Blow - Um Jogo para Auxiliar na Fisioterapia Respiratória

**Publicação**: Simpósio Brasileiro de Computação Aplicada à Saúde (SBCAS)


**Autores**: Andrêsa Vargas Larentis, Juliano Varella de Carvalho, Marta Rosecler Bez, Vandersilvio da Silva, Diego Monroe Kurtz 

Ano: 2024

Link: https://sol.sbc.org.br/index.php/sbcas/article/view/28861 


Este trabalho apresenta o Play Blow, um jogo para auxiliar na fisioterapia. O trabalho apresenta o desenvolvimento de um dispositivo embarcado de dimensões reduzidas baseado na plataforma ESP32 que implementa um jogo baseado em sopros e envia dados constantemente para um computador com a finalidade de análise.


A principal contribuição para o presente projeto está na demonstração da viabilidade de miniaturização utilizando a ESP32, aspecto fundamental para a construção de um console inspirado no Thumby. A pesquisa serve como referência para decisões relacionadas à integração de componentes, consumo energético e limitações físicas de dispositivos embarcados portáteis.



# 5. Comparativo com produtos similares

### Análise comparativa

| Característica             | Tiny Thumby (Escolhido para o projeto)                  | Arduboy FX          | Playdate                        | PicoSystem                       | Gamebuino META                       | Pokitto                                  |
| -------------------------- | ----------------------------- | ------------------- | ------------------------------- | -------------------------------- | ------------------------------------ | ---------------------------------------- |
| **Ano de lançamento**      | 2021                          | 2021 (FX)           | 2022                            | 2021                             | 2018                                 | 2018                                     |
| **Fabricante**             | TinyCircuits                  | Arduboy             | Panic Inc.                      | Pimoroni                         | Gamebuino                            | Pokitto                                  |
| **Microcontrolador / CPU** | RP2040 (Dual-Core Cortex-M0+) | ATmega32U4 (8 bits) | Cortex-M7F 180 MHz              | RP2040 (Dual-Core Cortex-M0+)    | ATSAMD21 Cortex-M0+                  | NXP Cortex-M0+ 48 MHz                    |
| **Memória RAM**            | 264 kB                        | 2,5 kB              | 16 MB                           | 264 kB                           | 32 kB                                | 36 kB                                    |
| **Armazenamento Flash**    | 2 MB                          | 16 MB               | 4 GB                            | 16 MB                            | 256 kB                               | 256 kB                                   |
| **Tela**                   | OLED mono 72×40               | OLED mono 128×64    | LCD Sharp 400×240 (2,7")        | LCD IPS colorido 240×240 (1,54") | LCD colorido 80×64 ou 160×128        | TFT colorido até 220×176                 |
| **Controles**              | D-pad + 2 botões              | D-pad + 2 botões    | D-pad, A, B e manivela (crank)  | D-pad + 4 botões                 | D-pad + A, B, Home, Menu             | D-pad + botões de ação                   |
| **Áudio**                  | Buzzer piezo                  | Alto-falante piezo  | Alto-falante e saída para fones | Alto-falante piezo               | DAC 10 bits, alto-falante e saída P2 | DAC 8 bits, alto-falante e saída estéreo |
| **Conectividade**          | USB e cabo Link               | USB-C e I²C Link    | USB-C, Wi-Fi, Bluetooth         | USB-C                            | Micro USB                            | USB                                      |
| **Bateria**                | LiPo 40 mAh                   | LiPo 180 mAh        | Recarregável interna            | LiPo 525 mAh                     | LiPo 900 mAh                         | LiPo 600 mAh                             |
| **Autonomia típica**       | ~2 h                          | Variável            | Variável                        | >6 h                             | Várias horas                         | Várias horas                             |
| **Programação**            | MicroPython/C++               | Arduino/C++         | Lua/C SDK                       | MicroPython/C++                  | Arduino/C++                          | Arduino/C++                              |


Os consoles analisados possuem propostas distintas. O Tiny Thumby é voltado para experimentação, aprendizado de programação embarcada e desenvolvimento de jogos simples, destacando-se pelo tamanho extremamente reduzido. **O Arduboy FX segue uma proposta semelhante**, porém conta com uma comunidade mais consolidada e uma biblioteca maior de jogos.

**O Playdate é o dispositivo mais avançado do grupo**, oferecendo maior capacidade de processamento, memória, armazenamento e recursos de conectividade, além da manivela, que proporciona experiências de jogo diferenciadas. Por essas características, supera os demais em desempenho geral.

**O PicoSystem utiliza o mesmo microcontrolador RP2040 do Tiny Thumby**, mas possui tela **colorida de alta resolução**, mais armazenamento e bateria superior, sendo mais adequado para jogos com gráficos complexos. Já o **Gamebuino META e o Pokitto** são plataformas voltadas ao ensino de programação e ao desenvolvimento de jogos independentes, oferecendo telas coloridas e recursos multimídia mais completos.

Para projetos educacionais **focados em simplicidade, baixo custo e sistemas embarcados, o Tiny Thumby** continua sendo uma das opções mais interessantes, pois combina hardware moderno, facilidade de programação e reduzida complexidade de desenvolvimento.


## Referências

>ARDUBOY. Arduboy FX-C. Disponível em: https://www.arduboy.com/shop/p/arduboy-fx-c. Acesso em: 8 jun. 2026.

>PANIC INC. Playdate hardware specifications. Disponível em: https://help.play.date/hardware/the-specs/. Acesso em: 8 jun. 2026.

>PIMORONI. PicoSystem Hardware. Disponível em: https://wiki.picosystem.com/en/about/hardware. Acesso em: 8 jun. 2026.

>GAMEBUINO. Gamebuino META Manual. Disponível em: https://gamebuino.com/creations/gamebuino-meta-manual. Acesso em: 9 jun. 2026.

>POKITTO. Technical Specifications. Disponível em: https://pokitto.github.io/start/Technical%20specifications%20.html. Acesso em: 10 jun. 2026.

>TINYCIRCUITS. Thumby: a tiny playable keychain. Disponível em: https://thumby.us/. Acesso em: 10 jun. 2026. 
