Serveur d'impression

Serveur Web de capteur ESP8266 DS18B20 IDE Arduino (Simple, Multiple) – Serveur d’impression

Le 12 octobre 2019 - 20 minutes de lecture

Il s'agit d'un guide détaillé sur le capteur de température DS18B20 avec ESP8266 utilisant Arduino IDE. Nous verrons comment câbler le capteur, installer les bibliothèques requises et écrire le code permettant d’obtenir les lectures du capteur d’un ou de plusieurs capteurs. Enfin, nous allons créer un serveur Web simple pour afficher les lectures du capteur.

ESP8266 avec capteur de température DS18B20 utilisant Arduino IDE

Tout au long de ce tutoriel, nous aborderons les sujets suivants:

  1. Lire la température d'un capteur de température DS18B20;
  2. Lire la température de plusieurs capteurs de température DS18B20;
  3. Affiche les lectures du capteur DS18B20 sur un serveur Web.

Vous aimerez peut-être aussi la lecture d'autres guides DS18B20:

En savoir plus sur l'ESP8266 avec notre cours: Domotique utilisant l'ESP8266.

Présentation du capteur de température DS18B20

Le capteur de température DS18B20 est un capteur de température numérique à un fil. Cela signifie qu'il suffit d'une ligne de données (et de GND) pour communiquer avec votre ESP8266.

Il peut être alimenté par une source d'alimentation externe ou par la ligne de données (appelée «mode parasite»), ce qui élimine le recours à une source d'alimentation externe.

DS18B20 Broches de capteur de température

Chaque capteur de température DS18B20 possède un code série unique de 64 bits. Cela vous permet de connecter plusieurs capteurs au même fil de données. Ainsi, vous pouvez obtenir la température de plusieurs capteurs en utilisant un seul GPIO.

Le capteur de température DS18B20 est également disponible en version étanche.

Capteur de température DS18B20 Version étanche

Voici un résumé des caractéristiques les plus pertinentes du capteur de température DS18B20:

  • Communique sur un bus monofil
  • Gamme d'alimentation: 3.0V à 5.5V
  • Plage de température de fonctionnement: -55ºC à + 125ºC
  • Précision +/- 0.5ºC (entre -10ºC et 85ºC)

Pour plus d'informations, consultez la fiche technique DS18B20.

Pièces requises

Pour compléter ce tutoriel, vous avez besoin des composants suivants:

Vous pouvez utiliser les liens précédents ou aller directement à MakerAdvisor.com/tools pour trouver toutes les pièces de vos projets au meilleur prix!

ESP8266 avec schéma de principe DS18B20

Comme mentionné précédemment, le capteur de température DS18B20 peut être alimenté via la broche VDD (mode normal), ou il peut tirer son énergie de la ligne de données (mode parasite). Vous pouvez choisir l'un ou l'autre mode.

Mode Parasite

Capteur de température DS18B20 avec schéma de câblage du câblage en mode parasite ESP8266

Mode normal

Capteur de température DS18B20 avec ESP8266 Schéma de câblage du mode normal

Remarque: Dans ce tutoriel, nous connectons la ligne de données DS18B20 à GPIO 4, mais vous pouvez utiliser n’importe quel autre GPIO approprié.

Lisez notre Guide de référence de l’ESP8266 GPIO pour en savoir plus sur les GPIO de l’ESP8266.

Remarque: Si vous utilisez un ESP-01, GPIO 2 est la broche la plus appropriée pour se connecter à la broche de données DS18B20.

Préparer votre IDE Arduino

Nous allons programmer l’ESP8266 en utilisant Arduino IDE. Assurez-vous donc que le module complémentaire ESP8266 est installé avant de poursuivre:

Installation de bibliothèques pour DS18B20

Pour interfacer avec le capteur de température DS18B20, vous devez installer la bibliothèque One Wire de Paul Stoffregen et la bibliothèque Dallas Temperature. Suivez les étapes suivantes pour installer ces bibliothèques.

1. Ouvrez votre IDE Arduino et accédez à Esquisser > Inclure la bibliothèque > Gérer les bibliothèques. Le gestionnaire de bibliothèque devrait s'ouvrir.

2. Tapez “un fil”Dans la zone de recherche et installez la bibliothèque OneWire de Paul Stoffregen.

Installer la bibliothèque OneWire de Paul Stoffregen dans Arduino IDE

3. Ensuite, recherchez “Dallas”Et installez la bibliothèque Dallas Temperature de Miles Burton.

Installer la bibliothèque DallasTemperature de Miles Burton dans Arduino IDE

Après avoir installé les bibliothèques, redémarrez votre IDE Arduino.


Code (DS18B20 simple)

Après avoir installé les bibliothèques requises, vous pouvez télécharger le code suivant sur l'ESP8266. Le code lit la température à partir du capteur de température DS18B20 et affiche les lectures sur le moniteur série Arduino IDE.

/ *********
  Rui Santos
  Détails complets du projet sur https://RandomNerdTutorials.com
********* /

#comprendre 
#comprendre 

// GPIO auquel le DS18B20 est connecté
const int oneWireBus = 4;

// Configuration d'une instance OneWire pour communiquer avec tout périphérique OneWire
OneWire oneWire (oneWireBus);

// Passer notre référence oneWire au capteur de température Dallas
Sondes de température Dallas (& oneWire);

void setup() 
  // Démarrer le moniteur série
  Serial.begin (115200);
  // Démarrer le capteur DS18B20
  capteurs.begin ();


boucle vide () 
  sensors.requestTemperatures ();
  température de flottementC = sensors.getTempCByIndex (0);
  température de flottement F = sensors.getTempFByIndex (0);
  Serial.print (temperatureC);
  Serial.println ("ºC");
  Serial.print (temperatureF);
  Serial.println ("ºF");
  délai (5000);

Voir le code brut

Il existe de nombreuses façons d'obtenir la température à l'aide de capteurs de température DS18B20. Toutefois, si vous n’utilisez qu’un seul capteur, c’est l’un des moyens les plus simples et les plus simples.

Capteur de température unique OneWire DS18B20 avec ESP32 et IDE Arduino sur planche à pain

Comment fonctionne le code

Commencez par inclure le OneWire et le DallasTempérature bibliothèques.

#comprendre 
#comprendre 

Créez les instances nécessaires pour le capteur de température. Le capteur de température est connecté à GPIO 4.

// GPIO auquel le DS18B20 est connecté
const int oneWireBus = 4;
// Configuration d'une instance OneWire pour communiquer avec tout périphérique OneWire
OneWire oneWire (oneWireBus);
// Passer notre référence oneWire au capteur de température Dallas
Sondes de température Dallas (& oneWire);

dans le installer(), initialisez le moniteur série à un débit en bauds de 115200.

Serial.begin (115200);

Initialisez le capteur de température DS18B20:

capteurs.begin ();

Avant d’obtenir la température, vous devez appeler le requestTempératures () méthode.

sensors.requestTemperatures (); 

Ensuite, obtenez la température en Celsius en utilisant le bouton getTempCByIndex () méthode comme indiqué ci-dessous:

température de flottementC = sensors.getTempCByIndex (0);

Ou utilisez le getTempFByIndex () pour obtenir la température en degrés Fahrenheit.

température de flottement F = sensors.getTempFByIndex (0);

le getTempCByIndex () et le getTempFByIndex () les méthodes acceptent l'index du capteur de température. Comme nous n’utilisons qu’un seul capteur, son index est 0. Si vous souhaitez lire plusieurs capteurs, utilisez l’indice 0 pour un capteur, l’indice 1 pour un autre capteur, etc.

Enfin, imprimez les résultats dans le moniteur série.

Serial.print (temperatureC);
Serial.println ("ºC");
Serial.print (temperatureF);
Serial.println ("ºF");

De nouvelles lectures de température sont demandées toutes les 5 secondes.

délai (5000);

Manifestation

Après avoir chargé le code, ouvrez le moniteur série Arduino IDE à une vitesse de 9600 bauds. Vous devriez obtenir la température affichée en degrés Celsius et Fahrenheit:

Moniteur série IDE Arduino de lectures de température DS18B20

Obtenir la température de plusieurs capteurs de température DS18B20

Capteurs de température multiples DS18B20 OneWire avec ESP32 et Arduino IDE

Le capteur de température DS18B20 communique à l'aide d'un protocole à un fil et chaque capteur possède un code série unique de 64 bits, ce qui vous permet de lire la température de plusieurs capteurs à l'aide d'une seule broche numérique.

Schématique

Pour lire la température de plusieurs capteurs, il vous suffit de câbler toutes les lignes de données comme indiqué dans le schéma suivant:

Capteurs de température multiples DS18B20 avec schéma de câblage ESP32

Code (plusieurs DS18B20)

Ensuite, téléchargez le code suivant. Il analyse tous les appareils sur GPIO 4 et imprime la température pour chacun. Cette esquisse est basée sur l'exemple fourni par la bibliothèque DallasTemperature.

/ *********
  Rui Santos
  Détails complets du projet sur https://RandomNerdTutorials.com
********* /

#comprendre 
#comprendre 

// Le fil de données est branché à GPIO 4
#define ONE_WIRE_BUS 4

// Configuration d'une instance OneWire pour communiquer avec tout périphérique OneWire (pas uniquement les CI de température Maxim / Dallas)
OneWire oneWire (ONE_WIRE_BUS);

// Passons notre référence oneWire à Dallas Temperature.
Sondes de température Dallas (& oneWire);

// Nombre d'appareils de température trouvés
int numberOfDevices;

// Nous utiliserons cette variable pour stocker une adresse de périphérique trouvée
DeviceAddress tempDeviceAddress;

void setup()
  // démarre le port série
  Serial.begin (115200);
  
  // Démarrer la bibliothèque
  capteurs.begin ();
  
  // Compter un nombre d'appareils sur le fil
  numberOfDevices = sensors.getDeviceCount ();
  
  // localiser les appareils sur le bus
  Serial.print ("Appareils de localisation ...");
  Serial.print ("Trouvé");
  Serial.print (numberOfDevices, DEC);
  Serial.println ("devices.");

  // Boucle à travers chaque périphérique, adresse d'impression
  pour (int i = 0; i <numberOfDevices; i ++) 
    // Recherche l'adresse sur le fil
    if (sensors.getAddress (tempDeviceAddress, i)) 
      Serial.print ("périphérique trouvé");
      Serial.print (i, DEC);
      Serial.print ("avec adresse:");
      printAddress (tempDeviceAddress);
      Serial.println ();
     autre 
      Serial.print ("Appareil fantôme détecté à");
      Serial.print (i, DEC);
      Serial.print ("mais l'adresse n'a pas pu être détectée. Vérifiez l'alimentation et le câblage");
    
  


boucle vide () 
  sensors.requestTemperatures (); // Envoyer la commande pour obtenir les températures
  
  // boucle en boucle sur chaque appareil, impression des données de température
  pour (int i = 0; i <numberOfDevices; i ++) 
    // Recherche l'adresse sur le fil
    if (sensors.getAddress (tempDeviceAddress, i)) 
      // Affiche l'identifiant de l'appareil
      Serial.print ("Température pour le périphérique:");
      Serial.println (i, DEC);
      // Imprimer les données
      float tempC = sensors.getTempC (tempDeviceAddress);
      Serial.print ("Temp C:");
      Serial.print (tempC);
      Serial.print ("Temp F:");
      Serial.println (DallasTemperature :: toFahrenheit (tempC)); // Convertit tempC en Fahrenheit
    
  
  délai (5000);


// fonction pour imprimer une adresse de périphérique
void printAddress (DeviceAddress deviceAddress) 
  pour (uint8_t i = 0; i <8; i ++) 
    if (deviceAddress[i] <16) Serial.print ("0");
      Serial.print (deviceAddress[i], HEX);
  

Voir le code brut

Comment fonctionne le code

Le code utilise plusieurs méthodes utiles pour gérer plusieurs capteurs DS18B20.

Vous utilisez le getDeviceCount () méthode permettant d’obtenir le nombre de capteurs DS18B20 sur la ligne de données.

numberOfDevices = sensors.getDeviceCount ();

le getAddress () méthode trouve les adresses de capteurs:

if (sensors.getAddress (tempDeviceAddress, i)) {

L'adresse est unique pour chaque capteur. Ainsi, chaque capteur peut être identifié par son adresse.

Ensuite, vous utilisez le getTempC () méthode qui accepte en argument l'adresse du périphérique. Avec cette méthode, vous pouvez obtenir la température d’un capteur spécifique:

float tempC = sensors.getTempC (tempDeviceAddress);

Pour obtenir la température en degrés Fahrenheit, vous pouvez utiliser le bouton getTemF (). Vous pouvez également convertir la température en degrés Celsius en degrés Fahrenheit comme suit:

DallasTempérature :: toFahrenheit (tempC)

Manifestation

Après avoir chargé le code, ouvrez votre moniteur série à une vitesse de transmission de 115200 bauds. Tous les relevés de vos capteurs doivent s'afficher comme indiqué ci-dessous:

ESP8266 Capteurs de température DS18B20 multiples Moniteur en série Imprimer les lectures

Afficher les relevés de température du DS18B20 sur un serveur Web

Pour créer le serveur Web, nous allons utiliser la bibliothèque ESPAsyncWebServer, qui offre un moyen simple de créer un serveur Web asynchrone. La construction d'un serveur Web asynchrone présente plusieurs avantages. Nous vous recommandons de consulter rapidement la documentation de la bibliothèque sur sa page GitHub.

Installation de la bibliothèque ESPAsyncWebServer

La bibliothèque ESPAsyncWebServer n'est pas disponible pour l'installation dans le gestionnaire de bibliothèque Arduino IDE. Donc, vous devez l'installer manuellement.

Suivez les étapes suivantes pour installer la bibliothèque ESPAsyncWebServer:

  1. Cliquez ici pour télécharger la bibliothèque ESPAsyncWebServer. Vous devriez avoir un dossier .zip dans votre dossier Téléchargements
  2. Décompressez le dossier .zip et vous devriez obtenir ESPAsyncWebServer-master dossier
  3. Renommez votre dossier à partir de ESPAsyncWebServer-master à ESPAsyncWebServer
  4. Bouge le ESPAsyncWebServer dossier de votre dossier de bibliothèques d'installation Arduino IDE

Installation de la bibliothèque TCP ESPAsync

La bibliothèque ESPAsyncWebServer a besoin de la bibliothèque ESPAsyncTCP pour fonctionner. Suivez les étapes suivantes pour installer cette bibliothèque:

  1. Cliquez ici pour télécharger la bibliothèque ESPAsyncTCP. Vous devriez avoir un dossier .zip dans votre dossier Téléchargements
  2. Décompressez le dossier .zip et vous devriez obtenir ESPAsyncTCP-master dossier
  3. Renommez votre dossier à partir de ESPAsyncTCP-master à ESPAsyncTCP
  4. Bouge le ESPAsyncTCP dossier de votre dossier de bibliothèques d'installation Arduino IDE
  5. Enfin, rouvrez votre IDE Arduino

Code (serveur Web async DS18B20)

Ouvrez votre IDE Arduino et copiez le code suivant.

/ *********
  Rui Santos
  Détails complets du projet sur https://RandomNerdTutorials.com
********* /

// Importer les bibliothèques requises
#ifdef ESP32
  #comprendre 
  #comprendre 
#autre
  #comprendre 
  #comprendre 
  #comprendre 
  #comprendre 
  #comprendre 
#fin si
#comprendre 
#comprendre 

// Le fil de données est connecté à GPIO 4
#define ONE_WIRE_BUS 4

// Configuration d'une instance OneWire pour communiquer avec tout périphérique OneWire
OneWire oneWire (ONE_WIRE_BUS);

// Passer notre référence oneWire au capteur de température Dallas
Sondes de température Dallas (& oneWire);

// Remplacez par vos identifiants réseau
const char * ssid = "REPLACE_WITH_YOUR_SSID";
const char * password = "REPLACE_WITH_YOUR_PASSWORD";

// Créer un objet AsyncWebServer sur le port 80
Serveur AsyncWebServer (80);

String readDSTemperatureC () 
  // Appelez sensors.requestTemperatures () pour émettre une température globale et des demandes à tous les périphériques du bus.
  sensors.requestTemperatures ();
  float tempC = sensors.getTempCByIndex (0);

  if (tempC == -127.00) 
    Serial.println ("Échec de lecture du capteur DS18B20");
    revenir "--";
   autre 
    Serial.print ("Temperature Celsius:");
    Serial.println (tempC);
  
  chaîne de retour (tempC);


String readDSTemperatureF () 
  // Appelez sensors.requestTemperatures () pour émettre une température globale et des demandes à tous les périphériques du bus.
  sensors.requestTemperatures ();
  float tempF = sensors.getTempFByIndex (0);

  if (int (tempF) == -196) 
    Serial.println ("Échec de lecture du capteur DS18B20");
    revenir "--";
   autre 
    Serial.print ("Temperature Fahrenheit:");
    Serial.println (tempF);
  
  chaîne de retour (tempF);


const char index_html[] PROGMEM = R "rawliteral (


  
  
  


  

ESP DS18B20 Server

Température Celsius % TEMPERATUREC% & deg; C

Température Fahrenheit % TEMPERATUREF% & deg; F

) rawliteral "; // remplace l'espace réservé par les valeurs DHT Processeur de chaîne (const String & var)   //Serial.println(var);   if (var == "TEMPERATUREC")     retourne readDSTemperatureC ();      else if (var == "TEMPERATUREF")     retourne readDSTemperatureF ();      return String (); void setup()   // Port série à des fins de débogage   Serial.begin (115200);   Serial.println ();      // Démarrer la bibliothèque DS18B20   capteurs.begin ();      // Se connecter au Wi-Fi   WiFi.begin (ssid, mot de passe);   Serial.println ("Connexion au WiFi");   while (WiFi.status ()! = WL_CONNECTED)     retard (500);     Serial.print (".");      Serial.println ();      // Imprimer l'adresse IP locale de l'ESP   Serial.println (WiFi.localIP ());   // Route pour root / page Web   server.on ("/", HTTP_GET, [](Demande AsyncWebServerRequest *)     request-> send_P (200, "text / html", index_html, processeur);   );   server.on ("/ temperaturec", HTTP_GET, [](Demande AsyncWebServerRequest *)     request-> send_P (200, "text / plain", readDSTemperatureC (). c_str ());   );   server.on ("/ temperaturef", HTTP_GET, [](Demande AsyncWebServerRequest *)     request-> send_P (200, "text / plain", readDSTemperatureF (). c_str ());   );   // Démarrer le serveur   server.begin ();   boucle vide ()   

Voir le code brut

Insérez vos informations d'identification réseau dans les variables suivantes et le code fonctionnera immédiatement.

const char * ssid = "REPLACE_WITH_YOUR_SSID";
const char * password = "REPLACE_WITH_YOUR_PASSWORD";

Comment fonctionne le code

Dans les paragraphes suivants, nous expliquerons comment fonctionne le code. Continuez à lire si vous voulez en savoir plus ou allez à la section «Démonstration» pour voir le résultat final.

Importer des bibliothèques

Commencez par importer les bibliothèques requises.

#comprendre 
#comprendre 
#comprendre 
#comprendre 
#comprendre 
#comprendre 
#comprendre 

Instancier le capteur DS18B20

Définissez le GPIO auquel le pin de données DS18B20 est connecté. Dans ce cas, il est connecté à GPIO 4(D1).

#define ONE_WIRE_BUS 4

Instanciez les instances nécessaires à l’initialisation du capteur:

// Configuration d'une instance OneWire pour communiquer avec tout périphérique OneWire
OneWire oneWire (ONE_WIRE_BUS);

// Passer notre référence oneWire au capteur de température Dallas
Sondes de température Dallas (& oneWire);

Définir vos identifiants réseau

Insérez vos informations d'identification réseau dans les variables suivantes pour que l'ESP8266 puisse se connecter à votre réseau local.

const char * ssid = "REPLACE_WITH_YOUR_SSID";
const char * password = "REPLACE_WITH_YOUR_PASSWORD";

Créez un objet AsyncWebServer sur le port 80.

Serveur AsyncWebServer (80);

Lire les fonctions de température

Ensuite, nous créons deux fonctions pour lire la température.

le readDSTempératureC () fonction renvoie les lectures en degrés Celsius.

String readDSTemperatureC () 
  // Appelez sensors.requestTemperatures () pour émettre une température globale et des demandes à tous les périphériques du bus.
  sensors.requestTemperatures ();
  float tempC = sensors.getTempCByIndex (0);

  if (tempC == -127.00) 
    Serial.println ("Échec de lecture du capteur DS18B20");
    revenir "--";
   autre 
    Serial.print ("Temperature Celsius:");
    Serial.println (tempC);
  
  chaîne de retour (tempC);

Si le capteur ne parvient pas à obtenir une lecture valide, il renvoie -127. Nous avons donc une instruction if qui renvoie deux tirets (–-) au cas où le capteur ne parviendrait pas à obtenir les lectures.

if (tempC == -127.00) {
  Serial.println ("Échec de lecture du capteur DS18B20");
  revenir "--";

le reaDSTempératureF () function fonctionne de manière similaire mais renvoie les lectures en degrés Fahrenheit.

Les lectures sont renvoyées sous forme de type chaîne. Pour convertir un float en chaîne, utilisez la commande Chaîne() une fonction.

chaîne de retour (tempC);

Construire la page Web

L'étape suivante consiste à créer la page Web. Le HTML et le CSS nécessaires à la création de la page Web sont enregistrés sur le index_html variable.

Dans le texte HTML, nous avons TEMPERATUREC et TEMPERATUREF entre % panneaux. C'est un espace réservé pour les valeurs de température.

Cela signifie que cela % TEMPERATUREC% Le texte est comme une variable qui sera remplacée par la valeur de température réelle du capteur. Les espaces réservés sur le texte HTML doivent être compris entre % panneaux.

Nous avons expliqué en détail le fonctionnement du code HTML et CSS utilisé dans ce serveur Web dans un précédent tutoriel. Donc, si vous voulez en savoir plus, référez-vous au prochain projet:

Processeur

Maintenant, nous devons créer le processeur() fonction, qui remplacera les espaces réservés dans notre texte HTML par les valeurs de température réelles.

Processeur de chaîne (const String & var) 
  //Serial.println(var);
  if (var == "TEMPERATUREC") 
    retourne readDSTemperatureC ();
  
  else if (var == "TEMPERATUREF") 
    retourne readDSTemperatureF ();
  
  return String ();

Lorsque la page Web est demandée, nous vérifions si le code HTML a des espaces réservés. S'il trouve le % TEMPERATUREC% espace réservé, nous retournons la température en Celsius en appelant le readDSTempératureC () fonction créée précédemment.

if (var == "TEMPERATUREC") 
  retourne readDSTemperatureC ();

Si l'espace réservé est % TEMPERATUREF%, on retourne la température en Fahrenheit.

else if (var == "TEMPERATUREF") 
  retourne readDSTemperatureF ();

installer()

dans le installer(), initialisez le moniteur série à des fins de débogage.

Serial.begin (115200);

Initialisez le capteur de température DS18B20.

capteurs.begin ();

Connectez-vous à votre réseau local et imprimez l'adresse IP de l'ESP8266.

WiFi.begin (ssid, mot de passe);
Serial.println ("Connexion au WiFi");
while (WiFi.status ()! = WL_CONNECTED) 
  retard (500);
  Serial.print (".");

Serial.println ();
  
// Imprimer l'adresse IP locale ESP8266
Serial.println (WiFi.localIP ());

Enfin, ajoutez les prochaines lignes de code pour gérer le serveur Web.

server.on ("/", HTTP_GET, [](Demande AsyncWebServerRequest *) 
  request-> send_P (200, "text / html", index_html, processeur);
);
server.on ("/ temperaturec", HTTP_GET, [](Demande AsyncWebServerRequest *) 
  request-> send_P (200, "text / plain", readDSTemperatureC (). c_str ());
);
server.on ("/ temperaturef", HTTP_GET, [](Demande AsyncWebServerRequest *) 
  request-> send_P (200, "text / plain", readDSTemperatureF (). c_str ());
);

Lorsque nous faisons une demande sur l’URL racine, nous envoyons le texte HTML stocké dans le fichier. index_html variable. Nous devons également passer le processeur fonction, qui remplacera tous les espaces réservés avec les bonnes valeurs.

server.on ("/", HTTP_GET, [](Demande AsyncWebServerRequest *) 
  request-> send_P (200, "text / html", index_html, processeur);
);

Nous devons ajouter deux gestionnaires supplémentaires pour mettre à jour les relevés de température. Lorsque nous recevons une demande sur le /Températurec URL, nous devons simplement envoyer la valeur de température mise à jour. C'est du texte brut, et il devrait être envoyé comme un caractère, alors, nous utilisons le c_str () méthode.

server.on ("/ temperaturec", HTTP_GET, [](Demande AsyncWebServerRequest *) 
  request-> send_P (200, "text / plain", readDSTemperatureC (). c_str ());
);

Le même processus est répété pour la température en degrés Fahrenheit.

server.on ("/ temperaturef", HTTP_GET, [](Demande AsyncWebServerRequest *) 
  request-> send_P (200, "text / plain", readDSTemperatureF (). c_str ());
);

Enfin, nous pouvons démarrer le serveur.

server.begin ();

Comme il s’agit d’un serveur Web asynchrone, nous n’avons pas besoin d’écrire dans le boucle().

boucle vide () 
  

C’est à peu près comment le code fonctionne.

Manifestation

Après avoir chargé le code, ouvrez le moniteur série Arduino IDE à une vitesse de transmission de 115200 bauds. Après quelques secondes, votre adresse IP devrait s'afficher.

Dans votre réseau local, ouvrez un navigateur et tapez l'adresse IP de l'ESP8266.

Vous pouvez maintenant voir la température en degrés Celsius et Fahrenheit sur votre serveur Web. Les lectures du capteur se mettent à jour automatiquement sans qu'il soit nécessaire d'actualiser la page Web.

Serveur Web ESP8266 avec capteur IDW Arduino DS18B20 OneWire

Emballer

Il s'agissait d'un guide détaillé sur la façon d'utiliser le capteur de température DS18B20 avec l'ESP8266 et d'afficher les lectures sur un serveur Web.

Le DS18B20 communique via un protocole à un fil et chaque capteur possède un code série unique de 64 bits, ce qui signifie que vous pouvez lire plusieurs capteurs sur la même broche de données.

Nous espérons que vous avez trouvé ce tutoriel utile. Nous avons d’autres tutoriels avec l’ESP8266 qui pourraient également vous plaire:

En savoir plus sur le ESP8266 avec Domotique à l'aide de ESP8266 (cours eBook + vidéo).

Merci d'avoir lu.

Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.