Arduino Smart Home System: 7 etapas
Arduino Smart Home System: 7 etapas
Anonim
Arduino Smart Home System
Arduino Smart Home System
Arduino Smart Home System
Arduino Smart Home System

Neste Instructable, mostraremos como criar seu próprio sistema de casa inteligente com o App Designer do MATLAB com uma placa Sparkfun Red. Este Instructable pode ser usado para ajudar a obter uma compreensão básica do App Designer do MATLAB, bem como usar um fotorresistor, servomotor e um sensor de movimento PIR.

Etapa 1: Para começar: materiais

Este projeto requer os seguintes materiais:

- Arduino Uno (para este projeto, usamos uma placa Sparkfun Red)

- Um fotorresistor

- Um minisservo motor

- Um servo motor contínuo

- Um sensor de movimento PIR

- Um sensor de temperatura

- 2 LEDs

- Fios e resistores conforme necessário

Etapa 2: Etapa 2: Abordando o problema a ser resolvido

O principal objetivo deste projeto era criar um sistema doméstico inteligente fácil de usar, codificando uma placa Arduino Uno com MATLAB. Inicialmente, pensamos em trabalhar apenas com um sensor de temperatura e umidade; no entanto, se ficássemos com esses dois sensores, nosso sistema de casa inteligente não seria facilmente comercializável para o público em geral. Decidimos que queríamos criar um sistema geral de energia residencial inteligente que funcionasse como um termostato inteligente e sistema de segurança. Por fim, queríamos trabalhar com o AppDesigner do MATLAB para que o usuário pudesse alterar a casa inteligente com facilidade.

Etapa 3: Etapa 3: Configurando a GUI e o fluxo de código básico

Etapa 3: Configurando a GUI e o fluxo de código básico
Etapa 3: Configurando a GUI e o fluxo de código básico

Para começar, você precisará abrir o AppDesigner do MATLABs e colocar o seguinte:

Dois campos de edição numéricos para uma entrada de limite quente e fria

Um botão para destrancar a porta

E quatro lâmpadas indicadoras para a lareira, porta, ventilador e holofote.

Duas etiquetas para se comunicar com o usuário.

Para este projeto, achamos mais fácil trabalhar com variáveis globais e a função de inicialização dentro do designer. Você precisará dessas variáveis na função de inicialização:

global a

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

No momento, só temos uma atribuição para a variável a para que seu computador possa ler o arduino. COM3 pode ser diferente dependendo de qual porta seu computador pode estar usando.

Quando você executa o código, ele começa na função de inicialização criando as variáveis globais e calibrando o sistema. No final desta função, haverá uma função de timer que chama uma propriedade que chamamos de Timer. Dentro dessa propriedade Timer, colocamos o código que executa o sistema inicial para que o cronômetro não execute novamente o código de calibração.

Nota: Não demos nenhuma instrução de fiação para o sistema. Referimo-nos ao manual que acompanha a placa SparkFun Red.

Etapa 4: Etapa 3: Configuração do sistema de termostato

Etapa 3: Configurando o sistema do termostato
Etapa 3: Configurando o sistema do termostato
Etapa 3: Configurando o sistema do termostato
Etapa 3: Configurando o sistema do termostato

A função do termostato funciona da seguinte maneira:

O usuário irá inserir a temperatura que considera ser muito quente ou muito fria. Assim que o termômetro fizer uma leitura, se a casa estiver muito fria, a "lareira" (um LED vermelho) acenderá e aquecerá a casa. Se a casa estiver muito quente, um "ventilador" (servo motor contínuo) ligará o resfriamento da casa.

Para codificar o sistema do termostato:

Começaremos na função de inicialização para exibir a temperatura atual e permitir que o usuário insira seus limites de frio e calor.

p = 'A0'% pino fotorresistor

volt = readVoltage (a, temp); celc = (volt-0,5). * 100; curr_temp = celc * 9/5 + 32; app. Label_4. Text = num2str (curr_temp); % O número da etiqueta pode alterar a pausa (10); % Pode querer mudar !!!!!

Em seguida, concluiremos o sistema de termostato dentro da propriedade Timer.

global curr_temp

coldUI global global uma hotUI global se curr_temp hotUI app. FanStateLamp. Color = [0,47 0,67 0,19]; % Torna a lâmpada da GUI verde writePWMDutyCycle (a, 'D11',.9)% As próximas três linhas de código executam a pausa do ventilador servo (10) writePWMDutyCycle (a, 'D11',.0) else app. FireplaceStateLamp. Color = [0,90 0,90 0,90]; % Isso desliga todas as lâmpadas da GUI e o app da lareira. FanStateLamp. Color = [0.9 0.9 0.9]; writeDigitalPin (a, 'D13', 0); fim

Etapa 5: Etapa 4: Configurando o sistema de portas

Etapa 4: Configurando o sistema de portas
Etapa 4: Configurando o sistema de portas

A função da porta funciona da seguinte forma:

Quando você executa o código MATLAB pela primeira vez, o aplicativo pede que você abra a porta para que o fotorresistor possa fazer uma leitura de luz inicial. Depois de concluído, o cronômetro será ativado e o fotorresistor fará leituras de luz secundária. Se a leitura da luz secundária for mais clara do que a inicial, um servo motor irá travar a porta. Se o usuário quiser a porta destrancada, ele pode pressionar um botão no aplicativo que irá destrancar a porta.

Para configurar o servo motor e fotorresistor:

Para codificar o sistema da porta:

Começaremos na função de inicialização para fazer as leituras de luz iniciais.

s = servo (a, 'D9')% O pino pode mudar com base na fiação

app. Label_4. Text = 'Abra a porta para calibrar o sistema'; pausa (15); % Isso dá tempo para o usuário abrir a porta int_light = readVoltage (a, p); app. Label_4. Text = 'Você pode remover seu dedo';

A seguir, iremos completar o código dentro da propriedade Timer

desbloqueio global

global int_light global s global a% Obtenha uma leitura de luz atual para comparar curr_light = readVoltage (a, p); % - Bloquear porta - se int_light <curr_light writePosition (s, 1)% As posições do servo podem diferir por pausa do motor (0,5); app. DoorStateLamp. Color = [0,47 0,67 0,19]; fim% - Destravar porta - se destravar == 1234 pausa (0,5); writePosition (s,.52) app. DoorStateLamp. Color = [0.85 0.33 0.10]; fim

Por fim, criaremos o retorno de chamada do botão de desbloqueio. Depois que o usuário pressiona o botão de desbloqueio, o desbloqueio da variável global receberá um número que pode completar a instrução if final na propriedade Timer.

desbloqueio global

desbloquear = 1234;

Etapa 6: Etapa 6: Configuração do sistema de holofotes

Etapa 6: Configuração do sistema de holofotes
Etapa 6: Configuração do sistema de holofotes

A função do holofote funciona da seguinte forma:

Ao iniciar o código MATLAB, o sensor de movimento PIR começará a detectar movimento. Assim que detectar algum tipo de movimento, ele cortará o sinal de energia. Assim que o sinal for cortado, um holofote acenderá do lado de fora da casa.

Para configurar o sistema de holofotes:

Para codificar o sistema de holofotes:

Desta vez, podemos pular para a propriedade Timer porque não precisamos escrever nenhuma variável extra.

humano_detectado = readDigitalPin (a, 'D2'); % Pin pode mudar com base na configuração se human_detected == 0 writeDigitalPin (a, 'D7', 1)% Pin pode mudar app. FloodLightStateLamp. Color = [0,47 0,67 0,19]; elseif human_detected == 1 app. FloodLightStateLamp. Color = [0.9 0.9 0.9]; fim de writeDigitalPin (a, 'D7', 0)

Etapa 7: Conclusão

Agora que você tem um rascunho de sua GUI com o App Designer e seu código para o Arduino, está pronto para fazer suas próprias edições ou conectar seu Arduino e pronto!