Plataformas e ferramentas · 2026/1

3. Proposta de reprodução com ESP32

1 referência(s) indisponível(is) no documento de origem

O conteúdo original foi preservado. As referências ausentes estão indicadas no texto e no relatório de importação.

3. Proposta de reprodução com ESP32

Voltar ao índice

3.1 Descrição conceitual

A reprodução proposta é um macropad split de atalhos programáveis, que reaproveita a arquitetura do Corne (duas metades, matriz de teclas com diodos e comunicação serial entre as metades) em um MVP construído com ESP32 WROOM e firmware próprio em C (ESP-IDF). Cada tecla dispara um atalho ou macro no PC, útil para acelerar fluxos repetitivos, como atalhos de editor, navegação e comandos de terminal.

A comunicação é inteiramente serial (full serial):

metade escrava --(serial / UART)--> metade mestre --(serial / USB)--> PC (daemon)

Por que ESP32 WROOM? O módulo do kit da disciplina oferece:

  • GPIOs suficientes para a matriz de botões;
  • UART nativa para o link entre as metades (sobre cabo TRRS);
  • conexão serial com o PC pelo chip USB-serial do DevKit (CP2102 / CH340), que cria uma porta serial virtual;
  • suporte ao ESP-IDF, permitindo escrever todo o firmware em C.

Conexão com o PC. O DevKit liga ao PC por um cabo USB comum (o mesmo usado para gravar o firmware). Esse cabo alimenta a placa e, através do chip USB-serial, expõe uma porta serial (/dev/ttyUSB0 no Linux). A metade mestre envia os eventos de tecla como mensagens seriais simples (por exemplo, KEY:SEND). Um daemon escrito em C no PC lê a porta serial com termios e injeta o atalho correspondente usando o subsistema uinput do kernel Linux, que cria um teclado virtual e funciona tanto em X11 quanto em Wayland.

Diferença para o produto original. O Corne usa USB HID (reconhecido como teclado, sem software extra). A nossa abordagem troca o HID por serial + daemon: o firmware embarcado fica mais simples (sem pilha USB-HID nem BLE), ao custo de um pequeno programa rodando no PC.

3.2 Mapeamento Corne → ESP32

Função do Corne Componente original No MVP com ESP32
Teclas Chaves mecânicas MX Botões em matriz
Anti-ghosting Diodo 1N4148 Diodo 1N4148 (mantido)
Controle central ATmega32U4 / nRF52840 ESP32 WROOM-32
Link entre metades UART via TRRS / BLE UART via TRRS (serial)
Interface com o PC USB HID / BLE HID Serial (chip USB-serial) + daemon
Firmware QMK / ZMK Firmware próprio em C (ESP-IDF)

3.3 Componentes do MVP e a lista da disciplina

Todos os componentes da reprodução proposta correspondem a itens da Lista de Sensores e Atuadores Disponíveis da disciplina. As chaves mecânicas do Corne original são representadas, no MVP, por botões (eletricamente idênticos, contato momentâneo), e os demais componentes têm correspondência direta:

Componente do Corne Item da lista da disciplina
Chave mecânica (tecla) Botão

Assim, o MVP é construído inteiramente com componentes simples disponíveis no kit, mantendo a fidelidade funcional ao produto original.

3.4 Diagrama de blocos do MVP

┌───────────────────────────────────────────────────────────────┐
│           METADE ESQUERDA (escrava)                           │
│                                                               │
│  [B1][B2][B3]     Botões em matriz 2×3                        │
│  [B4][B5][B6]     + diodos 1N4148                             │
│       │                                                       │
│  ┌────▼────────────────────┐                                  │
│  │   ESP32 WROOM-32        │                                  │
│  │   Varredura de matriz   │                                  │
│  │   Debounce por software │                                  │
│  │   UART TX ──────────────┼──── TX ─────┐                   │
│  └─────────────────────────┘             │ TRRS               │
└──────────────────────────────────────────┼────────────────────┘
                                           │
┌──────────────────────────────────────────┼────────────────────┐
│           METADE DIREITA (mestre)        │                    │
│                                          │                    │
│  [B7][B8][B9]     Botões em matriz 2×3   │                    │
│  [B10][B11][B12]  + diodos 1N4148        │                    │
│       │                                  │                    │
│  ┌────▼────────────────────┐             │                    │
│  │   ESP32 WROOM-32        │             │                    │
│  │   Varredura de matriz   │             │                    │
│  │   UART1 RX  ◄───────────┼──── RX ─────┘                   │
│  │   Agregação de eventos  │                                  │
│  │   Protocolo serial      │                                  │
│  │   UART0 TX (USB-serial) ├── cabo USB (CP2102/CH340) ─► PC  │
│  │                         │      porta serial virtual        │
│  └─────────────────────────┘                                  │
└───────────────────────────────────────────────────────────────┘
                                           │
                              ┌────────────▼──────────────┐
                              │   PC — daemon em C         │
                              │   termios (lê a serial)    │
                              │   uinput (injeta atalho)   │
                              └───────────────────────────┘

3.5 Layout de teclas proposto

O layout abaixo é um exemplo voltado para um fluxo de terminal e edição; como o firmware é próprio, qualquer tecla é totalmente remapeável.

ESQUERDA (controle)           DIREITA (ação)
┌──────┬──────┬──────┐        ┌──────┬──────┬──────┐
│ Esc  │ Layer│ Novo │        │ Send │ Aceit│ Rejei│
│      │      │      │        │Enter │      │      │
├──────┼──────┼──────┤        ├──────┼──────┼──────┤
│  Up  │ Down │ Alt  │        │ Copy │ Clear│  ?   │
└──────┴──────┴──────┘        └──────┴──────┴──────┘

Cada tecla envia uma mensagem serial (KEY:xxx) para o daemon no PC, que injeta o atalho correspondente.

3.6 Limitações e desafios

Limitação Detalhe
Sem USB HID nativo O ESP32 WROOM-32 não tem controlador USB; a comunicação com o PC é serial, não plug-and-play
Daemon obrigatório no PC A abordagem serial exige um programa em C lendo a porta e injetando os atalhos
Firmware do zero Sem QMK/ZMK no ESP32; é preciso reimplementar matriz, debounce e o protocolo serial
Sincronização mestre/escravo O protocolo serial entre as metades precisa tratar latência e erros
Dependência de driver O chip USB-serial (CP2102/CH340) pode exigir driver no Windows; Linux e macOS têm suporte nativo
Alimentação do escravo A corrente disponível pela linha VCC do TRRS é limitada

Voltar ao índice

Continue sua descoberta.Explorar outros projetos ↗