{"id":43,"date":"2018-04-24T15:56:10","date_gmt":"2018-04-24T13:56:10","guid":{"rendered":"http:\/\/miniprojets.net\/?p=43"},"modified":"2022-12-17T17:27:09","modified_gmt":"2022-12-17T16:27:09","slug":"nodemcu-ou-comment-piloter-des-prises-via-le-wifi-pour-moins-de-10e","status":"publish","type":"post","link":"https:\/\/miniprojets.net\/index.php\/2018\/04\/24\/nodemcu-ou-comment-piloter-des-prises-via-le-wifi-pour-moins-de-10e\/","title":{"rendered":"NodeMcu ou comment piloter des prises via le Wifi pour moins de 10\u20ac"},"content":{"rendered":"<p>Bonjour,<\/p>\n<p>Aujourd&#8217;hui, on va \u00e9tudier la probl\u00e9matique d&#8217;alimenter ou d&#8217;\u00e9teindre des prises \u00e0 distance via un r\u00e9seau Wifi.<\/p>\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<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-796 aligncenter\" src=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2019\/09\/licence-300x105.png\" alt=\"\" width=\"300\" height=\"105\" srcset=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2019\/09\/licence-300x105.png 300w, https:\/\/miniprojets.net\/wp-content\/uploads\/2019\/09\/licence.png 403w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>Les objectifs secondaires sont un pilotage via un site web, une solution coutant moins de 10\u20ac et peu gourmande en \u00e9nergie.<\/p>\n<p>J&#8217;ai donc d\u00e9cid\u00e9 de partir sur une solution bas\u00e9e sur un nodeMcu (ESP8266) et de relais.<\/p>\n<p>Personnellement, j&#8217;ai achet\u00e9 un lot de nodeMcu v3 sur aliexpress. Idem pour les relais.<\/p>\n<p>Pour cette utilisation, j&#8217;ai achet\u00e9 1 module relais comprenant 4 relais car je n&#8217;ai que 3 prises et 1 lampe \u00e0 g\u00e9rer.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-51 size-large\" title=\"NodeMcu\" src=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/DSC_0713-1024x576.jpg\" alt=\"\" width=\"640\" height=\"360\" srcset=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/DSC_0713-1024x576.jpg 1024w, https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/DSC_0713-300x169.jpg 300w, https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/DSC_0713-768x432.jpg 768w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-53 size-large\" src=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/DSC_0716-1024x576.jpg\" alt=\"\" width=\"640\" height=\"360\" srcset=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/DSC_0716-1024x576.jpg 1024w, https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/DSC_0716-300x169.jpg 300w, https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/DSC_0716-768x432.jpg 768w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/p>\n<p>Bon, maintenant passons aux choses s\u00e9rieuses&#8230;<\/p>\n<p>Pour commencer, je passe par l&#8217;IDE d&#8217;arduino pour faire la programmation.<\/p>\n<p>Dans un premier temps, il faut commencer par d\u00e9clarer la board dans l&#8217;IDE.<\/p>\n<p>Aller dans les pr\u00e9f\u00e9rences de votre IDE puis dans URL de gestionnaire de cartes suppl\u00e9mentaires et coller le lien suivant:<\/p>\n<p>http:\/\/arduino.esp8266.com\/stable\/package_esp8266com_index.json<\/p>\n<p>Cliquer ensuite sur OK.<\/p>\n<p>Ensuite aller dans Outils -&gt; Type de cartes -&gt; Gestionnaire de carte<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-48 size-full\" src=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/IDEetape2.png\" alt=\"\" width=\"772\" height=\"486\" srcset=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/IDEetape2.png 772w, https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/IDEetape2-300x189.png 300w, https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/IDEetape2-768x483.png 768w\" sizes=\"auto, (max-width: 772px) 100vw, 772px\" \/><\/p>\n<p>Rechercher esp8266 puis installer.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-49 size-full\" src=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/IDEetape3.png\" alt=\"\" width=\"784\" height=\"413\" srcset=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/IDEetape3.png 784w, https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/IDEetape3-300x158.png 300w, https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/IDEetape3-768x405.png 768w\" sizes=\"auto, (max-width: 784px) 100vw, 784px\" \/><\/p>\n<p>Une fois que cela est fait, cliquer sur OK.<\/p>\n<p>Vous pouvez maintenant connecter votre NodeMcu sur l&#8217;ordinateur.<\/p>\n<p>Pour ma part, j&#8217;ai d\u00fb installer les drivers CH340G pour le faire fonctionner.<\/p>\n<p>Maintenant que tout est ok, nous allons tester le fonctionnement de la carte.<\/p>\n<p>Pour cela, je vais utiliser une LED connect\u00e9e directement au GND et \u00e0 la pin D7 (qui correspond \u00e0 la pin 13 pour un arduino)<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-50 size-large\" src=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/DSC_0714-1024x576.jpg\" alt=\"\" width=\"640\" height=\"360\" srcset=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/DSC_0714-1024x576.jpg 1024w, https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/DSC_0714-300x169.jpg 300w, https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/DSC_0714-768x432.jpg 768w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/p>\n<p>Pour les param\u00e8tres de communication dans l&#8217;IDE, j&#8217;ai mis ceux-ci:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-57 size-full\" src=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/IDEparam.png\" alt=\"\" width=\"521\" height=\"592\" srcset=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/IDEparam.png 521w, https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/IDEparam-264x300.png 264w\" sizes=\"auto, (max-width: 521px) 100vw, 521px\" \/><\/p>\n<p>Et pour le programme, j&#8217;ai utilis\u00e9 ce code pour faire un test:<\/p>\n<pre class=\"lang:default decode:true\" title=\"Blink code\">\/\/ Blink\n\n\/\/ the setup function runs once when you press reset or power the board\nvoid setup() {\n  \/\/ initialize Pin D7 or digital pin 13 as an output.\n  pinMode(13, OUTPUT);\n}\n\n\/\/ the loop function runs over and over again forever\nvoid loop() {\n  digitalWrite(13, HIGH);   \/\/ turn the LED on\n  delay(1000);              \/\/ wait for a second\n  digitalWrite(13, LOW);    \/\/ turn the LED off\n  delay(1000);              \/\/ wait for a second\n}<\/pre>\n<p>Une fois l&#8217;upload effectu\u00e9 la LED doit se mettre \u00e0 clignoter.<\/p>\n<p>Maintenant, nous allons passer \u00e0 la partie &#8220;Site WEB&#8221;.<\/p>\n<p>Il s&#8217;agira d&#8217;une interface HTML des plus basique.<\/p>\n<p>Dans un premier temps, on va v\u00e9rifier que le NodeMcu voit bien les r\u00e9seaux Wifi.<\/p>\n<p>Pour cela, j&#8217;utilise le code suivant:<\/p>\n<pre class=\"lang:default decode:true \" title=\"Test of Wifi\">#include \"ESP8266WiFi.h\"\n\nvoid setup() {\n  Serial.begin(115200);\n  \/\/ Set WiFi to station mode and disconnect from an AP if it was previously connected\n  WiFi.mode(WIFI_STA);\n  WiFi.disconnect();\n  delay(2000);\n  Serial.println(\"Setup done\");\n}\n\nvoid loop() {\n  Serial.println(\"scan start\");\n\n  \n  int n = WiFi.scanNetworks();\/\/ WiFi.scanNetworks will return the number of networks found\n  Serial.println(\"scan done\");\n  if (n == 0)\n    Serial.println(\"no networks found\");\n  else\n  {\n    Serial.print(n);\n    Serial.println(\" networks found\");\n    for (int i = 0; i &lt; n; ++i)\n    {\n      \/\/ Print SSID and RSSI for each network found\n      Serial.print(i + 1);\n      Serial.print(\": \");\n      Serial.print(WiFi.SSID(i));\n      Serial.print(\" (\");\n      Serial.print(WiFi.RSSI(i));\n      Serial.print(\")\");\n      Serial.println((WiFi.encryptionType(i) == ENC_TYPE_NONE)?\" \":\"*\");\n      delay(10);\n    }\n  }\n  Serial.println(\"\");\n\n  \/\/ Wait a bit before scanning again\n  delay(5000);\n}<\/pre>\n<p>Une fois t\u00e9l\u00e9charg\u00e9 dans le NodeMcu, on ouvre le moniteur s\u00e9rie. Normalement, on doit voir les r\u00e9seaux qui nous entourent comme dans l&#8217;exemple ci-dessous.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-60 size-full\" src=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/Wifis.png\" alt=\"\" width=\"1016\" height=\"375\" srcset=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/Wifis.png 1016w, https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/Wifis-300x111.png 300w, https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/Wifis-768x283.png 768w\" sizes=\"auto, (max-width: 1016px) 100vw, 1016px\" \/><\/p>\n<p>Maintenant que l&#8217;on voit les r\u00e9seaux wifi et que l&#8217;on sait contr\u00f4ler une LED&#8230; On va mixer tout cela pour contr\u00f4ler une LED via un site Web!!!<\/p>\n<p>Pour cela, j&#8217;utilise le code suivant:<\/p>\n<pre class=\"lang:default decode:true \" title=\"Code LED Wifi\">#include &lt;ESP8266WiFi.h&gt;\n\n\/\/ set wifi IDs\nconst char* ssid = \"wireless\";\nconst char* password = \"password\";\n\n\/\/ attach led to pin 13\nint ledPin = 13; \/\/ GPIO13\nWiFiServer server(80);\n \nvoid setup() {\n  Serial.begin(115200);\n  delay(10);\n \n  pinMode(ledPin, OUTPUT);\n  digitalWrite(ledPin, LOW);\n \n  \/\/ Connect to WiFi network\n  Serial.println();\n  Serial.println();\n  Serial.print(\"Connecting to \");\n  Serial.println(ssid);\n \n  WiFi.begin(ssid, password);\n \n  while (WiFi.status() != WL_CONNECTED) {\n    delay(500);\n    Serial.print(\".\");\n  }\n  Serial.println(\"\");\n  Serial.println(\"WiFi connected\");\n \n  \/\/ Start the server\n  server.begin();\n  Serial.println(\"Server started\");\n \n  \/\/ Print the IP address\n  Serial.print(\"Use this URL to connect: \");\n  Serial.print(\"http:\/\/\");\n  Serial.print(WiFi.localIP());\n  Serial.println(\"\/\");\n \n}\n \nvoid loop() {\n  \/\/ Check if a client has connected\n  WiFiClient client = server.available();\n  if (!client) {\n    return;\n  }\n \n  \/\/ Wait until the client sends some data\n  Serial.println(\"new client\");\n  while(!client.available()){\n    delay(1);\n  }\n \n  \/\/ Read the first line of the request\n  String request = client.readStringUntil('\\r');\n  Serial.println(request);\n  client.flush();\n \n  \/\/ Match the request\n \n  int value = LOW;\n  if (request.indexOf(\"\/LED=ON\") != -1)  {\n    digitalWrite(ledPin, HIGH);\n    value = HIGH;\n  }\n  if (request.indexOf(\"\/LED=OFF\") != -1)  {\n    digitalWrite(ledPin, LOW);\n    value = LOW;\n  }\n \n\/\/ Set ledPin according to the request\n\/\/digitalWrite(ledPin, value);\n \n  \/\/ Return the response\n  client.println(\"HTTP\/1.1 200 OK\");\n  client.println(\"Content-Type: text\/html\");\n  client.println(\"\"); \/\/  do not forget this one\n  client.println(\"&lt;!DOCTYPE HTML&gt;\");\n  client.println(\"&lt;html&gt;\");\n \n  client.print(\"Led pin is now: \");\n \n  if(value == HIGH) {\n    client.print(\"On\");\n  } else {\n    client.print(\"Off\");\n  }\n  client.println(\"&lt;br&gt;&lt;br&gt;\");\n  client.println(\"&lt;a href=\\\"\/LED=ON\\\"\\\"&gt;&lt;button&gt;Turn On &lt;\/button&gt;&lt;\/a&gt;\");\n  client.println(\"&lt;a href=\\\"\/LED=OFF\\\"\\\"&gt;&lt;button&gt;Turn Off &lt;\/button&gt;&lt;\/a&gt;&lt;br \/&gt;\");  \n  client.println(\"&lt;\/html&gt;\");\n \n  delay(1);\n  Serial.println(\"Client disonnected\");\n  Serial.println(\"\");\n \n}\n<\/pre>\n<p>Une fois l&#8217;upload termin\u00e9, on ouvre le terminal pour connaitre l&#8217;adresse IP du NodeMcu.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-61 size-full\" src=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/wifiID.png\" alt=\"\" width=\"650\" height=\"335\" srcset=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/wifiID.png 650w, https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/wifiID-300x155.png 300w\" sizes=\"auto, (max-width: 650px) 100vw, 650px\" \/><\/p>\n<p>Nous pouvons donc aller sur un navigateur et on tape l&#8217;URL donn\u00e9e. On peux enfin jouer avec les boutons et voir la LED s&#8217;allumer et s&#8217;\u00e9teindre.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-63 size-full\" src=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/Website.png\" alt=\"\" width=\"935\" height=\"151\" srcset=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/Website.png 935w, https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/Website-300x48.png 300w, https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/Website-768x124.png 768w\" sizes=\"auto, (max-width: 935px) 100vw, 935px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-70 size-full\" src=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/DSC_0715.jpg\" alt=\"\" width=\"3920\" height=\"2204\" srcset=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/DSC_0715.jpg 3920w, https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/DSC_0715-300x169.jpg 300w, https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/DSC_0715-768x432.jpg 768w, https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/DSC_0715-1024x576.jpg 1024w\" sizes=\"auto, (max-width: 3920px) 100vw, 3920px\" \/><\/p>\n<p>On peut m\u00eame r\u00e9cup\u00e9rer l\u2019\u00e9tat des actions via le moniteur s\u00e9rie<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-64 size-full\" src=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/wifistate.png\" alt=\"\" width=\"650\" height=\"297\" srcset=\"https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/wifistate.png 650w, https:\/\/miniprojets.net\/wp-content\/uploads\/2018\/04\/wifistate-300x137.png 300w\" sizes=\"auto, (max-width: 650px) 100vw, 650px\" \/><\/p>\n<p>Et voila maintenant on sait piloter une LED via le Wifi!<\/p>\n<p>Pour le reste, il suffit d&#8217;adapter le code afin de piloter le module relais et de connecter le tout sur une source de 5V!<\/p>\n<p>Mon code et une photo de l&#8217;installation arrivent bient\u00f4t&#8230;<\/p>\n<p>Les sources pour cet article sont:<\/p>\n<p><a href=\"https:\/\/www.hackster.io\/Aritro\/getting-started-with-esp-nodemcu-using-arduinoide-aa7267\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.hackster.io\/Aritro\/getting-started-with-esp-nodemcu-using-arduinoide-aa7267<\/a><\/p>\n<p>https:\/\/ouiaremakers.com\/posts\/tutoriel-diy-un-capteur-de-temperature-humidite-en-wifi-avec-une-page-web<\/p>\n<p>@Bient\u00f4t<\/p>\n<p>Ferrader<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bonjour, Aujourd&#8217;hui, on va \u00e9tudier la probl\u00e9matique d&#8217;alimenter ou d&#8217;\u00e9teindre des prises \u00e0 distance via un r\u00e9seau Wifi. Pour information,&hellip;<\/p>\n","protected":false},"author":1,"featured_media":51,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[54],"tags":[18],"class_list":["post-43","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-capteurs","tag-domotique"],"_links":{"self":[{"href":"https:\/\/miniprojets.net\/index.php\/wp-json\/wp\/v2\/posts\/43","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=43"}],"version-history":[{"count":0,"href":"https:\/\/miniprojets.net\/index.php\/wp-json\/wp\/v2\/posts\/43\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/miniprojets.net\/index.php\/wp-json\/wp\/v2\/media\/51"}],"wp:attachment":[{"href":"https:\/\/miniprojets.net\/index.php\/wp-json\/wp\/v2\/media?parent=43"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/miniprojets.net\/index.php\/wp-json\/wp\/v2\/categories?post=43"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/miniprojets.net\/index.php\/wp-json\/wp\/v2\/tags?post=43"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}