Plataformas e ferramentas · 2025/2

Teclado embarcado

Trabalho 02

Universidade de Brasília - FCTE

Embarcados

Equipe:

Nome Completo Matrícula
CARLOS EDUARDO MOTA ALVES 221022248
IAGO ROCHA SANTOS MARQUES 211039484
LUCAS GOBBI BERGHOLZ 211029441
RENAN VIEIRA GUEDES 221031363

Introdução

Este trabalho tem como objetivo realizar um estudo teórico-exploratório sobre um teclado embarcado existente, analisando suas funcionalidades, arquitetura eletrônica e tecnologias de comunicação. A partir desse estudo, buscamos compreender como suas principais funções podem ser total ou parcialmente reproduzidas utilizando o ecossistema da ESP32, incluindo botões, varredura de matriz, comunicação Bluetooth e personalização de firmware. O estudo envolve levantamento bibliográfico, análise técnica e a elaboração de um modelo conceitual que poderá servir de base para uma futura implementação prática em laboratório.

1 - Descrição do produto

1.1 - Definição de Teclado

O teclado é um dispositivo de entrada utilizado para enviar dados e comandos a um sistema computacional através da ativação de teclas. Cada tecla pressionada é convertida em um código (como códigos de varredura, ASCII ou Unicode), que é então interpretado pela CPU ou pelo sistema operacional.

Segundo Stallings (2017):

"O teclado é um dispositivo de entrada baseado em um conjunto de teclas que, quando pressionadas, enviam ao sistema códigos que representam caracteres ou instruções."
— Stallings, William. Computer Organization and Architecture: Designing for Performance. 10ª ed. Pearson, 2017.

De forma complementar, Tanenbaum e Austin (2013) explicam que dispositivos de entrada como o teclado funcionam como interfaces essenciais entre o usuário e a máquina, convertendo ações físicas em sinais processáveis:

"Dispositivos como teclados convertem ações físicas em sinais elétricos que podem ser processados pelo computador, funcionando como interface essencial entre o usuário e a máquina."
— Tanenbaum, Andrew S.; Austin, Todd. Structured Computer Organization. 6ª ed. Pearson, 2013.

Perspectiva Histórica

O artigo “The History of the Computer Keyboard” refere que o teclado moderno evoluiu das máquinas de escrever patenteadas por Christopher Latham Sholes em 1868 e de suas versões comerciais subsequentes. Além disso, dispositivos como teletipos (teletypes/TTY) atuaram como importantes predecessores dos teclados digitais.
Essa evolução histórica evidencia que, mesmo nos sistemas computacionais contemporâneos, o teclado mantém a função de interface humano-máquina para entrada de texto e execução de comandos.

Funcionalidades

Podemos descrever o teclado como um dispositivo de entrada cuja função principal é permitir que o usuário interaja com um sistema computacional por meio do acionamento de teclas. Herdando sua origem das máquinas de escrever e evoluindo por dispositivos como os teletipos, o teclado moderno tornou-se a principal interface humano-máquina para inserção de texto e execução de comandos.

Atualmente, para facilitar e ampliar sua funcionalidade principal, os teclados podem incluir recursos adicionais, como teclas programáveis para atalhos, iluminação por LEDs, softwares de configuração, e diferentes layouts físicos e lógicos (como ABNT2 em português ou QWERTY em inglês). Esses fatores permitem que o teclado seja adaptado a diferentes contextos de uso, idiomas, ergonomias e necessidades de produtividade, mantendo sua função essencial de comunicação entre o usuário e o sistema digital.

Descrição detalhada das funcionalidades:

  • Entrada de Dados: Inserção de texto, símbolos e comandos no sistema.
  • Atalhos e Teclas Programáveis: Permitem automatizar funções e aumentar produtividade.
  • Iluminação e Feedback Visual: LEDs RGB ou monocromáticos para indicação, estética ou uso em ambientes escuros.
  • Conectividade: Pode se comunicar via USB, Bluetooth ou Wi-Fi, permitindo uso com computadores, tablets e até smartphones.

Público-Alvo e Contexto de Uso

Ao analisar teclados como dispositivos de entrada, é importante considerar que diferentes públicos possuem necessidades distintas, o que influencia diretamente aspectos como ergonomia, layout, durabilidade, sensibilidade das teclas e recursos adicionais. A seguir, relacionamos os principais perfis de uso com seus respectivos contextos:

Público-Alvo Contexto de Uso Características Importantes no Teclado
Usuários Gerais Escritório, estudo, navegação diária Conforto, layout padrão (ABNT2 ou ANSI), teclas silenciosas, durabilidade média.
Programadores e Profissionais Técnicos Longas sessões de digitação, trabalho contínuo com texto e comandos Durabilidade, switch adequado (mecânico ou silent), teclas programáveis, ergonomia para uso intensivo.
Gamers Jogos de resposta rápida e ações contínuas Teclados mecânicos com switches rápidos, N-Key Rollover, anti-ghosting, firmware dedicado e possivelmente iluminação RGB configurável.
Profissionais Criativos (Designers, Vídeo, Áudio) Uso intenso de atalhos para produtividade Teclados programáveis ou macro pads, disposição personalizável de teclas e camadas (layers).
Usuários Móveis ou de Trabalho Remoto Portabilidade e praticidade Teclados compactos (60%, 65% ou TKL), conexão sem fio estável, bateria duradoura.
Pessoas com Necessidades Especiais de Acessibilidade Inclusão e adaptação física ou cognitiva Teclados ampliados, teclas com perfil elevado, suporte a softwares assistivos, layouts simplificados.

1.2 - Componentes e Sensores utilizados:

Principais Componentes de um Teclado

  • Matriz de Teclas:
    Conjunto de linhas e colunas onde cada tecla funciona como um interruptor.

  • Microcontrolador:
    Responsável por detectar o acionamento das teclas, processar o sinal e enviar o código correspondente ao sistema.

  • Switches:
    Podem ser mecânicos, ópticos, ou membrana — determinam o tipo de sensação ao pressionar.

  • Keycaps:
    Parte física pressionada pelo usuário, podendo variar em material e formato.

  • Circuito de Debounce (Hardware/Software):
    Evita múltiplos sinais de uma mesma tecla em um único toque.

  • Placa Controladora:
    Base onde os componentes são montados e conectados.

  • Iluminação (Opcional):
    LEDs individuais ou matriz de LEDs para retroiluminação e efeitos visuais.

Tecnologias de Comunicação e Controle Embarcadas

  • USB:
    Forma mais comum de comunicação com computadores, envia códigos padronizados sem necessidade de driver adicional.

  • Bluetooth:
    Permite uso sem fio em desktops, notebooks, tablets e smartphones.

  • Wi-Fi:
    Usado para configurações remotas e integração com automação.

  • Firmware Embarcado:
    Software interno responsável pelo:

    • Mapeamento das teclas (keymap)
    • Scan da matriz de teclas
    • Debounce
    • Macros e camadas de teclas
    • Gerenciamento de energia e comunicação
  • Protocolos HID:
    Padrão que define como o dispositivo envia dados ao sistema operacional, garantindo compatibilidade.

2 - Análise técnica do funcionamento:

Por o termo teclado ser muito genérico, para este trabalho usaremos como caso de estudo a marca Biba Keyboards, por disponibilizar projeto e firmware em formato open-source e por oferecer produtos com funcionalidades modernas. Mais especificamente, escolhemos o modelo Biba40 (Split, ortolinear 40%), por ser um teclado completo, com comunicação sem fio (Bluetooth LE), configuração via firmware ZMK, e documentação pública com arquivos de projeto (KiCad) e guia de montagem.Link para comprar produto

biba40

Principais módulos do sistema

documentação do teclado

O Biba40 é um teclado ortolinear split onde cada metade monta uma matriz de switches MX (linhas × colunas) com diodos para evitar ghosting. Um microcontrolador nRF52840 varre a matriz, aplica debounce por software e traduz os pressionamentos em keycodes. O firmware ZMK gerencia layers, combos e macros, monta os relatórios HID e envia-os ao host via Bluetooth LE; também há modo cabeado/TRRS para sincronizar ou operar com fio. A alimentação vem de baterias Li-ion/Li-Po com circuito de carga (via USB-C) e a placa (KiCad) integra footprints para switches, diodos, conector de bateria e o módulo wireless; a carcaça costuma ser impressa em 3D. Em suma: tecla → scan matrix → MCU (debounce + keymap/ZMK) → relatório HID → transporte (BLE/USB) → host.

1. Matriz de Teclas (Switches)

  • As teclas são implementadas com switches mecânicos padrão MX.
  • As teclas são organizadas em matriz (linhas × colunas), reduzindo a quantidade de pinos necessários no MCU.

2. Controlador / MCU (Comunicação e Controle)

  • Utiliza um módulo baseado no nRF52840.

3. Firmware

  • Firmware utilizado: ZMK (baseado no Zephyr RTOS).

4. Alimentação / Bateria e Carregamento

  • Alimentado por bateria Li-ion / Li-Po de 3.7V.
  • Pode incluir circuito de carga via USB-C ou módulo externo.

5. Interconexão Entre Metades

  • Pode operar de dois modos:
    • Wireless completo (cada metade conecta ao computador por BLE);
    • Conexão cabeada TRRS/USB para sincronização ou firmware.
  • O firmware define qual metade atua como “controladora principal”.

6. PCB (Placa de Circuito Impresso)

  • Arquivos do projeto disponíveis em KiCad.
  • Contém:
    • Footprints dos switches;
    • Posições dos diodos;
    • Conectores para bateria, carregador e TRRS/USB;
    • Espaço de montagem para o módulo Nice!Nano.

7. Carcaça / Case

  • Geralmente impressa em 3D.
  • Pode ser modificada para ergonomia ou estética pessoal.

8. Periféricos Opcionais

  • Keycaps personalizáveis;
  • Estabilizadores (para teclas longas);
  • LEDs indicadores;

Identificação de Tecnologias Críticas

No funcionamento do teclado Biba40 (e de teclados sem fio modernos), algumas tecnologias são essenciais para garantir baixo consumo, confiabilidade de comunicação e flexibilidade de configuração:

Tecnologia Papel no Sistema Observações Relevantes
Bluetooth Low Energy (BLE) Responsável pela comunicação sem fio com o computador ou dispositivos móveis. Prioriza baixo consumo. O firmware usado implementa o perfil HID (Human Interface Device) para que o teclado seja reconhecido automaticamente pelo sistema operacional sem drivers extras.
ZMK Firmware (baseado no Zephyr RTOS) Controla o teclado (leitura da matriz, debouncing, layers, macros) e gerencia a pilha de comunicação Bluetooth. Por ser baseado no Zephyr, herda gerenciamento de energia, drivers padronizados e arquitetura modular. Totalmente configurado em texto, permitindo customização sem recompilar kernel.
MCU nRF52840 (ARM Cortex-M4 + Rádio BLE) Microcontrolador que realiza a varredura da matriz e transmite os dados via BLE. Possui modos avançados de sleep, rádio integrado de baixo consumo e suporte nativo para HID BLE. É um componente chave para autonomia da bateria.
Debouncing por Software Evita leituras incorretas devido ao ruído mecânico das teclas. Implementado no firmware (ZMK), permite teclas mecânicas estáveis sem hardware adicional.
Técnicas de Gerenciamento de Energia (Low Power) Reduz o consumo em operação contínua. MCU entra em modo deep sleep, acordando apenas quando uma tecla é pressionada. A comunicação BLE utiliza intervalos longos de advertising quando o teclado está ocioso.
Perfil HID (Human Interface Device) Permite que o teclado seja plug-and-play, sem driver proprietário. Compatível com Windows, Linux, macOS, Android e iOS automaticamente.

3 - Reprodução na ESP32

A seguir, apresentamos uma proposta conceitual de como reproduzir parte das funcionalidades de um teclado como o Biba40 utilizando uma ESP32 e componentes compatíveis com o ecossistema ESP-IDF. O objetivo é obter um protótipo funcional com teclas personalizáveis, comunicação Bluetooth, e interface simples de configuração via Access Point.

Descrição conceitual

Como descrito acima, nossa ideia é montar um teclado com menos teclas devido à complexidade de criar a matriz e ao número de botões. Por isso, vamos permitir a personalização das funções das teclas. A versão inicial terá 4 teclas e, se obtivermos sucesso, poderemos adaptar para uma versão split com duas metades de 4 teclas cada.

Implementação e adpatações de hardawre

Módulo Componente (proposto) Função Principal
MCU / Controlador ESP32 Varredura da matriz, execução do firmware
Matriz de teclas Botões tácteis e protoboard Detectar teclas pressionadas
Comunicação sem fio Bluetooth (nativo ESP-IDF) Comunicação direta com o computador sem dongle
Configuração do teclado Modo Access Point + Webserver embutido Página para remapear teclas e salvar flash
Interface adicional (opcional) Display OLED (SSD1306) via I2C Visualizar layer ativo, status da bateria, modo BLE

Implementação e adpatações de software

Funcionalidade API / Biblioteca sugerida
Bluetooth esp_hid_device ou nimble_hid (ESP-IDF)
Varredura da Matriz GPIO + Timer + Task (FreeRTOS)
Debouncing Filtro por tempo + estado
Config Web esp_http_server + modo SoftAP (esp_wifi_set_mode)
Armazenamento das configurações nvs_flash

Diagrama conceitual do sistema.

Versão 01

Diagrama de blocos

A versão 01 é um protótipo compacto com 4 botões físicos controlados por um único ESP32. Objetivos: permitir personalização via Wi-Fi, mostrar estado em um display OLED I2C e enviar eventos de tecla para o computador via Bluetooth.

Descrição do funcionamento

Hardware / conexões físicas

  • Botões → ESP32 (GPIO)
    • Cada botão conectado a um pino digital do ESP32 (GPIO).
  • Display OLED → ESP32 (I²C)
    • Usado para feedback (layer, keymap atual, status de conexão).
  • ESP32 → Host (Bluetooth)
    • O ESP32 monitora os botões e manda via Bluetooth pro computador.
  • Configuração → Wi-Fi (Access Point)
    • ESP32 sobe um AP temporário e um servidor web simples (páginas estáticas) para o usuário configurar o keymap.

Fluxos de comunicação

  1. Usuário pressiona botão → sinal elétrico no GPIO.
  2. ESP32 aplica debounce (filtro) e valida evento (press/release).
  3. Evento mapeado para um código lógico via keymap (mapa configurado pela web).
  4. ESP32 monta HID report e envia via BLE para o host (computador).
  5. OLED I2C opcional mostra feedback,

Limitações e desafios esperados.

  • Número de botões: O teclado original possui uma matriz grande; na nossa réplica inicial teremos menos teclas.
  • Switches mecânicos: Reproduzir o mecanismo dos switches é complexo; usaremos botões comuns como alternativa simplificada.
  • Debouncing eficiente: É necessário garantir filtragem de ruído elétrica e lógica estável para evitar múltiplos acionamentos indesejados.
  • Comunicação BLE: A comunicação Bluetooth pode sofrer instabilidades, atraso ou falhas de emparelhamento, exigindo fila de eventos e controle de tempo.
  • Comunicação entre metades (Split): Caso a versão com duas metades seja implementada.
  • Personalização das teclas: A configuração via interface web/AP exige software adicional para salvar e carregar mapeamentos.
  • Bateria e alimentação: Será necessário usar uma bateria externa e implementar carregamento seguro (proteção, regulador, medição de nível).
  • Plug and Play real: Para o dispositivo ser reconhecido como teclado imediatamente, é necessário implementar corretamente o perfil HID sem exigir drivers adicionais.

4 - Pesquisa bibliográfica e tecnológica

Artigos de pesquisa

Artigos de aplicação

5 Comparativo com produtos similares

Tipo de produto Nº típico de teclas Feedback tátil Eficiência de digitação (vel./precisão) Como se compara ao Biba40
Teclado full-size com cabo (100%) 101–104 Mecânico ou membrana (varia) Alta velocidade e precisão (layout familiar) Mais rápido no início; porém menos personalizável; Biba40 ganha em compactação e layout configurável.
Teclado wireless padrão (não personalizável) 87–104 Geralmente membrana ou low-profile mecânico Boa velocidade; leve latência possível Função similar ao Biba40, porém sem layers, macros e personalização profunda.
Teclado virtual (touchscreen em smartphone/tablet) Sem teclas físicas Sem feedback físico Velocidade menor e mais erros Significativamente inferior para digitação prolongada; o Biba40 é superior devido ao feedback físico.
Macro-pad / Shortcut pad (8–16 teclas) 8–16 Mecânicos (em geral) Alta eficiência para atalhos, baixa para texto Macro-pad é complementar; Biba40 pode atuar como teclado principal após aprendizagem de layers.
Remote / control pad (controles multimídia) 4–20 Membrana ou teclas simples Baixa para digitação Usado para controle e navegação, não para texto; não substitui um teclado como o Biba40.

Referências

Continue sua descoberta.Explorar outros projetos ↗