{"id":1142,"date":"2017-11-12T12:53:46","date_gmt":"2017-11-12T10:53:46","guid":{"rendered":"http:\/\/www.fabienm.eu\/wordpress\/?p=1142"},"modified":"2017-11-13T10:16:25","modified_gmt":"2017-11-13T08:16:25","slug":"prise-en-main-dun-module-nodemcu-esp8266","status":"publish","type":"post","link":"http:\/\/www.fabienm.eu\/wordpress\/2017\/11\/12\/prise-en-main-dun-module-nodemcu-esp8266\/","title":{"rendered":"Prise en main d&rsquo;un module NodeMCU (ESP8266)"},"content":{"rendered":"<p>Dans l&rsquo;objectif final de faire le relev\u00e9 de mon compteur d&rsquo;eau, j&rsquo;ai investi dans un module <a href=\"https:\/\/en.wikipedia.org\/wiki\/NodeMCU\">NodeMCU.<\/a> Ce module permet de faire du microcontr\u00f4leur connect\u00e9 sur son r\u00e9seau wifi. Ce qui est parfait pour faire de l&rsquo;IoT, surtout quand on voit le prix de l&rsquo;engin (inf\u00e9rieur \u00e0 10\u20ac).<\/p>\n<p><strong>D\u00e9couverte du kit<\/strong><\/p>\n<div id=\"attachment_1144\" style=\"width: 175px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1144\" class=\"wp-image-1144 size-medium\" src=\"http:\/\/www.fabienm.eu\/wordpress\/wp-content\/uploads\/2017\/11\/nodemcu_back_photo-165x300.png\" alt=\"Marquage sous le NodeMCU\" width=\"165\" height=\"300\" srcset=\"http:\/\/www.fabienm.eu\/wordpress\/wp-content\/uploads\/2017\/11\/nodemcu_back_photo-165x300.png 165w, http:\/\/www.fabienm.eu\/wordpress\/wp-content\/uploads\/2017\/11\/nodemcu_back_photo-768x1394.png 768w, http:\/\/www.fabienm.eu\/wordpress\/wp-content\/uploads\/2017\/11\/nodemcu_back_photo-564x1024.png 564w, http:\/\/www.fabienm.eu\/wordpress\/wp-content\/uploads\/2017\/11\/nodemcu_back_photo.png 1540w\" sizes=\"auto, (max-width: 165px) 100vw, 165px\" \/><p id=\"caption-attachment-1144\" class=\"wp-caption-text\">Le marquage indique un baudrate de 9600 baud. Mais cela ne semble pas marcher.<\/p><\/div>\n<p>L&rsquo;interface USB du module est juste un convertisseur USB-UART, qui est vu comme un ttyUSB0 sur ma debian:<\/p>\n<pre>$ sudo dmesg\r\n[50235.509550] usb 1-1: new full-speed USB device number 5 using xhci_hcd\r\n[50235.680785] usb 1-1: New USB device found, idVendor=10c4, idProduct=ea60\r\n[50235.680788] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3\r\n[50235.680790] usb 1-1: Product: CP2102 USB to UART Bridge Controller\r\n[50235.680792] usb 1-1: Manufacturer: Silicon Labs\r\n[50235.680793] usb 1-1: SerialNumber: 0001\r\n[50235.688967] cp210x 1-1:1.0: cp210x converter detected\r\n[50235.690454] usb 1-1: cp210x converter now attached to ttyUSB0\r\n<\/pre>\n<p>Si l&rsquo;on tente de se connecter avec le baudrate indiqu\u00e9 sur le module (9600 bauds) on n&rsquo;obtient (presque) que des caract\u00e8res sp\u00e9ciaux.<\/p>\n<p>Message obtenu apr\u00e8s s&rsquo;\u00eatre connect\u00e9 au module et appuy\u00e9 sur le bouton reset:<\/p>\n<pre>r$$\ufffd\ufffd|\ufffdl\ufffd|\u0002\u0004\u0004\u0004\ufffd\r\n               $\ufffd\u001cp\ufffd|\u0003\ufffdp\u0002\ufffds\ufffdc\ufffd\u001cp\r\n                                \ufffdp\ufffdo\ufffdloo\ufffd\ufffd\ufffd\r\n                                            c\u001cp\ufffdl`\u0002{$p\ufffdN\ufffd\u0010\u0002\u0004\u0004\ufffd\u0004d\u0004\u0004\u0004\u0004\u0004\u0004\"\u0004N\ufffd\ufffdN\ufffd\u0004\u0004\"\ufffd\ufffdnn\ufffd\u0003l\ufffd l`\u0003\ufffd22oo\r\n                                                                                                 l`\u0002\u0002Nr\ufffd\ufffd\u0002\u0004\u0004\ufffd\ufffd{r$p\ufffdN\ufffd\u0010\u0002\u0004\u0004r\ufffd\ufffd\ufffd\ufffd\u0003\r\n\r\n\r\n\r\n                                                                                                                               b\r\n                                                                                                                                n\ufffd|\u0003\uc39f\ufffd\r\n                                                                                                                                       \ufffd\ufffdoo\ufffd\r\n                                                                                                                                            \u0004d \u0002\ufffd\u0013\u0013no\r\n                                                                                                                                                     l`\u0003\u0002or\ufffd{\u0002\u0004\u0004\u0002\u0004$p\ufffdN\ufffd\u0010\u0002\u0004\u0004r\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u001c\ufffd\r\n\r\n            c\r\n             o\ufffd|\u0003\ufffd\ufffd\r\n                   c\ufffd\ufffdNN\ufffd\u0002\u0004\u0004$ \u0002\ufffd\u0012\u0013nn\r\n                                    l`\u0003\u0003o{\ufffd{\u0002\u0004\u0004\ufffd\u0002$ \u0002r\ufffd\ufffdn\r\n\r\n                                                        \ufffd\u0003l`\u0002{d\ufffd\ufffdo\ufffd\ufffd\ufffdNN\ufffd\ufffd\ufffd\ufffdbr\u0012nnn\ufffd\u001fl\ufffdcl\r\n                                                                                       \ufffd2\ufffd\ufffd\ufffd\u0012\ufffd\ufffd\ufffd\u0010\u0002\u0004\u0004\u0004\u0004\u0004\ufffd\u001f\r\n                                                                                                         lllsd\r\n                                                                                                               \ufffd\u0012\ufffd\ufffdd$N\ufffd\ufffd\u0004\u0004\u0004\u0004\r\n\r\n                                                                                                                            \ufffd\u001fl\ufffd\ufffd\ufffdld\r\n                                                                                                                                    \ufffd\u0012\ufffd$\ufffd\ufffdN\ufffdn\ufffdlbc\ufffd\u0003\ufffd\ufffdld\ufffd\ufffdB\r\n                                                                                                                                                          \ufffd\ufffdd$p\"\ufffd\u0002\"r\ufffd\ufffd\u001cnc{cr\ufffd\ufffd\ufffdd cd \u0002$\ufffd\ufffd\ufffd\u0002\u0002\u0004\ufffdn\ufffd|\ufffd\ufffdol\ufffd\ufffd|\ufffd\u0004\u0002$\u0004\u0004\r\n                                     l`\u0003sl\ufffd\ufffd\u0002\ufffd\u0012\ufffdN\ufffd\ufffdr\ufffd\ufffdN|\ufffd\u0004$\u0004$l\ufffd\ufffdr\ufffdd\ufffdd\u0012\ufffd\u0004\u0004\u0004d \u0002\ufffd\ufffdr\ufffdd\ufffdd\u0012\ufffd\r\n\r\n\r\n                                                                                      l`\u0002\ufffd\u009cN\ufffdl\r\n                                                                                              \u0002\ufffd\r\n\r\n                                                                                                ll`\u0003sl{l\ufffd\ufffd\u0012cc\r\n                                                                                                             \ufffd\ufffd\"\ufffd\"\u0004B{\u0002\u0002\ufffd\u0004\u0012\u0012B\ufffd\ufffdo\ufffd\ufffd2oo\ufffd\u0010\u0002\u0003l\ufffd\ufffd\u0003\r\n                                                                                                                                            l\r\n                                                                                                                                             \ufffd\u001c\ufffdl\ufffd ll\ufffd\ufffd\ufffd\ufffd$\ufffd\u0002N\ufffd\ufffd\ufffd\u001bBB\r\n                                                                                                                                                                   l\r\n                                                                                                                                                                    l\r\n                                                                                                                                                                     c\r\n                                                                                                                                                                      \u0003\u0003\ufffd\ufffd\u0012cc\r\n     l\u0004\ufffd\"\u001crlr$\r\nready\r\n<\/pre>\n<p>Le dernier mot s&rsquo;affiche en texte clair.<\/p>\n<p>Le point d&rsquo;acc\u00e8s wifi est lui visible avec le nom <strong>FaryLink_3818DF<\/strong>.<\/p>\n<p>Le premier objectif de la prise en main du kit est de faire en sorte que le module se connect \u00e0 ma box wifi. Il faut donc trouver un moyen de lui communiquer le SSID ainsi que le mot de passe.<\/p>\n<p><strong>Programmation avec l&rsquo;ide arduino<\/strong><\/p>\n<p>Il n&rsquo;est pas facile de trouver des tutoriels autre que vid\u00e9os pour prendre en main ce kit. Apparemment la m\u00e9thode utilis\u00e9e pour d\u00e9velopper sur nodeMCU passe par l&rsquo;IDE de Arduino : stretch. Il faut donc commencer par l&rsquo;installer, puis le configurer avec les param\u00e8tres du node.<\/p>\n<p>L&rsquo;installation de l&rsquo;ide arduino est hyper simple sous debian :<\/p>\n<pre>sudo apt install arduino\r\n<\/pre>\n<p>Et voila&#8230; Par contre il faut ensuite le configurer pour NodeMCU !<\/p>\n<p>D\u00e9j\u00e0 on ajoute le port s\u00e9rie \u00e0 l&rsquo;ide en modifiant son fichier de pr\u00e9f\u00e9rence ~\/.arduino\/preference.txt:<\/p>\n<pre>serial.port=\/dev\/ttyUSB0\r\n<\/pre>\n<p>Pour l&rsquo;instant je n&rsquo;ai pas r\u00e9ussi \u00e0 le configurer pour NodeMCU. On va donc directement passer au flashage d&rsquo;un firmware plus r\u00e9cent.<\/p>\n<p><strong>Flashage d&rsquo;un firmware r\u00e9cent.<\/strong><\/p>\n<p>Les guides pour flasher un firmware r\u00e9cent sont <a href=\"http:\/\/www.whatimade.today\/flashing-the-nodemcu-firmware-on-the-esp8266-linux-guide\/\">d\u00e9j\u00e0 plus facile<\/a> \u00e0 trouver.<\/p>\n<p>J&rsquo;ai pris la version la plus r\u00e9cente du firmware sur le github:<\/p>\n<pre>wget https:\/\/github.com\/nodemcu\/nodemcu-firmware\/releases\/download\/0.9.6-dev_20150704\/nodemcu_integer_0.9.6-dev_20150704.bin\r\n<\/pre>\n<p>Elle date un peu mais visiblement si on veut un truc plus r\u00e9cent il faut le compiler, et donc installer la toolchain, ce qui ne semble pas si \u00e9vident.<\/p>\n<p>L&rsquo;outils de flashage est en python :<\/p>\n<pre>git clone https:\/\/github.com\/themadinventor\/esptool.git\r\n<\/pre>\n<p>Celui dispo dans debian n&rsquo;a pas l&rsquo;air de fonctionner pareil.<\/p>\n<p>Une fois le kit branch\u00e9 il suffit de lancer la commande suivante :<\/p>\n<pre>$ sudo python esptool.py --port \/dev\/ttyUSB0  write_flash 0x00000 \/opt\/nodemcu\/nodemcu_integer_0.9.6-dev_20150704.bin \r\nesptool.py v2.2-dev\r\nConnecting....\r\nDetecting chip type... ESP8266\r\nChip is ESP8266EX\r\nUploading stub...\r\nRunning stub...\r\nStub running...\r\nConfiguring flash size...\r\nAuto-detected Flash size: 4MB\r\nFlash params set to 0x0040\r\nCompressed 450072 bytes to 290528...\r\nWrote 450072 bytes (290528 compressed) at 0x00000000 in 25.7 seconds (effective 139.9 kbit\/s)...\r\nHash of data verified.\r\n\r\nLeaving...\r\nHard resetting...\r\n<\/pre>\n<p>Visiblement tous semble s&rsquo;\u00eatre bien pass\u00e9, pourtant quand on appuie sur reset on obtient le message suivant sur la console :<\/p>\n<pre>rld\ufffd\ufffd|\ufffd$\ufffd|\u0003\r\n\r\n           \u0004\ufffd\r\n             l\ufffd\u0004b|\ufffd\u001b\ufffdr\ufffdc\ufffd\u001cp\u0004\ufffd\ufffdoo\ufffdlno\ufffd\ufffd\ufffd\r\n                                       c\u001cp\ufffdsdrlp\ufffdn\ufffd\u0010\u0002\r\n\r\n                                                     \ufffd\u0004l\r\n                                                        \u0004\u0004\r\n\r\n                                                          \u0004c\r\n                                                            N\ufffd|\u0003\ufffd$\u0004\ufffd\u0004\ufffd\ufffdon\ufffd\u0003$\ufffd $ \u0003\ufffd\u0012N\u0004l`\u0003\u0002nr\ufffdn\r\n                                                                                             \u0004\u0002\ufffd\ufffd \u0003p\ufffdN\ufffd\u0010\u0003\r\n                                                                                                         \u0004r\ufffd\ufffd\ufffd\ufffd\ufffd\r\n                                                                                                                \u0004\u0004\r\n                                                                                                                  b\u0004o\ufffd\ufffdn\ufffd\r\n                                                                                                                         \ufffdc\ufffd\ufffdon\ufffd\u0003\u0004\r\n                                                                                                                                  l`\u0003\ufffd\u0012o\r\n                                                                                                                                        l \u0003\u0003nr\ufffdn\u0004\u0004{{$ \u0003p\ufffdN\ufffd\u0010\u0002\r\n                                                                                                                                                             \u0004r\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0003\u0004#\r\n n\ufffd|\u0002\r\n\r\n     #\ufffd\ufffdno\ufffd\u0002\r\n\r\n            $ \u0003\ufffd\u001b\u0012oo\r\n                    $ \u0003\u0003N{\ufffd\ufffd\u0002\u0004\r\n                              \u001b\ufffd$`\u0002s\ufffd\ufffdn\r\n                                       \u0004\u0012\ufffdl \u0003\ufffd\u0541MEM CHECK FAIL!!!\r\n\ufffdr$\r\n<\/pre>\n<p>Visiblement \u00e7a marche pas, pourtant le point d&rsquo;acc\u00e8s wifi est toujours visible. Du coup on va tout de m\u00eame installer la toolchain.<\/p>\n<p><strong>Installation de la toolchain.<\/strong><\/p>\n<p>C&rsquo;est pas si compliqu\u00e9 en fait, il suffit de t\u00e9l\u00e9charger le github :<\/p>\n<pre>git clone https:\/\/github.com\/pfalcon\/esp-open-sdk.git\r\ncd esp-open-sdk\r\n<\/pre>\n<p>Puis de lancer make. Dans mon cas il me manquait le paquet help2man pour que \u00e7a se configure correctement :<\/p>\n<pre>sudo apt install help2man\r\n<\/pre>\n<p>Il faut ensuite patienter environ 30 minute pour compiler le tout en faisant make:<\/p>\n<pre>make\r\n<\/pre>\n<p>Et attendre qu&rsquo;il nous dise que c&rsquo;est bon :<\/p>\n<pre>[...]\r\nnet_chksum.o lwip\/core\/ipv4\/ip_addr.o lwip\/core\/ipv4\/ip.o lwip\/core\/ipv4\/ip_frag.o lwip\/netif\/etharp.o lwip\/app\/dhcpserver.o espconn_dummy.o\r\ncp liblwip_open.a \/opt\/nodemcu\/esp-open-sdk\/xtensa-lx106-elf\/xtensa-lx106-elf\/sysroot\/usr\/lib\/\r\nmake[1]: Leaving directory '\/opt\/nodemcu\/esp-open-sdk\/esp-open-lwip'\r\ncp -a esp-open-lwip\/include\/arch esp-open-lwip\/include\/lwip esp-open-lwip\/include\/netif \\\r\n    esp-open-lwip\/include\/lwipopts.h \\\r\n    \/opt\/nodemcu\/esp-open-sdk\/xtensa-lx106-elf\/xtensa-lx106-elf\/sysroot\/usr\/include\/\r\n\r\nXtensa toolchain is built, to use it:\r\n\r\nexport PATH=\/opt\/nodemcu\/esp-open-sdk\/xtensa-lx106-elf\/bin:$PATH\r\n\r\nEspressif ESP8266 SDK is installed, its libraries and headers are merged with the toolchain\r\n<\/pre>\n<p><strong>Compilation du firmware<\/strong><\/p>\n<p>On r\u00e9cup\u00e8re la derni\u00e8re release du firmware sur le github correspondant:<\/p>\n<pre>wget https:\/\/github.com\/nodemcu\/nodemcu-firmware\/archive\/2.1.0-master_20170824.tar.gz\r\ntar -zxvf 2.1.0-master_20170824.tar.gz\r\ncd 2.1.0-master_20170824\r\n<\/pre>\n<p>On exporte la toochain pr\u00e9c\u00e9demment compil\u00e9e puis on lance make :<\/p>\n<pre>export PATH=\/opt\/nodemcu\/esp-open-sdk\/xtensa-lx106-elf\/bin:$PATH\r\nmake\r\n<\/pre>\n<p>Et on attend 5\u00a0minutes d&rsquo;avoir une compilation sans message d&rsquo;erreur.<\/p>\n<p><strong>Flashage du firmware 2.1<\/strong><\/p>\n<p>On peut d\u00e9sormais flasher le nouveau firmware aux adresses indiqu\u00e9es:<\/p>\n<pre>sudo python esptool.py --port \/dev\/ttyUSB0  write_flash 0x00000 ..\/nodemcu\/nodemcu-firmware-2.1.0-master_20170824\/bin\/0x00000.bin\r\nsudo python esptool.py --port \/dev\/ttyUSB0  write_flash 0x10000 ..\/nodemcu\/nodemcu-firmware-2.1.0-master_20170824\/bin\/0x10000.bin\r\n<\/pre>\n<p>Une fois flash\u00e9 on obtient bien une r\u00e9action du nodemcu apr\u00e8s reset :<\/p>\n<pre>rd$\u071e\ufffdc\u0003\ufffdn\r\n         \u0004\u0004\ufffd\u0004$\ufffd\r\n               B|\ufffd\ufffdp\u0003\ufffd\ufffd|\u0013\"\ufffd\r\n                           c\ufffd\ufffdoo\ufffdloN\ufffd\ufffd\ufffd\u0004b\u001cp\ufffdl \u0002rlp\ufffdo\ufffd\u0010\u0003\r\n                                                       \u0004\ufffd\r\n                                                         l\u0004\r\n\r\n                                                           \u0004\u0004\r\n                                                             c\u0004n\ufffd|\u0002\ufffd\ufffd\ufffd\r\n\r\n                                                                      #\ufffd\ufffdoN\ufffd\u0003l\ufffd`\u0002\ufffd\u0012N\r\n                                                                                    $\u0003or\ufffdo\u0004\r\n                                                                                           B$\ufffdlp\ufffdn\ufffd\u0010\u0002\u0004\r\n                                                                                                      r\ufffd\ufffd\ufffd\ufffd\ufffd\u0004\r\n\r\n                                                                                                             \u0004b\r\n                                                                                                               o\ufffd|\u0003\ufffd$\r\n\r\n                                                                                                                     \u0004\"\ufffd|\ufffdn\ufffd\u0002\u0004 l \u0002\ufffd\u0013N\r\n                                                                                                                                      l \u0002\u0003or\ufffdo\u0004\r\n                                                                                                                                               {\ufffd$`\u0003p\ufffdN\ufffd\u0010\u0002\u0004\r\n                                                                                                                                                           {\ufffd\ufffd\ufffd\ufffd\ufffd\r\n                                                                                                                                                                 \u0004\r\n                                                                                                                                                                  \u0004\u0004n\ufffd|\u0002l\uc30fb\ufffd\ufffdNn\ufffd\u0002\u0004\r\n                                                                                                                                                                                   l \u0002\ufffd\u001b2Nn\r\n                                                                                                                                                                                           d \u0003\u0002Nr\ufffdN\r\n\r\n                                                                                                                                                                                                   \ufffdl\ufffd \u0002{\u06d2N\r\n\r\n                                                                                                                                                                                                           \ufffdl\ufffd \u0002\ufffd\ufffd\u0002\u001b\ufffdN\ucc9cp\ufffd\ufffdo|\ufffd\u0004l\r\n                d$l`\u0002\u001cb\ufffd2\u0002\u0004\ufffd\ufffd2r\ufffd\u0003l\ufffdN\ufffd\r\n                                     \ufffdo\ufffd\r\n                                        l \u0002\ufffd\ufffd{\ufffdp\ufffd\ufffd\u001c\ufffd\u0002\ufffd\r\n\r\n\r\n                                                      $ \u0003\ufffd\u009cn\ufffdl\ufffdd\u0013\ufffd\u001f\u0004\u0004l`\u0002\ufffd\ufffds\ufffdp\ufffd\u0004\u0003\ufffd\u0004\r\n                                                                                  ld \u0003rd\ufffdo\u0003\ufffd\ufffd\ufffd\ufffdB\u0004\ufffd\ufffdcp|\u0004\r\n                                                                                                       cp\ufffd\ufffdl#\ufffd\ufffdo\ufffd\ufffd\u0012no\ufffd\u0010\u0003\u0002$l\ufffd\ufffd\u0002\u0004l \ufffd\u0004l\ufffd d\ufffd\r\n                                                                                                                                         \u0004\ufffdll \u0002\ufffd\u0003o\ufffd\ufffd\ufffd\u0013#\"\u0004ll\ufffd\u00042\u0004B\r\n                                                                                                                                                                \u0003\u0002\ufffd\ufffd\ufffd\ufffdB\u0004$\r\n                                                                                                                                                                         \ufffd#\u001crl{\u0014\r\nFormatting file system. Please wait...\r\n\r\nNodeMCU 2.1.0 build unspecified powered by Lua 5.1.4 on SDK 2.1.0(116b762)\r\nlua: cannot open init.lua\r\n&gt; \r\n&gt; \r\n&gt; \r\n&gt; ls\r\n&gt;&gt; ls\r\nstdin:2: '=' expected near 'ls'\r\n&gt; echo \"pouet\"\r\nstdin:1: attempt to call global 'echo' (a nil value)\r\nstack traceback:\r\n\tstdin:1: in main chunk\r\n&gt; reset\r\n&gt;&gt; reset\r\nstdin:2: '=' expected near 'reset'\r\n&gt; \r\n&gt; print(\"Coucou\")\r\nCoucou\r\n&gt;\r\n<\/pre>\n<p>On a bien la main sur la console, je ne comprend toujours pas \u00e0 quoi correspondent les caract\u00e8res sp\u00e9ciaux du d\u00e9but par contre.<\/p>\n<p><strong>Connexion au point d&rsquo;acc\u00e8s wifi<\/strong><\/p>\n<p>Une fois qu&rsquo;on a la main sur la console lua la configuration du point d&rsquo;acc\u00e8s \u00e0 sa box wifi est relativement simple:<\/p>\n<pre>&gt; print(wifi.sta.getip())\r\nnil\r\n&gt; wifi.sta.config {ssid=\"MON_POINT_DACCES\", pwd=\"fbisecurity\"}\r\n&gt; print(wifi.sta.getip()) \r\n192.168.0.11\t255.255.255.0\t192.168.0.1\r\n<\/pre>\n<p>On peut \u00e9galement enregistrer un script lua d&rsquo;initialisation :<\/p>\n<pre>&gt; file.open(\"init.lua\",\"w+\")\r\n&gt; file.writeline([[print(\"Bienvenue chez Martoni\")]])\r\n&gt; file.close()\r\n&gt; node.restart()\r\n&gt; \r\n ets Jan  8 2013,rst cause:2, boot mode:(3,6)\r\n\r\nload 0x40100000, len 26820, room 16 \r\ntail 4\r\nchksum 0x2e\r\nload 0x3ffe8000, len 2180, room 4 \r\ntail 0\r\nchksum 0xc6\r\nload 0x3ffe8884, len 136, room 8 \r\ntail 0\r\nchksum 0x4a\r\ncsum 0x4a\r\n\ufffd\ufffd\u0002\u001b\ufffdn\ufffd\ufffd{\ufffd\ufffdo|\ufffd\r\n              d\u0004l$l \u0002\u001c#\ufffd\ufffd\ufffd\u0004\ufffd\ufffd\u0012s\ufffd\u0002l\ufffdN\ufffd\u0004\ufffdn\ufffd\u0004l \u0002\ufffd\ufffdr\ufffdd\ufffdl\u0012\ufffd\u001f\u0004\r\n                                                        $`\u0003\ufffd\ufffd{\ufffd$\ufffd$\u001b\ufffd\u0004\r\n                                                                     \u0004l`\u0002\ufffd\ufffdr\ufffdl\u0004\u0003\ufffd\r\n\r\n                                                                                 $l \u0002rd\u001b\ufffdo\u0002\ufffd\ufffd\u001bbc\u0004\ufffd\u001c|$\ufffdc\u0004bp\ufffd\ufffd$b\ufffd\ufffdn\ufffd\u0002\u0012no\u0083\u0002\u0003ll\ufffd\ufffd\u0002\r\n                                                                                                                               l\u001c\ufffd$\ufffd\ufffd\ufffd\r\n                                                                                                                                      \ufffdlr$\ufffd\u0003o\ufffd\ufffd\ufffd\ufffdcB\u0004ld\ufffd\r\n                                                                                                                                                       \u001b\r\n                                                                                                                                                        B\r\n                                                                                                                                                         \u0002\u0003\ufffd\ufffd\ufffdcB\u0004l\u0004\ufffdc\u001crl{\u0014\r\n\r\nNodeMCU 2.1.0 build unspecified powered by Lua 5.1.4 on SDK 2.1.0(116b762)\r\nBienvenue chez Martoni\r\n&gt; \r\n<\/pre>\n<p><strong>Conclusion provisoire:<\/strong><\/p>\n<p>C&rsquo;est mal vendu ! Parce que la prise en main n&rsquo;a rien d&rsquo;\u00e9vident, et il faut se battre un peu pour enfin pouvoir prendre la main sur le kit. Je ne sais pas si le firmware par d\u00e9faut est bugg\u00e9 ou si j&rsquo;ai utilis\u00e9 la bonne proc\u00e9dure mais ce fut une connexion compliqu\u00e9.<\/p>\n<p>Par contre le wifi \u00e0 l&rsquo;air de tr\u00e8s bien tourner.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dans l&rsquo;objectif final de faire le relev\u00e9 de mon compteur d&rsquo;eau, j&rsquo;ai investi dans un module NodeMCU. Ce module permet de faire du microcontr\u00f4leur connect\u00e9 sur son r\u00e9seau wifi. Ce qui est parfait pour faire de l&rsquo;IoT, surtout quand on &hellip; <a href=\"http:\/\/www.fabienm.eu\/wordpress\/2017\/11\/12\/prise-en-main-dun-module-nodemcu-esp8266\/\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[106,10,11],"tags":[187,186,185,184],"class_list":["post-1142","post","type-post","status-publish","format-standard","hentry","category-embarque","category-informatique","category-programmation","tag-arduino","tag-esp8266","tag-nodemcu","tag-wifi"],"_links":{"self":[{"href":"http:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/posts\/1142","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/comments?post=1142"}],"version-history":[{"count":14,"href":"http:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/posts\/1142\/revisions"}],"predecessor-version":[{"id":1157,"href":"http:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/posts\/1142\/revisions\/1157"}],"wp:attachment":[{"href":"http:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/media?parent=1142"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/categories?post=1142"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.fabienm.eu\/wordpress\/wp-json\/wp\/v2\/tags?post=1142"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}