====== Capnógrafo COVID19 ======
//by [[:user:tcrobotics|TCRobotics]]//
En esta página se exponen los resultados del proyecto Capnógrafo, que forma parte del movimiento maker [[https://www.coronavirusmakers.org/|Coronavirusmakers.org]] y ha sido desarrollado durante el confinamiento por la pandemia de COVID19. En este artículo se recoge el fruto del trabajo de todos los colaboradores del proyecto. Los materiales para la fabricación del prototipo "BricoLabs" han sido financiados por BricoLabs.
**El Capnógrafo derarrollado en este proyecto no es un dispositivo médico** Actualmente no cuenta con ninguna certificación médica y no es previsible que la llegue a tener. La responsabilidad en el uso del dispositivo debe ser asumida por quien decida construirlo y usarlo.
===== Historia =====
El 14 de Marzo de 2020 comienza el [[https://es.wikipedia.org/wiki/Cuarentena_de_España_de_2020|confinamiento por la crisis del COVID19 en España]] y se crea el [[http://t.me/coronavirus_makers|grupo de telegram Coronavirus Makers]]. Los esfuerzos se centran en crear viseras impresas en 3D y un respirador. Mi impresora está parada por el fallo de una pieza y el grupo del respirador ya está cerrado, por lo que buscando otros proyectos donde colaborar encuentro el [[https://t.me/joinchat/AHkqjBnI4c5RSNvks5OjxA|grupo de Capnógrafo]]. Me pongo a colaborar con la busqueda de sensores y entro en contacto con la empresa [[https://www.gassensing.co.uk/|Gas Sensing Solutions UK]]. Después de decidirnos a comprar un sensor desde BricoLabs, Gas Sensing me comunica que nos envían uno sin coste! Compramos desde BricoLabs materiales accesorios y se fabrica el primer prototipo.
===== Que es un capnógrafo? =====
Un capnógrafo es un instrumento de medida para medir la concentración de CO2 expirado.
Este proyecto implementa alternativas a los capnógrafos comerciales, rápidas, de bajo coste y open source .
Más información sobre la capnografía: [[https://en.wikipedia.org/wiki/Capnography|https://en.wikipedia.org/wiki/Capnography]]
===== Software =====
Toda la documentación del proyecto así como el software más actual se encuentra en GitHub. Hemos tenido problemas con los permisos de los diferentes repositorios por lo que hemos ido haciendo forks. Por ello la versión más actual es la marcada en rojo de TCRobotics.
* Repositorio original: [[https://github.com/CoronavirusMakers/capnografo|https://github.com/CoronavirusMakers/capnografo]]
* Fork de Miguel Fernandez: [[https://github.com/muit/capnograph|https://github.com/muit/capnograph]]
* Fork de TCRobotics(rama sensor): [[https://github.com/TCRobotics/capnograph/tree/sensor|https://github.com/TCRobotics/capnograph/tree/sensor]]
El prototipo BricoLabs utiliza concretamente el siguiente proyecto realizado en Platformio: [[https://github.com/TCRobotics/capnograph/tree/sensor/Source simple/BricoCapnograph|https://github.com/TCRobotics/capnograph/tree/sensor/Source%20simple/BricoCapnograph]]
Intentamos que el proyecto sea fácilmente replicable por lo que el código se ha hecho de manera que sea hackeable para utilizar los componentes hardware que tengas disponibles. Revisa la seccion de hardware para entender que materiales pueden funcionar antes de modificar el software o colaborar con el proyecto.
Estamos abiertos a la colaboración por lo que esperamos tus pull request en el git!
===== Hardware =====
En el proyecto se han explorado diferentes aproximaciones. La investigación sobre cada uno de los elementos también forma parte del proyecto por lo que también incluimos lo aprendido, pero lo particularizaremos para el prototipo BricoLabs
En general el hardware de un capnógrafo se compone de los siguientes elementos:
* Sensor CO2
* Microcontrolador
* Display
* Adquisición de aire
* Tubos de aire
* Trampa de agua
* Filtro de partículas hidrofóbico
* Bomba de aire
==== Sensor CO 2 ====
Los sensores de CO2 para utilizar en un capnógrafo necesitan estas características:
* Capacidad de medir directamente la concentración de CO2. Los sensores Non dispersive infrared sensors (NDIR) sirven, los Metal Oxide sensors (MOS) no, porque solo estiman la concentración del CO2 mediante medidas indirectas.
* Deben tener un rango de medida de MÁS del 5% (MÁS de 50000ppm).
* El tiempo de respuesta debe ser menos de 1s con un flujo de aire de 500ml/min.
* El tiempo de muestreo debe ser menor o igual de 0.1s (10Hz)
=== Sensor prototipo BricoLabs ===
Para este prototipo hemos seleccionado el sensor **SprintIR-R-20** por las siguientes razones:
* Es el sensor tope de gama en velocidad de muestreo (50 muestras/s).
* Tiene un buen rango para esta aplicación (20%).
* Tamaño compacto con entrada y salida para tubos.
* Posee salida digital con comunicación serie.Maybe slower versions (SprintIR-WF or SprintIR-6S) with 20Hz also work, but we have one shot ;)
Por lo experimentado durante este proyecto consideramos que el sensor **SprintIR-6S-20** tambien puede funcionar correctamente. Este sensor se puede conseguir por menos de 100€ en pequeñas cantidades comprando directamente a su fabricante Gas Sensing.
=== Otros sensores válidos ===
En el proyecto otros miembros han intentado realizar otros prototipoc con el sensor I2C Pyreos epy12231. Otro grupo también ha trabajado con el sensor analógico Pyreos PY2343. Estas otras opciones son más complejas ya que requieren el desarrollo de PCBs, circuiteria adicional y la integración mecánica en el canal de ventilación. Puedes encontrar más información el los canales de Slack [[https://bit.ly/2QETJuY|#sensor-epy12231]] and [[https://bit.ly/2QETJuY|#py2343_sensor]]
=== Sensores comprobados ===
En esta tabla se muestran los sensores evaludados y sus características:
^Modelo^Rango^Muestras/s^Calentamiento^Respuesta^Exactitud^Valido?^Precio|
|SprintIR-W-5|5%|0.05s|<30s |3s |70ppm+5%|NO |? |
|SprintIR-WF-20|20%|0.05s|<30s |3s |70ppm+5%|maybe |270€ |
|SprintIR-W-20|20%|0.05s|<30s |3s |70ppm+5%|maybe |138€ |
|SprintIR-W-60|60%|0.05s|<30s |3s |70ppm+5%|maybe |138€ |
|SprintIR-W-100|100%|0.05s|<30s |3s |70ppm+5%|maybe |138€ |
|SprintIR-6S-5|5%|0.05s|<30s |<1s |70ppm+5%|NO |231€ |
|**SprintIR-6S-20** |** 20%** |** 0.05s** |** <30s ** |** <1s ** |** 70ppm+5%** |**SI ** |** 231€ ** |
|SprintIR-6S-60|60%|0.05s|<30s |<1s |70ppm+5%|SI |231€ |
|SprintIR-6S-100|100%|0.05s|<30s |<1s |70ppm+5%|SI |231€ |
|SprintIR-R-5|5%|0.02s|?|<1s |70ppm+5%|NO |370€ |
|**SprintIR-R-20** |** 20%** |** 0.02s** |** ?** |** <1s ** |** 70ppm+5%** |**SI** |** 370€ ** |
|SprintIR-R-60|60%|0.02s|?|<1s |70ppm+5%|SI |370€ |
|SprintIR-R-100|100%|0.02s|?|<1s |70ppm+5%|SI |370€ |
|ExploIR-W-5|5%|0.5s|<10s |10s|70ppm+5%|NO |101€ |
|ExploIR-W-20|20%|0.5s|<10s |10s|70ppm+5%|NO |101€ |
|ExploIR-W-60|60%|0.5s|<10s |10s|70ppm+5%|NO |101€ |
|ExploIR-W-100|100%|0.5s|<10s |10s|70ppm+5%|NO |101€ |
|ExploIR-M-20|20%|0.5s|<10s |10s|70ppm+5%|NO |222€ |
|ePY12231|?|0.001s|? |? |?|? |30€ |
|PY2343|?|?|? |? |?|? |60€|
|K30|0.5%|0.5s|60s |20s |30ppm+3%|NO |79€ |
|MH-Z19|0.5%|5s|180s |<60s |50ppm+5%|NO |27€ |
|MH-Z14A|1%|?|189s |<120s |10%|NO |37€ |
|LI-820|2%|?|90m |? |?|NO |? |
|DS-CO2-20|0.5%|?|? |? |?|NO |27€ |
|SGP-30|MOS|1s|? |? |?|NO |20€ |
|MQ-135|MOS|?|? |? |?|NO |6€ |
|CCS811|MOS|1s|? |? |?|NO |21€ |
Enlaces a las datasheets en: [[https://github.com/TCRobotics/capnograph/blob/sensor/HW_co2sensors.md|https://github.com/TCRobotics/capnograph/blob/sensor/HW_co2sensors.md]]
==== Microcontrolador ====
No se necesitan especiales características ya que solo se necesitaría un puerto serie y comunicación SPI para la pantalla. Pero la velocidad de procesamiento si que puede ser un cuello de botella para poder tratar cada una de las puestras del sensor. Por si acaso en el prototipo BricoLabs elegimos utilizar el ESP32 que tiene todo lo necesario con una velocidad buena y además dispone de WiFi y Bluetooth para posibles expansiones.
==== Display ====
Es necesario un display para mostrar el gráfico de CO2 y las medidas de respiraciones por minuto (bpm) y End Tidal CO2 (etCO2). Se planteó prescindir del display y utilizar un ordenador portatil para mostrar la información, y aunque se podría utilizar facilmente, se descartó por sencillez de uso y ahorro de coste.
La elección del display se realizó por la facilidad de adquirir rapidamente y la universalidad de la libreria [[https://github.com/adafruit/Adafruit-GFX-Library|Adafruit_GFX]] y [[https://github.com/adafruit/Adafruit-ST7735-Library|Adafruit_ST77XX]] que los soporta, al usar esta librería cualquier pantalla con driver ST77XX puede ser utilizada con pequeños cambios en el código.
El software [[https://github.com/TCRobotics/capnograph/tree/sensor|https://github.com/TCRobotics/capnograph/tree/sensor]] utiliza por defecto el display [[https://www.aliexpress.com/item/32947890530.html?spm=a2g0s.9042311.0.0.274263c0QKCxM4|FeiYang TFT LCD IPS GMT130-V1.0]]
=== Displays Soportados ===
* [[https://www.amazon.co.uk/gp/product/B07N6FQ5XW/|Ywrobot TFT LCD screen]]
* Resolución 128x160
* 262K colores
* 1.8 pulgadas
* Control por SPI
* Driver ST7735
* [[https://www.aliexpress.com/item/32947890530.html?spm=a2g0s.9042311.0.0.274263c0QKCxM4|FeiYang TFT LCD IPS GMT130-V1.0]]
* Resolución 240x240
* 65K colors
* 1.3 inch
* SPI control
* ST7789 driver
=== Pinado ===
^ST7735 pin^Function^ESP32 pin|
|VCC|Power|3V3|
|GND|Power|GND|
|SCK|SPI clock|18|
|SDA|SPI data|23|
|DC|SPI Data Command|2|
|CS|Chip select|5|
|RST|Reset|4|
|BLK|Back light|3V3/NC|
^ST7789 pin^Function^ESP32 pin|
|VCC|Power|3V3|
|GND|Power|GND|
|SCK|SPI clock|18|
|SDA|SPI data|23|
|DC|SPI Data Command|2|
|RES|Reset|4|
|BLK|Back light|3V3|
==== Adquisición de Aire ====
Hay dos métodos para acceder a la respiración del paciente y poder medir:
* Main-stream
* Side-sream
=== Main stream ===
En este método el sensor está localizado entre el paciente y el circuito de respiración. El sensor "ve" a través de unas ventanas transparentes de un adaptador especial, la luz infraroja de un emisor situado en el lado opuesto. para prevenir la condensación, el aire es calentado un poco más que la temperatura del cuerpo humano.
Ventajas
* No hay obstrucción
* No crea cambios de presión
* Normalmente no hay problemas con la esterilizaciión ya que el sensor no tiene contacto con la respiración
* No introduce polución
* No hay retardo en el gráfico
* Adecuado para uso en niños
Desventajas
* Las ventanas del sensor se pueden ensuciar con las secreciones
* Dificil de utilizar en posiciones inusuales como (prono)
* Algunos modelos son pesados
* Solo puede ser utilizado en pacientes intubados
* Dificil de crear un adaptador y ventanas de manera DiY
Algunos miembros del proyecto están intentando utilizar este método con los sensores epy12231 y py2343. Más información el los canales de Slack [[https://bit.ly/2QETJuY|#sensor-epy12231]] and [[https://bit.ly/2QETJuY|#py2343_sensor]]
=== Side stream ===
Este método utiliza un tubo de muestra conectado a un a pieza en forma de T. El sensor está localiazado en la unidad principal y una pequeña boma aspira una pequeña muestra de la expiración para medirla. **Si el paciente tiene una enfermedad contagiosa por la respiración como COVID19 o tiene gases anestésicos en el canal de aire, la salida de la bomba de aire debe ser devuelta al canal de aire o llevada a un filtro de gases.**
Ventajas
* Fácil de conectar
* Puede ser utilizada en pacientes despiertos y no intubados
* Facil de utilizar en posiciones inusuales (prono)
Desventajas
* Posible obstrucción del tubo
* El vapor de agua puede afectar a la medida del sensor si llega al mismo
* Algo de retraso en el gráfico debido al transporte de gases
=== Adquisición de aire en el prototipo "BricoLabs" ===
En el prototipo se utiliza el método de side stream de la siguiente manera:
PACIENTE > FILTRO DE PARTÍCULAS > TRAMPA DE AGUA > FILTRO HIDROFÓBICO > SENSOR > BOMBA
Toda la sección de adquisición de aire debe ser esteril y no compartirse entre pacientes. Habitualmente todos sus elementos (salvo el sensor y la bomba que no se cambiarían) suelen estar disponibles en los hospitales por que se utilizan para los sistemas de respiración, anestesia etc. Por lo que no entrarían en el alcance del proyecto, sin embargo para realizar pruebas hemos tenido que conseguir este material, por lo que a continuación se expone lo que hemos utilizado.
**Tubos**
Utilizamos principalmente tubos de diámetro interno 6mm para la linea de aire y de 8mm para usarlos como adaptadores para las entradas de filtros y bomba.
**Trampa de agua**
La trampa de agua es necesaria para eliminar tanto vapor de agua como sea posible por que afecta al correcto funcionamiento del sensor. No encontramos ninguna trampa de agua que pudieramos comprar a nivel particular pero puede realizarse con un pequeño tarro de cristal con un par de agujeros en su tapa donde entran y salen dos tubos.
**Filtro de partículas hidrofóbico**
Parece que es necesario primero un filtro de partículas de 150 micrones y despues de la trampa de agua un filtro hidrofóbico de 0.22 micrones. Para el prototipo de BricoLabs no encontramos filtro de particulas, pero encontramos un filtro de 1 micron con membrana hidrofóbica de EPTFE. En los test sin trampa de agua vimos que casi todo el vapor de agua se contenía en el filtro, pero definitivamente se necesita una filtración correcta.
**Bomba**
Es recomendable una bomba de succión de 500ml/min, pero solo conseguimos rapidamente con envio local una de Sparkfun que tiene 12-15l/min. Para conseguir menos caudal la alimentamos con menos voltaje.
===== Lista de materiales prototipo "BricoLabs" =====
* [[https://www.gassensing.co.uk/product/sprintir-r/|Sensor CO2SprintIR-R-20]] (sustituible por [[https://www.gassensing.co.uk/product/sprintir-6s-co2-sensor/|SprintIR-6S-20]])
* [[https://es.aliexpress.com/item/32846710180.html|TTGO MINI 32]] tarjeta ESP32 (sustituible por cualquiera que utilize ESP32)
* [[https://www.aliexpress.com/item/32947890530.html?spm=a2g0s.9042311.0.0.274263c0QKCxM4|1.3" TFT IPS 240x240 65k ST7735 Display]] (o similar con driver ST77XX)
* Adquisición de aire
* [[https://www.amazon.es/gp/product/B00MDICUYG/|Tubo 6mm ID]]
* [[https://www.amazon.es/gp/product/B00MDICUHI/|Tubo 8mm ID]]
* Trampa de agua (pendiente de encontrar)
* [[https://tienda.fisaude.com/filtro-antibacteriano-hidrofobico-para-aspiradores-secreciones-conector-8mm-p-37398.html|Filtro de particulas hidrofóbico]]
* [[https://www.tme.eu/es/details/sf-rob-10398/motores-de-cc/sparkfun-electronics-inc/rob-10398/|Bomba de aire ROB-10398 Sparkfun]] (sobredimensionada! mejor una de 500ml/min)
=== Pinado ===
^Pin ESP32^Función^Pin dispositivo|
|3V3|LCD Power|LCD VCC|
|3V3|LCD Back light|LCD BLK|
|GND|LCD Power|LCD GND|
|18|LCD SPI clock|LCD SCK|
|23|LCD SPI data|LCD SDA|
|2|LCD SPI Data Command|LCD DC|
|4|LCD Reset|LCD RES|
|3V3|CO2 Sensor Power|LCD VCC|
|GND|CO2 Sensor Power|LCD GND|
|16|CO2 Sensor TX|Sensor TX|
|17|CO2 Sensor RX|Sensor RX|
\\
===== Equipo =====
* [[https://github.com/jubeormk1|Julio Beltrán Ortega]]
* [[https://github.com/muit|Miguel Fernandez]]
* [[https://github.com/raquenaengineering|Raul Quesada]]
* [[https://github.com/andrwssb|Andrés SB]]
* [[https://github.com/tcrobotics|Alejandro Taracido (TCRobotics)]]
* Otros colaboradores del grupo CoronavirusMakers Capnógrafo
===== Recursos externos del proyecto =====
* Web principal del proyecto para recursos, resúmenes y canales de colaboración: [[https://capnography.zyrosite.com/|https://capnography.zyrosite.com/]]
* [[https://docs.google.com/document/d/1Fy8tQPNT1egSTognoJjIqcrcn0vAoZsc47lan9tsMqQ/edit#|Documento de especificaciones]]
* [[https://drive.google.com/drive/folders/1-fBFVFW2NwqgQL-am8wTxIKTYgCndMPH?usp=sharing|Carpeta Google Drive]]
* Grupo de Telegram del proyecto: [[https://t.me/joinchat/AHkqjBnI4c5RSNvks5OjxA|https://t.me/joinchat/AHkqjBnI4c5RSNvks5OjxA]]
===== Enlaces de interés =====
* Real-time human respiration carbon dioxide measurement device for cardiorespiratory assessment - Om Prakash Singh: [[https://www.researchgate.net/publication/319942280_Real_time_human_respiration_carbon_dioxide_measurement_device_for_cardiorespiratory_assessment|https://www.researchgate.net/publication/319942280_Real_time_human_respiration_carbon_dioxide_measurement_device_for_cardiorespiratory_assessment]]
* Diseño de un Capnógrafo - Milton Andrés Piedra Avecillas: [[http://dspace.uazuay.edu.ec/bitstream/datos/2199/1/09661.pdf|http://dspace.uazuay.edu.ec/bitstream/datos/2199/1/09661.pdf]]
===== Agradecimientos =====
[[https://www.gassensing.co.uk/|Gas Sensing Solutions UK]] por proporcionarnos de manera gratuita un sensor para este proyecto.\\
[[https://www.researchgate.net/profile/Om_Prakash_Singh10|Om Prakash Singh]] por su investigación en instrumentación médica low cost y su ayuda personal.\\
A todos los miembros del [[https://t.me/joinchat/AHkqjBnI4c5RSNvks5OjxA|grupo de Telegram CoronavirusMakers Capnógrafo]] por todas sus contribuciones