Pulsioximetría

Hoy vengo con mi segundo tema favorito después de la eletrocardiografía. Tengo un artículo a medias sobre un pulsioxímetro casero, pero dado que hay que mejorar el esquemático aún no he podido terminarlo. Prometo que funciona.

A grandes rasgos, la pulsioximetría es la comparación del nivel de oxihemoglobina (glóbulos rojos con oxígeno) con el nivel de hemoglobina no asociada a oxígeno (desoxihemoglobina), obteniendo el porcentaje de saturación de oxígeno SpO2. El truco está en que la oxihemoglobina tiene un color rojizo intenso, y la desoxihemoglobina hace la sangre de un color rojo azulado más oscuro.  La intención es medir el color.

Uno de los problemas que se presentan es que la carboxihemoglobina (glóbulos rojos que llevan monóxido de carbono, CO [provoca intoxicación]) también tiene un color rojo brillante, por lo que puedes medir una SpO2 muy buena cuando en realidad la persona  se está ahogando.

Para medir el color tenemos que aplicar una luz a la sangre, desde fuera, ya que éste método es plenamente no invasivo. Esta luz, de una longitud de onda en concreto, se verá absorbida en un tanto por cien por la hemoglobina, pero con intensidades distintas si se trata de oxi o desoxihemoglobina. Como se indica en la gráfica, un espectro de absorción, a distintas longitudes de onda las dos variantes de la misma hemoglobina absorben la luz en distinta cantidad.

Espectro de absorción en longitudes de onda de la oxihemoglobina (HbO2) y la desoxihemoglobina (Hb)

Entonces lo que hacemos es poner un fotodetector con sensibilidad en un espectro suficientemente amplio. Obviamente requiere estar en un sitio donde no le entre luz de los alrededores para que no interfiera. Si el objetivo no es medir la saturación de oxígeno, se puede poner un fotodiodo sensible a un pequeño rango de longitudes de onda. Normalmente se usan dos longitudes de onda concretas, el rojo 660 nm y el infrarrojo 940 nm. La razón es que en ambas longitudes de onda existe cierta diferencia en el espectro de absorción, lo que ayuda a distinguir a qué tipo de hemoglobina se trata la que se está midiendo.

Obtendremos varias componentes de señal:

  • DC debido a la sangre arterial no pulsátil
  • DC debido a la sangre venosa no pulsátil
  • DC debido a la absorción continua del tejido, hueso, etc
  • AC debido a la sangre arterial pulsátil, debido al bombeo cardiaco (μV)

Pletismograma que se obtiene

Se debe tener en cuenta que debido a la configuración del circuito (fotodiodo en inversa) el punto más alto en la señal es el que se corresponde únicamente con la contribución DC, mientras que en el punto más bajo se encuentran la AC+DC.

Para la adquisición no se encienden los dos LED rojo e infrarrojo a la vez, sino que se alternan muy rápidamente y se toma la medida de cada uno, teniendo prácticamente a la vez el pletismograma de las dos longitudes de onda, por separado.

Una vez se tienen las medidas se deben hacer cálculos. Hay una ley sobre la absorción, de Beer-Lambert, que dice básicamente que el tejido con coeficiente de absorción determinado hace bajar la intensidad de la luz en función del área que atraviesa. Cuanto más grueso el tejido, menos intensidad de luz llega. Dicho esto aparecen unas fórmulas muy chungas que dicen que si tenemos los datos podemos saber la concentración de HbO2 y de Hb.

Método pico y valle

Se mide la intensidad del pico (IH) y el valle (IL) de la componente AC

El problema aquí es que no sabemos: el coeficiente de atenuación de los tejidos (εs), la cantidad de tejido (cs) ni el grosor del tejido (ds). Tampoco tenemos el diámetro de las venas y arterias, concretamente su variación (Δd). Como para algo hay matemáticos, se puede avanzar a:

\displaystyle ln(\frac{I_{L}}{I_{H}}) = -[\varepsilon_{Hb}(\lambda)C_{Hb} + \varepsilon_{HbO2}(\lambda)C_{HbO2}]\Delta d_{max}

Muy bien, sabemos las intensidades y sabemos las absorciones, pero seguimos sin saber el diámetro de los vasos. ¿No os habéis preguntado todavía por qué se usan dos longitudes de onda? Aparte de la explicación anterior. Resulta que con cada longitud de onda obtenemos una medida distinta, lo que da lugar a un ln(IL/IH) distinto (Rojo o InfraRojo). Si dividimos estos dos logaritmos, nos cargamos el diámetro de los vasos. Esta división da lugar a un ratio (R) que además se llama Ratio de los Ratios.

\displaystyle R = \frac{ln(I_{LR}/I_{HR})}{ln(I_{LIR}/I_{HIR})}

Con esto y más matemáticas sacamos por fin el porcentaje de SpO2

\displaystyle \%SpO_{2} = \frac{[\varepsilon_{Hb}(\lambda_{R})-\varepsilon_{Hb}(\lambda_{IR})]R \cdot 100}{\varepsilon_{Hb}(\lambda_{R})-\varepsilon_{HbO2}(\lambda_{R})+[\varepsilon_{HbO2}(\lambda_{IR})-\varepsilon_{Hb}(\lambda_{R})]R}

Esto por supuesto requiere una calibración muy exacta, que cada empresa ha realizado con cientos de pacientes a los que se les ha medido el SpO2 de una forma invasiva a la vez que se tomaba con el pulsioxímetro.

La ventaja de este método es que requiere un hardware muy simple y la medida se toma muy rápido:

Sin embargo la calibración y la computación del resultado es más compleja por los logaritmos.

Método derivativo

En este caso en vez de suponer que el diámetro de los vasos es el mismo para la luz roja y la IR, te esperas a que las derivadas de la variación de diámetro sean iguales, lo cual conlleva que las pendientes de la señal también sean iguales, cosa que ocurre en cualquier punto y además en diferentes tiempos para cada longitud de onda. Con esto el Ratio de Ratios se puede cambiar a:

\displaystyle R = \frac{[dI_{R}(t)/dt]/I_{R}(t)}{[dI_{IR}(t)/dt]/I_{IR}(t)}

Siempre y cuando \displaystyle dI_{R}(t)/dt = dI_{IR}(t)/dt

Con esto se consigue una reducción en el coste de computación, aunque requiere un control dinámico para alinear las dos señales al mismo tiempo, y es más lento.

Consecuencias

Ya tenemos el valor de %SpO2 ¿Y ahora qué? Según el valor se harán varias cosas con el paciente:

  • > 95% No hay problema
  •  90-95% Requiere tratamiento y valorar el traslado al hospital
  • < 90% Indica hipoxia severa, dar oxígeno y trasladar al hospital
  • < 80% Puede requerir intubación y ventilación mecánica

 Pulsioximetría plana

Para contestar una pregunta, voy a editar el post y pongo imágenes. La cuestión es si se pueden aplicar los LEDs y los sensores de forma plana sin rodear un dedo y obtener precisión de ello. Pues sí, es algo que se hace por ejemplo durante el parto, o como señala Dan en su comentario, en recién nacidos. También se usa en pacientes que están ingresados mucho tiempo, resulta más cómodo que una pinza. El principio de funcionamiento es similar:

Como ya digo, han salido bandas con este tipo de aplicación, aunque algunas de ellas también se basan en rodear el dedo:

Otro ejemplo, si nos compramos una pulsera o reloj inteligente con capacidad de medir el pulso mediante una lucecita (comúnmente verde) lo que se está haciendo es una clase de pulsioximetría, sin oximetría. Se pone en la muñeca pero el principio de funcionamiento es similar. Solo que para mantener los costes, se deja en pulsi y se olvidan de la oximetría. En este caso con una sola luz basta.

Es obviamente posible extender este uso a una pulsioximetría real, de hecho yo estoy desarrollado algo así (cuando tenga un rato después de los exámenes). Claro que es menos estable debido al movimiento, se pierde la medida enseguida.

En cuanto a la precisión, la clave es el cálculo y miles de calibraciones. Después de tantas pruebas los valores son muy próximos a la realidad.

Presión sanguínea

¿Qué es la presión sanguínea?

Es la fuerza que ejerce la sangre (fluido) sobre las paredes de las arterias. En las venas la presión es bastante menor debido su gran diámetro y que no se bombea la sangre, ya después de los capilares donde la velocidad es mínima. Los parámetros que determinan la presión son la fuerza de contracción, el volumen bombeado y el tamaño y flexibilidad de las arterias. Es pulsátil, sube y baja según:

  • Presión sistólica: la máxima, al final de la sístole (contracción ventricular)
  • Presión diastólica: la mínima, al final de la diástole (relajación ventricular)

Las unidades en las que se mide son mmHg o kPa, su valor normal varía dependiendo del sexo y la edad. Es fundamental para la difusión de nutrientes y oxígeno a través de los tejidos (presión hidrostática).

Métodos directos: invasivos

Son medidas puntuales de la presión en algún punto interno. En este caso se introduce un catéter en el sistema vascular del paciente, lo cual no es muy cómodo y no se puede usar para una revisión médica normal. Hay varias técnicas:

  • Catéter y transductor extravascular: el catéter se llena de agua salina, por lo que la presión se transmite a través de él hasta el sensor, que está fuera.
  • Catéter y transductor intravascular: en este caso el sensor está directamente dentro del paciente, lo cual da lugar a una respuesta mucho más plana en frecuencia, pero resulta más complicado de calibrar, inestable y frágil.

También se presentan algunos problemas:

  • Energía cinética: según la ecuación de Bernouilli, la energía total viene dada por la presión estática y en función de la altura y la velocidad del fluido, y esto va a cambiar la medida. La altura se soluciona mediante una referencia común a la misma altura, y la velocidad entrando al punto de medida de forma perpendicular al flujo.
  • Respuesta dinámica del catéter: la señal de presión es dinámica y se debe respetar sus componentes frecuenciales y armónicas. Se hace un modelo del sistema catéter, transductor y diafragma, que se aproxima a un filtro paso bajo de segundo orden. La amortiguación depende de la frecuencia.

Esfigmomanómetro o tensiómetro

Es un equipo usado para la medición no invasiva e indirecta de la presión arterial. A todos nos habrán puesto alguna vez la banda en el brazo que se hincha y con eso se mide la presión. Pues bien, funciona con el principio de que la presión necesaria para obstruir la arteria (la del brazalete) es igual a la presión interna de dicha arteria. Para ello se necesitan los siguientes materiales:

  • Sensor/Indicador de presión
  • Brazalete inflable
  • Bomba de insuflación
  • Válvula de vaciado
  • Estetoscopio

Método auscultatorio

  • Se pone el brazalete en el brazo y se infla hasta una presión mayor que la sistólica (aproximación)
  • Esto obstruye el flujo sanguíneo
  • Entonces el médico se pone a escuchar con el estetoscopio
  • El médico busca los sonidos de Korotkoff, que son producidos por el fluido en régimen turbulento al empezar al pasar por la arteria obstruida. Cuando se empiezan a escuchar, lo que indica el sensor es la presión que se busca.

Este método puede automatizarse mediante el uso de micrófonos, el problema es que es muy sensible al sonido ambiente, se usa otro distinto.

Método oscilométrico

Se basa en la medida de la presión que ejerce la arteria sobre el brazalete, lo cual ocasiona pequeñas oscilaciones en la presión del manguito.

En el punto más alto de las oscilaciones se obtiene la presión media y se estiman unos tiempos ts y td antes y después correspondientes a la presión sistólica y diastólica.

Éste método es sensible al movimiento del paciente, por lo que se detecta dicho movimiento y se anula la medida si puede haber sido modificada.

Monitorización cardiovascular

Sin ánimos de menospreciar al lector, tengo que estudiar cierto temario de instrumentación, y qué mejor manera de hacer un resumen y afianzar los conceptos que escribiéndolo aquí. Bien, así es como empezó el blog, por interés propio. Un saludo.

Como las cosas ya se están poniendo interesantes me voy a permitir ser más concreto y redundante (que va a salir un tocho que no se lo va a leer nadie), pero aún así veréis que es un tema muy interesante con algún enfoque nuevo.

Como primer tema del asunto vamos a ver dispositivos de monitorización cardiovascular. Para entendernos, aparatos que miden cosas del corazón, y no me refiero a la tertulia televisiva de la hora de la siesta. Hay unos cuantos de ellos:

- Electrocardiógrafo (ECG/EKG)
- Electrocardiógrafo... De alta resolución
- Vectocardiógrafo
- Sistemas Holter
- Electrocardiografía fetal
- Cardiotacómetro

Empezamos por el Electrocardiógrafo

Como ya se dejaba caer en este post, el corazón produce unas señales eléctricas relacionadas con los movimientos musculares propios del bombeo de la sangre. El aparato en cuestión mide estas señales eléctricas, lo que adecuamos y representamos en una gráfica bonita, y llamamos electrocardiograma (ECG/EKG).

Resultado de imagen de st segment elevation

Segmento ST normal y elevado - cvphysiology

Mediante esta señal obtenemos muchos parámetros de interés clínico. Por poner ejemplos, el ritmo cardiaco (tiempos R-R) y cómo se adapta a la actividad física, o la salud del miocardio en general (hay unos parámetros normalizados y si te sales es malo, por ejemplo una S muy ancha, un segmento ST elevado, arritmias, contracciones ventriculares fuera de tiempo...)

También podemos obtener el eje cardiaco, que es otro indicador de salud o enfermedad. El cálculo más inmediato se realiza mirando el pico R de la derivación I y la derivación aVF. Si los dos picos son positivos, enhorabuena, tienes posibilidades de estar sano. Hay otros cálculos más complejos y cada resultado tiene unas causas.

El ECG, como todo, tiene un estándar de captación, hay distintas derivaciones.

  • Las 3 derivaciones estándar
    • I: De brazo derecho (RA) a brazo izquierdo (LA)
    • II: De brazo derecho a pierna (LL)
    • III: De brazo izquierdo a pierna
  • Las 3 derivaciones aumentadas, tomando un terminal intermedio
    • aVR
    • aVLResultado de imagen de 12 derivation ecg
    • aVF
  • Estándar de 12 derivaciones
    • 3 derivaciones estándar
    • 3 derivaciones aumentadas
    • 6 derivaciones precordiales

A todo esto, el material que necesitamos será: 10 electrodos, gel de electrolito para mejorar la conducción, la máquina electrocardiógrafo y papel cuadriculado para dibujar el resultado.

Porque efectivamente, el resultado también se da en papel milimetrado, y no se puede dibujar de cualquier forma, hay que seguir otro procedimiento estándar:

  • 1 mV de ECG, a la entrada del amplificador, desplazará el papel 10 mm
  • El papel debe correr a 25 mm/s, por lo que 1 mm de papel equivale a 40 ms

Entre tanto hay ciertas recomendaciones útiles para el diseño del propio amplificador ECG:

  • Impedancia de entrada mayor de 5 MΩ (fácil)
  • Corriente de fuga hacia el paciente menor de 1 μA (no tan fácil)
  • 3 valores distintos de ganancia a seleccionar fácilmente, correspondientes a 5, 10 y 20 mm/mV en el papel (ánimo con esos cálculos y ajustes)
  • Diagrama de bode plano entre 0.14 y 25 Hz (condensadores grandes en el filtro paso alto)
  • Comienzo de la atenuación (caída de 3dB) a partir de los 100 Hz
  • La velocidad del papel ajustada a 25 mm/s si es que vas a usar papel
  • Incluir una señal de calibración de 1 mV
  • Y bueno un montón de cosas más que dijeron en 1991

Con todo esto, aunque también viejuno y con aplicaciones demasiado serias para lo que este blog pretende, presento en primicia el diagrama de bloques del electrocardiógrafo:

Esta es una aplicación del tema de bioamplificadores y también de filtrado y ya puestos podríamos programar hasta el microcontrolador. Si es que los electrónicos somos la caña. Profundizaré en el asunto cuando esté lista la publicación sobre el electrocardiógrafo casero, algún día (SPOILER!!!).

Ahora hablemos de problemas que ocurren en estos sistemas y que se deben tener en cuenta para su diseño

  • Distorsión de frecuencia: si el filtrado se realiza a frecuencias no adecuadas y atenúas un trozo del espectro donde hay energía del ECG, la señal resultante no va a ser verdadera. Hay que ajustar bien las frecuencias de corte (y de muestreo)
  • Saturación: si el nivel de señal sobrepasa el de alimentación, la salida de los amplificadores satura y se distorsiona la señal. Es un concepto muy básico.
  • Cables al aire: las personas que usan el aparato pueden llevar puestos los cables y electrodos durante mucho tiempo, por lo cual no es extraño que en algún momento pudiese caerse alguno, con la correspondiente pérdida de señal. En vez de dar por fallecido al paciente y provocar un susto al personal sanitario, no queda mal intentar detectar cuándo un cable está desconectado, al aire. Se hace mediante sistemas de este tipo:

En este caso se usa una fuente de alterna de alta impedancia a 50 kHz. A esta frecuencia, la resistencia del tejido humano es relativamente pequeña, por lo que al estar conectados los electrodos la señal de 50 kHz se verá atenuada para el detector, por efecto de divisor de tensión. Si el cable se cae, la impedancia de la piel desaparece y el detector ve toda la señal de 50 kHz. A propósito del detector, éste se hace con un filtro pasa banda a 50 kHz y se observa el nivel, se compara con una referencia y si se excede es cuando se activa la alarma. Respecto al sistema común, no hay problemas porque tanto el rechazo de modo común como los filtros van a eliminar la señal de 50 kHz. Este método también se ha estudiado para medir la impedancia piel-electrodo, para indicar su desgaste, o para medir la respiración.

  • Lazos de tierra: suele ocurrir cuando conectas varios aparatos al mismo paciente que si hay un terminal común, y estos están conectados a tierra en distintos puntos, se produce un lazo de corriente circulante. Esto se arregla conectando las dos referencias en el mismo punto de tierra.

Míralo qué contento se pone

  • Interferencias inductivas y capacitivas: no pienso repetir eso, aquí está. Hay que trenzar y apantallar los cables y filtrar las interferencias tanto en la frecuencia central como en los armónicos si es necesario.
  • Transitorios: supongamos que al pobre paciente al que está conectado nuestro pobre sistema le da un telele chungo, llega el equipo médico con otro aparato capaz de realizar una descarga de varios miles de voltios y unos cuantos amperios, también conocido como desfibrilador, y lo pone sobre el pecho del susodicho paciente. Lo más común que te vas a encontrar es que vas a freír un sistema de varios cientos o quizás miles de euros. A no ser que añadamos una protección, que suele constar de poner unos zener, diodos comunes y descargadores de gas a la entrada.

Por último hay que señalar que existe una normativa estandarizada y más actual respecto a los electrocardiógrafos, dada por ANSI/AAMI/IEC. Por ejemplo mis ya conocidas y "queridas":

  • IEC 60601-1-1
  • IEC 60601-2-25
  • IEC 60601-1-2

Electrocardiografía de alta resolución

Es una técnica que se usa para estudiar señales ventriculares de baja amplitud, o potenciales ventriculares tardíos (VLP), se supone. Si estos potenciales existen, pueden darse futuros problemas. Las principales diferencias con el sistema electrocardiógrafo común son:

  • Mayor resolución digital, de 12 bits
  • Frecuencias de corte entre 0.05 y 300 Hz (condensadores MUY grandes)
  • Se realiza un procesamiento digital que incluye el promediado de la señal ECG en cada ciclo y la detección automática de los VLP
  • Se miden otros parámetros

Sistema Holter

Es un cacharro que se cuelgan los pacientes al cuello y se lo pueden llevar a casa, llevar una vida normal y corriente, y tomar registros de su ECG durante 24 horas o 30 días. Los electrodos se conectan todos al pecho, el número y situación dependen del modelo de la máquina.

El Holter no parece nada del otro mundo, pero lo realmente extraordinario de este sistema es el procesado digital posterior de todos los datos. Y caro.

Monitorización fetal

El objetivo de este sistema es ver que durante el parto, o antes, el feto se encuentra bien. Se toma un ECG normal y corriente de la madre, y otro sobre el abdomen, de forma que éste último capta el ECG fetal y el materno mezclados, es decir, el materno interfiere en el fetal. Mediante distintas técnicas de filtrado digital, se separan estas dos señales.

Por ejemplo, mediante el filtrado adaptativo: tenemos un ECG limpio de la madre, un ECG fetal sumado al ECG de la madre y queremos obtener un ECG fetal. Si fuese tan simple como ECGdoble - ECGmadre = ECGfetal lo haríamos, pero como no lo es, usamos un sistema así:

Brevemente, el ECG materno lo captamos en el pecho y el ECG doble en el abdomen. Entre estos dos puntos hay tejidos, órganos, etc, que modifican la señal. Lo que intenta el filtro adaptativo es simular la función de transferencia que define este cambio, una vez logrado esto sí podemos hacer la resta. En este tema me gustaría profundizar más en otro momento.

Cardiotacómetro

El cardiotacómetro es la aplicación más simple de todo lo que se ha visto. Es básicamente mostrar el número de pulsaciones por minuto que se producen. Para ello se puede hacer un cardiotacómetro que resalte únicamente el QRS y sea capaz de detectar los picos de R, o hacer un procesamiento digital de la señal ECG que hemos obtenido con cualquiera de los otros. El tema procesamiento digital va en otra asignatura.

Últimamente se ha puesto de moda contar las pulsaciones mediante algo similar a la pulsioximetría, pero con un LED verde, cosa que ya veremos en el tema correspondiente de pulsioximetría.

 

 

Si has llegado hasta aquí, eres un valiente.

ESP8266: AT + Arduino parser

Como ya comenté en el artículo anterior, mediante un Arduino que maneje el puerto serie y los comandos AT del ESP8266, se puede hacer un intérprete de texto que lleve a cabo una función dada por una solicitud GET.

En este caso si escribimos en la URL del navegador 192.168.1.177/LED1, cambiaremos el estado del LED 13, el que está integrado en la placa.

Es un ejemplo muy simple y poco práctico, ya que mediante comandos AT va un poco lento. Dejo el código a continuación.

 

#include <SoftwareSerial.h> //Librería para crear puerto serie por software
 
#define DEBUG true //Imprimir resultados por puerto serie
 
SoftwareSerial esp8266(2,3); // Arduino RX pin 2, TX pin 3
                             // Conectar el TX del ESP al pin 2, y el RX del ESP al pin 3
void setup()
{
  Serial.begin(9600);
  esp8266.begin(9600); // La velocidad podría ser distinta, prueba con 115200
  pinMode(13,OUTPUT);
 
  //Enviar los comandos AT
  sendData("AT+RST\r\n",2000,DEBUG); // reset
  sendData("AT+CWMODE=3\r\n",1000,DEBUG); // configura como AP+STA
  sendData("AT+CWJAP=\"SSID\",\"PASSWORD\"",5000,DEBUG); //Sustituir SSID y PASSWORD por nombre y contraseña del router
  sendData("AT+CIFSR\r\n",1000,DEBUG); // Ver cual es la dirección IP
  sendData("AT+CIPMUX=1\r\n",1000,DEBUG); // configurar para múltiples conexiones
  sendData("AT+CIPSERVER=1,80\r\n",1000,DEBUG); // Abrir servidor en el puerto 80
}
 
void loop()
{
  if(esp8266.available()) // Mira si el esp está mandando un mensaje al arduino
  {
    if(esp8266.find("/LED1")) toggleLED(); //Si en este mensaje ves LED1, cambia el estado del LED
  }
}

//Esta función sirve para enviar comandos AT
String sendData(String command, const int timeout, boolean debug)
{
    String response = "";
    esp8266.print(command); // Enviar el comando
    long int time = millis();
    while( (time+timeout) > millis()) //Función para tiempo máximo de respuesta
    {
      while(esp8266.available())
      {
        // Leer la respuesta del ESP
        char c = esp8266.read();
        response+=c;
      }  
    }
    if(debug) //Si se selecciona debug imprime la respuesta al monitor serie
    {
      Serial.print(response);
    }
    
    return response;
}

void toggleLED(){ //Esta función cambia el estado del LED 13
  if(digitalRead(13)== HIGH) { digitalWrite(13,LOW);}
  else { digitalWrite(13,HIGH); }
}

ESP8266: Comandos AT

Por fin me han llegado los nuevos módulos ESP para reemplazar al anterior, caído en combate al parecer.

En primer lugar hay que conectar el módulo a un puerto serie del ordenador. Seamos prácticos, hay que usar un convertidor USB a UART:

Si no disponéis de éste, también se puede programar un "repetidor de puerto serie" en un puerto secundario del Arduino Mega o Due, o un puerto secundario vía software en cualquiera de las placas.

La conexión es como sigue:

Los pines VCC y CH_PD se ponen a 3,3 Voltios. Este módulo funciona a esa tensión.

El pin GND debe ir a GND, como es normal.

RXD se conecta a TXD, y TXD a RXD. Conexión cruzada.

Por último hay que añadir un condensador entre VCC y GND. Yo uso 1000 μF, este módulo es muy sensible.

Una vez hecho esto ya eres capaz de comunicarte vía puerto serie con el módulo. Para ello usaremos el software de Arduino IDE. Hay que abrirlo, seleccionar el puerto donde se encuentra tu convertidor USB-UART y abrir el monitor serie.

Por lo general tendrás que cambiar la velocidad de comunicación a 115200 bauds, y el ajuste de línea a Ambos NL &  CR.

Ahora enviamos el primer comando: AT

Si todo va bien, el módulo devolverá un OK. Si no, quizás tenéis que ajustar la velocidad de comunicación, probad entre 9600 y 115200 todas las disponibles. Observad que al escribir AT y pulsar intro las luces de TX/RX y un LED azul en el módulo se encienden, esto significa que hay comunicación.

Ahora vamos a conectar el módulo al router de tu casa. Necesitarás el nombre del punto de acceso (SSID) y su contraseña. Los comandos necesarios son:

AT+CWMODE=3

AT+CWJAP="SSID","CLAVE"

Si todo va bien recibiréis WIFI CONNECTED, WIFI GOT IP y OK. Se habrá asignado una dirección IP, podemos ver cuál con el comando AT+CIFSR.

En mi caso tengo asignada la IP estática 192.168.1.177, pero esto hay que configurarlo. De esta forma espero conseguir que ningún dispositivo repita su IP asignando un número alto. Hay que usar el comando AT+CIPSTA="192.168.1.177", y devolverá un OK.

Ahora vamos a abrir el servidor. Para ello se usan los comandos AT+CIPMUX=1 y AT+CIPSERVER=1,80

 

Ahora nos dirigimos al navegador y escribimos en la URL: 192.168.1.177:80. No ocurrirá nada pero aparecerá algo en la ventana del monitor serie.

El navegador ha enviado una solicitud GET al módulo (como cliente del servidor). Como no hemos contestado a tiempo, se ha cerrado la conexión. La utilidad de esto es hacer solicitudes GET que luego se interpretan con un código parser (intérprete de texto).

Por ejemplo, si escribimos en el navegador

Recibiremos el comando en el módulo

En resumen, una lista de los comandos:

AT
AT+CWMODE=3
AT+CWJAP="SSID","PASSWORD"
AT+CIFSR
AT+CIPSTA="192.168.1.177"
AT+CIPMUX=1
AT+CIPSERVER=1,80

Estos comandos pueden ser enviados por un Arduino (o cualquier micro) en su puerto serie, y mediante un programa intérprete lograr que reciba los datos que nosotros hayamos introducido en el servidor. Para enviar la solicitud al servidor se puede usar el navegador (a mano como hemos hecho), programar una App en Android, usar otro ESP8266 como cliente en otro Arduino... Las posibilidades son muchas.