Utiliser une sonde de température (ds18b20)


Brancher la sonde

Sonde :
  • fil rouge : power
  • fil noir : "masse"
  • fil jaune : data

    Schéma :
    1. Mettre une résistance de 4,7 KΩ entre le fil rouge et le fil jaune de la sonde
    2. PIN 1 (3V3 power) : fil rouge de la sonde
    3. PIN 6 (GND) : fil noir de la sonde
    4. PIN 7 (GPIO 4) : fil jaune de la sonde

    Configuration

    pgd@rpi01:~ $ sudo nano /etc/modules                  

    w1-therm                                
    w1-gpio pullup=1                        

    pgd@rpi01:~ $ modprobe w1-therm                       

    pgd@rpi01:~ $ modprobe w1-gpio pullup=1               


    Rechercher l'ID de la sonde

    pgd@rpi01:~ $ cd /sys/bus/w1/devices                  

    pgd@rpi01:~ $ ls-al                                   


    Il faut repérer le répertoire commençant par "28-xxx"
    Dans mon cas : 28-3c01f095abf5 ou 28-03213194e9d4

    Affichage du fichier contenant la température

    pgd@rpi01:~ $ cd /sys/bus/w1/devices/28-3c01f095abf5  

    pgd@rpi01:~ $ cat w1_slave                            


    La température correspond au nombre après "t=", elle est en millième de °C

    En cas de problème

    S'il n'y a pas de fichier "28-xxx"
    pgd@rpi01:~ $ sudo nano /boot/config.txt              

    dtoverlay=w1-gpio                       

    pgd@rpi01:~ $ sudo reboot                             


    Affichage de la température sur une page web (PHP)

    <?php                                   
                                            
    //----- Id de la sonde                  
    $sonde_id = "28-3c01f095abf5";          
                                            
    //----- Un peu de html                  
    echo "<html>";                          
    echo "<head>";                          
    echo "<meta name='viewport' content='width=device-width, user-scalable=no'>";
                                            
    echo "<style>";                         
    echo "span { font-family:arial; font-size:32px; }";
    echo "</style>";                        
                                            
    echo "</head>";                         
                                            
    echo "<body>";                          
    echo "<center>";                        
                                            
    //----- Fichier avec la température à lire
    $file = "/sys/bus/w1/devices/" . $sonde_id . "/w1_slave";
                                            
    //-- Lecture du fichier                 
    $lines = file($file);                   
                                            
    //-- Recupération de la 2ème ligne    
    $temp = explode('=', $lines[1]);        
                                            
    //----- Mise en forme de la température (1 décimale)
    $temp = number_$temp[1] / 1001;         
                                            
    //----- On affiche la température      
    echo "<span>";                          
    echo "Température<br>";                
    echo "<b>" . $temp . " °C</b>";        
    echo "</span>";                         
                                            
    echo "</center>";                       
    echo "</body>";                         
    echo "</html>";                         
    ?>