Mise à jour: 2017-11-22
Auparavant, j'avais montré comment copier un micrologiciel sur un Sonoff en utilisant un Raspberry Pi. Ci-dessous j'explique comment le faire directement de l'EDI de Arduino avec un adaptateur USB-ttl. Il n'y a donc rien de bien nouveau ci-dessous sauf pour l'utilisation d'un matériel plus commun et une présentation plus détaillée.
Voici les étapes pour téléverser un croquis dans un commutateur Sonoff qui fait clignoter sa diode électroluminescente (DEL)nbsp;:
Intallation de l'EDI Arduino
Préparation de l'EDI Arduino
Accès au port série
Connexion avec le commutateur Sonoff
Téléversement de Blink
Installation de l'environnement de développement intégré (EDI) Arduino
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 l 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
) :
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-arduinoideCeci peut être fait avec l'éditeur
nano :
#!/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.
Préparation de l'EDI Arduino
Par défaut, l'EDI Arduino ne prend en charge que les cartes de type Arduino. Grace au travail de Ivan Grokhotkov et d'autres personnes (voir le ESP8266 community Forum et le ESP8266 Arduino GitHub repository) on peut rajouter le « carte » ESP8266.
- Lancer l'EDI puis choisir
Préférencesdans le menuFichier. - On peut changer la langue de l'EDI; c'est le deuxième paramètre. Il faut repartir l'EDI pour que ce changement prenne effet.
- Entrer l'URL suivant dans la boîte de
saisie intitulée
URL de gestionnaire de cartes supplémentaires:http://arduino.esp8266.com/stable/package_esp8266com_index.json. Si la boîte contient déjà un URL, on peut en ajouter d'autres en cliquant sur le bouton à sa droite.
- Choisir
Type de carte: "xxxxx"dans le menuOutils. - Cliquer sur le premier choix
Gestionnaire de cartedans la liste déroulante des cartes.
- Sélectionner esp8266 by esp8266 Community. Sur mon système cette bibliothèque était la dernière de la liste. On peut voir qu'il sera possible de programmer le WeMos D1 mini souvent mentionné dans mon site et aussi un module ESP8266 générique. C'est ce dernier qu'on utilise pour programmer le Sonoff.
- Cliquer sur le bouton Installer.
Si le bouton n'est pas visible, cliquer sur la rubrique.
Accès au port série
On programme un ESP8266 avec une connexion en série mais presque tous les ordinateurs peirsonnels 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.
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.
Connexion avec le commutateur Sonoff
La figure suivante montre comment j'ai branché le convertisseur
USB<-->TTL au Sonoff.
On peut voir que j'ai changé de convertisseur, passant à un modèle qui
utilise la puce CH340g. Il coûte moins cher que celui basé sur le FT232RL
et fonctionne sans problème. Toutefois des deux convertisseurs achetés en Chine,
un seul fonctionnait.
La photo montre l'agencement matériel de la connexion. En outre, on peut
y voir que j'utilise une alimentation de 3,3V indépendante pour le Sonoff. Cela
s'était avéré plus sûr avec le convertisseur FTDI232 et, de toute façon, il n'y
a pas de sortie Vcc sur le nouveau convertisseur.
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.
Téléversement de Blink
En guise de test que tout fonctionne, j'ai téléversé un simple programme « Blink » qui fait clignoter la DEL du Sonoff.
Avertissement : On ne pourra plus utiliser ce Sonoff avec le logiciel EWeLink fourni par ITEAD.
La démarche est la suivante.
- Cliquer sur l'icone Arduino pour lancer le EDI
- Copier le croquis suivant dans l'éditeur.
/* SONOFF Blink by Michel Deslierres Based on ESP8266 Blink by Simon Peter Blink the green LED on the Sonoff This example code is in the public domain The green LED on the Sonoff module is connected to GPIO13 */ const int LED_PIN = 13; void setup() { pinMode(LED_PIN, OUTPUT); // Initialize the LED_BUILTIN pin as an output } // the loop function runs over and over again forever void loop() { digitalWrite(LED_PIN, LOW); // Turn the LED on (Note that LOW is the voltage level // but actually the LED is on; this is because // it is acive low on the ESP-01) delay(1000); // Wait for a second digitalWrite(LED_PIN, HIGH); // Turn the LED off by making the voltage HIGH delay(2000); // Wait for two seconds (to demonstrate the active low LED) }Copier-coller de cette page HTML ne fonctionne pas bien. Télécharger le fichier d'ici.
- Cliquer sur le menu
Croquispuis sur le choixVérifier/Compilerpour s'assurer que le sketch est correct. En même temps, il sera sauvegarder et il serait préférable de lui donner un nom plus significatif commeBlink_sonoff.ino. Les croquis Arduino ont tous l'extension.ino. - Cliquer sur le menu
Outils - Sélectionner
"Generic ESP8266 Modulevers le bas de la liste déroulante dans la rubriqueType de carte:. - Sélectionner le mode d'accès à la mémoire flash (
Flash Mode). Le modeDIOfonctionnait bien auparavant. Cependant, il semble que ITEAD a modifié le type de mémoire dans le Sonoff et il faut utiliser le modeDOUTqui est un peu moins rapide. Voir l'astuce du 14 juillet de Theo Arends à ce sujet. Si le téléversement se déroule correctement mais le dispositif ne fonctionne pas après, il faut définitivement recommencé avec le modeDOUT. (Mise à jour: 2017-11-22) - Sélectionner
"1M(64K SPIFF)"de la liste déroulante dans la rubriqueFlash Size: - Sélectionner le port de la connexion USB dans la rubrique
Port:. Comme j'avais mentionné il s'agit du port virtuel/dev/ttyUSB0sur mon ordinateur muni d'Ubuntu 14.04 LTS. Sur un ordinateur Windows ce sera quelque chose commeCOM3.
- Mettre le Sonoff en mode programmation
- Si le Sonoff est sous tension, débrancher ou déconnecter Vcc.
- Appuyer et garder enfoncé l'interrupteur tactile du Sonoff.
- Mettre le Sonoff sous tension (Vcc = 3,3V).
- Relâcher l'interrupteur tactile.
- Téléverser le croquis compilé vers le Sonoff. Il y a au moins trois
façons de s'y prendre :
- On peut cliquer sur la flèche droite dans la barre d'outils.

- On peut appuyer sur les touches CtrlU simultanément.
- On peut cliquer sur le menu
Croquiset puis sur le choixTéléverser.
En plus, la DEL devrait clignoter à un rythme assez lent allumée pendant une seconde puis éteinte pendant deux secondes. - On peut cliquer sur la flèche droite dans la barre d'outils.
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 la partie 2, Programmation du
Sonoff dans l'EDI Arduino (2), le téléversement du micrologiciel
Sonoff-MQTT-OTA-Arduino de Theo Arends est examiné.