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

../_images/mcp3008_and_adc0834.jpg

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.

../_images/list_Overheat_Monitor.png

Il est définitivement pratique d’acheter un kit complet, voici le lien :

Nom

ÉLÉMENTS DANS CE KIT

LIEN

Kit Raphael

337

Raphael Kit

Vous pouvez également les acheter séparément à partir des liens ci-dessous.

INTRODUCTION DES COMPOSANTS

LIEN D’ACHAT

Carte d’extension GPIO

ACHETER

Plaque d’expérimentation (Breadboard)

ACHETER

Fils de Liaison

ACHETER

Résistance

ACHETER

LED

ACHETER

Module Joystick

-

ADC0834

-

Transistor

ACHETER

LCD1602 I2C

ACHETER

Thermistance

ACHETER

Buzzer

-

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

../_images/Schematic_three_one8.png

Procédures expérimentales

Étape 1 : Construisez le circuit.

../_images/image258.png

É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 type apparaî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

../_images/image259.jpeg