Taula de continguts:

Sistema Arduino Smart Home: 7 passos
Sistema Arduino Smart Home: 7 passos

Vídeo: Sistema Arduino Smart Home: 7 passos

Vídeo: Sistema Arduino Smart Home: 7 passos
Vídeo: The SMARTEST Home Automation System 😎😎 with FAN Speed Control using ESP32 Blynk | IoT Project 2022 2024, Desembre
Anonim
Sistema Arduino Smart Home
Sistema Arduino Smart Home
Sistema Arduino Smart Home
Sistema Arduino Smart Home

En aquest instructiu us mostrarem com crear el vostre propi sistema intel·ligent per a la llar amb el dissenyador d'aplicacions de MATLAB amb un tauler vermell Sparkfun. Aquesta instrucció es pot utilitzar per ajudar a obtenir una comprensió bàsica del dissenyador d'aplicacions de MATLAB, a més d'utilitzar un fotoresistor, un servomotor i un sensor de moviment PIR.

Pas 1: començar: materials

Aquest projecte requereix els materials següents:

- Arduino Uno (per a aquest projecte hem utilitzat una placa Sparkfun Red)

- Un fotoresistor

- Un mini-servo motor

- Un servomotor continu

- Un sensor de moviment PIR

- Un sensor de temperatura

- 2 LEDs

- Cables i resistències segons calgui

Pas 2: Pas 2: aproximació al problema a resoldre

L’objectiu principal d’aquest projecte era crear un sistema domèstic intel·ligent fàcil d’utilitzar codificant una placa Arduino Uno amb MATLAB. Primer vam pensar a treballar només amb un sensor de temperatura i humitat, però, si ens quedéssim amb aquests dos sensors, el nostre sistema de casa intel·ligent no seria fàcilment comercialitzable per a un públic general. Vam decidir que volíem crear un sistema energètic global per a la llar intel·ligent que funcionés com un termòstat intel·ligent i un sistema de seguretat. Finalment, volíem treballar amb AppDesigner de MATLAB perquè l'usuari pugui modificar fàcilment la casa intel·ligent com vulgui.

Pas 3: Pas 3: Configuració de la interfície gràfica d’usuari i del flux bàsic de codi

Pas 3: Configuració de la interfície gràfica d’usuari i del flux de codi bàsic
Pas 3: Configuració de la interfície gràfica d’usuari i del flux de codi bàsic

Per començar, haureu d'obrir MATLABs AppDesigner i col·locar el següent:

Dos camps d'edició numèrica per a una entrada de llindar fred i fred

Un botó per obrir la porta

I quatre làmpades indicadores per a la xemeneia, la porta, el ventilador i el llum d'inundació.

Dues etiquetes per comunicar-se amb l'usuari.

Per a aquest projecte, ens va resultar més fàcil treballar amb variables globals i la funció d'inici dins del dissenyador. Necessitareu aquestes variables dins de la funció d'inici:

global a

a = arduino ('COM3', 'uno', 'Biblioteques', 'Servo'); global s global p global hotUI global coldUI global unlock global temp global curr_temp global int_light

En aquest moment només tenim assignada la variable a perquè el vostre ordinador pugui llegir l'arduino. El COM3 pot variar en funció del port que pot utilitzar el vostre equip.

Quan executeu el codi, s'iniciarà dins de la funció d'inici creant les variables globals i calibrant el sistema. Al final d'aquesta funció, hi haurà una funció de temporitzador que crida a una propietat que hem anomenat Temporitzador. Dins d'aquesta propietat del temporitzador, posem el codi que executa el sistema domèstic perquè el temporitzador no torni a executar el codi de calibratge.

Nota: no vam donar cap instrucció de cablejat per al sistema. Vam fer referència al manual que s'inclou amb el tauler SparkFun Red.

Pas 4: Pas 3: Configuració del sistema de termòstat

Pas 3: Configuració del sistema de termòstat
Pas 3: Configuració del sistema de termòstat
Pas 3: Configuració del sistema de termòstat
Pas 3: Configuració del sistema de termòstat

La funció del termòstat funciona de la següent manera:

L'usuari introduirà la temperatura que considera massa calenta o massa freda. Un cop el termòmetre prengui una lectura, si la casa és massa freda, la "llar de foc" (un LED vermell) s'encén i escalfa la casa. Si la casa està massa calenta, aleshores s’encén un "ventilador" (servomotor continu) que refreda la casa.

Per codificar el sistema de termòstat:

Començarem dins de la funció d’inici per mostrar la temperatura actual i deixar que l’usuari introdueixi els seus llindars de fred i calor.

p = 'A0'% Pin de fotoresistència

volt = readVoltage (a, temp); celc = (volt-0,5). * 100; curr_temp = celc * 9/5 + 32; app. Label_4. Text = num2str (curr_temp); El número de l'etiqueta pot canviar la pausa (10); % Pot voler canviar !!!!!

A continuació, completarem el sistema de termòstat dins de la propietat Timer.

curr_temp global

global coldUI global a hotUI global if curr_temp hotUI app. FanStateLamp. Color = [0,47 0,67 0,19]; % Converteix el llum de la GUI en verd writePWMDutyCycle (a, 'D11',.9)% Les tres línies següents de codi executen la pausa del ventilador servo (10) writePWMDutyCycle (a, 'D11',.0) else app. FireplaceStateLamp. Color = [0,90 0,90 0,90]; % Això apaga totes les làmpades GUI i la llar de foc app. FanStateLamp. Color = [0,9 0,9 0,9]; writeDigitalPin (a, 'D13', 0); final

Pas 5: Pas 4: Configuració del sistema de portes

Pas 4: Configuració del sistema de portes
Pas 4: Configuració del sistema de portes

La funció de la porta funciona de la següent manera:

Quan executeu el codi MATLAB per primera vegada, l’aplicació us demanarà que obriu la porta perquè el fotoresistor pugui fer una lectura inicial de llum. Un cop completat, el temporitzador s’activarà i el fotoresistor realitzarà lectures de llum secundàries. Si la lectura de la llum secundària és més lleugera que la inicial, un servomotor bloquejarà la porta. Si l'usuari vol que la porta estigui desbloquejada, pot prémer un botó de l'aplicació que la desbloquejarà.

Per configurar el servomotor i la fotoresistència:

Per codificar el sistema de portes:

Començarem dins de la funció d’inici per fer les lectures inicials de llum.

s = servo (a, 'D9')% Pin pot canviar segons el cablejat

app. Label_4. Text = 'Obriu la porta per calibrar el sistema'; pausa (15); % Això dóna temps a l'usuari per obrir la porta int_light = readVoltage (a, p); app. Label_4. Text = 'Podeu treure el dit';

A continuació, completarem el codi a la propietat del temporitzador

desbloqueig global

global int_light global s global a% Obteniu una lectura de llum actual per comparar curr_light = readVoltage (a, p); % - Porta de bloqueig: si int_light <curr_light writePosition (s, 1)% Les posicions del servo poden diferir per pausa del motor (0,5); app. DoorStateLamp. Color = [0,47 0,67 0,19]; final% - Desbloqueja la porta: si es desbloqueja == 1234 pausa (0,5); writePosition (s,.52) app. DoorStateLamp. Color = [0,85 0,33 0,10]; final

Finalment crearem el botó de desbloqueig de devolució de trucada. Un cop l'usuari prem el botó de desbloqueig, a la variable global de desbloqueig se li assignarà un número que pot completar la sentència final if a la propietat del temporitzador.

desbloqueig global

desbloquejar = 1234;

Pas 6: Pas 6: Configuració del sistema de llum inundable

Pas 6: Configuració del sistema de llum inundable
Pas 6: Configuració del sistema de llum inundable

La funció del llum d'inundació funciona de la següent manera:

Quan inicieu el codi MATLAB, el sensor de moviment PIR començarà a detectar el moviment. Un cop detecti algun tipus de moviment, tallarà un senyal d’alimentació. Un cop tallat aquest senyal, s’encendrà un llum d’inundació fora de casa.

Per configurar el sistema de llum d'inundació:

Per codificar el sistema de llum d'inundació:

Aquesta vegada podem passar a la propietat del temporitzador perquè no necessitem escriure cap variable addicional.

human_detected = readDigitalPin (a, 'D2'); % Pin pot canviar segons la configuració si human_detected == 0 writeDigitalPin (a, 'D7', 1)% Pin pot canviar app. FloodLightStateLamp. Color = [0,47 0,67 0,19]; elseif human_detected == 1 app. FloodLightStateLamp. Color = [0,9 0,9 0,9]; writeDigitalPin (a, 'D7', 0) final

Pas 7: Conclusió

Ara que teniu un esborrany de la vostra interfície gràfica d’usuari amb el dissenyador d’aplicacions i el vostre codi per a l’Arduino, esteu a punt per fer les vostres pròpies modificacions o connectar-lo a Arduino i llest.

Recomanat: