¿Te interesa construir tu propio sensor químico inalámbrico? Los investigadores de la Universidad de California, Irvine (UC Irvine) han desarrollado un potenciostato basado en ESP32 que podría ser útil para ti. Un potenciostato es un instrumento que analiza las propiedades eléctricas de una celda química electroactiva y se puede utilizar para realizar reacciones de oxidación y reducción (redox) y medir la corriente resultante. Esto permite determinar la concentración de una sustancia conocida o incluso identificar una sustancia desconocida. Estos dispositivos son muy útiles en la investigación científica y las tecnologías médicas, como los glucómetros, que se utilizan para medir los niveles de glucosa en sangre. Con el objetivo de hacer los potenciostatos más accesibles al público en general, se han desarrollado varios potenciostatos de código abierto. Los investigadores de UC Irvine decidieron incluir el ESP32 como su procesador principal para poder aprovechar sus capacidades inalámbricas. Además, desarrollaron una interfaz gráfica de usuario (GUI) basada en la web que facilita el control y la recopilación de datos del potenciostato.
A continuación te presentamos un ejemplo de código en PlatformIO con Visual Studio Code y el framework Arduino para utilizar el potenciostato:
#include <ESP32Potentiostat.h>
ESP32Potentiostat potentiostat;
void setup() {
potentiostat.begin();
}
void loop() {
// Realizar mediciones de potencial y corriente
float potential = potentiostat.measurePotential();
float current = potentiostat.measureCurrent();
// Enviar los datos a la GUI a través de la conexión inalámbrica
potentiostat.sendData(potential, current);
}
Con este código, podrás inicializar el potenciostato y luego medir el potencial y la corriente en el bucle principal. Luego, podrás enviar los datos a la GUI a través de la conexión inalámbrica para su visualización y análisis.
Para imprimir los datos en una pantalla OLED de 0.96 pulgadas, puedes utilizar la librería U8g2 y seguir los siguientes pasos:
1) Asegúrate de incluir la librería U8g2 en tu proyecto. Puedes hacerlo a través de la consola de PlatformIO con el comando platformio lib install U8g2.
2) Declara un objeto U8G2_SSD1306_128X64_NONAME_F_SW_I2C para representar tu pantalla OLED y especifica la dirección del dispositivo I2C y la velocidad de reloj en la inicialización:
#include <U8g2lib.h>
U8G2_SSD1306_128X64_NONAME_F_SW_I2C oled(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE); // Dirección del dispositivo I2C y velocidad de reloj
3) Inicializa la pantalla OLED en la función setup():
void setup() {
oled.begin();
oled.clearBuffer();
oled.setFont(u8g2_font_ncenB14_tr);
}
4) En el bucle principal, puedes utilizar el método drawStr(x, y, str) para imprimir el valor del potencial y la corriente en la pantalla OLED:
void loop() {
// Realizar mediciones de potencial y corriente
float potential = potentiostat.measurePotential();
float current = potentiostat.measureCurrent();
// Enviar los datos a la GUI a través de la conexión inalámbrica
potentiostat.sendData(potential, current);
// Imprimir los datos en la pantalla OLED
oled.clearBuffer();
oled.drawStr(0, 14, “Potencial (V):”);
oled.drawStr(0, 28, String(potential, 2));
oled.drawStr(0, 42, “Corriente (A):”);
oled.drawStr(0, 56, String(current, 2));
oled.sendBuffer();
}
Con estas líneas de código, podrás imprimir el valor del potencial y la corriente en la pantalla OLED cada vez que se realicen las mediciones. Recuerda que debes especificar la ubicación (x e y) y el tamaño de la fuente de texto que deseas utilizar para la impresión.
Espero que esto te sea de ayuda. ¡Buena suerte con tu proyecto!