Tabla de contenido:

Termostato inteligente para el hogar: 4 pasos
Termostato inteligente para el hogar: 4 pasos

Video: Termostato inteligente para el hogar: 4 pasos

Video: Termostato inteligente para el hogar: 4 pasos
Video: Termostato inteligente WiFi Tuya Smart. Conexiones cableadas y configuración para control remoto 🥶 2024, Noviembre
Anonim
Termostato de casa inteligente
Termostato de casa inteligente

Nuestro termostato inteligente para el hogar es un programa que puede ahorrarle dinero a un hogar automáticamente en las facturas de servicios públicos según las preferencias de la persona.

Paso 1: descripción general

El termostato de casa inteligente utiliza un sensor de temperatura para obtener la temperatura de la casa. Esta lectura de temperatura se coloca en el programa donde decidirá si el sistema de aire acondicionado necesita calentar o enfriar la casa según la temperatura deseada por el propietario.

Hay dos modos para el termostato: manual y automático. El modo manual que ajustará la temperatura de la casa a la temperatura deseada por el usuario. Y el modo automático del termostato cambiará automáticamente la temperatura del hogar a temperaturas preestablecidas por el usuario. Habrá dos configuraciones de temperatura para el modo automático: temperatura de salida y temperatura actual. La temperatura de salida se utiliza para ahorrar energía cambiando el termostato a una temperatura de ahorro de energía preestablecida cuando el usuario no está en casa. La temperatura actual se utilizará cuando el usuario esté en casa y desee una temperatura agradable. Cuando está en el modo automático del termostato, los sensores de movimiento buscan activamente movimiento para determinar si alguien está en casa o no. Según su lectura, la temperatura del hogar se establecerá en la temperatura de salida o en la temperatura actual.

Paso 2: Piezas y materiales

(15) Cables de puente

(4) Resistencias de 220 ohmios

(1) Resistencia de 10 K ohmios

(1) Sensor de temperatura

(1) Foto resistencia

(1) Caja de cambios DAGU Mini DC

(1) Diodo

(1) Transistor

(1) Fotorresistor

(1) Tablero de pruebas

(1) Arduino MKR

Paso 3: circuito

Circuito
Circuito
Circuito
Circuito
Circuito
Circuito
Circuito
Circuito

Figura 1 = Imagen grande izquierda

Figura 2 = Arriba a la derecha

Figura 3 = Medio a la derecha

Figura 4 = Abajo a la derecha

Figura 1

Usando el diagrama anterior, conectamos cada uno de nuestros tres LED. Separamos cada LED ya que estábamos trabajando con una placa de pan grande. Para tablas de pan más pequeñas, puede ser necesario acercar los LED. Además, no es necesario alimentar la placa de pruebas ya que los LED consumen muy poca energía. No usamos la conexión de 5V en la placa de pruebas para los LED. Cada conexión de los LED a nuestro Arduino se realizó como el cable verde arriba. Nuestros LED rojo, azul y verde están conectados a los pines digitales 8, 9 y 10 respectivamente, designados con un cable rojo, azul y verde en nuestra imagen.

Figura 2

El diagrama de arriba se usó para cablear el fotorresistor. Hicimos algunas correcciones por nuestra cuenta; sin embargo, los conceptos siguen siendo los mismos. El fotorresistor debe estar conectado a un pin analógico que tenemos en el pin A1. Asegúrese de utilizar una resistencia de 10K ohmios para la resistencia más cercana a la fotorresistencia.

figura 3

Este es el diagrama utilizado para cablear el sensor de temperatura. Asegúrese de no confundir el transistor utilizado aquí con el sensor de temperatura. Parecen casi idénticos. Es probable que el sensor de temperatura tenga TMP o algún otro script escrito en el lado plano del sensor. El cableado aquí es muy simple, nuestro sensor de temperatura está conectado al pin analógico A0 con un cable blanco.

Figura 4

La imagen de arriba se usó para cablear la caja de cambios DAGU Mini DC. El cable verde conectado a la caja de cambios es en realidad el cable rojo conectado a él en nuestra imagen. La caja de cambios está conectada al pin digital 11 con un cable naranja en nuestro modelo. Asegúrese de no confundir el transistor utilizado aquí con el sensor de temperatura. Parecen casi idénticos. Es probable que el sensor de temperatura tenga TMP o algún otro script escrito en el lado plano del sensor. Debe usar el transistor aquí y no el sensor de temperatura.

Paso 4: Código Arduino

Aquí se explican las partes más importantes del código. El código no funcionará solo con lo que se proporciona aquí. Para obtener el código de trabajo completo, hay un enlace en la parte inferior de la página.

Al crear el código del termostato programable, una de las primeras cosas que debe hacer es configurar los sensores y crear un bucle for que constantemente obtendrá lecturas de temperatura del sensor de temperatura.

Configuración del sensor de temperatura y LED:

tempPin = 'A0';% define una función anónima que convierte el voltaje en temperatura tempCfromVolts = @ (voltios) (voltios-0.5) * 100; sampleDuration = 5; %segundos. ¿Cuánto tiempo queremos muestrear para sampleInterval = 1; % Cuántos segundos entre lecturas de temperatura% configurado vector de tiempos de muestreo sampleTimes = 0: samplingInterval: sampleDuration; % calcula el número de muestras basándose en la duración y el intervalo numSamples = length (sampleTimes); % preasignar variables temporales y variables para el número de lecturas que almacenará tempC = zeros (numSamples, 1); tempF = tempC; % Usaremos un bucle for esta vez para tomar un número predeterminado de lecturas de% de temperatura

El bucle for:

para index = 1: numSamples% lee el voltaje en tempPin y lo almacena en voltios variables voltios = readVoltage (a, tempPin); tempC (índice) = -1 * tempCfromVolts (voltios + 0,3); tempF (índice) = tempC (índice) * (9/5) +32; % Muestra la salida formateada que comunica la lectura de temperatura actual fprintf ('La temperatura en% d segundos es% 5.2f C o% 5.2f F. / n',… sampleTimes (índice), tempC (índice), tempF (índice)); % tenga en cuenta que esta salida de pantalla solo será visible de una vez después de que el código haya terminado de ejecutarse, a menos que copie / pegue el código en un archivo mfile de secuencia de comandos simple. pause (sampleInterval)% de retraso hasta el siguiente final de la muestra

A continuación, creamos nuestro menú de usuario para que el usuario decida si pone el termostato en modo Manual o Automático. También creamos un código de error si el usuario no selecciona ninguna de las dos opciones.

El menú del modo Manual requiere que el usuario establezca un número para la temperatura del termostato, luego calentará la casa, enfriará la casa o estará inactiva según las lecturas. Para configurar esta parte del código, usó lecturas de temperatura del sensor de temperatura y creó un código que enfriará la casa cuando la lectura de temperatura sea más alta que la temperatura establecida, y calentará la casa cuando la lectura de temperatura sea más baja que la temperatura establecida.

Una vez que tenga las lecturas de temperatura, puede crear el código que le dirá al termostato que enfríe la casa cuando la lectura de temperatura sea más alta que la temperatura establecida y que caliente la casa cuando la lectura de temperatura sea más baja que la temperatura establecida. Para el prototipo, la luz azul se enciende cuando el termostato debería enfriar y la luz roja se enciende cuando el termostato debería calentar.

Configuración del menú:

opciones = {'Automático', 'Manual'}; imode = menú ('Modo', opciones) if imode> 0 h = msgbox (['Elegiste' opciones {imode}]); else h = warndlg ('Cerró el menú sin hacer una elección') end waitfor (h);

El modo manual requiere que el usuario ingrese una temperatura para el termostato, luego, basándose en las lecturas del sensor de temperatura, comenzará a enfriar la casa o calentar la casa. Si la lectura del sensor de temperatura es más alta que la temperatura establecida, comenzará a enfriar la casa. Si la lectura del sensor de temperatura es más baja que la temperatura establecida, calentará la casa.

Se iniciará el modo manual:

if imode == 2 dlg_prompts = {'¿Qué temperatura prefiere?'}; dlg_title = 'Temperatura'; dlg_defaults = {'68'}; opts. Resize = 'encendido'; dlg_ans = inputdlg (dlg_prompts, dlg_title, 1, dlg_defaults, opts); if isempty (dlg_ans) h = warndlg ('Cancelaste el comando inputdlg'); else temp_manual = str2double (dlg_ans {1})% [Agregar diapositiva de configuración de regulación de temperatura a continuación] end

Dentro de la declaración if para el modo manual, debe escribir la interfaz del menú para que el usuario elija la temperatura deseada en el hogar y luego implementar una declaración while que regule la temperatura del hogar.

Configuración de regulación de temperatura:

while temp_manual <tempF writeDigitalPin (a, 'D9', 1) writeDigitalPin (a, 'D11', 1); end while temp_manual> tempF writeDigitalPin (a, 'D8', 1) writeDigitalPin (a, 'D11', 1); fin

El modo automático requiere más entradas que el modo manual. Después de ingresar al modo Automático, el usuario establecerá una temperatura Normal y Ausente para su termostato, después de seleccionarlas, según el modo en que se encuentre el termostato, volverá al modo de regulación de temperatura.

Configure el modo automático:

elseif imode == 1 dlg_prompts = {'Normal', 'Ausente'}; dlg_title = 'Configuración de temperatura'; dlg_defaults = {'68', '64'}; opts. Resize = 'encendido'; dlg_ans = inputdlg (dlg_prompts, dlg_title, 1, dlg_defaults, opts); if isempty (dlg_ans) h = warndlg ('Cancelaste el comando inputdlg'); else temp_normal = str2double (dlg_ans {1}) temp_away = str2double (dlg_ans {2}) end waitfor (h); % [Agregar paso de detector de movimiento a continuación]

También necesitamos configurar el sensor de movimiento para la configuración del modo automático. Cuando el detector de movimiento detecta movimiento, mantendrá la temperatura en la configuración de temperatura actual; de lo contrario, se establecerá en la configuración de temperatura de salida.

Run_Motion_Detector (a, inf) while lightStr == 0 temp = temp_away while temp tempF writeDigitalPin (a, 'D6', 1) cualquier pin de luz roja también es motor para el ventilador writeDigitalPin (a, 'D9', 1); end end while lightStr == 1 temp = temp_normal writeDigitalPin (a, 'D6', 1)% de cambio a cualquier pin en el que se encuentre la luz normal mientras temp tempF writeDigitalPin (a, 'D6', 1) cualquier pin de luz roja también motor para ventilador writeDigitalPin (a, 'D9', 1); fin fin

El código completo se puede encontrar aquí.

Recomendado: