Biblioteca para programação de dispositivos de aquisição de dados em experimentos didáticos que se integram à aplicação FTRLab desktop. O propósito da Lib é cuidar das tarefas envolvidas por debaixo dos panos, para que o utilizador desenvolva apenas o código específico de medição de cada sensor, ou inclua um sensor previamente implementado.
Habilita comunicação por Wi-Fi, sincronização de tempo, descoberta do dispositivo em uma rede, perfilamento e envio de medições, geração de mensagens de log, e outras funcionalidades automaticamente.
Atualmente funcional para o microcontrolador ESP32.
Para criar um dispositivo será necessário montar um protótipo com ESP32 e algum sensor de interesse, e programar um firmware simples para leitura dos sensores importando a biblioteca. Ver exemplos.
Recomendamos fortemente utilizar a PlatformIO IDE, como extensão do VScode, para desenvolvimento, compilação e upload do firmware para o dispositivo.
Veja a pasta de exemplos. Cada subpasta contém um exemplo diferente, com um arquivo platformio.ini
, que torna o diretório um projeto de firmware PlatformIO. Assim você pode abrir a pasta no VScode e utilizar os botões da interface para fazer upload e visualização da saída no serial monitor, ou utilizar a ferramenta CLI.
Perceba que em cada exemplo, a biblioteca é incluída sem especificar uma versão no arquivo platformio.ini
. Para programar um firmware prefira indicar a versão da lib como recomendado na seção sobre instalação.
Para utilizar PlatformIO como extensão do VSCode veja a documentação do PlatformIO. Ela mostra passo a passo como instalar e utilizar a interface para fazer o upload do firmware.
PlatformIO possui uma ferramenta de linha de comando, caso prefira esta opção. Aqui serão dadas algumas informações para uma rápida utilização, mas você pode consultar mais detalhes na documentação.
Para instalar a ferramenta, primeiro certifique-se de ter python e pip instalados e, então, instale a ferramenta com o comando:
pip install -U platformio
Para fazer upload, navegue até a pasta que contém um projeto de firmware PlatformIO e execute o comando:
pio run --target upload
Um dispositivo com firmware do FTRLab utiliza a memória flash do microcontrolador para armazenar alguns dados de forma persistente, como credenciais de redes conectadas previamente. Estes dados permanecem na memória mesmo após fazer upload de um novo firmware, o que em geral não causa nenhum problema. Mas se for necessário apagar os dados por garantia ou por alguma alteração no formato dos dados salvos, é necessário apagar a memória flash (e o firmware consequentemente).
Para isso são usadas as ferramentas da espressif. Para instalá-las, certifique-se de ter python e pip instalados e depois use os comandos:
pip install esptool
pip install setuptools
Depois, para zerar a memória efetivamente, pressione continuamente o botão BOOT da placa e rode o comando:
python -m esptool --chip esp32 erase_flash
As recomendações para desenvolvimento da lib são muito semelhantes às de utilização. É necessário fazer a compilação e upload de um firmware que utilize a biblioteca para verificar seu funcionamento enquanto a lib é editada, o que pode ser feito com um dos exemplos.
Para se utilizar a lib na versão local sendo editada, ao invés de baixar a versão publicada, utilize um caminho local na propriedade lib_deps
do platformio.ini
. Além disso, pode ser feito o build com modo de debug para ver erros de execução com mensagens mais completas. Nos exemplos da pasta examples, ficaria assim:
[env:esp32dev]
...
monitor_filters = esp32_exception_decoder
lib_deps = ../../
build_type = debug
Também é muito útil ter endereços decodificados para linhas quando ocorre um erro e o dispositivo imprime um stack trace. Para isso esp32_exception_decoder
deve estar listado na propriedade monitor_filters
, como indicado acima. O serial monitor deve ser chamado na pasta que contém este platformio.ini com o filtro, o que pode ser feito navegando até o diretório e usando o comando:
pio device monitor
Além disso, quando a lib já estiver instalada, é necessário a desinstalar antes de cada upload para forçar a reinstalação e posteriormente o build com a versão local mais recente.
pio pkg uninstall -l FTRLab