Table des matières:

Projet de maison intelligente EF230 : 7 étapes
Projet de maison intelligente EF230 : 7 étapes

Vidéo: Projet de maison intelligente EF230 : 7 étapes

Vidéo: Projet de maison intelligente EF230 : 7 étapes
Vidéo: Projet de fin d'études Réalisation d'une maison intelligente 2024, Juillet
Anonim
Projet de maison intelligente EF230
Projet de maison intelligente EF230

Pièces et matériaux nécessaires:

  • 1 Arduino MKR1000
  • 3 planches à pain
  • 2 mini photocellules
  • 1 transistors NPN
  • 1 mini interrupteur d'alimentation
  • 1 LED – RVB (4 broches)
  • 1 LED (couleur au choix)
  • 1 diode 1N4148
  • 1 résistances 10K Ohm
  • 5 100 Ohms Résistance
  • 1 capteur de température TMP36
  • 1 Motoréducteur à rapport DAGU 48:1
  • 25 fils de cavalier
  • Cordon USB
  • Programme MATLAB
  • Guide d'expérimentation SIK pour la carte Arduino 101/Genuino 101 - Lien du guide d'expérimentation SIK

Ce projet détaille la conception d'un système de maison intelligente qui utiliserait les données pour aider les propriétaires à optimiser leur consommation d'énergie et leur sécurité. Il comprend un capteur de lumière pour allumer les lumières extérieures la nuit, un capteur de lumière pour la sécurité et un capteur de température et un ventilateur pour le contrôle de la température intérieure.

Étape 1: LED sensible à la lumière

  • La configuration LED sensible à la lumière est destinée à représenter les lumières extérieures d'une maison qui s'allument la nuit.
  • Lorsque la mini cellule photoélectrique détecte une quantité réduite de lumière, la LED s'allume.
  • Pour une maison intelligente, cela a des implications énergétiques et de sécurité. Il économisera de l'énergie en laissant les lumières éteintes pendant la journée et offrira une sécurité accrue la nuit.
  • Le câblage et la configuration exacts de cette partie du projet peuvent être trouvés sous l'expérience 7 dans le guide d'expérience SIK.

Étape 2: Mini interrupteur d'alimentation

  • Le commutateur est la première étape du processus de sécurité de la maison intelligente.
  • Lorsqu'il est allumé, le commutateur initiera une réponse demandant à l'utilisateur s'il souhaite entrer en mode « À la maison » ou en mode « Absent ».
  • Si le mode « Maison » est sélectionné, la sécurité est considérée comme désarmée, mais la sélection du mode « Absent » armera le système de sécurité.
  • Le câblage pour cette partie du projet se trouve sous l'expérience 6 dans le guide d'expérience. Aux fins de la maison intelligente, les LED et leurs fils de connexion trouvés dans l'expérience 6 n'ont pas besoin d'être inclus.

Étape 3: Deuxième cellule photoélectrique

Deuxième cellule photoélectrique
Deuxième cellule photoélectrique
  • La deuxième cellule photoélectrique sert de détecteur de mouvement pour le système de sécurité de la maison intelligente.
  • Le capteur n'est utilisé que lorsque le système est mis en mode « Absent » comme décrit à l'étape précédente.
  • Si la cellule photoélectrique subit une diminution de la quantité de lumière qu'elle reçoit, elle la reconnaît comme un mouvement à l'intérieur de la maison.
  • La configuration de cette partie du projet se trouve sous l'expérience 7 dans le guide d'expérience SIK. Cependant, seule la cellule photoélectrique et ses fils de connexion doivent être inclus dans le câblage.

Étape 4: LED RVB

  • La LED RVB est utilisée conjointement avec le mini interrupteur d'alimentation et la deuxième cellule photoélectrique pour le système de sécurité de la maison intelligente.
  • Les trois couleurs différentes sont utilisées comme indicateurs pour le résident de la maison intelligente.
  • Lorsque le système est placé en mode 'Home', la LED devient bleue. Lorsque le système est placé en mode « Absent », la LED devient verte. Lorsque la photocellule utilisée comme détecteur de mouvement est déclenchée, le voyant clignote en rouge.
  • Le câblage de la LED RVB se trouve dans l'expérience 3 du Guide d'expérimentation SIK.

Étape 5: Capteur de température

  • Le capteur de température est un élément majeur de la conservation de l'énergie dans la maison intelligente.
  • Le résident est en mesure d'entrer une température souhaitée pour sa maison lorsque la maison intelligente est en cours d'utilisation.
  • Le capteur de température est la façon dont le système sait à quelle distance la température réelle est de la température souhaitée.
  • La configuration du capteur de température se trouve dans l'expérience 9 du Guide d'expérimentation SIK.

Étape 6: Motoréducteur DAGU

Motoréducteur DAGU
Motoréducteur DAGU
  • Le moteur permet à la maison intelligente de réguler la température dans la maison en fonction de la température souhaitée et des lectures du capteur de température.
  • Agissant comme l'unité AC dans la maison, le moteur tournera à différentes vitesses en fonction de la valeur de la température réelle supérieure à la température souhaitée. Plus la différence est élevée, plus le moteur tourne vite.
  • Le câblage du moteur se trouve dans le guide d'expérience sous l'expérience 11.

Étape 7: Coder

  • Le code de la maison intelligente comprend plusieurs interfaces utilisateur qui permettent au résident de comprendre facilement son fonctionnement et de modifier facilement les paramètres.
  • Avec le système de maison intelligente, le résident recevra une alerte par e-mail si le détecteur de mouvement est déclenché pendant son absence.
  • La seule modification à apporter consiste à insérer les informations relatives à l'e-mail de l'expéditeur et à l'adresse e-mail du destinataire.

effacer un; effacer s; effacer m; clc; ferme tout; % Effacer les variables arduino et servo afin qu'elles puissent être redéfinies à chaque fois afin que le code s'exécute efficacement ("effacer m" est nécessaire pour que l'une des boucles while fonctionne correctement)a = arduino(); % Définir la variable arduino

s = servo(a, 'D6'); % Réglez la variable d'asservissement

% Initialiser les variables de courrier électronique pour le courrier électronique d'avertissement du système de sécurité

emails = {'insérer l'adresse du destinataire'}; % Tableau d'e-mails auxquels envoyer l'e-mail de sécurité

% Paramètres de préférence d'e-mail nécessaires à l'utilisation d'un Gmail pour envoyer des e-mails à partir de

setpref('Internet', 'E_mail', 'adresse e-mail de l'expéditeur');

setpref('Internet', 'SMTP_Username', 'nom de l'expéditeur');

setpref('Internet', 'SMTP_Password', 'mot de passe de l'expéditeur');

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');

% Objet de l'e-mail et variables de texte

subj = 'Alerte d'intrusion à votre domicile';

text = 'Bonjour, Ceci est votre système de sécurité Smart Home vous informant qu'un mouvement a été détecté à l'extérieur de votre maison. Nous avons pris les mesures nécessaires et contacté les autorités pour vous. Être prudent.';

bien que vrai

prompt = {'Entrez la température de la maison désirée (entre 65F et 85F):'}; % Invite pour le menu de saisie utilisateur

dlgtitle = 'Sélection de température'; % Titre du menu de saisie utilisateur

dim = [1 30]; % Dimensions pour le menu de saisie utilisateur

definput = {'72'}; % Entrée par défaut qui s'affiche lorsque le menu est ouvert pour la première fois

tempsel_array = inputdlg(invite, dlgtitle, dims, definput); % Menu contextuel de saisie de l'utilisateur qui enregistrera le nombre saisi dans un tableau

if ~isempty(tempsel_array) % Si le tableau n'est PAS vide

tempsel_char = cell2mat(tempsel_array); % Convertir le tableau en chaîne de caractères

tempsel = str2double(tempsel_char); % Convertir la chaîne de caractères en nombres

choseSpeakWrite(chID, tempsel, 'WriteKey', writeKey, 'Champs', 1); % Écrivez la température sélectionnée sur votre canal ThingSpeak

break % Pause de la boucle while pour que le menu ne s'affiche pas plusieurs fois

sinon % Si l'utilisateur clique sur annuler au lieu de saisir une température

msg1 = msgbox('Aucune température sélectionnée, par défaut à 85F', 'Avertissement !'); % Message affiché à l'utilisateur après avoir cliqué sur annuler

attendre(msg1); % Attendez que la boîte de message se ferme avant de continuer

tempsel = 85; % Réglez la température à ce qui a été indiqué dans la boîte de message

choseSpeakWrite(chID, tempsel, 'WriteKey', writeKey, 'Champs', 1); % Écrivez la température sélectionnée sur votre canal ThingSpeak

break % Pause de la boucle while pour que le menu ne s'affiche pas plusieurs fois

finir

finir

bien que vrai

ID d'enfant = 745517; % ID de canal ThingSpeak

writeKey = 'G9XOQTP8KOVSCT0N'; % Clé pour accéder au canal ThingSpeak

% Initialiser les capteurs pour récupérer les données

tempread = readVoltage(a, 'A3'); % Lire la tension du capteur de température

lightl1 = readVoltage(a, 'A2'); % Niveau de lumière pour la photorésistance allant à la LED rouge

lightl2 = readVoltage(a, 'A5'); % Niveau de lumière pour la photorésistance allant au système de sécurité

switchv = readVoltage(a, 'A0'); % Valeur pour le commutateur

% Convertir les données de température de la tension en degrés Fahrenheit

tempC = (tempread - 0,5) * 100; % Convertir la tension en température en Celsius

tempF = (tempC * 9/5) + 32; % Convertir la température en Celsius en température en Fahrenheit

% Initialiser les numéros de broche pour la LED multicolore

redp = 'D9'; % Broche pour la lumière rouge de la LED

vertp = 'D10'; % Broche pour la lumière verte de la LED

bleup = 'D11'; % Pin pour la lumière bleue de la LED

si tempsel < tempF % Si la température sélectionnée est supérieure à la température ambiante

écriturePosition(s, 1); % Le servo commencera à bouger

pause(10) % Le servo continuera de tourner pendant 10 secondes pour indiquer que le courant alternatif s'éteindra après un laps de temps spécifié

écriturePosition(s, 0); % Éteignez le ventilateur dans le but de continuer le code sans ventilateur allumé

tempsel = 150; % Modifiez la valeur de température pour sortir de la boucle après l'arrêt du ventilateur, encore une fois dans le seul but de continuer le code

finir

if lightl1 <= 3 % Si la première photorésistance détecte un faible niveau de luminosité

writeDigitalPin(a, 'A1', 1); % Allumez la LED rouge qui représente les lumières extérieures

sinon % Si le niveau de luminosité est à nouveau élevé

writeDigitalPin(a, 'A1', 0); % Éteignez la LED rouge lorsque le niveau de lumière est à nouveau suffisamment élevé

finir

si switchv > 3 % Si le switch est allumé

A = exist('m', 'var'); % Vérifiez l'existence de la variable 'm', cela initialisera la boucle while et permettra de la rompre lorsqu'un élément de menu est sélectionné (c'est pourquoi clear m doit être fait au début du code)

tandis que A==0 % La boucle s'exécutera jusqu'à ce que la variable 'm' existe

menutext = 'Dans quel mode de sécurité souhaitez-vous entrer ?'; % Texte pour le menu contextuel de sécurité

choix = {'Domicile', 'Absent'}; % Choix pour le menu contextuel de sécurité

m = menu(texte de menu, choix); % Menu contextuel pour les modes du système de sécurité

break % Garantit que la boucle while est rompue afin que le menu ne s'affiche pas plusieurs fois

finir

si m == 1 % Si le mode 'Home' est sélectionné

writeDigitalPin(a, bluep, 1); % Allumez uniquement la lumière bleue dans la LED qui change de couleur

writeDigitalPin(a, redp, 0);

writeDigitalPin(a, greenp, 0);

elseif m == 2 % Si le mode 'Absent' est sélectionné

writeDigitalPin(a, bluep, 0);

writeDigitalPin(a, redp, 0);

writeDigitalPin(a, greenp, 1); % Allumez uniquement le voyant vert de la LED à changement de couleur

if lightl2 <= 3 % Si le niveau de lumière dans la deuxième photorésistance est faible, représentant un mouvement détecté par le système de sécurité

sendmail (e-mails, envoi, texte); % Envoyer un e-mail avec les propriétés d'e-mail précédemment définies writeDigitalPin(a, greenp, 0); % Flash couleur rouge allumé et éteint 2 fois

writeDigitalPin(a, redp, 1);

pause (0,3)

writeDigitalPin(a, redp, 0);

pause (0,3)

writeDigitalPin(a, redp, 1);

pause (0,3)

writeDigitalPin(a, redp, 0);

pause (0,3)

writeDigitalPin(a, redp, 1); % Terminez en rouge fixe après avoir clignoté pour indiquer qu'il y a un mouvement jusqu'à ce que le niveau de lumière remonte

msg2 = msgbox('Intrus détecté par le système de sécurité, un email a été envoyé aux propriétaires pour les informer.', 'ATTENTION !'); % Boîte de message pour informer l'utilisateur du mouvement et pour informer de l'e-mail envoyé waitfor(msg2) % Attendez que la boîte de message se ferme avant de continuer

autre

writeDigitalPin(a, greenp, 1); % Une fois que le niveau de lumière a de nouveau augmenté, il redevient vert

finir

finir

elseif switchv < 3,3 % Si le switch est éteint

writeDigitalPin(a, bluep, 0); % Éteignez complètement la LED pour indiquer que le système de sécurité est éteint

writeDigitalPin(a, redp, 0);

writeDigitalPin(a, greenp, 0);

finir

finir

Conseillé: