El tabaco y el alcohol son peligrosos para la salud. Además, el consumo de alcohol es una de las razones de muchos incidentes antisociales. Por eso está prohibido fumar y beber alcohol en muchas zonas, así como en escuelas, universidades, hospitales y transportes públicos como autobuses y trenes. De hecho, este tipo de actividad debería prohibirse en todo tipo de lugares públicos. A pesar de las reglas de prohibición, hay muchos incidentes en los que se descubre que las personas no siguen las reglas. En este caso, para hacer cumplir la ley, debe existir algún sistema para detectar violaciones de dichas leyes y las autoridades deben recibir una alerta oportuna. En este tutorial se ha diseñado un sistema electrónico para el mismo.
En este proyecto se diseña un circuito electrónico implantable que puede detectar el consumo de alcohol en lugares públicos mediante el olor a alcohol mediante el sensor de alcohol MQ3. Asimismo, el circuito programable está equipado con sensor de humo MQ6 para detectar humo en lugares públicos. El circuito cuenta con un módulo GSM-GPRS interconectado que envía una alerta por SMS a la sala de control policial u organismo de inspección autorizado sobre la ubicación del lugar público donde se detecta consumo de alcohol o tabaquismo a pesar de la prohibición. El módulo también está equipado con un timbre que comienza a sonar cuando se detecta consumo de alcohol o tabaquismo. El timbre actúa como advertencia y continúa sonando hasta que desaparece el olor a alcohol o humo. Si, a pesar de la campana de alerta durante un período prolongado, se retira tabaco o alcohol del local, se envía una alerta por SMS a las autoridades, que pueden llegar al lugar para tomar las medidas oportunas.
El dispositivo está construido alrededor del AVR Atmega 32. El controlador está programado para leer los valores del sensor de alcohol y humo, invocar la alarma audible y enviar un SMS a través del módulo GSM tan pronto como los valores del sensor excedan los límites. El módulo GSM utilizado en el proyecto es el SIM900A. Una pantalla LCD de caracteres también interactúa con el circuito del dispositivo para monitorear y calibrar los valores del sensor durante la prueba del dispositivo. El módulo LCD y las secciones de código relacionadas con él se pueden quitar más adelante, cuando el dispositivo finalmente esté probado y listo para su implementación. El controlador AVR se programa y carga con código ejecutable utilizando AVR Studio. El dispositivo construido en este proyecto funciona con baterías y utiliza una batería de 12 V para funcionar. Este es un dispositivo portátil que puede reprogramarse cuando sea necesario y puede instalarse en cualquier lugar.

Fig. 1: Prototipo de detector de alcohol y humo basado en AVR Atmega32
Componentes necesarios –
Figura 2: Lista de componentes necesarios para el detector de humo y alcohol basado en AVR Atmega32
Diagrama de bloques -

Fig. 3: Diagrama de bloques del detector de humo y alcohol basado en AVR Atmega32
Conexiones de circuito –
El microcontrolador AVR Atmega 32 es la MCU instalada en el dispositivo. El sensor de alcohol MQ3, el sensor de humo MQ6, el módulo GSM SIM900A, el zumbador y la pantalla LCD están conectados con el controlador IC para construir el dispositivo. Las conexiones del circuito son las siguientes:
Fuente de alimentación: el controlador, así como los demás módulos del circuito, excepto el módulo GSM, requieren una fuente de alimentación de 5 V para su funcionamiento. El microcontrolador AVR Atmega 32, el sensor de alcohol MQ3, el sensor de humo MQ6 y la pantalla LCD de caracteres funcionan con 5 V CC, mientras que el módulo GSM-GPRS necesita 12 V de alimentación. Para suministrar energía al circuito se utiliza una batería de 12V. La energía de la batería se regula a 5 V y 12 V CC mediante circuitos integrados reguladores de voltaje 7805 y 7812 respectivamente. El pin 1 de los circuitos integrados reguladores de voltaje está conectado al ánodo de la batería y su pin 2 está conectado a tierra. La salida de voltaje regulado se toma del pin 3 de los circuitos integrados. También se conecta un LED junto con una resistencia pull-up de 10 K Ω entre la tierra común y el pin de salida para obtener una señal visual de la continuidad de la energía. La salida de los circuitos integrados del regulador está conectada a los pines de alimentación de los respectivos módulos y controladores, mientras que su tierra está conectada a la tierra común del circuito.
AVR Atmega 32: este es un microcontrolador basado en AVR RISC de 8 bits. Viene en un paquete de 40 pines y tiene 2 KB de RAM, 32 KB de memoria flash, 1 KB EEPROM, 32 pines de entrada y salida de propósito general (GPIO), 8 canales ADC de 10 bits, un SPI, un UART y un Interfaz TWI en chip. El controlador tiene tres temporizadores incorporados, de los cuales 2 son temporizadores de 8 bits y uno es un temporizador de 16 bits. El controlador opera hasta una frecuencia de reloj de 16 MHz. Al ejecutar potentes instrucciones en un solo ciclo de reloj, el Atmega 32 logra velocidades de transferencia cercanas a 1 MIPS por MHz, lo que permite a los diseñadores de sistemas optimizar el consumo de energía en relación con la velocidad de procesamiento. El controlador está disponible en un paquete en línea dual (DIP) de 40 pines. Consulte el diagrama de pines y la configuración de pines de este controlador AVR aquí.
En este proyecto se utilizan 13 pines GPIO del controlador, de los cuales 11 pines se usan para interactuar con la pantalla LCD de caracteres, 1 pin se usa para interactuar con el sensor de alcohol MQ3 y 1 pin se usa para interactuar con el sensor de humo MQ6. Los pines RX y TX del controlador se utilizan para interactuar con el módulo GSM SIM900A.
LCD 16X2: La pantalla LCD 16X2 se utiliza para monitorear los valores del sensor. Interactúa con el microcontrolador AVR conectando sus pines de datos al puerto B del controlador. Los pines de datos del LCD de caracteres DB0 a DB7 interactúan con AVR Atmega de 32 pines PB0 a PB7, respectivamente. Los pines RS, RW y E de la pantalla LCD están conectados a los pines PC6, PC5 y PC4 del AVR respectivamente. Las conexiones del circuito LCD de caracteres al controlador AVR se resumen en la siguiente tabla:

Fig. 4: Tabla que enumera las conexiones del circuito entre el AVR ATMega32 y la pantalla LCD de caracteres
Sensor de gas MQ6: el sensor de gas MQ6 es un módulo de sensor de gas. El módulo tiene 4 pines para interfaz, de los cuales dos pines son VCC y tierra, un pin es salida analógica y el otro pin es digital. El pin de salida analógica del módulo se utiliza para detectar el nivel de concentración de fugas de gas o humo y se conecta con el pin de entrada analógica PA1 del controlador AVR. El sensor mide la concentración de gas o humo en ppm según las siguientes fórmulas:
Concen = 1036,5*R^-2,392 Donde
Concen es la concentración de gas o humo en ppm.
R es la relación entre Rs, la resistencia del sensor, y R0, que es la resistencia a 1000 ppm a 20 grados Celsius y 65% de humedad.
La resistencia del sensor Rs viene dada por las fórmulas:
Rs = (1024/ADC_DATA-1)*RL donde
Rs es la resistencia del sensor
ADC_DATA es una lectura digital que oscila entre 0 y 1023
RL es una resistencia de carga que oscila entre 10K y 40K ohmios.
Su sensor de clavija analógica genera un voltaje analógico que es proporcional a la concentración de gas o humo en ppm. El controlador detecta el voltaje y lo convierte a un valor digital utilizando el canal ADC integrado. Para una resistencia de carga fija, la lectura del ADC es directamente proporcional a la concentración de gas en ppm.
La relación entre la concentración y la resistencia del sensor se proporciona en la hoja de datos. Se proporciona un gráfico para condiciones normales de 20 grados Celsius y 65% de humedad donde Rs = R0 para la curva. De esta manera, la concentración de gas en ppm se vuelve igual a la lectura del ADC. El controlador AVR tiene canales ADC de 10 bits de largo, por lo que la lectura del ADC variará entre 0 y 1023. En el diseño, el valor umbral para la detección de humo se establece en 200, lo que significa que si la concentración de humo en un local excede las 200 ppm , el controlador invocará la alerta.
Sensor MQ3: MQ3 es un sensor analógico y digital que detecta el consumo de alcohol por el olor del aliento. El sensor tiene cuatro pines: salida analógica, salida digital, VCC y tierra. VCC y tierra están conectados a VCC y tierra comunes. El pin de salida digital no se utiliza, por lo que se mantiene desconectado. La salida del sensor se toma del pin de salida analógica que está conectado al pin PA0 del controlador AVR. Al igual que con el sensor de gas, el controlador detecta el voltaje analógico del sensor de alcohol y lo convierte en una lectura digital utilizando el canal ADC integrado. Nuevamente, dado que los canales ADC tienen 10 bits de longitud en el controlador AVR, la lectura digitalizada varía de 0 a 1023. El valor umbral para la detección de alcohol se establece en 700. Cuando el valor del sensor excede 700, el controlador invoca una alerta.
Módulo GSM SIM900A -SIM900A es un módem GSM GPRS de doble banda que opera en frecuencias de 900 o 1800 MHz. El módem tiene un puerto UART integrado para conectarse a una computadora, SBC o controlador. El módem tiene una velocidad en baudios configurable entre 9600 y 115200. La velocidad en baudios se puede configurar pasando comandos AT al módem a través de comunicación en serie. Este módem se puede utilizar para realizar llamadas de voz, enviar y recibir SMS y conectarse a Internet móvil. La conectividad a Internet en el módem se facilita a través de GPRS y tiene una pila TCP/IP para manejar la conectividad a Internet. El módem tiene cuatro terminales: RX, TX, VCC y tierra. El pin VCC debe estar conectado a una fuente de 12 V CC. El módem tiene un regulador de voltaje incorporado, por lo que también se puede conectar a cualquier fuente de alimentación no regulada. El pin de tierra está conectado a la tierra común del circuito. Los pines RX y TX (para comunicación en serie con el controlador) interactúan con los pines TX y RX del controlador AVR. El módem envía y recibe datos a través del UART.
Tenga en cuenta que la pantalla LCD de caracteres está conectada al circuito para monitorear los valores del sensor durante la calibración del sensor y la prueba del circuito para la aplicación prevista. El módulo LCD se puede quitar más tarde y las secciones de código escritas para él también se pueden eliminar del código fuente si es necesario reducir el tamaño del circuito.
Cómo funciona el circuito –
El funcionamiento de este dispositivo es sencillo y directo. Una vez que el dispositivo se enciende conectando una batería y se instala en una ubicación, carga el programa en el chip. El programa AVR comienza a leer datos del sensor de alcohol MQ3 y del sensor de humo MQ6. Los pines de salida analógica de ambos sensores están interconectados con el controlador y el controlador de ambos módulos de sensores detecta el voltaje analógico. El voltaje analógico de ambos sensores se convierte a valores digitales mediante canales ADC integrados. Hay canales ADC de 10 bits en el controlador Atmega 32, por lo que las lecturas del sensor varían de 0 a 1023. El valor digitalizado para el sensor de humo es directamente proporcional a la concentración de humo en partes por millón. El umbral para este sensor está establecido en 200, por lo que cuando la concentración de humo detectada por el sensor excede 200, el controlador envía una alerta y activa la alarma audible. El valor digitalizado del sensor de alcohol vuelve a ser proporcional a la concentración de gas procedente del olor a alcohol. El valor umbral para este sensor está establecido en 700. Tan pronto como la concentración de gas del olor a alcohol excede el valor de 700, el controlador envía una alerta y activa la alarma audible. Para probar el sensor de alcohol, se utiliza el líquido Listerine Cool Mint, que contiene algo de contenido de alcohol.

Fig. 5: Imagen del detector de humo y alcohol basado en AVR Atmega32
Durante la prueba del circuito, los valores de los sensores pasan a la pantalla LCD donde se pueden monitorear para una calibración adecuada del dispositivo.
Cuando el sensor MQ3 detecta consumo de alcohol en una ubicación, se envía una alerta SMS a un número de teléfono celular codificado en el código AVR con el texto “ALCOOL”. Asimismo, cuando el sensor MQ6 detecta humo en una ubicación, se envía una alerta SMS a un número de teléfono celular codificado en el código AVR con el texto “HUMO”. La ubicación de instalación del dispositivo se considera conocida; en caso contrario, también se puede enviar un ID o ubicación del dispositivo vía SMS al personal de seguridad autorizado. Al mismo tiempo, se activa una campana que continúa sonando hasta que se elimina el alcohol o el humo del área. El SMS se envía con un retraso si aún se detecta humo o alcohol después de la alarma audible.
Consulte la guía de programación para saber cómo el controlador AVR lee los valores de los sensores, los compara con los valores de umbral, envía una alerta por SMS y activa el timbre cuando los valores del sensor exceden su umbral.
Guía de programación –
Para programar el microcontrolador Atmega 32, AVR Studio 4 y el compilador GCC son las herramientas de software necesarias. Para saber cómo se utiliza AVR Studio 4, consulte el siguiente tutorial:
Trabajar con AVR Studio
En primer lugar, se importan archivos de encabezado separados para la inicialización de LCD y ADC. lcd.h y adc.h se incluyen para programar la pantalla LCD y leer datos de los módulos de sensores a través de ADC, respectivamente.
#incluir
#incluir
Para que los archivos de encabezado funcionen, deben copiarse en la siguiente carpeta: C > WinAVR-20090313 > avr > include > avr y pegar los archivos de encabezado descargados en la carpeta.
Tenga en cuenta que en la ruta WinAVR-20090313, 20090313 hay un número añadido a la carpeta de instalación. Este número puede ser diferente en una instalación diferente de AVR Studio.
Después de importar las bibliotecas requeridas, se definen variables y constantes para indicar las conexiones del circuito con los sensores y el módulo GSM. Se definen unos arrays que almacenan los comandos AT que se utilizarán para configurar el módulo GSM y enviar SMS a través del mismo.
Se llama a la función principal en la que los pines del controlador interconectados con la pantalla LCD se definen como salida digital, mientras que los pines interconectados con los sensores se definen como entrada analógica. Los canales LCD y ADC se inicializan utilizando las funciones lcd_init y adc_init y algunos mensajes iniciales se pasan a la pantalla LCD.
Se llama a un bucle while infinito en el que la pantalla LCD se configura para mostrar los valores del sensor y los valores del sensor se comparan con los valores de umbral para enviar la alerta SMS adecuada.
Para enviar el mensaje de alerta a la sala de seguridad desde el módem GSM, se deben pasar comandos AT al módem. Primero, se deben usar comandos AT para configurar la velocidad en baudios del módem para la comunicación en serie con el controlador. Los comandos AT se pasan de la siguiente manera:
carácter sin firmar cmd1 ={“AT”}
El siguiente AT se utiliza para comprobar la respuesta del módem GSM independientemente de si la conexión serie está establecida o no.
carácter sin firmar cmd2 ={“AT+CMGF=1”};
Aquí el comando AT+CMGF=1 se utiliza para configurar el módem GSM en modo de texto SMS.
carácter sin firmar cmd3 ={“AT+CMGS=”};
carácter sin firmar cmd5 ={“094*********”};
El comando AT+CMGS se utiliza para enviar el texto SMS al número de móvil específico codificado en el programa AVR.
unsigned char cmd4 ={“Alerta de alcohol detectada”};
Luego de configurar el módem GSM con comandos AT, se menciona el contenido del mensaje que se enviará.
La función sendSMS está definida para leer elementos de matriz que contienen comandos AT necesarios para enviar alertas SMS y pasarlas al módem GSM mediante comunicación serie. La comunicación serie entre el módem y el controlador se establece llamando a la función usatinit. En la función usatinit, se declara la velocidad en baudios para la comunicación en serie y los bits en los registros de estado y control B y C del USART se configuran para la comunicación síncrona. En el registro de estado y control USART B, la habilitación del receptor (bit 4) y la habilitación del transmisor (bit 5) se configuran en alto para habilitar los pines del receptor y del transmisor. el control USART y el registro de estado C se configuran para escritura configurando el bit URSEL en alto y los bits de tamaño de caracteres UCSZ0 y UCSZ1 se configuran en alto para configurar la transmisión y recepción de caracteres de 8 bits.
Consulte el código completo y pruébelo.
Código fuente del proyecto
###
//Programa para #ifndef _ADC_H_ #definir _ADC_H_ 1 #incluir#incluir // Esta función está declarada para inicializar el convertidor analógico a digital de microcontroladores AVR vacío adc_init(vacío); //Esta función está declarada para leer el valor digital de la conversión ADC int read_adc_channel (canal de caracteres sin firmar); /*Definiciones de funciones*/ vacío adc_init (vacío) { ADCSRA=(1< ###
Diagramas de circuito
| Diagrama de circuito-AVR-Atmega32-Detector de humo de alcohol | ![]() |
