{"id":4779,"date":"2026-06-15T12:08:18","date_gmt":"2026-06-15T10:08:18","guid":{"rendered":"https:\/\/miniprojets.net\/?p=4779"},"modified":"2026-06-17T20:34:03","modified_gmt":"2026-06-17T18:34:03","slug":"enregistreur-de-temperature-pour-four-a-pain-opensource-avec-esp-wroom-32-dht22-max6675-et-carte-sd","status":"publish","type":"post","link":"https:\/\/miniprojets.net\/index.php\/2026\/06\/15\/enregistreur-de-temperature-pour-four-a-pain-opensource-avec-esp-wroom-32-dht22-max6675-et-carte-sd\/","title":{"rendered":"OvenOpenMoniteur: Enregistreur de temp\u00e9ratures pour fours \u00e0 pain OpenSource avec ESP-WROOM-32, DHT22, MAX6675 et Carte SD"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Nous souhaitons cr\u00e9er ici un enregistreur de temp\u00e9ratures, avec quatre thermosondes de type K et un DHT22. Ce miniprojet s\u2019inscrit dans un travail de th\u00e8se sur la comparaison \u00e9nerg\u00e9tique des fours \u00e0 pain en boulangerie.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nous souhaitons comparer le cycle entier de trois fours \u00e0 pain, de la chauffe et \u00e0 la d\u00e9chauffe. Il s\u2019agit de trois fours aux vecteurs \u00e9nerg\u00e9tiques diff\u00e9rents&nbsp;: \u00e9lectrique, bois-\u00e9nergie, et concentration solaire.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L\u2019objectif de cette installation est de comparer le temps de mont\u00e9e en temp\u00e9rature de chaque four, le temps de cuisson d\u2019un pain, le plateau de temp\u00e9rature (saturation), la descente de temp\u00e9rature pendant l\u2019enfournement, le temps de d\u00e9chauffe, etc. De m\u00eame, nous souhaitons corr\u00e9ler le cycle de temp\u00e9rature avec l\u2019activit\u00e9 des boulanger\u00b7\u00e8res.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L\u2019installation compos\u00e9e de 4 thermocouples et d\u2019un capteur mesurant la temp\u00e9rature et l\u2019humidit\u00e9 ambiante. Elle peut \u00eatre utilis\u00e9e pour un four, mais aussi pour prendre la mesure d\u2019autres \u00e9quipements (r\u00e9frig\u00e9rateur e.g.).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nous proposons ici de partager la construction de notre installation sous forme de tutoriel.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le code source et le typon pour le mat\u00e9riel final seront disponibles \u00e0 la fin de cet article ainsi qu&#8217;\u00e0 ce lien.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/gricad-gitlab.univ-grenoble-alpes.fr\/ferrarijprojects\/ovenopenmonitor\">https:\/\/gricad-gitlab.univ-grenoble-alpes.fr\/ferrarijprojects\/ovenopenmonitor<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> Si vous faites un copier\/coller du code pr\u00e9sent dans cette page, les sources sont sous licence<strong>&nbsp;CC-BY-NC-SA<\/strong>&nbsp;<a href=\"https:\/\/creativecommons.org\/licenses\/by-nc-sa\/3.0\/fr\/\">https:\/\/creativecommons.org\/licenses\/by-nc-sa\/3.0\/fr\/<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"460\" height=\"161\" src=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image.png\" alt=\"\" class=\"wp-image-4781\" style=\"width:314px;height:auto\" srcset=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image.png 460w, https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-300x105.png 300w\" sizes=\"auto, (max-width: 460px) 100vw, 460px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Partie 1&nbsp;: Cahier des charges&nbsp;<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Avoir 4 thermocouples pour la mesure de temp\u00e9rature, r\u00e9sistant \u00e0 plus de 300\u00b0C, mesurant au moins 2 m de long (2 sondes plac\u00e9es \u00e0 l\u2019avant et le fond du four&nbsp;; 2 sondes plac\u00e9es dans 2 pains diff\u00e9rents)<\/li>\n\n\n\n<li>Avoir 1 capteur DHT22 pour la prise de temp\u00e9rature et d\u2019humidit\u00e9 ambiante (connaissance de l\u2019environnement ext\u00e9rieur au four pour une meilleure comparaison)<\/li>\n\n\n\n<li>Pouvoir enregistrer automatiquement les donn\u00e9es sur une p\u00e9riode de 24h, \u00e0 des pas de temps de 30s \u00e0 1min -&gt; Horodatage des donn\u00e9es et sauvegarde de celles-ci sur une carte SD<\/li>\n\n\n\n<li>Avoir une installation qui prenne peu de place, et qui soit prot\u00e9g\u00e9e de la poussi\u00e8re<\/li>\n\n\n\n<li>Ne pas d\u00e9pendre du Wifi<\/li>\n\n\n\n<li>Etre OpenSource&nbsp;et anti-obsolescence programm\u00e9e (chaque module de la carte peut-\u00eatre remplac\u00e9 ou upgrad\u00e9 ind\u00e9pendamment tout en \u00e9tant r\u00e9trocompatible)<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Partie 2&nbsp;: Mat\u00e9riel choisi<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">L\u2019installation est compos\u00e9e du mat\u00e9riel suivant&nbsp;:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>4 thermocouples type K, allant de -50\u00b0C \u00e0 +600\u00b0C<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"518\" height=\"356\" src=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-2.png\" alt=\"\" class=\"wp-image-4783\" style=\"width:335px;height:auto\" srcset=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-2.png 518w, https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-2-300x206.png 300w\" sizes=\"auto, (max-width: 518px) 100vw, 518px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>4 modules MAX6675<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"865\" height=\"354\" src=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-1.png\" alt=\"\" class=\"wp-image-4782\" style=\"aspect-ratio:2.443636363636364;width:547px;height:auto\" srcset=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-1.png 865w, https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-1-300x123.png 300w, https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-1-768x314.png 768w\" sizes=\"auto, (max-width: 865px) 100vw, 865px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Un MAX6675 pour connecter chaque thermocouple de type K.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Les thermocouples sont constitu\u00e9s de \u00ab deux fils de mat\u00e9riaux diff\u00e9rents qui g\u00e9n\u00e8rent une force \u00e9lectromotrice (FEM) en fonction de la diff\u00e9rence de temp\u00e9rature entre les deux extr\u00e9mit\u00e9s. Le MAX6675 utilise une interface SPI pour communiquer avec le microcontr\u00f4leur et transf\u00e9rer les lectures de temp\u00e9rature en sortie.&nbsp;\u00bb (<a href=\"https:\/\/www.moussasoft.com\/max6675-module-thermocouple-avec-arduino\/#1-11-description-du-module-max6675\">https:\/\/www.moussasoft.com\/max6675-module-thermocouple-avec-arduino\/#1-11-description-du-module-max6675<\/a>)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On pourra retrouver toute la documentation pour la r\u00e9alisation du c\u00e2blage ici&nbsp;: <a href=\"https:\/\/www.moussasoft.com\/max6675-module-thermocouple-avec-arduino\/#1-11-description-du-module-max6675\">https:\/\/www.moussasoft.com\/max6675-module-thermocouple-avec-arduino\/#1-11-description-du-module-max6675<\/a>.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Wemos D1 Mini et un shield combinant une RTC (Real Time Clocl) et un lecteur de carte SD<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"441\" src=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-3-1024x441.png\" alt=\"\" class=\"wp-image-4784\" style=\"aspect-ratio:2.322045611610228;width:529px;height:auto\" srcset=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-3-1024x441.png 1024w, https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-3-300x129.png 300w, https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-3-768x331.png 768w, https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-3.png 1051w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>DHT22&nbsp;: capteur de temp\u00e9rature et d\u2019humidit\u00e9 ambiantes<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"316\" height=\"429\" src=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-4.png\" alt=\"\" class=\"wp-image-4785\" style=\"width:234px;height:auto\" srcset=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-4.png 316w, https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-4-221x300.png 221w\" sizes=\"auto, (max-width: 316px) 100vw, 316px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Carte ESP-WROOM-32<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"630\" height=\"476\" src=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-5.png\" alt=\"\" class=\"wp-image-4786\" style=\"aspect-ratio:1.323578187493903;width:343px;height:auto\" srcset=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-5.png 630w, https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-5-300x227.png 300w, https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-5-160x120.png 160w\" sizes=\"auto, (max-width: 630px) 100vw, 630px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Carte de d\u00e9veloppement avec interfaces WiFi et Bluetooth<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Permet de connecter les capteurs de temp\u00e9rature, le DHT22 et la carte SD.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Pile pour l\u2019horloge RTC<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Utile pour avoir la date (jour et heure) exacte.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pile bouton RS PRO, 3 V Lithium Mangan\u00e8se Dioxyde, 30 mm CR3032 500 mAh<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"352\" height=\"309\" src=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-6.png\" alt=\"\" class=\"wp-image-4787\" style=\"width:253px;height:auto\" srcset=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-6.png 352w, https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-6-300x263.png 300w\" sizes=\"auto, (max-width: 352px) 100vw, 352px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Logiciel IDE Arduino<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"945\" height=\"362\" src=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-7.png\" alt=\"\" class=\"wp-image-4788\" srcset=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-7.png 945w, https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-7-300x115.png 300w, https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-7-768x294.png 768w\" sizes=\"auto, (max-width: 945px) 100vw, 945px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Partie 3&nbsp;: R\u00e9alisation finale<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Sch\u00e9ma du c\u00e2blage<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"945\" height=\"804\" src=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-8.png\" alt=\"\" class=\"wp-image-4789\" style=\"aspect-ratio:1.1753902662993572;width:526px;height:auto\" srcset=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-8.png 945w, https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-8-300x255.png 300w, https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-8-768x653.png 768w\" sizes=\"auto, (max-width: 945px) 100vw, 945px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Sch\u00e9ma du circuit imprim\u00e9<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"988\" height=\"503\" src=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-9.png\" alt=\"\" class=\"wp-image-4790\" style=\"aspect-ratio:1.9642661405239505;width:535px;height:auto\" srcset=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-9.png 988w, https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-9-300x153.png 300w, https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-9-768x391.png 768w\" sizes=\"auto, (max-width: 988px) 100vw, 988px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Circuit imprim\u00e9<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"945\" height=\"711\" src=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-10.png\" alt=\"\" class=\"wp-image-4791\" style=\"aspect-ratio:1.3291568332975756;width:505px;height:auto\" srcset=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-10.png 945w, https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-10-300x226.png 300w, https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-10-768x578.png 768w, https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-10-160x120.png 160w\" sizes=\"auto, (max-width: 945px) 100vw, 945px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Figure 7 : Installation du circuit imprim\u00e9 de l&#8217;enregistreur autonome final&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Code sur IDE Arduino<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">\/\/Biblioth\u00e8ques n\u00e9cessaires pour le fonctionnement du programme\n#include \"FS.h\" \/\/File System : permet de g\u00e9rer des fichiers, utile pour la carte SD\n#include \"SD.h\"  \/\/Biblioth\u00e8que pour utiliser une carte SD : permet de lire les fichiers et \u00e9crire des donn\u00e9es dans la carte SD\n#include \"SPI.h\" \/\/Active la communication SPI (Serial Peripherical Interface). Protocole pour communiquer avec la carte SD et les capteurs \n#include \"max6675.h\" \/\/Biblioth\u00e8que pour le module MAX6675 et thermocouple K\n#include \"RTClib.h\" \/\/Biblioth\u00e8que pour les modules d\u2019horloge temps r\u00e9el (RTC) et permettre d\u2019obtenir la date et l\u2019heure en temps r\u00e9el\n#include \"DHT.h\" \/\/Biblioth\u00e8que pour le capteur DHT22 (temp\u00e9ratures et humidit\u00e9 ambiantes)\n\nRTC_DS1307 rtc;\n\nchar daysOfTheWeek[7][12] = { \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" };\n\nSPIClass spiSD(HSPI);\n#define SD_CS 5  \/\/ MAX6675 CS@27\n\n\/\/D\u00e9finition du c\u00e2blage pour relier les thermocouples au module ESP-WROOM-32\nint thermoDO = 19;\nint thermoCLK = 18;\nint thermoCS1 = 25;\nint thermoCS2 = 26;\nint thermoCS3 = 27;\nint thermoCS4 = 33;\n\n\/\/Connexion des thermocouples aux modules MAX6675\nMAX6675 thermocouple1(thermoCLK, thermoCS1, thermoDO);\nMAX6675 thermocouple2(thermoCLK, thermoCS2, thermoDO);\nMAX6675 thermocouple3(thermoCLK, thermoCS3, thermoDO);\nMAX6675 thermocouple4(thermoCLK, thermoCS4, thermoDO);\n\nFile myFile;\n#define DHTPIN 32\n#define DHTTYPE DHT22\n\nDHT dht(DHTPIN, DHTTYPE);\n\n\/*\nUncomment and set up if you want to use custom pins for the SPI communication\n#define REASSIGN_PINS\nint sck = -1;\nint miso = -1;\nint mosi = -1;\nint cs = -1;\n*\/\n\n\/\/D\u00e9finition d\u2019une s\u00e9rie de fonctions pour traiter les dossiers\/fichiers sur la carte SD, qu\u2019on appelera dans notre programme \n\nvoid listDir(fs::FS &amp;fs, const char *dirname, uint8_t levels) {\n  Serial.printf(\"Listing directory: %s\\n\", dirname);\n\n  File root = fs.open(dirname);\n  if (!root) {\n    Serial.println(\"Failed to open directory\");\n    return;\n  }\n  if (!root.isDirectory()) {\n    Serial.println(\"Not a directory\");\n    return;\n  }\n\/\/Permet d\u2019afficher le dossier demand\u00e9, de l\u2019ouvrir et de v\u00e9rifier s\u2019il existe\n\n  File file = root.openNextFile();\n  while (file) {\n    if (file.isDirectory()) {\n      Serial.print(\"  DIR : \");\n      Serial.println(file.name());\n      if (levels) {\n        listDir(fs, file.path(), levels - 1);\n      }\n    } else {\n      Serial.print(\"  FILE: \");\n      Serial.print(file.name());\n      Serial.print(\"  SIZE: \");\n      Serial.println(file.size());\n    }\n    file = root.openNextFile();\n  }\n}\n\/\/Permet d\u2019explorer le fichier : ouvrir les dossiers et sous-dossiers, parcourt le contenu, sa taille\n\nvoid createDir(fs::FS &amp;fs, const char *path) {\n  Serial.printf(\"Creating Dir: %s\\n\", path);\n  if (fs.mkdir(path)) {\n    Serial.println(\"Dir created\");\n  } else {\n    Serial.println(\"mkdir failed\");\n  }\n}\n\/\/Permet de cr\u00e9er un dossier sur la carte SD\n\nvoid removeDir(fs::FS &amp;fs, const char *path) {\n  Serial.printf(\"Removing Dir: %s\\n\", path);\n  if (fs.rmdir(path)) {\n    Serial.println(\"Dir removed\");\n  } else {\n    Serial.println(\"rmdir failed\");\n  }\n}\n\/\/Permet de supprimer un dossier sur la carte SD\n\n\nvoid readFile(fs::FS &amp;fs, const char *path) {\n  Serial.printf(\"Reading file: %s\\n\", path);\n\n  File file = fs.open(path);\n  if (!file) {\n    Serial.println(\"Failed to open file for reading\");\n    return;\n  }\n\n  Serial.print(\"Read from file: \");\n  while (file.available()) {\n    Serial.write(file.read());\n  }\n  file.close();\n}\n\/\/Ouvre un fichier, tente de le lire et v\u00e9rifie s\u2019il existe, lit son contenu, affiche le contenu dans le moniteur s\u00e9rie et le ferme\n\n\nvoid writeFile(fs::FS &amp;fs, const char *path, const char *message) {\n  Serial.printf(\"Writing file: %s\\n\", path);\n\n  File file = fs.open(path, FILE_WRITE);\n  if (!file) {\n    Serial.println(\"Failed to open file for writing\");\n    return;\n  }\n  if (file.print(message)) {\n    Serial.println(\"File written\");\n  } else {\n    Serial.println(\"Write failed\");\n  }\n  file.close();\n}\n\/\/Permet de cr\u00e9er un fichier, d\u2019\u00e9crire du texte \n\n\nvoid appendFile(fs::FS &amp;fs, const char *path, const char *message) {\n  Serial.printf(\"Appending to file: %s\\n\", path);\n\n  File file = fs.open(path, FILE_APPEND);\n  if (!file) {\n    Serial.println(\"Failed to open file for appending\");\n    return;\n  }\n  if (file.print(message)) {\n    Serial.println(\"Message appended\");\n  } else {\n    Serial.println(\"Append failed\");\n  }\n  file.close();\n}\n\/\/Permet d\u2019enregistrer des mesures et de garder un historique (ouverture fichier, ajout d\u2019un texte, fermeture du fichier)\n\nvoid renameFile(fs::FS &amp;fs, const char *path1, const char *path2) {\n  Serial.printf(\"Renaming file %s to %s\\n\", path1, path2);\n  if (fs.rename(path1, path2)) {\n    Serial.println(\"File renamed\");\n  } else {\n    Serial.println(\"Rename failed\");\n  }\n}\n\/\/Permet de renommer ou d\u00e9placer un fichier sur la carte SD\n\nvoid deleteFile(fs::FS &amp;fs, const char *path) {\n  Serial.printf(\"Deleting file: %s\\n\", path);\n  if (fs.remove(path)) {\n    Serial.println(\"File deleted\");\n  } else {\n    Serial.println(\"Delete failed\");\n  }\n}\n\/\/Permet de supprimer un fichier sur la carte SD\n\nvoid testFileIO(fs::FS &amp;fs, const char *path) {\n  File file = fs.open(path);\n  static uint8_t buf[512];\n  size_t len = 0;\n  uint32_t start = millis();\n  uint32_t end = start;\n  if (file) {\n    len = file.size();\n    size_t flen = len;\n    start = millis();\n    while (len) {\n      size_t toRead = len;\n      if (toRead &gt; 512) {\n        toRead = 512;\n      }\n      file.read(buf, toRead);\n      len -= toRead;\n    }\n    end = millis() - start;\n    Serial.printf(\"%u bytes read for %lu ms\\n\", flen, end);\n    file.close();\n  } else {\n    Serial.println(\"Failed to open file for reading\");\n  }\n\n  file = fs.open(path, FILE_WRITE);\n  if (!file) {\n    Serial.println(\"Failed to open file for writing\");\n    return;\n  }\n\n  size_t i;\n  start = millis();\n  for (i = 0; i &lt; 2048; i++) {\n    file.write(buf, 512);\n  }\n  end = millis() - start;\n  Serial.printf(\"%u bytes written for %lu ms\\n\", 2048 * 512, end);\n  file.close();\n}\n\/\/Permet de mesurer la vitesse de lecture\/\u00e9criture sur la carte SD\n\n\n\/\/Initialisation du programme \nvoid setup() {\n  Serial.begin(115200);\n  while (!Serial) { delay(10); }\n\/\/Initialisation du port s\u00e9rie \n\n#ifdef REASSIGN_PINS\n  SPI.begin(sck, miso, mosi, cs);\n#endif\n\/\/Configuration SPI\n\n  spiSD.begin(14, 12, 13, 5);  \/\/CLK=14,MISO=12,MOSI=13,CS=5\n\/\/Configuration carte SD\n\n  \/\/if(!SD.begin(cs)){ \/\/Change to this function to manually change CS pin\n  if (!SD.begin(5, spiSD)) {\n    Serial.println(\"Card Mount Failed\");\n    return;\n  }\n  uint8_t cardType = SD.cardType();\n\n  if (cardType == CARD_NONE) {\n    Serial.println(\"No SD card attached\");\n    return;\n  }\n\n  Serial.print(\"SD Card Type: \");\n  if (cardType == CARD_MMC) {\n    Serial.println(\"MMC\");\n  } else if (cardType == CARD_SD) {\n    Serial.println(\"SDSC\");\n  } else if (cardType == CARD_SDHC) {\n    Serial.println(\"SDHC\");\n  } else {\n    Serial.println(\"UNKNOWN\");\n  }\n\n  uint64_t cardSize = SD.cardSize() \/ (1024 * 1024);\n  Serial.printf(\"SD Card Size: %lluMB\\n\", cardSize);\n  \/*\n  listDir(SD, \"\/\", 0);\n  createDir(SD, \"\/mydir\");\n  listDir(SD, \"\/\", 0);\n  removeDir(SD, \"\/mydir\");\n  listDir(SD, \"\/\", 2);\n  writeFile(SD, \"\/hello.txt\", \"Hello \");\n  appendFile(SD, \"\/hello.txt\", \"World!\\n\");\n  readFile(SD, \"\/hello.txt\");\n  deleteFile(SD, \"\/foo.txt\");\n  renameFile(SD, \"\/hello.txt\", \"\/foo.txt\");\n  readFile(SD, \"\/foo.txt\");\n  testFileIO(SD, \"\/test.txt\");\n  Serial.printf(\"Total space: %lluMB\\n\", SD.totalBytes() \/ (1024 * 1024));\n  Serial.printf(\"Used space: %lluMB\\n\", SD.usedBytes() \/ (1024 * 1024));\n  *\/\n\n\/\/Initialisation RTC\n  if (!rtc.begin()) {\n    Serial.println(\"Couldn't find RTC\");\n    Serial.flush();\n    while (1) delay(10);\n  }\n\n\/\/v\u00e9rification fonctionnement de l\u2019horloge, r\u00e9glage de l\u2019heure et initialisation DHT22\n  if (!rtc.isrunning()) {\n    Serial.println(\"RTC is NOT running, let's set the time!\");\n    \/\/ When time needs to be set on a new device, or after a power loss, the\n    \/\/ following line sets the RTC to the date &amp; time this sketch was compiled\n    \/\/rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));\n    \/\/ This line sets the RTC with an explicit date &amp; time, for example to set\n    \/\/ January 21, 2014 at 3am you would call:\n    rtc.adjust(DateTime(2026, 5, 01, 6, 35, 00));\n  }\n\n  \/\/ When time needs to be re-set on a previously configured device, the\n  \/\/ following line sets the RTC to the date &amp; time this sketch was compiled\n  \/\/ rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));\n  \/\/ This line sets the RTC with an explicit date &amp; time, for example to set\n  \/\/ January 21, 2014 at 3am you would call:\n  \/\/ rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));\n\n  dht.begin();\n}\n\n\/\/Partie du programme qui tourne en boucle \nvoid loop() {\n  DateTime now = rtc.now();  \/\/R\u00e9cup\u00e9ration date et heure actuelle\n\n  Serial.print(now.year(), DEC);\n  Serial.print('\/');\n  Serial.print(now.month(), DEC);\n  Serial.print('\/');\n  Serial.print(now.day(), DEC);\n  Serial.print(\" (\");\n  Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);\n  Serial.print(\") \");\n  Serial.print(now.hour(), DEC);\n  Serial.print(':');\n  Serial.print(now.minute(), DEC);\n  Serial.print(':');\n  Serial.print(now.second(), DEC);\n  Serial.println();\n\/\/Affichage date et heure \n\n  float h = dht.readHumidity();\n  \/\/ Read temperature as Celsius (the default)\n  float t = dht.readTemperature();\n  \/\/ Read temperature as Fahrenheit (isFahrenheit = true)\n  \/\/ float f = dht.readTemperature(true);\n  if (isnan(h) || isnan(t)) {\n    Serial.println(F(\"Failed to read from DHT sensor!\"));\n    return;\n  }\n  Serial.println(t);\n  Serial.println(h);\n\/\/Affichage humidit\u00e9 (%) et temp\u00e9rature (\u00b0C)\n\n  float t1 = thermocouple1.readCelsius();\n  float t2 = thermocouple2.readCelsius();\n  float t3 = thermocouple3.readCelsius();\n  float t4 = thermocouple4.readCelsius();\n  Serial.print(\"C1 = \");\n  Serial.println(t1);\n  Serial.print(\"C2 = \");\n  Serial.println(t2);\n  Serial.print(\"C3 = \");\n  Serial.println(t3);\n  Serial.print(\"C4 = \");\n  Serial.println(t4);\n  myFile = SD.open(\"\/records.txt\", FILE_APPEND);\n\/\/Ouverture du fichier \u00ab records \u00bb\n\n  if (myFile) {\n    Serial.print(\"Writing to records.txt...\");\n    myFile.println((String(now.year())+\"\/\"+String(now.month())+\"\/\"+String(now.day())+\" \"+String(now.hour())+\":\"+String(now.minute())+\":\"+String(now.second())+ \" \" +String(h) + \",\" +String(t) + \",\" +String(t1) + \",\" + String(t2) + \",\" + String(t3) + \",\" + String(t4)).c_str());\n\/\/Ecriture : date heure humidit\u00e9 h, temp\u00e9rature t, t1, t2, t3, t4\n\n    myFile.close();  \/\/ Sauvegarde les donn\u00e9es sur la carte SD\n    Serial.println(\"done.\");\n  } \n \/\/ Fermeture du fichier\nelse {\n    \/\/ if the file didn't open, print an error:\n    Serial.println(\"error opening hello.txt\");\n  }\n\n  \/\/ For the MAX6675 to update, you must delay AT LEAST 250ms between reads!\n  delay(30000);  \/\/ D\u00e9lai de 30 secondes entre les mesures\n}\n&nbsp; <\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Partie&nbsp;4 : Connecter le dispositif \u00e0 IDE Arduino<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Brancher l\u2019installation via un c\u00e2ble USB-B Micro<\/li>\n\n\n\n<li>V\u00e9rifier que le port USB soit bien connect\u00e9 \u00e0 l\u2019IDE Arduino<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"618\" height=\"282\" src=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-11.png\" alt=\"\" class=\"wp-image-4792\" srcset=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-11.png 618w, https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-11-300x137.png 300w\" sizes=\"auto, (max-width: 618px) 100vw, 618px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"638\" height=\"456\" src=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-12.png\" alt=\"\" class=\"wp-image-4793\" style=\"width:456px;height:auto\" srcset=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-12.png 638w, https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-12-300x214.png 300w\" sizes=\"auto, (max-width: 638px) 100vw, 638px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>T\u00e9l\u00e9verser le code<\/li>\n\n\n\n<li>Ouvrir le Moniteur s\u00e9rie<\/li>\n\n\n\n<li>V\u00e9rifier que le nombre de baud soit bien le m\u00eame que celui du programme (ici&nbsp;: 115200)<\/li>\n\n\n\n<li>V\u00e9rifier que les mesures s\u2019affichent correctement et que les valeurs sont coh\u00e9rentes<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"945\" height=\"269\" src=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-13.png\" alt=\"\" class=\"wp-image-4794\" srcset=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-13.png 945w, https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-13-300x85.png 300w, https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-13-768x219.png 768w\" sizes=\"auto, (max-width: 945px) 100vw, 945px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Remarque&nbsp;: Pour le 1er essai, nous n\u2019avons pas mis la pile du RTC en place. Nous avons uniquement modifi\u00e9 la date et l\u2019heure dans le programme.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>V\u00e9rifier ensuite la cr\u00e9ation du fichier \u00ab&nbsp;records&nbsp;\u00bb et l\u2019enregistrement des donn\u00e9es<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"328\" height=\"379\" src=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-14.png\" alt=\"\" class=\"wp-image-4795\" srcset=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-14.png 328w, https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-14-260x300.png 260w\" sizes=\"auto, (max-width: 328px) 100vw, 328px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Partie 5&nbsp;: Protocole<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Hypoth\u00e8ses<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Compte tenu de l\u2019activit\u00e9 des boulangers, il nous para\u00eet important de mod\u00e9liser le cycle entier de la chauffe et de la d\u00e9chauffe du four. Selon le four utilis\u00e9, la d\u00e9chauffe permet de cuire certains produits (cuisson des brioches apr\u00e8s la cuisson du pain pour le four \u00e0 gueulards (chaleur descendante), et avant la cuisson du pain pour le four \u00e9lectrique) ;<\/li>\n\n\n\n<li>Nous pouvons mod\u00e9liser le cycle de chauffe selon 3 phases : la chauffe du four, un plateau correspondant \u00e0 l\u2019inertie du four et \u00e0 la cuisson des pains, la d\u00e9chauffe du four ;<\/li>\n\n\n\n<li>Nous pensons qu\u2019il est important de caract\u00e9riser la puissance du four en prenant en compte sa masse et la masse de pain cuite, plut\u00f4t que la puissance du four \u00e0 vide ;<\/li>\n\n\n\n<li>De m\u00eame, il est pr\u00e9f\u00e9rable de comparer le rendement de la puissance de chauffe de la masse mise dans le four, plut\u00f4t que le rendement de la puissance du four \u00e0 vide.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Crit\u00e8res de caract\u00e9risation quantitatifs que l&#8217;on souhaite mesurer<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A partir des crit\u00e8res de caract\u00e9risation du four s\u00e9lectionn\u00e9s, de la d\u00e9finition des 3 syst\u00e8mes et les donn\u00e9es manquantes, nous souhaitons mesurer :<br>&#8211; La temp\u00e9rature du four \u00e0 tout instant \u00e0 2 endroits diff\u00e9rents T_A et T_B (\u00b0C)<br>&#8211; La temp\u00e9rature ext\u00e9rieure T_ext (\u00b0C) et celle du fournil T_fou (\u00b0C)<br>&#8211; Le temps de chauffe du four \u3016\u0394t\u3017_0 (min)<br>&#8211; Le temps de cuisson \u3016\u0394t\u3017_1 (min)<br>&#8211; Le temps de d\u00e9chauffe du four \u3016\u0394t\u3017_2 (min)<br>&#8211; La masse de pains dans le four m_pain (kg)<br>&#8211; La capacit\u00e9 calorifique C_p du syst\u00e8me (J.K^(-1))<br>&#8211; La masse de bois utilis\u00e9 m_bois (kg), la teneur en humidit\u00e9 H (%)<br>&#8211; L\u2019irradiation I (W.m^(-2))<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En entr\u00e9e, nous avons :<br>&#8211; La puissance nominale du four \u00e9lectrique P_n (W)<br>&#8211; La puissance th\u00e9orique du four solaire P_th (W)<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A partir de ces valeurs, nous calculerons et analyserons :<br>&#8211; Le pouvoir calorifique int\u00e9rieur du bois PCI (J.\u3016kg\u3017^(-1))<br>&#8211; La puissance de chauffe P_c et de d\u00e9chauffe P_d du four<br>&#8211; Le rendement de la puissance de chauffe \u03b7_c et le rendement de la puissance de d\u00e9chauffe \u03b7_d du four ??<br>&#8211; Les variations de temp\u00e9ratures (\u00b0C) pendant :<br>      &#8211; la phase de chauffe \u3016\u0394T\u3017_0<br>      &#8211; l\u2019enfournement \u3016\u0394T\u3017_1<br>      &#8211; la cuisson \u3016\u0394T\u3017_2<br>      &#8211; le d\u00e9fournement \u3016\u0394T\u3017_3<br>      &#8211; la phase de d\u00e9chauffe\u3016 \u0394T\u3017_4<br>&#8211; Les variations de temp\u00e9rature des 2 \u00e9tages T_A et T_B pour les fours \u00e9lectrique et solaire (indicateurs d\u2019homog\u00e9n\u00e9it\u00e9\/h\u00e9t\u00e9rog\u00e9n\u00e9it\u00e9 de la temp\u00e9rature du four)<br><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Mat\u00e9riel utilis\u00e9<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>2 sondes de temp\u00e9rature plac\u00e9es dans le four<\/li>\n\n\n\n<li>2 sondes dans 2 pains diff\u00e9rents (??)<\/li>\n\n\n\n<li>1 thermom\u00e8tre ext\u00e9rieur<\/li>\n\n\n\n<li>1 thermom\u00e8tre dans le fournir<\/li>\n\n\n\n<li>1 pyrom\u00e8tre pour mesurer l\u2019irradiation<\/li>\n\n\n\n<li>1 humidim\u00e8tre pour mesurer la teneur en humidit\u00e9 TH du bois<\/li>\n\n\n\n<li>1 balance<\/li>\n\n\n\n<li>1 montre<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Description du protocole de mesures pour les 3 fours<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u2192 Avant le d\u00e9marrage du four :<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Placer les 2 thermosondes dans le four et relever les temp\u00e9ratures<\/li>\n\n\n\n<li>Relever la temp\u00e9rature ext\u00e9rieure et\/ou du fournil<\/li>\n\n\n\n<li>D\u00e9terminer l\u2019essence et la teneur en humidit\u00e9 TH du bois<\/li>\n\n\n\n<li>Mesurer la masse du bois<\/li>\n\n\n\n<li>Peser la masse des pains\/brioches\/biscuits et la masse des moules utilis\u00e9s (noter le mat\u00e9riau)<\/li>\n\n\n\n<li>Noter l\u2019heure de d\u00e9marrage du four<\/li>\n\n\n\n<li>Noter l\u2019heure du nettoyage du four \u00e0 gueulard<br><\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">\u2192 Pendant le cycle de chauffe\/cuisson\/d\u00e9chauffe du four :<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Relever l\u2019irradiance, la puissance \u00e9lectrique sur le tableau de commande, les temp\u00e9ratures des 2 thermosondes toutes les 2 min<\/li>\n\n\n\n<li>Placer les 2 sondes dans 2 pains (de chaque \u00e9tage ou endroit diff\u00e9rents)<\/li>\n\n\n\n<li>Relever l\u2019heure d\u2019enfournement<\/li>\n\n\n\n<li>Continuer de noter les temp\u00e9ratures des 2 thermosondes dans le four et les 2 dans chaque pain<\/li>\n\n\n\n<li>Relever l\u2019heure de d\u00e9fournement et continuer \u00e0 noter les temp\u00e9ratures des 2 sondes<\/li>\n\n\n\n<li>Continuer les mesures pour les autres enfournements<\/li>\n\n\n\n<li>Mesurer la masse de bois restante pour calculer la masse de bois consomm\u00e9e<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">En parall\u00e8le : mesure de la consommation \u00e9nerg\u00e9tique, l\u2019\u00e9nergie entrante dans le syst\u00e8me de chauffe<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><u>Essai 1&nbsp;: Cuisson d\u2019un Banana Bread au four \u00e9lectrique particulier<\/u><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le 1er essai a \u00e9t\u00e9 fait avec la cuisson d\u2019un Banana Bread dans un four \u00e9lectrique particulier. Nous avons r\u00e9alis\u00e9 le graphique (figure).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour cela, nous avons dispos\u00e9 2 thermocouples de type K dans le four, un dans le fond (courbe grise) et un pr\u00e8s de la porte (courbe jaune).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Une fois le four chauff\u00e9, nous avons dispos\u00e9 une sonde dans le g\u00e2teau (courbe bleue claire) et l\u2019avons mis dans le four.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un dernier capteur est laiss\u00e9 sur le plan de travail, \u00e0 temp\u00e9rature ambiante de la cuisine (courbe bleue fonc\u00e9e).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Apr\u00e8s la cuisson faite, je r\u00e9cup\u00e8re la carte SD, je la mets dans l\u2019ordinateur et r\u00e9cup\u00e8re les donn\u00e9es dans le dossier \u00ab&nbsp;records&nbsp;\u00bb.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Je copie-colle les donn\u00e9es sur Excel (format texte CSV) puis je construits les courbes.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"945\" height=\"375\" src=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-15.png\" alt=\"\" class=\"wp-image-4796\" srcset=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-15.png 945w, https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-15-300x119.png 300w, https:\/\/miniprojets.net\/wp-content\/uploads\/2026\/05\/image-15-768x305.png 768w\" sizes=\"auto, (max-width: 945px) 100vw, 945px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Figure 8 : Cycle de chauffe et de d\u00e9chauffe du four pour la cuisson d&#8217;un Banana Bread.&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nous souhaitons cr\u00e9er ici un enregistreur de temp\u00e9ratures, avec quatre thermosondes de type K et un DHT22. Ce miniprojet s\u2019inscrit&hellip;<\/p>\n","protected":false},"author":1,"featured_media":4791,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-4779","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-en-cours"],"_links":{"self":[{"href":"https:\/\/miniprojets.net\/index.php\/wp-json\/wp\/v2\/posts\/4779","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/miniprojets.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/miniprojets.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/miniprojets.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/miniprojets.net\/index.php\/wp-json\/wp\/v2\/comments?post=4779"}],"version-history":[{"count":8,"href":"https:\/\/miniprojets.net\/index.php\/wp-json\/wp\/v2\/posts\/4779\/revisions"}],"predecessor-version":[{"id":5579,"href":"https:\/\/miniprojets.net\/index.php\/wp-json\/wp\/v2\/posts\/4779\/revisions\/5579"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/miniprojets.net\/index.php\/wp-json\/wp\/v2\/media\/4791"}],"wp:attachment":[{"href":"https:\/\/miniprojets.net\/index.php\/wp-json\/wp\/v2\/media?parent=4779"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/miniprojets.net\/index.php\/wp-json\/wp\/v2\/categories?post=4779"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/miniprojets.net\/index.php\/wp-json\/wp\/v2\/tags?post=4779"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}