quinta-feira, março 16, 2023

Mini Avaliação: Seeduino XIAO ESP32-C3

Mais uma XIAO do SeeedStudio! Depois da original (c/ um SAMD21) e da versão com RP2040, agora é a vez da versão com o ESP32-C3.


O principal motivo para comprar esta placa é justamente o microcontrolador ESP32-C3. Além de disponibilizar WiFi e Bluetooth BLE no formato da XIAO, é uma oportunidade de experimentar o RISC-V (uma arquitetura aberta de processador).

Fisicamente a placa é semelhante às outras XIAO, porém tem algumas diferenças importantes:

  • Conector para antena
  • Pads na parte inferior para acesso à depuração e conexão de uma bateria.
A ausência de uma antena na placa (como é mais costumeiro com o ESP32) tem a vantagem de permitir o uso de antenas melhores, mas cancela em parte a vantagem de ser uma placa pequena. A placa vem com uma antena bem simples, comprei também uma outra antena (semelhante à usada em roteadores) que promete melhor desempenho.

O suporte a bateria recarregável é muito interessante, porém o fato de não ter um conector é meio chato. É preciso soldar fios na parte inferior (o que também dificulta o uso da placa soldada em outra).

Fiz um primeiro teste usando a IDE do Arduino. A versão atual do pacote da Espressif para Android inclui suporte ao ESP32-C3 e definições para a XIAO ESP32-C3. É só acrescentar no "Aditional Board Manager URLs" das Preferences da IDE a url

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

e usar o Board Manager para instalar o suporte a ESP32 e depois selecionar a placa XIAO ESP32-C3.

No teste eu usei o meu programa para cálculo do Pi, para ter uma ideia da capacidade de processamento do C3. O resultado foi bem abaixo do ESP32 original e um pouco pior que o da Pi Pico:

Placa          Processador  Clock   RAM    Tempo
------------   ----------- ------  -----   -----
ESP32          Xtensa LX6  240MHz   520K   0,244
BlackPill      ARM M4      100MHz   128K   0,378
Pi Pico        ARM M0+     125MHz   246K   0,584
XIAO ESP32C3   RISC-V      160MHz   400K   0,640
XIAO SAMD21    ARM M0+      48MHz    32K   6,470

É claro que este é um teste bem grosseiro. O RISC-V é também conhecido por ser econômico no consumo de energia, mas não tenho condições de testar adequadamente isso.

O segundo teste foi usando WiFi e MicroPython. As instruções e o código foram adaptados de https://sigmdel.ca/michel/ha/xiao/xiao_esp32c3_intro_en.html.

A primeira coisa é baixar o port "genérico" do MicroPython para ESP32-C3 onde a conexão é através da USB nativa:

https://micropython.org/download/esp32c3-usb/ 

Para carregar o MicroPython na placa usei o aplicativo esptool. No Windows ele está disponível em formato executável (esptool.exe). Eu copiei este programa do pacote instalado pela IDE do Arduino, que para mim estava em

C:\Users\Daniel\AppData\Local\Arduino15\packages\esp32\tools\esptool_py\4.5.1

para o mesmo diretório onde baixei o MicroPython. Aqui temos uma pegadinha: o esptool não é capaz de reiniciar o ESP32 pela USB. Então é preciso colocar a placa no modo boot manualmente, fazendo um reset com o botão B apertado. O Windows vai reconhecer uma porta serial, use o Gerenciador de Dispositivos para ver qual é a COM atribuída (se você estiver usando um Windows anterior ao 10, vai precisar de um driver). 

Aí é abrir uma janela de comandos, ir para o diretório onde estão o esptool e o MicroPython e digitar os comandos abaixo:

esptool --chip esp32c3 --port com28 read_mac

esptool --chip esp32c3 --port com28 erase_flash

esptool --chip esp32c3 --port com28 --baud 460800 write_flash -z 0x0 esp32c3-usb-20220618-v1.19.1.bin

O primeiro comando é só para testar que está tudo certo.

É claro que você deve trocar 'com28' e 'esp32c3-usb-20220618-v1.19.1.bin' pelos valores apropriados para o seu caso.

O esptool vai dizer no final de cada execução que reiniciou o XIAO, não acredite! Para sair do modo boot e ativar o MicroPython aperte o reset ao final. Neste ponto você deve conseguir conectar com a IDE Thonny (https://thonny.org), selecionando nas opções "generic MicroPython".

O código de teste pode ser baixado de https://github.com/dquadros/Testes_XIAO_ESP32C3. Ele requer a conexão de um LED em série com um resistor de 1K entre os pinos MOSI e GND. Conecte também a antena, atenção é que é bem duro e o conector não é muito durável (a especificação é 30 inserções).

Ao executar o código, vai ser criada uma rede WiFi com o nome XIAOC3 e senha 12345678 (você pode mudar isto no código). Conecte um micro ou celular nesta rede e acesse com o navegador o endereço 192.168.0.1. Será apresentada uma tela com um botão para ligar/desligar o LED. O botão QUIT encerra o programa.


Nenhum comentário: