Table des matières:
2025 Auteur: John Day | [email protected]. Dernière modifié: 2025-01-13 06:57
Le Home System 3000 est un appareil qui utilise un Arduino, un capteur de température, un buzzer piézo, un détecteur optique/phototransistor et un servo pour afficher les moyens d'améliorer l'efficacité énergétique de la maison.
Étape 1: Capteur de température
· Faites passer vos fils d'alimentation et de terre à partir de
le micro contrôleur sur le côté de la planche à pain
· Placez le capteur de température dans la planche à pain et acheminez les fils d'alimentation et de terre correspondants en conséquence
· Notez que le capteur de température a trois broches et que la broche du milieu a un fil qui part du port "A0".
· Code sonde de température:
réponse = questdlg('Veuillez exécuter le code de démarrage arduino et servo', 'réponse', 'Ok', 'Ok')
prompt = 'Appuyez sur n'importe quelle touche pour commencer'
pause
prompt1 = 'Régler la température minimale'
x = entrée (invite1)
prompt2 = 'Définir la température maximale'
y = entrée (invite2)
prompt3 = 'appuyez sur n'importe quelle touche pour commencer'
pause
chiffre
h = ligne animée;
hache = gca;
ax. YGrid = 'on';
ax. YLim = [65 85];
arrêt = faux;
startTime = datetime('maintenant');
tandis que ~ arrête
% Lire la valeur de tension actuelle
v = readTension(a, 'A0');
% Calculer la température à partir de la tension (basé sur la fiche technique)
TempC = (v - 0,5)*100;
TempF = 9/5*TempC + 32;
% Obtenir l'heure actuelle
t = datetime('maintenant') - startTime;
% Ajouter des points à l'animation
addpoints(h, datenum(t), TempF)
% Mettre à jour les axes
ax. XLim = datenum([t-secondes(15) t]);
datetick('x', 'garder les limites')
dessiner
% Vérifier la condition d'arrêt
stop = readDigitalPin(a, 'D12');
Étape 2: Sonnerie
· Fil dans le buzzer qui sera utilisé pour signaler une lecture de température extrêmement élevée ou extrêmement basse
· Aucun fil ne passe de la colonne positive au côté positif du buzzer
· Au lieu de cela, un fil passe du côté positif du buzzer à un port étiqueté "11"
Ceci sera utilisé plus tard pour appeler l'emplacement du buzzer dans le code écrit.
· Code pour buzzer:
si TempF >= y
disp('ferme la porte il fait chaud')
playTone(a, 'D11', 500, 1)
sinon si TempF <= x
disp('ferme la porte, il fait froid')
playTone(a, 'D11', 250, 1)
finir
finir
Étape 3: Détecteur optique/Phototransistor
· Ce capteur nécessite des résistances contrairement aux autres
· Assurez-vous que les quatre broches du capteur sont incluses dans la boucle après avoir branché les fils
· Le capteur détecte un changement de lumière, représentant un mouvement, et l'enregistre en tant qu'entrée
· Code pour détecteur optique/phototransistor:
effacer un
a = arduino('/dev/tty.usbserial-DN01DVI2', 'Uno', 'Bibliothèques', 'Servo');
invite = 'Définir le seuil du niveau de luminosité'
z = entrée (invite)
lightLevel = 0
tandis que lightLevel ~= -1
lightLevel = readVoltage (a, 'A1')
si lightLevel >= z
answer = questdlg('voudriez-vous modifier AC ?', 'Oui', 'Non')
changer de réponse
cas 'Oui'
answer2 = questdlg('Monter ou baisser la climatisation ?', 'Réponse', 'Descente', 'Haut', 'Haut')
changer de réponse2
cas 'Bas'
s = servo(a, 'D10');
pour l'angle = 0:.1:.5
écriturePosition(s, angle);
current_position = readPosition(s);
position_actuelle = position_actuelle * 180;
% imprimer la position actuelle du servomoteur
fprintf('La position actuelle est %d\n', current_position);
% un petit retard est nécessaire pour que le servo puisse être positionné à la
% d'angle qui lui est dit.
pause(2);
finir
% ramener le moteur à la position d'angle 0
écriturePosition(s, 0);
effacer m
prompt = 'Appuyez sur n'importe quelle touche pour continuer'
questdlg('AC refusé', 'réponse', 'Ok', 'Ok')
cas 'Haut'
s = servo(a, 'D10');
pour l'angle =.5:1:1
écriturePosition(s, angle);
current_position = readPosition(s);
position_actuelle = position_actuelle * 180;
% imprimer la position actuelle du servomoteur
fprintf('La position actuelle est %d\n', current_position);
% un petit retard est nécessaire pour que le servo puisse être positionné à la
% d'angle qui lui est dit.
pause(2);
finir
Étape 4: Servomoteur
· Le servo représente
un climatiseur, et est une sortie de l'entrée de détection de mouvement
· Il nécessite un fil positif, un fil de terre et un fil du port "D9" au servo
· Code pour servo:
% ramener le moteur à la position d'angle 0
écriturePosition(s, 0);
effacer m
prompt = 'Appuyez sur n'importe quelle touche pour continuer'
questdlg('AC est arrivé', 'réponse', 'Ok', 'Ok')
finir
finir
pause
Pause
finir
finir
*Note spéciale: une partie du code du servomoteur est intégrée au code du détecteur optique/phototransistor.