Skip to content

Lib para programação de dispositivos de aquisição de dados em tempo real para experimentos didáticos. 🗠 🍎

Notifications You must be signed in to change notification settings

renanrms/FTRLab-lib

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PlatformIO Registry

Biblioteca FTRLab

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.

Primeiros passos

Construção de um dispositivo FTRLab

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.

Exemplos

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.

PlatformIO

Informações gerais

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.

Ferramenta CLI

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

Limpeza da memória flash

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

Desenvolvimento da Lib

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