Note
Bonjour et bienvenue dans la Communauté Facebook des passionnés de Raspberry Pi, Arduino et ESP32 de SunFounder ! Plongez plus profondément dans l’univers des Raspberry Pi, Arduino et ESP32 avec d’autres passionnés.
Pourquoi rejoindre ?
Support d’experts : Résolvez les problèmes après-vente et les défis techniques avec l’aide de notre communauté et de notre équipe.
Apprendre et partager : Échangez des astuces et des tutoriels pour améliorer vos compétences.
Aperçus exclusifs : Accédez en avant-première aux annonces de nouveaux produits et aux aperçus.
Réductions spéciales : Profitez de réductions exclusives sur nos produits les plus récents.
Promotions festives et cadeaux : Participez à des cadeaux et des promotions de vacances.
👉 Prêt à explorer et à créer avec nous ? Cliquez [Ici] et rejoignez-nous aujourd’hui !
3.1.7 Moniteur de Surchauffe
Note
Selon la version de votre kit, identifiez si vous disposez d’un ADC0834 ou d’un MCP3008 et suivez la section correspondante.
Introduction
- Vous pouvez vouloir créer un dispositif de surveillance de la surchauffe applicable à diverses
- situations, par exemple, dans une usine, si nous voulons avoir une alarme et l’arrêt automatique
- de la machine en temps opportun en cas de surchauffe du circuit. Dans ce projet, nous utiliserons
une thermistance, un joystick, un buzzer, une LED et un écran LCD pour réaliser un dispositif intelligent de surveillance de la température dont le seuil est ajustable.
Composants Nécessaires
Pour ce projet, nous avons besoin des composants suivants.
Il est définitivement pratique d’acheter un kit complet, voici le lien :
Nom |
ÉLÉMENTS DANS CE KIT |
LIEN |
|---|---|---|
Kit Raphael |
337 |
Vous pouvez également les acheter séparément à partir des liens ci-dessous.
INTRODUCTION DES COMPOSANTS |
LIEN D’ACHAT |
|---|---|
- |
|
- |
|
- |
Schéma de Câblage
T-Board Name |
physical |
wiringPi |
BCM |
GPIO17 |
Pin 11 |
0 |
17 |
GPIO18 |
Pin 12 |
1 |
18 |
GPIO27 |
Pin 13 |
2 |
27 |
GPIO22 |
Pin15 |
3 |
22 |
GPIO23 |
Pin16 |
4 |
23 |
GPIO24 |
Pin18 |
5 |
24 |
SDA1 |
Pin 3 |
||
SCL1 |
Pin 5 |
Procédures expérimentales
Étape 1 : Construisez le circuit.
Étape 2 : Accédez au dossier du code.
cd ~/raphael-kit/c/3.1.7/
Étape 3 : Compilez le code.
gcc 3.1.7_OverheatMonitor.c -lm -lwiringPi
Étape 4 : Exécutez le fichier exécutable.
sudo ./a.out
Pendant l’exécution du code, la température actuelle et le seuil de haute température 40 sont affichés sur le I2C LCD1602. Si la température actuelle dépasse le seuil, le buzzer et la LED se déclenchent pour vous alerter.
- Joystick permet d’ajuster le seuil de haute température en appuyant dessus. En déplaçant le
Joystick dans la direction de l’axe X ou Y, vous pouvez augmenter ou diminuer le seuil de haute température actuel. Appuyez à nouveau sur le Joystick pour réinitialiser le seuil à sa valeur initiale.
Note
Si un message d’erreur
wiringPi.h: Aucun fichier ou dossier de ce typeapparaît, veuillez vous référer à Installer et vérifier WiringPi.Si vous recevez l’erreur
Impossible d'ouvrir le périphérique I2C : Aucun fichier ou dossier de ce type, vous devez vous référer à Configuration I²C pour activer I2C et vérifier si le câblage est correct.Si le code et le câblage sont corrects mais que l’écran LCD n’affiche toujours rien, vous pouvez ajuster le potentiomètre à l’arrière pour augmenter le contraste.
Explication du code
int get_joystick_value(){
uchar x_val;
uchar y_val;
x_val = get_ADC_Result(1);
y_val = get_ADC_Result(2);
if (x_val > 200){
return 1;
}
else if(x_val < 50){
return -1;
}
else if(y_val > 200){
return -10;
}
else if(y_val < 50){
return 10;
}
else{
return 0;
}
}
Cette fonction lit les valeurs de X et Y. Si X>200, elle retournera
1 ; X<50, elle retournera -1 ; Y>200, elle retournera
-10, et Y<50, elle retournera 10.
void upper_tem_setting(){
write(0, 0, "Upper Adjust:");
int change = get_joystick_value();
upperTem = upperTem + change;
char str[6];
snprintf(str,3,"%d",upperTem);
write(0,1,str);
int len;
len = strlen(str);
write(len,1," ");
delay(100);
}
Cette fonction permet de régler le seuil et de l’afficher sur le I2C LCD1602.
double temperature(){
unsigned char temp_value;
double Vr, Rt, temp, cel, Fah;
temp_value = get_ADC_Result(0);
Vr = 5 * (double)(temp_value) / 255;
Rt = 10000 * (double)(Vr) / (5 - (double)(Vr));
temp = 1 / (((log(Rt/10000)) / 3950)+(1 / (273.15 + 25)));
cel = temp - 273.15;
Fah = cel * 1.8 +32;
return cel;
}
Lire la valeur analogique de CH0 (thermistance) de ADC0834 et la convertir ensuite en valeur de température.
void monitoring_temp(){
char str[6];
double cel = temperature();
snprintf(str,6,"%.2f",cel);
write(0, 0, "Temp: ");
write(6, 0, str);
snprintf(str,3,"%d",upperTem);
write(0, 1, "Upper: ");
write(7, 1, str);
delay(100);
if(cel >= upperTem){
digitalWrite(buzzPin, HIGH);
digitalWrite(LedPin, HIGH);
}
else if(cel < upperTem){
digitalWrite(buzzPin, LOW);
digitalWrite(LedPin, LOW);
}
}
Lorsque le code s’exécute, la température actuelle et le seuil de haute température 40 sont affichés sur le I2C LCD1602. Si la température actuelle dépasse le seuil, le buzzer et la LED s’activent pour vous alerter.
int main(void)
{
setup();
int lastState =1;
int stage=0;
while (1)
{
int currentState = digitalRead(Joy_BtnPin);
if(currentState==1 && lastState == 0){
stage=(stage+1)%2;
delay(100);
lcd_clear();
}
lastState=currentState;
if (stage==1){
upper_tem_setting();
}
else{
monitoring_temp();
}
}
return 0;
}
La fonction main() contient tout le processus du programme comme suit :
1) Lorsque le programme démarre, la valeur initiale de stage est 0, et la température actuelle ainsi que le seuil de haute température 40 sont affichés sur le I2C LCD1602. Si la température actuelle dépasse le seuil, le buzzer et la LED s’activent pour vous alerter.
2) Appuyez sur le joystick, et stage passera à 1 vous permettant d’ajuster le seuil de haute température. En déplaçant le joystick dans la direction de l’axe X ou Y, vous pouvez augmenter ou diminuer le seuil actuel. Appuyez à nouveau sur le joystick pour réinitialiser le seuil à sa valeur initiale.
Image du phénomène