Contenidos
Tras hacer el análisis inicial era el momento de hacer aquello para lo que realmente había comprado el DM306. ¡Destriparlo!
La curiosidad me mata, y necesito saber qué tiene dentro y cómo está hecho.
Por si no has leído el artículo anterior con el análisis (te recomiendo que lo hagas) hablamos de este medidor:
- ★ 𝗠𝗢𝗡𝗜𝗧𝗢𝗥𝗜𝗭𝗔𝗖𝗜𝗢𝗡 𝗗𝗘 𝗗𝗔𝗧𝗢𝗦 𝗘𝗡 𝗧𝗜𝗘𝗠𝗣𝗢 𝗥𝗘𝗔𝗟 – Se trata de un monitor de gases que es capaz de monitorear de forma precisa y en tiempo real la concentración de CO2, la calidad del aire, la humedad del ambiente y la temperatura. El producto viene incorporado con un chip de alto rendimiento de un sofisticado sensor de infrarrojos, utiliza el reconocimiento de algoritmos de Big data, tiene tecnología avanzada, ya puede evaluar y monitorear datos en tiempo real.
- ★ 𝟰 𝗘𝗡 𝟭: 𝗖𝗢𝗡𝗧𝗥𝗢𝗟 𝗗𝗘 𝗖𝗔𝗟𝗜𝗗𝗔𝗗 𝗗𝗘 𝗔𝗜𝗥𝗘 𝗣𝗠𝟮.𝟱 – Detector de calidad de aire multifuncional, ya que mide efectivamente el CO2, la calidad del aire (PM2.5), la temperatura y la humedad. Posee sensores independientes NDIR para la medición de CO2, la temperatura, la humedad, y sensor de dispersión láser para la calidad de aire (PM2.5).
- ★ 𝗩𝗜𝗦𝗨𝗔𝗟𝗜𝗭𝗔𝗖𝗜𝗢𝗡 𝗖𝗢𝗡𝗝𝗨𝗡𝗧𝗔 𝗬 𝗔𝗠𝗣𝗟𝗜𝗔– Dispone de una gran pantalla digital amplia y con medición de registros unificada en pantalla común. En comparación con los detectores de calidad del aire ordinarios y antiguos, su diseño de interfaz es más conciso, intuitivo, con una división de área clara y una textura excelente.
- ★ 𝗣𝗢𝗥𝗧𝗔𝗧𝗜𝗟 𝘆 𝗩𝗘𝗥𝗦𝗔𝗧𝗜𝗟 – Este aparato medidor TACKLY tiene un diseñado ligero que le hace ser fácilmente portátil gracias a su pequeño tamaño. Es fácil de transportar y lo puedes poner donde quieras, por tanto, puede detectar la calidad del aire en terrazas, bares, dormitorios, salas de estar, cocinas, oficinas, automóviles, escuelas, hoteles, campamentos. Monitoreo en tiempo real las 24 horas para proteger la vida sana y la seguridad, ideal para las fiestas navideñas.
- ★ 𝗛𝗢𝗠𝗢𝗟𝗢𝗚𝗔𝗖𝗜𝗢𝗡 𝗖𝗘 / 𝗖𝗔𝗟𝗜𝗗𝗔𝗗 – El medidor de CO2 y calidad de aire TACKLY está homologado por organismos de la UE, y presenta certificación CE, garantía de uso y calidad del producto. Además, el detector de alarma de CO2 está hecho de material ABS impermeable de alta calidad, y los datos se actualizan en tiempo real a 1,5 segundos por vez, lo que garantiza una experiencia de consumidor muy alta.
El despiece, destripe o «teardown» del medidor de CO2
Abriendo el medidor
Uno de los principales objetivos de comprar este medidor era precisamente poderlo abrir e investigar cómo estaba hecho y conocer sus componentes, especialmente sus sensores, para poder saber qué podíamos esperar de él y que posibilidades de hackeo había.
Abrirlo no es muy fácil. Bajo el frontal de la pantalla, que está pegada a la caja, hay cuatro tornillos que hay que retirar y quitar el frontal da un poco de miedito porque está bien pegado y da la sensación de que se va a romper.
Cuando empiezas a despegar tampoco sabes exactamente como está montado, con lo que vas con más miedo todavía, pensando que puedes dañar la pantalla.
Finalmente te das cuenta de que la pantalla no está unida al frontal, sino que está pegada con una cinta adhesiva de doble cara, con lo que quitándolo con cuidado la pantalla no corre peligro y es más un problema de no estropear el aspecto estético de la caja. En mi caso lo hice con un cuter y paciencia, cortando el adhesivo y haciendo palanca.
Una vez has retirado el frontal, puedes quitar los cuatro tornillos y la caja se abre como una concha en dos mitades sin problema.
En el momento de separar las dos mitades de la caja hay que hacerlo con cuidado porque tenemos elementos pegados en ambas partes, unidos con cables. La placa principal queda en el fontal y el sensor de partículas, el de temperatura y la batería en la parte trasera.
Hay que tener cuidado con esos cables, especialmente el sensor de temperatura, porque tiene unos cables muy finos, bastante cortos y si no tienes cuidado podrías estropearlo. El sensor está pegado con cinta de doble cara junto a las rejillas de ventilación y es necesario despegarlo para poder separar las dos partes de la caja, cosa que no es demasiado difícil.
Estructura y componentes
La estructura del medidor es bastante sencilla y, si seguimos la placa desde el puerto micro USB en el sentido de las agujas del reloj, encontramos:
Cargador de batería
El cargador de batería está construido en torno a un circuito integrado ETA6002, no demasiado conocido.
Una cosa positiva de este chip es que incorpora una característica llamada «Power Path» lo que permite al medidor funcionar mientras la batería se está cargando y hacerlo sin poner en riesgo la batería ni el cargador, al contrario que otros aparatos.
Aunque el chip permite una corriente de carga de 2.5A parece que está regulado a aproximadamente 1A, lo que está bastante bien y supone un buen compromiso entre rapidez de carga y longevidad de la batería.
https://datasheetspdf.com/datasheet/ETA6002.html
Fuente de alimentación
A continuación, tenemos un apartado que contiene la fuente de alimentación, o más precisamente. las fuentes de alimentación.
La alimentación del medidor puede ser desde un micro USB o desde la batería, lo que significa que el voltaje de alimentación se puede mover entre poco más de 3V y 5.25V.
Estas fuentes de alimentación proporcionan los diferentes voltajes que el medidor necesita para funcionar.
Tenemos en primer lugar un elevador de tensión, que se encarga de elevar la tensión hasta los 5V y que está construido con un circuito integrado DC-DC booster AP2005 de origen chino, y del que no he sido capaz de encontrar datasheet en inglés.
Por lo que he podido descubrir, el AP2005 es un elevador PWM asíncrono de hasta 3.5A a 1Mhz. Tiene una eficiencia máxima del 92% y 100μA de consumo de corriente estando inactivo.
El medidor dispone también de un integrado AMS1117 de 3.3 V para suministrar esa tensión, con hasta 1A de intensidad, a las partes del medidor que la requieran. Este integrado tiene un consumo de corriente en reposo típico de 5mA, bastante alto para un aparato que puede funcionar con batería.
Te dejo aquí el datasheet del AMS1117 por si quieres saber más.
Zumbador
El circuito del zumbador es muy sencillo. Solamente lleva un pequeño zumbador, aparentemente pasivo, y un transistor para suministrarle la corriente que necesita.
Sensor de partículas
El sensor de partículas de suspensión en el aire es de tipo láser y es prácticamente igual al modelo ZH03B de Winsen, aunque no es el mismo exactamente, como veremos más adelante. No lleva ningún tipo de etiqueta ni marca indicando su modelo.
Es muy probable que se trate de una versión más antigua, reducida o de menor precisión que el ZH03B, aunque probablemente las diferencias no serán demasiado grandes.
En la siguiente tabla puedes ver características principales del sensor ZH03B:
Como ves la precisión de sus medidas es de ±15 µg/m3 al medir entre 0 y 100 µg/m3 y de ±15 µg/m3 de la medida al medir entre 101 y 1000 µg/m3.
Fíjate también en el MTTF (tiempo medio entre fallos) de solo 10000h. Lo que significa que el sensor no durará para siempre, ni mucho menos (ningún sensor de este tipo lo hace y esta es una cifra habitual en este tipo de sensores láser).
Para que no tengas que hacer las cuentas te diré que 10000 horas son 416,667 días, por lo que el tiempo medio entre fallos de algo menos de un año y medio.
Aquí te dejo el datasheet del ZH03B por si quieres saber más.
Aquí puedes ver el sensor ZH03B en AliExpress por si quieres ver cuánto cuesta en la tienda oficial de Winsen. ¡Sorprendente, cuesta más que el medidor!
Sensor de CO₂
El sensor de CO2 que incorpora el medidor ha sido toda una sorpresa, habituado a muchos sensores diferentes que existen en el mercado.
Empezaré por decir que no se trata de un sensor fabricado por Winsen, aunque se parezca mucho (mira la actualización, más abajo).
Su disposición física, en cuanto a pines, distribución de las ventanas de aireación, etc., es igual que la del sensor MH-Z19 de Winsen (un modelo antiguo que hace algunos años que no se fabrica).
La mayor sorpresa es que este sensor lleva componentes electrónicos al aire en su placa de circuito impreso (por debajo del sensor) mientras que todos los demás sensores de Winsen que conozco llevan todos los componentes en el interior (en este sentido se parece a los sensores fabricados por el fabricante chino Cubic).
Otra diferencia está en su caja. Su caja es plástica de color plateado brillante mientras que todos los sensores que conocía hasta ahora de Winsen eran de color dorado.
Como veremos más adelante, tampoco el protocolo de comunicaciones del sensor se parece al de otros sensores de Winsen.
Actualización 06/05/2021:
Tras más investigación, parece que se trata del sensor QC103 de la compañía china Q&C Sensing Technology (Shenzhen Qincheng Sensing Technology Co., Ltd.). Un sensor poco conocido, hasta ahora.
Sobre el papel sus características con, efectivamente, muy parecidas al MH-Z19B de Winsen, aunque en la práctica parece bastante menos preciso en las medidas.
Una limitación importante es la de no tener acceso a su protocolo de comunicaciones completo, lo que provoca que no sepa con certeza si tiene su autocalibración activada o como hacer una calibración bajo demanda.
Aquí puedes encontrar el datasheet del QC103 (en chino, no he encontrado versión en inglés) y aquí el enlace a la página web del QC103 en la web del fabricante (la web ya no está disponible, la he sustituido por una copia que he encontrado en Wayback Machine).
En el datasheet se puede ver que existe un programa de configuración del sensor llamado MK46XTestTool, aunque no he conseguido encontrarlo por más que lo he buscado.
Aquí te dejo lo más importante de sus especificaciones técnicas, que he traducido del chino:
Technical parameters
The measurement range | 400~5000ppm Expandable 0-6000 ppm |
accuracy | +/-50ppm plus5%reading (1)(2). |
Response time (t90) | <120s |
Warm-up time | <8s (output value).<120s(accurate output). |
Measurement cycle | 4s |
Temperature dependence | ± 5 ppm/C or 0.5% reading/ |
Operating voltage | 4.5~5.5V |
Output signal | UART, PWM, I2C (customized). |
Communication level | 3.3V |
Average current | <30mA (5V) |
Operating temperature | 0 ~ 50 °C |
Operating humidity | 0 to 95%RH no condensation |
Operating pressure | 700~1100mbar |
Store the temperature | -20.0 ~ 60.0 °C |
Product size | 33mm X 21mm X 11mm (without pins). |
Life expectancy | 10 years |
Calibration cycle | No calibration required (turn on self-calibration in normal IAQ applications). |
(1): Accuracy is measured at room temperature of 25degrees C and atmospheric pressure of 101.3kpa. To verify sensor uncertainty, add uncertainty (±2%) of the standard gas used for calibration.
(2): In normal indoor air quality applications, sensor accuracy is defined for more than 3 minutes after the auto-calibration function is turned on and running continuously for three weeks.
(3): Auto-calibration is based on the atmospheric atmosphere CO2 concentration of 400ppm, as a reference point sensor automatically perform calibration algorithm, the default auto-calibration cycle is 24 hours, support custom calibration cycle.
Sensor de temperatura
El sensor de temperatura es algún tipo de termistor.
Un termistor es un tipo especial de resistencia cuyo valor resistivo varía en función de la temperatura de una forma más acusada que en el caso de una resistencia común. Su funcionamiento se basa en la variación de la resistividad que presenta un semiconductor con la temperatura.
No tiene ningún tipo de marca por lo que no me ha sido posible averiguar cuál es, y por tanto su rango de medición y precisión.
Sensor de humedad
El sensor de humedad relativa parece algún tipo de sensor de tipo capacitivo.
Tampoco aparece ningún tipo de referencia para poderlo identificar por lo que nos quedamos sin saber su rango de medición y precisión.
Procesador
El microprocesador es un MS51FB9AE del fabricante asiático Nuvoton.
Se trata de una versión china del microprocesador 8051. Un estándar prácticamente en microprocesadores industriales y, sin duda, un chip con potencia sobrada par este medidor y una gran gestión de periféricos.
Te dejo aquí el datasheet del MS51FB9AE.
Controlador de la pantalla
El chip controlador de pantalla parece un TM1621 de la compañía china Shenzhen Titan Micro Elec. Como en otros casos de componentes de origen chino no he encontrado datasheet en inglés, ni más información.
Si te atreves con su datasheet en chino, aquí te lo dejo.
Batería
La batería es de tipo Li-Ion (Iones de litio) en formato 16850. No lleva ningún tipo de marca, aunque he de decir que viene retractilada en un plástico opaco de color azul, que no he retirado, por lo que no se puede ver su celda directamente.
No me ha parecido importante ver la celda, por lo que no me he tomado el trabajo de quitarle el retractilado. Si he hecho pruebas de carga, y he podido comprobar que carga uno 1900mAh, aproximadamente.
Ingeniería inversa de los protocolos
Una vez sabemos los componentes del medidor, llega el momento de hacer ingeniería inversa a los protocolos que utilizan los sensores del medidor para comunicarse para tratar de ser capaz de entenderlos de cara a poderlos utilizar en otros proyectos.
Armado con un analizador lógico, que es un aparato junto a un software especializados en la captura y análisis de las comunicaciones entre diferentes elementos, me dispongo a capturar estas comunicaciones y analizarlas.
El protocolo del sensor de CO₂
Partiendo de que el sensor es muy parecido, en apariencia, al MH-Z19 de Winsen, realizo algunas comprobaciones en sus pines, con ayuda de multímetro y osciloscopio, y compruebo que sus conexiones coinciden (al menos las de alimentación y comunicaciones, que son las que me interesan en este momento).
Activo la captura en el analizador lógico mientras compruebo las medidas de CO2 en pantalla y capturo los datos durante 30 segundos.
Este es el resultado, ampliado a la zona de interés:
Puedes ver en el canal 0 la comunicación desde el sensor al microcontrolador y en el canal 1 la del microcontrolador al sensor.
Como ves el controlador lanza una secuencia al sensor (canal 1) solicitando la medida y el sensor responde, 100ms después (canal 0), con una trama conteniendo los datos de la medida.
Esta es la consulta que el microcontrolador lanza el sensor:
Aunque es siempre la misma, parece estar compuesta por una cabecera de dos bytes (0x64 0x69) la longitud de los datos (0x03) y un CRC de dos bytes (0x5E 0x4E).
Si nos centramos en los datos recibidos, nos encontramos lo siguiente:
Podemos ver una estructura muy parecida a la que se producirían en un sensor MH-Z19 y, haciendo algunas suposiciones, consigo averiguar el comando que el microcontrolador envía al sensor para pedir una medida y descifrar el protocolo para poder extraer dicha medida. ¡La primera parte está conseguida!
Te he marcado en un círculo rojo los dos bytes (0xA4 0x05) que corresponden a la concentración de CO2. Si invertimos los dos bytes y lo convertimos a decimal 0x05A4 = 1444. ¡Justo lo que el DM306 nos muestra en pantalla, lo tenemos!
El protocolo parece ser un Modbus modificado, con una trama de 28 bytes que se divide en: una cabecera de 2 bytes 0x64 0x69 (siempre la misma), dos bytes con contenido desconocido, dos bytes que contienen la medida de CO₂ en hexadecimal en orden inverso (el byte más significativo primero), 6 bytes con contenido desconocido y una suma de comprobación de dos bytes de tipo ModbusCRC16 que le sirve al receptor para comprobar si todos los datos recibidos son correctos (si realizando la suma sobre los datos recibidos el resultado no coincide, toda la trama es desechada).
El protocolo del sensor de partículas
Como hice en el caso anterior, capturo los datos durante 30 segundos con ayuda del analizador lógico y analizo el resultado, comparándolo con el protocolo ya conocido del sensor ZH03B.
El resultado es esperanzador.
Se trata de una trama más larga que la del ZH03B pero mantiene los mismos bytes en la cabecera.
Tras algunos cálculos sencillos, comparándolos con las medidas que se muestran en la pantalla y que he tenido la precaución de grabar en video de forma sincronizada con la captura de datos, descifro cómo se transmiten las medidas.
La estructura es muy parecida a la del sensor de CO2, dos bytes de inicio, dos bytes con la longitud de los datos, y a continuación los datos de los sensores, unos bytes a 0 y una suma de comprobación (un checksum simple del byte 1 hasta el byte 30).
Observo además que el protocolo es muy parecido, y tiene la misma cabecera y longitud, al de los sensores PMS1003, PMS5003 y PMS7003.