Noyau ESP8266/Arduino 2.4.2 et WPS
2018-09-03
Installation de Ubuntu 18.04.1, ajouts et additions

La mise en place de l'EDI Arduino avec la prise en charge des cartes ESP8266/Arduino a été un des sujets d'un billet précédent. J'y mentionnais que la version du noyau ESP était maintenant 2.4.2 alors qu'auparavant j'utilisais la version 2.4.1.

Un examen sommaire indique que mes trois bibliothèques Arduino pour ESP8266, mdBlinky, mdButton et mdEspRestart/mdEspRestartSF, fonctionnent correctement dans le nouvel environnement. Ce sera un soulagement pour les nombreux utilisateurs! Les téléchargements de ces archives se chiffrent à 11, 11 et 14 respectivement. Ces chiffres surestiment leur importance, car il faut retrancher mes propres téléchargements faits lors de la vérification des liens.

Le passage à la version 2.4.2 ne s'est pas fait sans heurt, car un de mes croquis, qui n'est pas encore public, ne peut être compilé. Voici le message d'erreur qu'affiche l'EDI.

/tmp/arduino_build_259410/sketch/routermon.ino.cpp.o: In function `monitorModule()': /home/michel/ED/arduino-1.8.6/portable/sketchbook/md/routermon/webserver.ino:481: undefined reference to `WPS_is_unavailable_in_this_configuration__Please_check_FAQ_or_board_generator_tool' /tmp/arduino_build_259410/sketch/routermon.ino.cpp.o: In function `connectWiFiWithWps()': /home/michel/ED/arduino-1.8.6/portable/sketchbook/md/routermon/webserver.ino:481: undefined reference to `WPS_is_unavailable_in_this_configuration__Please_check_FAQ_or_board_generator_tool' collect2: error: ld returned 1 exit status

Un petit rappel: WPS, Wi-Fi Protected Setup, est une façon d'établir une connexion Wi-Fi entre un routeur et un dispositif en appuyant sur un bouton (réel ou virtuel) sur chacun de ces appareils. Dans mon croquis, devant fonctionner sur un commutateur Sonoff, il suffit d'appuyer trois fois rapidement sur le bouton poussoir de ce dernier et sur le bouton WPS du routeur pour que le Sonoff se connecte à mon réseau Wi-Fi domestique. Il n'est pas nécessaire de programmer le nom du réseau et son mot de passe dans le croquis.

Une recherche sur Google avec le critère « WPS_is_unavailable_in_this_configuration__Please_check_FAQ_or_board_generator_tool » m'amèna au forum Arduino WiFiManager is causing compile problems Aug 06, 2018. La suggestion de pert était de mettre à jour la bibliothèque. Or, la version la plus récente de la bibliothèque était déjà installée. Même après la réinstallation de la version 0.14.0, le problème n'était pas éliminé.

En fouillant plus, j'ai trouvé l'information pertinente dans la FAQ de la version 2.4.2 du noyau ESP8266/Arduino que j'aurais du lire auparavant. Il faut reconstruire le fichier boards.txt qui fait partie du nouveau noyau, car par défaut, WPS n'est pas disponible dans ce dernier. Puisque j'ai une installation portable de l'EDI qui se trouve dans le répertoire /home/michel/ED voici comment j'ai procédé.

michel@hp:~/ED/arduino-1.8.6/portable/packages/esp8266/hardware/esp8266/2.4.2$ cp boards.txt boards.txt.bak michel@hp:~/ED/arduino-1.8.6/portable/packages/esp8266/hardware/esp8266/2.4.2$ python ./tools/boards.txt.py --allowWPS --boardsgen michel@hp:~/ED/arduino-1.8.6/portable/packages/esp8266/hardware/esp8266/2.4.2$

À noter qu'il faut utiliser une version 2.7 de python pour engendrer le fichier boards.txt. Or cette version n'est plus installée par défaut dans Ubuntu 18.04. Donc il faudra l'installer. Je pense que ce serait assez simple.

michel@hp:~$ sudo apt-get install python

Je ne peux le confirmer, Python 2.7.15rc1 était disponible sur mon système parce qu'il avait été inclue lors de l'installation d'un autre logiciel dont je ne me souviens plus du nom.

Si la version 2.7.15 de Python n'est pas installée sur votre système et vous ne la voulez pas, alors voici mon fichier boards.txt modifié. Ce fichier contient une directive supplémentaire à la fin de chaque définition d'une carte carte.build.noextra4kheap=-DNO_EXTRA_4K_HEAP tel nodemcuv2.build.noextra4kheap=-DNO_EXTRA_4K_HEAP. C'est très important de sauvegarder le fichier original comme indiqué ci-dessus, car avec le temps et les changements qui seront apportés au noyau ESP8266/Arduino le fichier qui est proposé pourrait bien devenir désuet.

Si l'on n'a pas opté pour une installation portable de l'EDI Arduino, le répertoire contenant la définition des cartes ESP8266 sera différent. Il me semble que ce serait quelque chose comme /home/utilisateur/.arduino15/packages/esp8266... alias ~/.arduino15/packages/esp8266...

Si l'on se fie à la FAQ, la prise en charge des connexions Wi-Fi par WPS sera incorporée de nouveau dans les prochaines versions du noyau ESP8266/Arduino. Donc, à l'avenir il ne sera plus nécessaire de modifier le fichier boards.txt.

Installation de Ubuntu 18.04.1, ajouts et additions