{"id":77,"date":"2019-03-26T10:17:53","date_gmt":"2019-03-26T09:17:53","guid":{"rendered":"http:\/\/miniprojets.net\/?p=77"},"modified":"2022-12-17T17:27:03","modified_gmt":"2022-12-17T16:27:03","slug":"projet-lazy-compagny-temperature-hygrometrie-via-433mhz-site-internet","status":"publish","type":"post","link":"https:\/\/miniprojets.net\/index.php\/2019\/03\/26\/projet-lazy-compagny-temperature-hygrometrie-via-433mhz-site-internet\/","title":{"rendered":"Projet Lazy Compagny -> Temp\u00e9rature\/Hygrom\u00e9trie via 433mhz + Site internet"},"content":{"rendered":"\n<p>Salutation, camarades!<\/p>\n\n\n\n<p>Cet hiver, j&#8217;ai eu une probl\u00e9matique: &#8220;Comment surveiller \u00e0 distance l&#8217;environnement de la Lazy Compagny pendant leur hibernation?&#8221;<\/p>\n\n\n\n<p>J&#8217;ai donc d\u00e9compos\u00e9 le probl\u00e8me en trois:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Quelles variables du champs de bataille dois-je mesurer et comment?<\/strong><\/li><li><strong>Comment coder et transmettre l&#8217;information au QG?<\/strong><\/li><li><strong>Comment d\u00e9briefer facilement les informations?<\/strong><\/li><\/ul>\n\n\n\n<p>Pour information, tout le code et la liste du mat\u00e9riel sera disponible en fin de post.<\/p>\n\n\n\n<p> Pour information,  Les sources sont <strong> CC-BY-NC-SA<\/strong><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<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"403\" height=\"141\" src=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2019\/09\/licence.png\" alt=\"\" class=\"wp-image-796\" srcset=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2019\/09\/licence.png 403w, https:\/\/miniprojets.net\/wp-content\/uploads\/2019\/09\/licence-300x105.png 300w\" sizes=\"auto, (max-width: 403px) 100vw, 403px\" \/><\/figure><\/div>\n\n\n\n<p><strong>PARTIE I : Quelles variables du champs de bataille dois-je mesurer et comment?\n<\/strong><\/p>\n\n\n\n<p>Pour l&#8217;hibernation des tortues, les deux variables les plus importantes \u00e0 surveiller sont la temp\u00e9rature car il ne faut pas qu&#8217;elle soit en dessous de 0\u00b0C et l&#8217;hygrom\u00e9trie qui doit \u00eatre aux alentours de 70%.<\/p>\n\n\n\n<p>Pour r\u00e9soudre cette premi\u00e8re probl\u00e9matique, je me suis orient\u00e9 vers un capteur DHT22 car la plage de temp\u00e9rature est id\u00e9al (-40\u00b0C \u00e0 125\u00b0C pour 0.5\u00b0C de pr\u00e9cision)<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"750\" height=\"447\" src=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2019\/03\/dht22_arduino_dht11.jpg\" alt=\"\" class=\"wp-image-89\" srcset=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2019\/03\/dht22_arduino_dht11.jpg 750w, https:\/\/miniprojets.net\/wp-content\/uploads\/2019\/03\/dht22_arduino_dht11-300x179.jpg 300w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/figure>\n\n\n\n<p>Son utilisation est extr\u00eamement simple car une librairie Arduino est disponible et permet de r\u00e9cup\u00e9rer facilement les informations et qu&#8217;il est plug and play.<\/p>\n\n\n\n<p>Voici le code que j&#8217;ai utilis\u00e9 pour le faire fonctionner<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">    #include \"DHT.h\"\/\/ DHT22\n    #define DHTPIN 3     \/\/ Pin de lecture des donnees DHT\n    #define DHT5VPIN 2   \/\/ Pin pour alimentation DHT\n    #define DHTTYPE DHT22   \/\/ DHT 22  (AM2302)\n\n    \/\/global vars\n    DHT dht(DHTPIN, DHTTYPE);\n\n   void setup() {\n\n    \/\/setup led\n    pinMode(13,OUTPUT);\n\n   \/\/setup DHT22\n    pinMode(DHT5VPIN, OUTPUT);\n    digitalWrite(DHT5VPIN, HIGH);\/\/enable power\n    dht.begin();\n\n    \/\/for debugging\n    Serial.begin(9600);\n    }\n\n    void loop(){\n\n    \/\/read from dht22\n    digitalWrite(13,HIGH);\n    float h = dht.readHumidity();\n    float t = dht.readTemperature();\n\n    \/\/Check if any reads failed and exit early (to try again).\n    if (isnan(h) || isnan(t)) {\n   Serial.println(\"Failed to read from DHT sensor!\");\n   return;\n   }\n\n    \/\/some debug info\n    Serial.println(\"Humidity \");\n    Serial.println(h);\n    Serial.println(\"Temperature: \");\n    Serial.println(t);\n\n    delay(3000);\n    }<\/pre>\n\n\n\n<p>Voila maintenant que nous sommes capable de mesurer l&#8217;environnement des tortues, nous pouvons passer \u00e0 la transmission de donn\u00e9es.<\/p>\n\n\n\n<p><strong>PARTIE II : Comment coder et transmettre l&#8217;information au QG?\n<\/strong><\/p>\n\n\n\n<p>Pour cela je suis partie sur une solution de transmission sans fil via un module 433Mhz<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"647\" height=\"327\" src=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2019\/03\/transmissionmod.png\" alt=\"\" class=\"wp-image-98\" srcset=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2019\/03\/transmissionmod.png 647w, https:\/\/miniprojets.net\/wp-content\/uploads\/2019\/03\/transmissionmod-300x152.png 300w\" sizes=\"auto, (max-width: 647px) 100vw, 647px\" \/><figcaption>A gauche le recepteur et \u00e0 droite le transmetteur<\/figcaption><\/figure>\n\n\n\n<p>Pour la partie transmission, au premier abord cela est simple car comme pour le capteur DHT22 une librairie arduino existe et le transmitter est plug and play. Cependant, il ne faut pas oublier que le nombre de caract\u00e8res transmissible par trame est limit\u00e9, ce qui m&#8217;a oblig\u00e9 \u00e0 tronquer les informations venant de la partie mesure.<\/p>\n\n\n\n<p>Voici le code que j&#8217;ai utilis\u00e9 pour le faire fonctionner <\/p>\n\n\n\n<pre class=\"lang:arduino decode:true\">#include <VirtualWire.h>\/\/ 433MHz tx\n#include \"DHT.h\"\/\/ DHT22\n\n#define DHTPIN 3     \/\/ Pin de lecture des donnees DHT\n#define DHT5VPIN 2   \/\/ Pin pour alimentation DHT\n#define DHTTYPE DHT22   \/\/ DHT 22  (AM2302)\n\n\/\/global vars\nDHT dht(DHTPIN, DHTTYPE);\nchar data[50];\n\/\/char *data;\nint identifier;\nint hnew;\nint tnew;\nint tmaxnew=000;\nint tminnew=900;\nint hmaxnew=000;\nint hminnew=900;\nint tbuff;\nint hbuff;\n \nchar tch;\nchar hch;\nvoid setup() {\n\n\/\/setup led\npinMode(13,OUTPUT);\n\n\/\/setup virtualwire\nvw_set_ptt_inverted(true); \/\/\nvw_set_tx_pin(12);\nvw_setup(4000);\/\/ Vitesse de transmission des donnees Kbps\n\n\/\/setup DHT22\npinMode(DHT5VPIN, OUTPUT);\ndigitalWrite(DHT5VPIN, HIGH);\/\/enable power\ndht.begin();\n\n\/\/for debugging\nSerial.begin(9600);\nSerial.println(\"This is the transmitter!\");\nidentifier = 0;\n}\n\nvoid loop(){\n\n    \/\/read from dht22\n    digitalWrite(13,HIGH);\n    float h = dht.readHumidity();\n    float t = dht.readTemperature();\n\n    \/\/Check if any reads failed and exit early (to try again).\n    if (isnan(h) || isnan(t)) {\n   Serial.println(\"Failed to read from DHT sensor!\");\n   return;\n   }\n\n    \/\/some debug info\n    Serial.println(\"Humidity \");\n    Serial.println(h);\n    Serial.println(\"Temperature: \");\n    Serial.println(t);\n\n    \/\/format data string\n    \n    h = h*10;\n    t= t+40;\n    t = t*10;\n    hnew= h;\n    tnew =t;\n   if (tnew>tmaxnew){tmaxnew=tnew;}\n   if (tnew<tminnew){tminnew=tnew;}\n   if (hnew>hmaxnew){hmaxnew=hnew;}\n   if (hnew<hminnew){hminnew=hnew;}\n    \n    sprintf(data,\"T%dM%dm%dH%dM%dm%d\", tnew,tmaxnew,tminnew, hnew, hmaxnew,hminnew);\n    Serial.println(\"Data to send: \")  ;\n    \n    vw_send((uint8_t *)data, strlen(data));\n    vw_wait_tx(); \/\/ Wait until the whole message is gone\n    digitalWrite(13,LOW);\n    \n    char data[50];\n\n    \/\/wait a while (>=2000) for the next reading\n    identifier++;\n    delay(3000);\n}    <\/pre>\n\n\n\n<p>Pour la partie r\u00e9ception, la r\u00e9cup\u00e9ration d&#8217;information est plut\u00f4t simple car la librairie arduino utilis\u00e9e g\u00e8re aussi bien la transmission que la r\u00e9ception de donn\u00e9es.<\/p>\n\n\n\n<p>Voici le code pour le r\u00e9cepteur (to do commenter mon code)<\/p>\n\n\n\n<pre class=\"lang:arduino decode:true\">#include <VirtualWire.h>\n\nchar temperature[3];\nchar temperaturemax[3];\nchar temperaturemin[3];\nchar humidity[3];\nchar humiditymax[3];\nchar humiditymin[3];\nint t;\nint tmax;\nint tmin;\nint h;\nint hmax;\nint hmin;\nfloat tf;\nfloat tfmin;\nfloat tfmax;\nfloat hf;\nfloat hfmax;\nfloat hfmin;\n\n\nvoid setup()\n{\n  \/\/setup virtualwire\n  vw_set_ptt_inverted(true); \/\/ Required for DR3100\n  vw_set_rx_pin(12);\n  vw_setup(4000);  \/\/ Bits per sec\n\n  \/\/setup led\n  pinMode(13, OUTPUT);\n\n  \/\/setup serial for debugging\n  Serial.begin(9600);\n  Serial.println(\"Receiver test\");\n\n  \/\/ Start the receiver PLL\n  vw_rx_start();\n}\nvoid loop()\n{\n\n  \/\/read and print!\n  uint8_t buf[VW_MAX_MESSAGE_LEN];\n  uint8_t buflen = VW_MAX_MESSAGE_LEN;\n  if (vw_get_message(buf, &buflen)) \/\/ Non-blocking\n  {\n    Serial.println((char*)buf);\n    \/\/Serial.println(buflen);\n\n    char dummy[VW_MAX_MESSAGE_LEN];\n\n    temperature[0] = (int)(char*)buf[1];\n    temperature[1] = (int)(char*)buf[2];\n    temperature[2] = (int)(char*)buf[3];\n\n    temperaturemax[0] = (int)(char*)buf[5];\n    temperaturemax[1] = (int)(char*)buf[6];\n    temperaturemax[2] = (int)(char*)buf[7];\n\n    temperaturemin[0] = (int)(char*)buf[9];\n    temperaturemin[1] = (int)(char*)buf[10];\n    temperaturemin[2] = (int)(char*)buf[11];\n\n    humidity[0] = (int)(char*)buf[13];\n    humidity[1] = (int)(char*)buf[14];\n    humidity[2] = (int)(char*)buf[15];\n\n    humiditymax[0] = (int)(char*)buf[17];\n    humiditymax[1] = (int)(char*)buf[18];\n    humiditymax[2] = (int)(char*)buf[19];\n\n    humiditymin[0] = (int)(char*)buf[21];\n    humiditymin[1] = (int)(char*)buf[22];\n    humiditymin[2] = (int)(char*)buf[23];\n\n    t = (int(temperature[0]) - 48) * 100 + (int(temperature[1]) - 48) * 10 + (int(temperature[2]) - 48);\n    tf = t;\n    tf = tf \/ 10;\n    tf = tf - 40;\n    tmax = (int(temperaturemax[0]) - 48) * 100 + (int(temperaturemax[1]) - 48) * 10 + (int(temperaturemax[2]) - 48);\n    tfmax = tmax;\n    tfmax = tfmax \/ 10;\n    tfmax = tfmax - 40;\n    tmin = (int(temperaturemin[0]) - 48) * 100 + (int(temperaturemin[1]) - 48) * 10 + (int(temperaturemin[2]) - 48);\n    tfmin = tmin;\n    tfmin = tfmin \/ 10;\n    tfmin = tfmin - 40;\n\n    h = (int(humidity[0]) - 48) * 100 + (int(humidity[1]) - 48) * 10 + (int(humidity[2]) - 48);\n    hf = h;\n    hf = hf \/ 10;\n    hmax = (int(humiditymax[0]) - 48) * 100 + (int(humiditymax[1]) - 48) * 10 + (int(humiditymax[2]) - 48);\n    hfmax = hmax;\n    hfmax = hfmax \/ 10;\n    hmin = (int(humiditymin[0]) - 48) * 100 + (int(humiditymin[1]) - 48) * 10 + (int(humiditymin[2]) - 48);\n    hfmin = hmin;\n    hfmin = hfmin \/ 10;\n    Serial.print(\"TActuel:\");\n    Serial.print(tf);\n    Serial.print(\", TMin:\");\n    Serial.print(tfmin);\n    Serial.print(\", TMax:\");\n    Serial.println(tfmax);\n    Serial.print(\"HActuel:\");\n    Serial.print(hf);\n    Serial.print(\", HMin:\");\n    Serial.print(hfmin);\n    Serial.print(\", HMax:\");\n    Serial.println(hfmax);\n  }\n}    <\/pre>\n\n\n\n<p>Maintenant que nous savons mesurer, transmettre les informations, il faut pouvoir les lire sur n&#8217;importe quel \u00e9cran.<\/p>\n\n\n\n<p><strong>PARTIE 3: Comment d\u00e9briefer facilement les informations?\n<\/strong><\/p>\n\n\n\n<p>Pour cela, je suis parti sur une solution o\u00f9 un Arduino s&#8217;occupe de faire le serveur. J&#8217;ai donc rajout\u00e9 un module ENC28J60 sur mon Arduino Mega<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"320\" height=\"240\" src=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2019\/03\/arduino_enc28j6.jpg\" alt=\"\" class=\"wp-image-97\" srcset=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2019\/03\/arduino_enc28j6.jpg 320w, https:\/\/miniprojets.net\/wp-content\/uploads\/2019\/03\/arduino_enc28j6-300x225.jpg 300w\" sizes=\"auto, (max-width: 320px) 100vw, 320px\" \/><\/figure>\n\n\n\n<p>J&#8217;avoue que j&#8217;ai bien gal\u00e9r\u00e9 car c&#8217;est un domaine qui m&#8217;\u00e9tait jusque l\u00e0 totalement inconnu. Le plus difficile a \u00e9t\u00e9 d&#8217;interfacer correctement le serveur Arduino avec le reste de mon r\u00e9seau.<\/p>\n\n\n\n<p>Ii faut aussi penser aux Pins utilis\u00e9es car pour les Mega, il vaut mieux utiliser la Pin 53<\/p>\n\n\n\n<p>Je ne pr\u00e9f\u00e8re pas rentrer pour l&#8217;instant dans le d\u00e9tail car trop de souvenirs douloureux sont encore pr\u00e9sent donc\u2026<\/p>\n\n\n\n<p>Voici le code complet pour le site internet<\/p>\n\n\n\n<pre class=\"lang:arduino decode:true\">#include <VirtualWire.h>\n#include <EtherCard.h>\n#define STATIC 0  \/\/ set to 1 to disable DHCP (adjust myip\/gwip values below)\n\nstatic word homePage();\n\/\/ ethernet interface mac address, must be unique on the LAN\nstatic byte mymac[] = { 0x74, 0x69, 0x69, 0x2D, 0x30, 0x31 };\nstatic byte myip[] = { 192, 168, 51, 177 };\nstatic byte gwip[] = { 192, 168, 51, 1 };\nbyte Ethernet::buffer[500];\nBufferFiller bfill;\n\n\/\/ Initialisation des variables\nchar temperature[3];\nchar temperaturemax[3];\nchar temperaturemin[3];\nchar humidity[3];\nchar humiditymax[3];\nchar humiditymin[3];\nint t;\nint tmax;\nint tmin;\nint h;\nint hmax;\nint hmin;\nstatic int tf;\nint tfmin;\nint tfmax;\nstatic int hf;\nint hfmax;\nint hfmin;\n\n\nvoid setup()\n{\n\n  \/\/setup virtualwire\n  vw_set_ptt_inverted(true); \/\/ Required for DR3100\n  vw_set_rx_pin(12);\n  vw_setup(4000);  \/\/ Bits per sec\n\n  \/\/setup led\n  pinMode(13, OUTPUT);\n\n  \/\/setup serial for debugging\n  \/\/Serial.println(\"Receiver test\");\n\n  \/\/ Start the receiver PLL\n  vw_rx_start();\n  Serial.begin(9600);\n  if (ether.begin(sizeof Ethernet::buffer, mymac, 53) == 0)\n    Serial.println( \"Failed to access Ethernet controller\");\n\n#if STATIC\n  ether.staticSetup(myip, gwip);\n#else\n  if (!ether.dhcpSetup())\n    Serial.println(\"DHCP failed\");\n#endif\n  \/\/ether.staticSetup(myip, gwip); \n}\n\nstatic word homePage() {\n  \/\/ReadDHT11();\n\n  bfill = ether.tcpOffset();\n  bfill.emit_p(PSTR(\n                 \"HTTP\/1.0 200 OKrn\"\n                 \"Content-Type: text\/htmlrn\"\n                 \"Pragma: no-cachern\"\n                 \"rn\"\n                 \"<meta http-equiv='refresh' content='30'\/>\"\n                 \"<title>Tortues server<\/title>\"\n                 \"<h1>Temperature actuel: $D C <br> Temperature Maximale: $D C <br> Temperature Minimale: $D C <br>Humidite actuel: $D % <br>Humidite Maximale: $D % <br>Humidite Minimale: $D %<\/h1>\"),\n               tf, tfmax, tfmin, hf, hfmax, hfmin);\n  return bfill.position();\n}\n\nvoid loop()\n{\ndigitalWrite(13, HIGH);\n  \/\/read and print!\n  uint8_t buf[VW_MAX_MESSAGE_LEN];\n  uint8_t buflen = VW_MAX_MESSAGE_LEN;\n  if (vw_get_message(buf, &buflen)) \/\/ Non-blocking\n  {\n    \/\/Serial.println((char*)buf);\n    \/\/Serial.println(buflen);\n\n    char dummy[VW_MAX_MESSAGE_LEN];\n\n    temperature[0] = (int)(char*)buf[1];\n    temperature[1] = (int)(char*)buf[2];\n    temperature[2] = (int)(char*)buf[3];\n\n    temperaturemax[0] = (int)(char*)buf[5];\n    temperaturemax[1] = (int)(char*)buf[6];\n    temperaturemax[2] = (int)(char*)buf[7];\n\n    temperaturemin[0] = (int)(char*)buf[9];\n    temperaturemin[1] = (int)(char*)buf[10];\n    temperaturemin[2] = (int)(char*)buf[11];\n\n    humidity[0] = (int)(char*)buf[13];\n    humidity[1] = (int)(char*)buf[14];\n    humidity[2] = (int)(char*)buf[15];\n\n    humiditymax[0] = (int)(char*)buf[17];\n    humiditymax[1] = (int)(char*)buf[18];\n    humiditymax[2] = (int)(char*)buf[19];\n\n    humiditymin[0] = (int)(char*)buf[21];\n    humiditymin[1] = (int)(char*)buf[22];\n    humiditymin[2] = (int)(char*)buf[23];\n\n\n\n    t = (int(temperature[0]) - 48) * 100 + (int(temperature[1]) - 48) * 10 + (int(temperature[2]) - 48);\n    tf = t;\n    tf = tf \/ 10;\n    tf = tf - 40;\n    tmax = (int(temperaturemax[0]) - 48) * 100 + (int(temperaturemax[1]) - 48) * 10 + (int(temperaturemax[2]) - 48);\n    tfmax = tmax;\n    tfmax = tfmax \/ 10;\n    tfmax = tfmax - 40;\n    tmin = (int(temperaturemin[0]) - 48) * 100 + (int(temperaturemin[1]) - 48) * 10 + (int(temperaturemin[2]) - 48);\n    tfmin = tmin;\n    tfmin = tfmin \/ 10;\n    tfmin = tfmin - 40;\n\n    h = (int(humidity[0]) - 48) * 100 + (int(humidity[1]) - 48) * 10 + (int(humidity[2]) - 48);\n    hf = h;\n    hf = hf \/ 10;\n    hmax = (int(humiditymax[0]) - 48) * 100 + (int(humiditymax[1]) - 48) * 10 + (int(humiditymax[2]) - 48);\n    hfmax = hmax;\n    hfmax = hfmax \/ 10;\n    hmin = (int(humiditymin[0]) - 48) * 100 + (int(humiditymin[1]) - 48) * 10 + (int(humiditymin[2]) - 48);\n    hfmin = hmin;\n    hfmin = hfmin \/ 10;\n\n    \/\/Serial.println(int(temperature[0])-48);\n    \/\/Serial.println(int(temperature[1])-48);\n    \/\/Serial.println(int(temperature[2])-48);\n    \/\/Serial.println(int(temperature[3])-48);\n    \/\/Serial.print(\"TActuel:\");\n    Serial.print(tf);\n    \/\/Serial.print(\", TMin:\");\n    \/\/Serial.print(tfmin);\n    \/\/Serial.print(\", TMax:\");\n    \/\/Serial.println(tfmax);\n\n    \/\/Serial.print(\"HActuel:\");\n    \/\/Serial.print(hf);\n    \/\/Serial.print(\", HMin:\");\n    \/\/Serial.print(hfmin);\n    \/\/Serial.print(\", HMax:\");\n    \/\/Serial.println(hfmax);\n digitalWrite(13, LOW);\n  }\n\n  word len = ether.packetReceive();\n  word pos = ether.packetLoop(len);\n  if (pos)  \/\/ check if valid tcp data is received\n  {\n    ether.httpServerReply(homePage()); \/\/ send web page data   \n    Serial.print(\"Echo\");\n  }\n}    <\/pre>\n\n\n\n<p>Ce qui donne apr\u00e8s plusieurs heures de batailles et de souffrances.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"575\" height=\"1024\" src=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2019\/03\/img_2788-575x1024.jpg\" alt=\"\" class=\"wp-image-90\" srcset=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2019\/03\/img_2788-575x1024.jpg 575w, https:\/\/miniprojets.net\/wp-content\/uploads\/2019\/03\/img_2788-168x300.jpg 168w, https:\/\/miniprojets.net\/wp-content\/uploads\/2019\/03\/img_2788-768x1368.jpg 768w, https:\/\/miniprojets.net\/wp-content\/uploads\/2019\/03\/img_2788.jpg 1832w\" sizes=\"auto, (max-width: 575px) 100vw, 575px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/voidrobotics.files.wordpress.com\/2015\/12\/site_mini.jpg\"><img decoding=\"async\" src=\"http:\/\/voidrobotics.files.wordpress.com\/2015\/12\/site_mini.jpg\" alt=\"site_mini\" class=\"wp-image-162\"\/><\/a><\/figure>\n\n\n\n<p>C&#8217;est ainsi que la Lazy Compagny pu commencer son hibernation en toute s\u00e9r\u00e9nit\u00e9!<\/p>\n\n\n\n<figure class=\"wp-block-image alignnone size-full wp-image-213\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" src=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2019\/03\/2015-09-26-19-26-41-1024x768.jpg\" alt=\"\" class=\"wp-image-87\" srcset=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2019\/03\/2015-09-26-19-26-41-1024x768.jpg 1024w, https:\/\/miniprojets.net\/wp-content\/uploads\/2019\/03\/2015-09-26-19-26-41-300x225.jpg 300w, https:\/\/miniprojets.net\/wp-content\/uploads\/2019\/03\/2015-09-26-19-26-41-768x576.jpg 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><strong>Ressources:<\/strong><\/p>\n\n\n\n<p><strong>Mat\u00e9riel utilis\u00e9<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Capteur DHT22<\/li><li>Arduino nano<\/li><li>Arduino mega 2560<\/li><li>Kit transmission\/r\u00e9ception 433mhz<\/li><li>Module ENC28J60<\/li><\/ul>\n\n\n\n<p><strong>Code<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Salutation, camarades! Cet hiver, j&#8217;ai eu une probl\u00e9matique: &#8220;Comment surveiller \u00e0 distance l&#8217;environnement de la Lazy Compagny pendant leur hibernation?&#8221;&hellip;<\/p>\n","protected":false},"author":1,"featured_media":91,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[54],"tags":[82],"class_list":["post-77","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-capteurs","tag-capteurs"],"_links":{"self":[{"href":"https:\/\/miniprojets.net\/index.php\/wp-json\/wp\/v2\/posts\/77","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=77"}],"version-history":[{"count":0,"href":"https:\/\/miniprojets.net\/index.php\/wp-json\/wp\/v2\/posts\/77\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/miniprojets.net\/index.php\/wp-json\/wp\/v2\/media\/91"}],"wp:attachment":[{"href":"https:\/\/miniprojets.net\/index.php\/wp-json\/wp\/v2\/media?parent=77"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/miniprojets.net\/index.php\/wp-json\/wp\/v2\/categories?post=77"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/miniprojets.net\/index.php\/wp-json\/wp\/v2\/tags?post=77"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}