md
Programmation du Sonoff dans l'EDI Arduino
2017-06-14

Dans ce billet, je montre comment installer environnement de développement intégré (EDI) Arduino sur un ordinateur de bureau fonctionnant avec Ubuntu et puis comment téléverser le croquis Blink, l'équivalent du programme "Bonjour", vers un commutateur WiFi Sonoff de ITEAD. C'est un préalable au téléversement d'un croquis beaucoup plus importante vers le Sonoff pour utiliser ce commutateur dans mon système de domotique articulé autour du serveur Domoticz fonctionnant sur un Raspberry Pi. Cette étape est décrite dans le prochain billet.

Presque tout ce qui suit a été présentée il y a un mois environ dans le billet intitulé Programmation du Sonoff dans l'EDI Arduino (1). En fait, je ne fais que reformater ce dernier billet dans le style dorénavant utilisé pour cette nouvelle série au sujet de la domotique.

Table des matières

  1. Qu'est-ce qu'Arduino ?
  2. Installation de l'EDI Arduino
  3. Préparation de l'EDI Arduino
  4. Accès au port série
  5. Connexion avec le commutateur Sonoff
  6. Téléversement de Blink

  1. Qu'est-ce qu'Arduino ?
  2. Ce n'est pas très facile de répondre à cette question:

    Arduino est un succès. L'environnement de développement intégré, qui fonctionne sur plusieurs plates-formes, dont Windows, Linux et Mac OS, est largement utilisé et pas seulement pour les cartes Arduino basées sur les microcontrôleurs AVR de Atmel. Entre autres, le projet Arduino core for ESP8266 WiFi chip « appuie la puce ESP8266 dans l'environnement Arduino [... permettant] d'écrire des croquis à l'aide de fonctions Arduino et de bibliothèques familières, et de les exécuter directement sur ESP8266 ».

  3. Installation de l'EDI Arduino
  4. Malheureusement, la logithèque d'Ubuntu contient une version périmée de l'EDI de Arduino. On doit donc installer une version plus récente manuellement. Il faut au minimum la version 1.6.5, mais ci-dessous on peut suivre les étapes pour installer la version 1.8.2. Télécharger la ici : www.arduino.cc/en/Main/Software. Il est important d'obtenir la bonne version, 32 ou 64 bits, selon la version de Linux du système hôte.

    L'archive arduino-1.8.2-linux64.tar.xz a été téléchargée dans le dossier /home/michel/Téléchargements/Arduino et j'ai décidé d'installer l'EDI dans le dossier /home/michel/Development/arduino. Voici comment j'ai précédé à partir d'un terminal ( CtrlAltT  ) :

    michel@hp:~$ cd Téléchargements/Arduino michel@hp:~/Téléchargements/Arduino$ tar -xvf arduino-1.8*.tar.xz ... arduino-1.8.2/tools/WiFi101/tool/firmwares/.DS_Store arduino-1.8.2/tools/howto.txt michel@hp:~/Téléchargements/Arduino$ ls arduino-1.8.2 arduino-1.8.2-linux64.tar.xz michel@hp:~/Téléchargements/Arduino$ sudo mv arduino-1.8* ../../Development michel@hp:~/Téléchargements/Arduino$ cd ../../Development/arduino*

    Il y a une petite coquille dans le script d'installation install.sh de la version 1.8.2. Ce problème devrait être éliminé dès la version suivante (1.8.3) et dans ce cas on peut ignorer cette correction qui consiste à changé la ligne 9 du script de

      RESOURCE_NAME=cc.arduino.arduinoide
    à
      RESOURCE_NAME=arduino-arduinoide
    
    Ceci peut être fait avec l'éditeur nano :
    michel@hp:~/Development/arduino-1.8.2$ nano install.sh
    #!/bin/sh # This script adds a menu item, icons and mime type for Arduino for the current # user. If possible, it will use the xdg-utils - or fall back to just creating # and copying a desktop file to the user's dir. # If called with the "-u" option, it will undo the changes. # Resource name to use (including vendor prefix) RESOURCE_NAME=arduino-arduinoide

    Il est maintenant possible d'installer l'EDI, ce qui se fait en une étape.

    michel@hp:~/Development/arduino-1.8.2$ ./install.sh Adding desktop shortcut, menu item and file associations for Arduino IDE... done!
    Comme l'indique le message du script, un raccourci est installé sur le bureau. On démarre l'EDI en cliquant sur cet icône.

  5. Préparation de l'EDI Arduino
  6. Par défaut, l'EDI Arduino ne prend en charge que les cartes de type Arduino. Grâce au travail de Ivan Grokhotkov et al (voir le ESP8266 community Forum et le ESP8266 Arduino GitHub repository) on peut rajouter le « carte  » ESP8266.

  7. Accès au port série
  8. On programme un ESP8266 avec une connexion en série mais presque tous les ordinateurs personnels modernes n'ont plus de port série. On utilise une connexion USB. D'ailleurs, il suffit d'un câble USB standard -- mini USB pour programmer le WeMos D1 mini, qui contient un circuit intégré le CH340g convertisseur USB-ttl. Par contre, dans le cas du commutateur Sonoff, il faut un câble ou un convertisseur USB-ttl (basé sur une puce CH340, CP2102 ou FT232 ...) qui fonctionne à 3,3V.

    Typiquement, sur un système Ubuntu un port série virtuel nommé ttyUSB0 sera créé par le système. On peut le voir affiché avec la commande ls /dev/tty* dans un terminal dès que le dispositif est branché. Cependant, l'utilisateur n'a typiquement pas accès à ce port. Il y a au moins deux solutions à ce problème. On peut changer les permissions pour le dispositif ou on peut ajouter l'utilisateur au groupe dialout. Je préfère cette deuxième solution. Mon nom d'utilisateur est michel (je sais, c'est très original). Ci-dessous, la séquence de commandements donnés dans un terminal montre comment j'ai vérifié à quels groupes j'appartiens, puis comment je me suis ajouté au groupe dialout, et enfin comment j'ai vérifié que j'étais membre du groupe.

    michel@hp:~/Development/arduino-1.8.2$ groups michel michel : michel adm cdrom sudo dip www-data plugdev lpadmin sambashare michel@hp:~/Development/arduino-1.8.2$ sudo usermod -G dialout -a michel michel@hp:~/Development/arduino-1.8.2$ groups michel michel : michel adm dialout cdrom sudo dip www-data plugdev lpadmin sambashare

    Il faut soit redémarrer le système soit se déconnecter en tant qu'utilisateur puis ouvrir un nouvelle session pour que ce changement prenne effet.

  9. Connexion avec le commutateur Sonoff
  10. On trouve sur le site d'ITEAD le schéma des circuits du commutateur WiFi Sonoff. Si on l'utilise avec la définition des broches du ESP8266 on peut établir quelles sont les broches de ce dernier qui sont utilisées pour contrôler les composants principaux du commutateur.

    Composant Connexion du schéma ESP8266 Note
    bouton-poussoirEFW GPIO0logique 0 active
    relaisPWM0 GPIO12logique 1 active
    DEL vertPWM1 GPIO13logique 0 active
    connexionJ1-1 Vcc 3,3V
    connexionJ1-2 U0RXD/GPIO1Pour programmer
    connexionJ1-3 U0TXD/GPIO3Pour programmer
    connexionJ1-4 Gnd, 0V
    connexionJ1-5 GPIO14logique 0 active

    J1 est absent, il faut souder un connecteur quelconque pour programmer la puce ESP8266. J'ai choisi un adaptateur de broches droites

    qu'on trouve un peu partout et qu'on coupe facilement à la taille désirée. Il faut au moins 4 broches soudées dans les 4 premières positions de J1 (où la position 1 est occupée par la broche la plus proche du bouton-poussoir). Dans certains Sonoff, j'ai utilisé 5 broches pour avoir accès au GPIO14 de la puce (voir ).

    La figure suivante montre comment j'ai branché le convertisseur USB<-->TTL au Sonoff avec fils Dupont et une platine d'expérimentation qui sert de bloc de connexion.

    Certains reconnaîtront le convertisseur qui est basé sur la puce CH340g. Il coûte moins cher que celui basé sur le FT232RL et fonctionne sans problème. Attention au cavalier; il doit être en position 3,3V sinon on risque d'endommager le ESP8266 avec une connexion 5V qui dépasse ses capacités.

    La photo montre l'agencement matériel de la connexion. En outre, on peut y voir une alimentation de 3,3V indépendante pour le Sonoff. Cela s'est avéré plus sûr. Une alimentation de platine d'expérimentation coûtant moins que 1$ est suffisant. TX et RX sur la figure représentent respectivement la broche de transmission et de réception en série du convertisseur. Ainsi, RX du câble-convertisseur est connecté à TX du ESP8266 et, de même, TX du convertisseur est connecté à RX du ESP8266.

    Malgré ce qui est montré sur le diagramme, je n'ai toujours pas d'interrupteur pour la connexion Vcc. Il suffit d'enficher le fil rouge (pourpre?) dans le bus Vcc à côté de la ligne rouge de la platine d'expérimentation pour fermer le circuit.

  11. Téléversement de Blink
  12. Avertissement : le micrologiciel du commutateur Sonoff sera effacé si l'on y téléverse Blink. On ne pourra plus utiliser ce Sonoff avec le logiciel EWeLink fourni par ITEAD.

    En guise de test que tout fonctionne, j'ai téléversé un croquis, Blink, qui fait clignoter la DEL du Sonoff. Comme tout croquis, il est structuré en deux parties. La première, le code setup, initialise les constantes, le mode des broches entrées/sorties du microcontrôleur et ainsi de suite. Cette partie du code n'est exécutée qu'une seule fois, au démarrage du micro-contrôleur. La seconde partie du code, loop, est exécutée en boucle jusqu'à la réinitialisation du microcontrôleur ou jusqu'à l'arrêt de son alimentation.

    La démarche pour téléverser le croquis est la suivante.

    On peut vérifier que ce micrologiciel est bel et bien sauvegardé sur le commutateur Sonoff : débrancher le Sonoff; débrancher la connexion USB du câble convertisseur; remettre le Sonoff sous tension. La DEL devrait clignoter de nouveau.

    Dans le billet suivant, Programmation du Sonoff dans l'EDI Arduino (2), le téléversement du micrologiciel Sonoff-MQTT-OTA-Arduino - TASMOTA de Theo Arends est examiné.