by TCRobotics
En esta página se exponen los resultados del proyecto Capnógrafo, que forma parte del movimiento maker 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.
<note warning>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.</note>
El 14 de Marzo de 2020 comienza el confinamiento por la crisis del COVID19 en España y se crea el 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 grupo de Capnógrafo. Me pongo a colaborar con la busqueda de sensores y entro en contacto con la empresa 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.
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
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.
El prototipo BricoLabs utiliza concretamente el siguiente proyecto realizado en Platformio: 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!
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:
Los sensores de CO2 para utilizar en un capnógrafo necesitan estas características:
Para este prototipo hemos seleccionado el sensor SprintIR-R-20 por las siguientes razones:
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.
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 #sensor-epy12231 and #py2343_sensor
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
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.
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 Adafruit_GFX y 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 utiliza por defecto el display FeiYang TFT LCD IPS GMT130-V1.0
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 |
Hay dos métodos para acceder a la respiración del paciente y poder medir:
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
Desventajas
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 #sensor-epy12231 and #py2343_sensor
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
Desventajas
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.
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 |
Gas Sensing Solutions UK por proporcionarnos de manera gratuita un sensor para este proyecto.
Om Prakash Singh por su investigación en instrumentación médica low cost y su ayuda personal.
A todos los miembros del grupo de Telegram CoronavirusMakers Capnógrafo por todas sus contribuciones