Em 8 de setembro, a Seeed Studio anunciou três novos gadgets: um display IPS de 0,96 polegada, um de 1,14 polegada e um de 1,47 polegada, cada um uma placa carrier com um XIAO nRF52840 Plus já soldado nela. Tela, botões, uma IMU de 6 eixos, um microfone e um conector de bateria, em algo que cabe na ponta de um dedo.
Eles já estão no Velxio. Você pode abrir um, apertar Run e ver o próprio firmware de demonstração da Seeed desenhar no vidro — sem encomendar uma placa, e no plano gratuito. A placa no canvas é desenhada do jeito que a Seeed a fotografa, de frente e de costas: o vidro, os botões USR e o microfone em uma face; o XIAO nRF52840 Plus soldado, o soquete de bateria, o interruptor de energia, o slot de cartão ou a porta Grove, e os pads que você pode conectar, na outra.

As três placas
Todas as três carregam o mesmo computador — um XIAO nRF52840 Plus — e os mesmos sensores ao redor dele: uma IMU de 6 eixos, um microfone PDM, Bluetooth Low Energy e um conector de bateria JST com detecção de carga. O que muda é o vidro e o que a Seeed colocou ao redor dele.
XIAO 0.96” IPS Display — um painel ST7789, 80 x 160, com dois botões de usuário. A pequena: uma leitura de status, um wearable, qualquer coisa que precise de uma linha de texto e um número.

XIAO 1.14” IPS Display — um painel ST7789, 135 x 240, três botões de usuário e, diferente das outras duas, um conector Grove I2C. Esse conector é o motivo de esta ser a escolha certa se você quiser pendurar um sensor nela.

XIAO 1.47” IPS Touch Display — um painel JD9853A, 172 x 320, com uma camada touch capacitiva e um slot microSD. A flagship, e a que tem mais coisas acontecendo por dentro.
O que o navegador realmente desenha

Essas três imagens não são mock-ups. Cada uma é o frame buffer de um controlador de display emulado, preenchido pelo próprio firmware compilado da Seeed.
Vale detalhar a cadeia, porque é esse o ponto principal. Seu sketch é
compilado por um arduino-cli de verdade com o próprio core nRF52 da
Seeed, para o FQBN da própria placa. O firmware resultante é executado
instrução por instrução por um novo motor nRF52840 no navegador — o mesmo
tipo de motor que já roda as placas ESP32 e RP2040 no Velxio. O firmware
inicializa o periférico SPI e começa a enviar bytes; um modelo do ST7789
lê as linhas de chip-select e data/command dos pinos a cada byte e decodifica
o que está sendo ordenado a fazer. O que você vê na tela é o conteúdo da
memória desse controlador.
Nada é interceptado no nível da biblioteca. Se você substituir a biblioteca gráfica da Seeed pelas suas próprias escritas SPI, o painel ainda desenha.
Comece pelo graphic test
- Abra velxio.dev/example/xiao-114-graphictest. Você não precisa de uma conta.
- Aperte o botão de play na barra de ferramentas. O sketch compila nos servidores do Velxio — a primeira build de uma nova biblioteca leva alguns minutos, as seguintes são rápidas — e então a placa inicializa.
- Veja o painel percorrer dez primitivas de desenho: barras coloridas, linhas, retângulos, círculos, triângulos, texto, um gradiente de pixels. O monitor serial na parte de baixo imprime quanto tempo cada uma levou, exatamente como faz via USB na bancada.
- Depois mude alguma coisa. Troque uma cor, adicione um
fillCircle, rode de novo.
Incline, toque, coloque um arquivo no cartão
O painel é a parte difícil, mas não é a parte interessante. O que torna essas placas dignas de simulação é todo o resto nelas, e tudo isso está ligado a algo que você pode mover com o mouse.
A IMU. A demo Electronic Quicksand da Seeed solta algumas centenas de grãos de areia e deixa que caiam para o lado que a placa estiver inclinada. Aperte Sensors na barra de ferramentas do canvas, arraste o ponto no pad de Tilt, e a areia escorre para o canto. A LSM6DS3TR-C responde no I2C em seu endereço real e na sensibilidade que seu datasheet especifica, então os números que o sketch converte são os números que o componente daria. O mesmo pad agora controla a IMU no XIAO nRF52840 Sense, MG24 Sense e nRF54L15 Sense sem carrier, que carregam o mesmo componente.
O vidro touch. Na placa de 1,47 polegada, o controlador capacitivo responde ao mesmo relatório de 14 bytes que o driver da Seeed lê, com sua linha de interrupção puxada para baixo enquanto um dedo está pressionado. Desenhe no painel com o mouse e os círculos caem onde você clicou.
O slot microSD. O cartão e o painel compartilham um único barramento SPI na placa real, distinguidos por seus chip selects, e compartilham aqui também. Os arquivos do seu projeto estão no cartão quando o sketch o monta, e você pode colocar os seus próprios através do painel SD Card da placa.
A bateria. Esta é a surpresa mais legal. A demo de bateria da Seeed não confia em uma tensão estática — no USB, o próprio nó do carregador pode parecer uma célula — então ela aprende primeiro uma linha de base somente-USB e só declara uma bateria presente após uma queda sustentada. Mova o slider de bateria no mesmo painel Sensors uma décima de volt para baixo e veja a máquina de estados do sketch se decidir.

O que rodar o código do fabricante revelou
Quatorze dos quinze exemplos da galeria são arquivos da própria Seeed,
alterados de apenas duas formas: a nota de portabilidade no topo vira um
cabeçalho curto dizendo de onde o sketch veio, e um #include que o core
já fornece é removido. Rodá-los encontrou dois problemas reais no
Seeed_GFX2 1.0.0, a biblioteca gráfica que acompanha essas placas.
Ela não compila em um sistema de arquivos case-sensitive. O catálogo
de produtos da biblioteca inclui XIAO_ePaper_Boards.h e
reTerminal_ePaper_Boards.h, enquanto os arquivos estão escritos como
EPaper — e cada um desses dois cabeçalhos então nomeia seu próprio
cabeçalho de configuração da mesma forma errada, então o segundo par só
aparece depois que você corrige o primeiro. Quatro linhas de #include em
três arquivos. No macOS e no Windows isso resolve; no Linux — que é o que
uma compile farm roda — todo sketch que toca a biblioteca para com “No
such file or directory”. Isso ainda está no branch main do upstream hoje.
O Velxio conserta as quatro linhas quando busca a biblioteca, então os
exemplos compilam.
A configuração do painel de 1,14 polegada tem a ordem de cores errada. A biblioteca configura essa placa como RGB; o painel é ligado em BGR. A Seeed sabe — suas próprias demos para a placa carregam um override local do sketch com o comentário “the panel is physically wired for BGR color order” — mas a configuração da própria biblioteca não acompanhou, e você pode ver a consequência na própria gravação da Seeed do graphic test na wiki: a primeira barra colorida é desenhada em vermelho e sai azul, e a desenhada em amarelo sai ciano.
Esse segundo caso mudou como o Velxio modela o painel. Um modelo de display que carrega uma flag fixa de “trocar vermelho e azul” não consegue reproduzir isso, porque a troca não é uma propriedade apenas do painel — é o que você obtém quando a fiação do painel e o bit de ordem de cores do controlador discordam. Então o Velxio modela os dois separadamente e deixa que se cancelem. Um sketch que usa o override da Seeed renderiza corretamente; um sketch que aceita a biblioteca ao pé da letra mostra a mesma troca de vermelho e azul que mostraria na sua mesa. A mesma correção se aplica à inversão do display, que foi como os fundos pretos dessa placa pararam de sair brancos.
O que não está modelado
Sendo direto sobre as lacunas, porque um simulador que silenciosamente não faz nada é pior do que um que avisa:
- O microfone PDM e os pads de saída I2S. Nada no canvas os alimenta, então os demos de voice-bar e gravador da Seeed estão deliberadamente fora da galeria em vez de nela desenhando uma linha reta.
- Bluetooth. O rádio do nRF52840 está fora do escopo deste motor.
- Raise to Wake, o outro demo de IMU da Seeed, precisa da interrupção de wake da IMU e do System ON sleep do chip. Nenhum dos dois está modelado ainda.
Todos os exemplos na galeria
XIAO 0.96” IPS Display
XIAO 1.14” IPS Display
- GraphicTest
- Grove SHT31 no conector I2C
- Os três botões do usuário
- Status da bateria
- Areia Movediça Eletrônica (a IMU)
XIAO 1.47” IPS Touch Display
- GraphicTest
- Touch Circle
- Ler texto do microSD
- Status da bateria
- Areia Movediça Eletrônica (a IMU)
- O demo do painel
- Diagnóstico somente LCD
As placas estão na loja da Seeed — a 0.96 polegadas, a 1.14 polegadas e a 1.47 polegadas Touch — e os sketches de demonstração estão em Seeed-Projects/Display-Gadgets. Experimente-os aqui primeiro; os sketches se movem de qualquer forma sem alterações.
Fotografias das placas cortesia da Seeed Studio.