From eb978a53d2b02b140aca203c3b1c811def05e6ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20Mart=C3=ADnez=20Valenzuela?= Date: Thu, 2 Jul 2026 10:27:15 -0600 Subject: [PATCH] =?UTF-8?q?Implemementaci=C3=B3n=20de=20mediciones=20en=20?= =?UTF-8?q?la=20terminal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- InterfaceOption.png | Bin 0 -> 38306 bytes MHZ19B/mhz19b_driver.c | 18 ++------- README.md | 83 ++++++++--------------------------------- SerialPort.png | Bin 0 -> 34385 bytes WYLL_No.png | Bin 0 -> 9197 bytes WYLS_Yes.png | Bin 0 -> 8168 bytes 6 files changed, 20 insertions(+), 81 deletions(-) create mode 100644 InterfaceOption.png create mode 100644 SerialPort.png create mode 100644 WYLL_No.png create mode 100644 WYLS_Yes.png diff --git a/InterfaceOption.png b/InterfaceOption.png new file mode 100644 index 0000000000000000000000000000000000000000..c96fca3a2030e99d1963948840579c5166251775 GIT binary patch literal 38306 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 PR^Vymk1c<@^3%TnALLN| literal 0 HcmV?d00001 diff --git a/MHZ19B/mhz19b_driver.c b/MHZ19B/mhz19b_driver.c index 1b2e305..77b821e 100644 --- a/MHZ19B/mhz19b_driver.c +++ b/MHZ19B/mhz19b_driver.c @@ -5,7 +5,7 @@ #include #include -// --- 1. FUNCIÓN DE INICIALIZACIÓN --- +// --- FUNCIÓN DE INICIALIZACIÓN --- // Devuelve el descriptor de archivo (fd) o -1 si falla. int init_uart(const char *puerto, speed_t baudrate) { // Abrir el puerto: Lectura/Escritura, no ser la terminal controladora, no bloquear. @@ -59,7 +59,7 @@ int init_uart(const char *puerto, speed_t baudrate) { return fd; } -// --- 2. FUNCIÓN PARA ENVIAR --- +// --- FUNCIÓN PARA ENVIAR --- void send_uart(int fd, unsigned char *trama, int longitud) { tcflush(fd, TCIOFLUSH); // Limpiar tubería antes de hablar int escritos = write(fd, trama, longitud); @@ -68,13 +68,13 @@ void send_uart(int fd, unsigned char *trama, int longitud) { } } -// --- 3. FUNCIÓN PARA RECIBIR --- +// --- FUNCIÓN PARA RECIBIR --- int receive_uart(int fd, unsigned char *buffer, int longitud_esperada) { int bytes_leidos = read(fd, buffer, longitud_esperada); return bytes_leidos; } -// --- EJEMPLO DE USO --- +// --- FUNCION PRINCIPAL --- int main() { int uart_fd = init_uart("/dev/serial0", B9600); if (uart_fd == -1) return 1; @@ -94,16 +94,6 @@ int main() { // 2. Imprimir en consola (para tu propio monitoreo) printf("Respuesta OK: CO2 = %d ppm\n", co2_ppm); - - // 3. Escribir el valor en el archivo JSON para la interfaz web - FILE *archivo_json = fopen("Data/MHZ19B.json", "w"); // "w" sobreescribe el archivo cada vez - if (archivo_json != NULL) { - // Formatear estrictamente como JSON - fprintf(archivo_json, "{\n \"ppm\": %d\n}\n", co2_ppm); - fclose(archivo_json); // Liberar el archivo para que JS pueda leerlo - } else { - perror("Error: No se pudo crear/abrir el archivo JSON"); - } } else { printf("Error: Bytes recibidos = %d\n", bytes); diff --git a/README.md b/README.md index 881faef..951daf6 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ El propósito principal de este proyecto es estudiar y comprender la arquitectur --- # Objetivo del Proyecto -Implementar un controlador de bajo nivel para el sensor **MH-Z19B** utilizando comunicación **UART**, integrándolo con una interfaz web capaz de visualizar las mediciones de CO₂ en tiempo real. Esta implementación constituye la base para el desarrollo de futuras microestaciones inteligentes destinadas al monitoreo ambiental y la calidad del aire. +Implementar un controlador de bajo nivel para el sensor **MH-Z19B** utilizando comunicación **UART**, permitiendo que muestre las mediciones de CO₂ en tiempo real en la terminal. Esta implementación constituye la base para el desarrollo de futuras microestaciones inteligentes destinadas al monitoreo ambiental y la calidad del aire. --- @@ -42,11 +42,6 @@ Las principales características del sensor son: ## Software - UART (TTL) - Lenguaje C -- HTML5 -- CSS3 -- JavaScript -- JSON -- Nginx - Linux - Git @@ -81,7 +76,7 @@ sudo apt update && sudo apt upgrade -y ## 2. Instalar Dependencias ```bash -sudo apt install git gcc nginx -y +sudo apt install git gcc -y ``` --- @@ -100,16 +95,22 @@ Ir a: Interface Options └── Serial Port ``` +![Opciones de Interfaz](InterfaceOption.png) + +![Puerto Serial](SerialPort.png) Configurar: ```text Would you like a login shell to be accessible over serial? No - +``` +![Would you like a login shell to be accessible over serial?](WYLL_No.png) +``` Would you like the serial port hardware to be enabled? Yes ``` +![Would you like the serial port hardware to be enabled?](WYLS_Yes.png) Reiniciar el sistema: @@ -128,29 +129,10 @@ cd CO2-Sensor --- -## 5. Configurar Nginx - -Copiar los archivos de la interfaz web al servidor: - -```bash -sudo cp index.html /var/www/html/ -sudo cp -r MHZ19B /var/www/html/ -``` - -Reiniciar Nginx: - -```bash -sudo systemctl restart nginx -``` - ---- - # Compilación del Controlador en C -Ubicarse en el directorio del proyecto: - ```bash -cd /var/www/html/ +cd MHZ19B ``` Compilar el controlador: @@ -176,33 +158,7 @@ El controlador se comunicará con el sensor mediante el dispositivo: ```text /dev/serial0 ``` - -Las mediciones serán almacenadas periódicamente en el archivo: - -```text -MHZ19B.json -``` - -Este archivo será utilizado posteriormente por la interfaz web. - ---- - -# Visualización del Dashboard - -Obtener la dirección IP de la Raspberry Pi: - -```bash -hostname -I -``` - -Abrir un navegador web desde cualquier dispositivo conectado a la misma red local e ingresar: - -```text -http:// -``` -![Pagina resultante con las mediciones](InterfazWeb.png) - -La interfaz web consultará periódicamente el archivo **MHZ19B.json** mediante JavaScript utilizando peticiones asíncronas (`fetch()`), mostrando en tiempo real la concentración de CO₂ y el estado de la calidad del aire. +Este no es un puerto físico real, sino un acceso directo que el sistema operativo de la Raspberry Pi crea automáticamente para apuntar al puerto serial principal que está mapeado a los pines físicos de la placa. --- @@ -217,22 +173,16 @@ La interfaz web consultará periódicamente el archivo **MHZ19B.json** mediante B{{ Raspberry Pi 4}} --> C %% Proceso de Software - C( Driver en C) -->|Escribe datos| D - - %% Base de datos / Archivo - D[( MHZ19B.json)] -.->|Lectura local| E - - %% Servidor Web - E[[ Servidor Nginx]] -->|HTTP / Fetch API| F + C( Driver en C) -->|Imprime datos| D - %% Nube / Web Dashboard - F(( Dashboard Web / Cliente)) + %% Terminal + D[[ Terminal ]] ``` --- # Conclusión -El uso del protocolo UART implica un gran desafío debido a su necesidad de programación a bajo nivel en C. Durante la fase de depuración se logró identificar que dejar que el sistema operativo controle los tiempos lo hace muy propenso a fallas de sincronización. Esto se evidenció en la recepción de "basura" hexadecimal, la captura de tramas incompletas de apenas 3 bytes, el congelamiento del sistema por saturación de peticiones y un retraso de 6 segundos entre la consola y la interfaz gráfica. +El uso del protocolo UART implica un gran desafío debido a su necesidad de programación a bajo nivel en C. Durante la fase de depuración se logró identificar que dejar que el sistema operativo controle los tiempos lo hace muy propenso a fallas de sincronización. Esto se evidenció en la recepción de "basura" hexadecimal, la captura de tramas incompletas de apenas 3 bytes, el congelamiento del sistema por saturación de peticiones. A pesar de esto, UART sigue siendo uno de los pilares dentro de los sistemas embebidos por ser una herramienta directa, robusta y útil. No solo permite una transmisión de datos confiable en tiempo real, sino que otorga el control absoluto sobre el hardware. @@ -241,5 +191,4 @@ A pesar de esto, UART sigue siendo uno de los pilares dentro de los sistemas emb Aunque este mini proyecto cumple su objetivo de leer el CO₂ y probar la comunicación UART, tiene las siguientes limitaciones prácticas que debemos tomar en cuenta: - **Tiempos no exactos:** La Raspberry Pi funciona como una computadora normal y no está diseñada para controlar el tiempo con una precisión matemática perfecta. Esto hace que las pausas para comunicarse con el sensor tengan ligeras variaciones. -- **El programa se "pausa" a esperar:** Actualmente, el código en C se detiene por completo hasta que el sensor responde y se guarda el archivo. Esto funciona bien para un solo sensor, pero si en el futuro queremos conectar varios a la vez, el sistema se volvería lento porque tendría que esperar a uno por uno en lugar de atenderlos al mismo tiempo. -- **Consumo innecesario en la página web:** El panel web descarga el archivo completo cada dos segundos, haya o no haya datos nuevos. Para la versión final de la estación, lo ideal sería usar un método más inteligente donde la página se actualice *solo* cuando el nivel de CO₂ cambie, para no desperdiciar recursos ni hacer trabajar a la placa de más. \ No newline at end of file +- **El programa se "pausa" a esperar:** Actualmente, el código en C se detiene por completo hasta que el sensor responde. Esto funciona bien para un solo sensor, pero si en el futuro queremos conectar varios a la vez, el sistema se volvería lento porque tendría que esperar a uno por uno en lugar de atenderlos al mismo tiempo. \ No newline at end of file diff --git a/SerialPort.png b/SerialPort.png new file mode 100644 index 0000000000000000000000000000000000000000..e0977f23a75a3676190f74e3e58040774e7cd68f GIT binary patch literal 34385 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п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 E1q;8K7ytkO literal 0 HcmV?d00001