Índice:

EF230 Smart Home Project: 7 etapas
EF230 Smart Home Project: 7 etapas

Vídeo: EF230 Smart Home Project: 7 etapas

Vídeo: EF230 Smart Home Project: 7 etapas
Vídeo: EF 230 Roomba Project 2024, Novembro
Anonim
EF230 Smart Home Project
EF230 Smart Home Project

Peças e materiais necessários:

  • 1 Arduino MKR 1000
  • 3 tábuas de pão
  • 2 mini fotocélulas
  • 1 Transistores NPN
  • 1 mini interruptor de alimentação
  • 1 LED - RGB (4 pinos)
  • 1 LED (cor de sua escolha)
  • 1 diodo 1N4148
  • 1 Resistores de 10K Ohm
  • 5 Resistor de 100 Ohm
  • 1 Sensor de Temperatura TMP36
  • 1 Motorredutor de relação DAGU 48: 1
  • 25 fios de jumper
  • Cabo USB
  • Programa MATLAB
  • Guia do Experimento SIK para a Placa Arduino 101 / Genuino 101 - Link do Guia do Experimento SIK

Este projeto detalha o design conceitual de um sistema doméstico inteligente que usaria dados para ajudar os proprietários a otimizar o uso de energia e a segurança. Inclui um sensor de luz para acender as luzes externas à noite, um sensor de luz para segurança e um sensor de temperatura e ventilador para controle de temperatura interna.

Etapa 1: LED sensível à luz

  • A configuração do LED sensível à luz deve representar as luzes externas de uma casa que se acendem à noite.
  • Quando a mini fotocélula detecta uma quantidade reduzida de luz, o LED acende.
  • Para uma casa inteligente, isso tem implicações de energia e segurança. Isso economizará energia, deixando as luzes apagadas durante o dia e proporcionará maior segurança à noite.
  • A fiação e configuração exatas para esta parte do projeto podem ser encontradas no experimento 7 no Guia de experimentos SIK.

Etapa 2: Mini interruptor de alimentação

  • A mudança é a primeira etapa no processo de segurança da casa inteligente.
  • Quando ligado, o switch iniciará uma resposta perguntando ao usuário se deseja entrar no modo 'Casa' ou 'Ausente'.
  • Se o modo 'Casa' for selecionado, a segurança será considerada desarmada, mas selecionar o modo 'Ausente' armará o sistema de segurança.
  • A fiação para esta parte do projeto pode ser encontrada no experimento 6 no Guia de Experimentos. Para fins de casa inteligente, os LEDs e seus fios de conexão encontrados no experimento 6 não precisam ser incluídos.

Etapa 3: segunda fotocélula

Segunda fotocélula
Segunda fotocélula
  • A segunda fotocélula funciona como um sensor de movimento para o sistema de segurança da casa inteligente.
  • O sensor é usado apenas quando o sistema é colocado no modo 'Ausente' conforme descrito na etapa anterior.
  • Se a fotocélula experimenta uma diminuição na quantidade de luz que recebe, ela reconhece isso como um movimento dentro da casa.
  • A configuração para esta parte do projeto pode ser encontrada no experimento 7 no Guia de experimentos SIK. No entanto, apenas a fotocélula e seus fios de conexão precisam ser incluídos na fiação.

Etapa 4: LED RGB

  • O LED RGB é usado em conjunto com o mini interruptor de alimentação e a segunda fotocélula para o sistema de segurança da casa inteligente.
  • As três cores diferentes são usadas como indicadores para o residente em uma casa inteligente.
  • Quando o sistema é colocado no modo 'Home', o LED fica azul. Quando o sistema é colocado no modo 'Ausente', o LED fica verde. Quando a fotocélula usada como sensor de movimento é acionada, a luz pisca em vermelho.
  • A fiação para o LED RGB pode ser encontrada no experimento 3 do Guia de experimentos SIK.

Etapa 5: Sensor de temperatura

  • O sensor de temperatura é a parte principal da conservação de energia em uma casa inteligente.
  • O residente pode inserir uma temperatura desejada para sua casa quando a casa inteligente estiver em uso.
  • O sensor de temperatura é como o sistema sabe a que distância a temperatura real está da temperatura desejada.
  • A configuração do sensor de temperatura pode ser encontrada no experimento 9 do Guia de experimentos SIK.

Etapa 6: Motorredutor DAGU

Motorredutor DAGU
Motorredutor DAGU
  • O motor permite que a casa inteligente regule a temperatura da casa com base na temperatura desejada e nas leituras do sensor de temperatura.
  • Atuando como a unidade de CA em casa, o motor girará em velocidades diferentes com base em quanto mais alta a temperatura real do que a temperatura desejada. Quanto maior a diferença, mais rápido o motor gira.
  • A fiação para o motor pode ser encontrada no Guia do Experimento no experimento 11.

Etapa 7: Código

  • O código para a casa inteligente inclui várias interfaces de usuário que permitem ao residente entender facilmente como funciona e alterar facilmente as configurações.
  • Com o sistema de casa inteligente, o residente receberá um alerta por e-mail se o sensor de movimento for acionado enquanto ele estiver ausente.
  • A única alteração que precisa ser feita é inserir as informações do e-mail do remetente e do endereço de e-mail do destinatário.

limpar a; limpar s; claro m; clc; feche tudo; % Limpe as variáveis arduino e servo para que possam ser redefinidas todas as vezes para que o código seja executado de forma eficaz ("clear m" é necessário para que um dos loops while funcione corretamente) a = arduino (); % Defina a variável arduino

s = servo (a, 'D6'); % Definir a variável servo

% Inicializar variáveis de e-mail para e-mail de aviso do sistema de segurança

emails = {'inserir endereço do destinatário'}; % Matriz de e-mails para os quais o e-mail de segurança será enviado

% Configurações de preferência de e-mail necessárias para usar um Gmail para enviar e-mails de

setpref ('Internet', 'E_mail', 'endereço de e-mail do remetente');

setpref ('Internet', 'SMTP_Username', 'nome do remetente');

setpref ('Internet', 'SMTP_Password', 'senha do remetente');

props = java.lang. System.getProperties;

props.setProperty ('mail.smtp.auth', 'true');

props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.port', '465');

% Assunto do email e variáveis de texto

subj = 'Alerta de intruso em sua casa';

text = 'Olá, este é o seu sistema de segurança Smart Home informando que foi detectado movimento fora de sua casa. Tomamos as medidas necessárias e contatamos as autoridades para você. Fique seguro.';

enquanto verdadeiro

prompt = {'Insira a temperatura inicial desejada (entre 65F e 85F):'}; % Prompt para menu de entrada do usuário

dlgtitle = 'Seleção de temperatura'; % Título para o menu de entrada do usuário

dims = [1 30]; % Dimensões para menu de entrada do usuário

definput = {'72'}; % Entrada padrão que aparece quando o menu é aberto pela primeira vez

tempsel_array = inputdlg (prompt, dlgtitle, dims, definput); % Menu pop-up de entrada do usuário que salvará o número inserido em um array

if ~ isempty (tempsel_array)% Se a matriz NÃO estiver vazia

tempsel_char = cell2mat (tempsel_array); % Converte o array em uma string de caracteres

tempsel = str2double (tempsel_char); % Converte a cadeia de caracteres em números

thingSpeakWrite (chID, tempsel, 'WriteKey', writeKey, 'Fields', 1); % Grave a temperatura selecionada em seu canal ThingSpeak

break% Quebra do loop while para que o menu não apareça várias vezes

else% Se o usuário clicar em cancelar em vez de inserir uma temperatura

msg1 = msgbox ('Nenhuma temperatura selecionada, o padrão é 85F', 'Aviso!'); % Mensagem exibida ao usuário após clicar em cancelar

waitfor (msg1); % Espere que a caixa de mensagem feche antes de continuar

tempsel = 85; % Defina a temperatura para o que foi declarado na caixa de mensagem

thingSpeakWrite (chID, tempsel, 'WriteKey', writeKey, 'Fields', 1); % Grave a temperatura selecionada em seu canal ThingSpeak

break% Quebra do loop while para que o menu não apareça várias vezes

fim

fim

enquanto verdadeiro

chID = 745517; % ThingSpeak Channel ID

writeKey = 'G9XOQTP8KOVSCT0N'; % Chave para acesso ao canal ThingSpeak

% Inicializar sensores para buscar dados

tempread = readVoltage (a, 'A3'); % Leia a tensão do sensor de temperatura

lightl1 = readVoltage (a, 'A2'); % Do nível de luz para o fotorresistor indo para o LED vermelho

lightl2 = readVoltage (a, 'A5'); % De nível de luz para o fotorresistor indo para o sistema de segurança

switchv = readVoltage (a, 'A0'); % Do valor para o switch

% Converte os dados de temperatura de tensão para graus Fahrenheit

tempC = (temperatura - 0,5) * 100; % Converte a tensão em temperatura em Celsius

tempF = (tempC * 9/5) + 32; % Converter temperatura em Celsius para temperatura em Fahrenheit

% Inicializa os números dos pinos para o LED multicolorido

redp = 'D9'; % Pin para luz vermelha do LED

greenp = 'D10'; % Pino para luz verde do LED

bluep = 'D11'; % Pin para luz azul do LED

if tempsel <tempF% Se a temperatura selecionada for maior que a temperatura ambiente

writePosition (s, 1); % Servo começará a se mover

pause (10)% Servo continuará girando por 10 segundos para representar que o AC desligaria após um determinado período de tempo

writePosition (s, 0); % Desligue o ventilador para continuar o código sem o ventilador ligado

tempsel = 150; % Altere o valor da temperatura para sair do circuito após o ventilador ter desligado, novamente apenas com o propósito de continuar o código

fim

if lightl1 <= 3% Se o primeiro fotorresistor detectar um nível de luz baixo

writeDigitalPin (a, 'A1', 1); % Liga o LED vermelho que representa as luzes externas

else% Se o nível de luz estiver alto novamente

writeDigitalPin (a, 'A1', 0); % Desligue o LED vermelho quando o nível de luz estiver alto o suficiente novamente

fim

if switchv> 3% Se o switch estiver ligado

A = existe ('m', 'var'); % Verifique a existência da variável 'm', ela será inicializada para o loop while e permitirá que seja interrompida quando um item de menu for selecionado (é por isso que o clear m deve ser feito no início do código)

enquanto A == 0% Loop será executado até que a variável 'm' exista

menutext = 'Qual modo de segurança você gostaria de entrar?'; % Texto para o menu de segurança

escolhas = {'Casa', 'Fora'}; % Opções para o menu de contexto de segurança

m = menu (menutext, escolhas); % Menu pop-up para modos de sistema de segurança

break% Garante que o loop while seja interrompido para que o menu não apareça várias vezes

fim

if m == 1% Se o modo 'Home' for selecionado

writeDigitalPin (a, bluep, 1); % Ligue apenas a luz azul no LED de mudança de cor

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 0);

elseif m == 2% Se o modo 'Ausente' for selecionado

writeDigitalPin (a, bluep, 0);

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 1); % Ligue apenas a luz verde no LED de mudança de cor

if lightl2 <= 3% Se o nível de luz no segundo fotorresistor é baixo, representando o movimento detectado pelo sistema de segurança

sendmail (emails, assunto, texto); % Enviar um e-mail com as propriedades de e-mail definidas anteriormente writeDigitalPin (a, greenp, 0); % Flash vermelho ligado e desligado 2 vezes

writeDigitalPin (a, redp, 1);

pausa (0,3)

writeDigitalPin (a, redp, 0);

pausa (0,3)

writeDigitalPin (a, redp, 1);

pausa (0,3)

writeDigitalPin (a, redp, 0);

pausa (0,3)

writeDigitalPin (a, redp, 1); % Termine com vermelho sólido após piscar para mostrar que há movimento até que o nível de luz volte a subir

msg2 = msgbox ('Intruso detectado pelo sistema de segurança, um e-mail foi enviado aos proprietários para informá-los.', 'AVISO!'); % Caixa de mensagem para informar o usuário sobre o movimento e sobre o e-mail enviado. Waitfor (msg2)% Aguarde até que a caixa de mensagem feche antes de continuar

outro

writeDigitalPin (a, greenp, 1); % Assim que o nível de luz aumentar novamente, ele voltará a ficar verde

fim

fim

elseif switchv <3,3% se o switch estiver desligado

writeDigitalPin (a, bluep, 0); % Desligue o LED completamente para mostrar que o sistema de segurança está desligado

writeDigitalPin (a, redp, 0);

writeDigitalPin (a, greenp, 0);

fim

fim

Recomendado: