Rojeto: Sistema Respirométrico com ESP32 – Compatível com WTW OxiTop i IDS
🎯 Objetivo
Desenvolver um dispositivo embarcado baseado em ESP32-S3 com display 2.1” (Waveshare) e sensor barométrico LPS22HB, capaz de realizar medições de atividade biológica em frascos respirométricos, reproduzindo todas as funções do sistema WTW OxiTop i IDS, conforme descrito no manual link.
🧩 Componentes de Hardware Propostos
ESP32-S3 com Display 2.1” (Waveshare)
Tela de 480x480 (integrada com o SoC).
Interfaces: I2c, spi, uart disponíveis.
Suporte a Wi-Fi e ble para transmissão de dados e atualização ota.
Sensor Barométrico: LPS22HB
Interface I2C ou SPI.
Medição de pressão absoluta (260–1260 hPa).
Precisão típica: ±0.1 hPa.
Sensores auxiliares opcionais
Temperatura ambiente (caso não seja usada a leitura do LPS22HB).
RTC externo (Ds3231 ou similar) caso a precisão de tempo seja crítica.
led rgb ou buzzer para sinalização visual/auditiva.
🛠️ Funcionalidades a Implementar (baseadas no OxiTop i IDS)
1. 📊 Medição Respirométrica
Pressão absoluta dentro do frasco em intervalos de tempo definidos (ex: a cada 1 hora por 5 dias).
Compensação de temperatura e pressão atmosférica.
Cálculo de BOD/biodegradação pela diferença de pressão ao longo do tempo.
Suporte a métodos BOD5, OECD, AT4, entre outros.
2. ⏱️ Gestão de Tempo e Ciclo
Início automático ou manual do ciclo de medição.
Duração configurável do experimento (horas/dias).
rtc ou sincronização via ntp (wi-fi).
Armazenamento local em spiffs (flash interna) ou sd card.
3. 📱 Interface de Usuário (display)
Tela inicial com status do experimento (tempo restante, leituras recentes).
Tela de configuração do experimento:
Tempo de experimento
Tipo de método
Número de medições por dia
Tela de histórico e exportação.
4. 📡 Conectividade (opcional)
Exportação de dados via:
USB (Serial)
Wi-Fi local (AP mode)
Bluetooth
mqtt/http post para servidor
5. 🔋 Eficiência energética
Utilizar deep sleep entre medições.
Bateria de longa duração (mínimo 5–10 dias por carga).
6. 🧠 Segurança e Resiliência
Watchdog timer.
Auto-reboot em falhas.
Proteção contra perda de dados.
🧪 Lógica de Medição (Exemplo Simplificado)
cpp
Copiar
Editar
// pseudo-código
setup() {
initDisplay();
initPressureSensor();
readRTC();
configureCycle(); // método selecionado pelo usuário
}
loop() {
if (current_time == next_measurement_time) {
pressure = readPressure();
temperature = readTemperature();
logData(pressure, temperature, timestamp);
calculateDeltaPressure();
updateDisplay();
goToSleepUntilNextCycle();
}
}
📁 Estrutura de Projeto Sugerida
markdown
Copiar
Editar
/main
-
main.cpp
- config.h
-
pressure_sensor.cpp
-
display_ui.cpp
-
storage.cpp
-
measurement_logic.cpp
-
ota_update.cpp
-
wifi_comm.cpp
/lib
- LPS22HB_driver
- TFT_eSPI (display)
- LittleFS or SD
🔁 Ciclo de Desenvolvimento
📐 Fase 1: Interface com sensor LPS22HB + leitura simples no display
🖥️ Fase 2: Interface gráfica básica + configuração de ciclo
📈 Fase 3: Armazenamento e cálculo de BOD
📤 Fase 4: Comunicação externa (Wi-Fi/Bluetooth)
🔋 Fase 5: Sleep + otimização energética
✅ Fase Final: Testes de estabilidade e validação funcional
Se quiser, posso também:
Escrever o código base em Arduino ide ou esp-idf.
Criar fluxogramas de lógica ou arquitetura do sistema.
Criar telas mockadas da UI no display.
Ajudar com o plano de testes e verificação dos sensores.
Prazo de Entrega: Não estabelecido