Weact ePaper com CircuitPython
Aprenda a integrar o WeAct ePaper com CircuitPython. Exiba textos e imagens facilmente neste tutorial passo a passo.
12 de Janeiro de 2026
Se você está procurando uma solução de baixo consumo de energia e alta legibilidade para seus projetos IoT, os displays ePaper (ou E-Ink) são a escolha ideal. Neste tutorial, vamos explorar como conectar e programar o display WeAct Studio ePaper 2.13" (versão tricolor: Vermelho, Preto e Branco) usando um Raspberry Pi Pico e a linguagem CircuitPython.
O objetivo final é exibir um clássico "Hello World" colorido na tela. Vamos lá!
Requisitos
Antes de começar, certifique-se de ter os seguintes itens e ferramentas instalados:
- Hardware:
- WeAct Studio ePaper 2.13" (Versão B - Tricolor).
- Raspberry Pi Pico (ou qualquer placa compatível com CircuitPython com suporte a SPI).
- Software:
- Python instalado no seu computador.
circup: Gerenciador de bibliotecas do CircuitPython.mpremote: Ferramenta para interagir com o microcontrolador via linha de comando.
Pinagem (Hardware)
A comunicação entre o Pico e o display acontece via protocolo SPI. Abaixo, detalho como você deve conectar os fios do módulo WeAct aos pinos do Raspberry Pi Pico, baseando-se no código que utilizaremos.

| Pino WeAct ePaper | Função | Pino Raspberry Pi Pico | Código (Board) |
| VCC | Alimentação (3.3V) | 3V3(OUT) | - |
| GND | Terra | GND | - |
| SCL | Clock SPI | GP10 | board.GP10 |
| SDA | Dados (MOSI) | GP11 | board.GP11 |
| CS | Chip Select | GP9 | board.GP9 |
| DC | Data/Command | GP8 | board.GP8 |
| RES | Reset | GP12 | board.GP12 |
| BUSY | Busy Status | GP13 | board.GP13 |
Nota: Certifique-se de que sua placa está desconectada da energia enquanto faz as conexões.
Instalando as Bibliotecas
Com o CircuitPython já instalado no seu Pico, precisamos adicionar os drivers necessários. O driver para este display específico é o SSD1680. Além dele, precisamos da biblioteca de texto.
Conecte o Pico ao USB e execute o seguinte comando no seu terminal:
circup install adafruit_ssd1680 adafruit_display_text
Isso baixará e copiará automaticamente as dependências para a pasta lib do seu dispositivo.
O Código (main.py)
Crie um arquivo chamado main.py e cole o código abaixo. Ele configura o barramento SPI, inicializa o display e desenha o texto na tela.
import board
import busio
import displayio
import terminalio
import adafruit_ssd1680
import fourwire
from adafruit_display_text import label
displayio.release_displays()
spi = busio.SPI(clock=board.GP10, MOSI=board.GP11)
epd_cs = board.GP9
epd_dc = board.GP8
epd_reset = board.GP12
epd_busy = board.GP13
display_bus = fourwire.FourWire(
spi, command=epd_dc, chip_select=epd_cs, reset=epd_reset, baudrate=1000000
)
display = adafruit_ssd1680.SSD1680(
display_bus,
width=250,
height=122,
rotation=270,
busy_pin=epd_busy,
seconds_per_frame=1.0,
highlight_color=0xFF0000
)
g = displayio.Group()
bg_bitmap = displayio.Bitmap(display.width, display.height, 1)
palette = displayio.Palette(1)
palette[0] = 0xFFFFFF
bg_sprite = displayio.TileGrid(bg_bitmap, pixel_shader=palette, x=0, y=0)
g.append(bg_sprite)
text_hello = label.Label(
terminalio.FONT, text="Hello ", color=0xFF0000,scale=3, x=10, y=60
)
g.append(text_hello)
text_world = label.Label(
terminalio.FONT, text="World", color=0x000000, scale=3, x=118, y=60
)
g.append(text_world)
display.root_group = g
display.refresh()
Entendendo o Código
Vamos quebrar o funcionamento do script para entender o que está acontecendo "nos bastidores":
- Configuração do Hardware: Primeiro, definimos os pinos SPI e de controle (
CS,DC,RESET,BUSY). O objetodisplay_bususa a classeFourWirepara gerenciar a comunicação de dados com a tela. - O Driver SSD1680: Aqui instanciamos a classe
SSD1680. Note os parâmetros importantes:width=250eheight=122: Resolução específica deste modelo de 2.13".highlight_color=0xFF0000: Isso instrui o driver que a terceira cor disponível é o Vermelho. Se você tiver a versão amarela, o código hexadecimal mudaria, mas a lógica é a mesma.
- Fundo da Tela: Diferente de displays OLED ou LCD, no ePaper precisamos desenhar explicitamente o fundo. Criamos um
Bitmapdo tamanho da tela e definimos sua cor naPalettecomo branco (0xFFFFFF). - Desenhando Texto: Usamos a biblioteca
labelpara criar os objetos de texto.- Hello: Definimos a cor
0xFF0000(Vermelho) e escala 3x. - World: Definimos a cor
0x000000(Preto), também em escala 3x. - A posição
(x, y)define onde o texto começa.
- Hello: Definimos a cor
- Atualização (Refresh): O comando
display.refresh()envia o buffer de imagem para o ePaper. Lembre-se: telas ePaper demoram alguns segundos para atualizar (piscam preto/branco/vermelho) para organizar as partículas de tinta eletrônica.
Rodando o Projeto
Com o hardware conectado e o código salvo, abra seu terminal e utilize o mpremote para rodar o script diretamente no Pico:
mpremote run main.py
Observe a tela do seu WeAct. Ela começará a piscar e atualizará com o texto final.
Resultado Final
Se tudo correu bem, este deve ser o resultado no seu display:
