commenailles-3

Ceci est une ancienne révision du document !


ESP 8266

Matériel apporté par 3615
  • un ESP par participant
  • quelques composants électroniques de base (LEDS, switchs, etc…)
  • un routeur sur lequel tout le monde pourra se connecter pour télécharger les ressources
  • un laptop pour projeter la présentation et montrer le manips
Si possible, fourni par le fablab
  • un vidéoprojecteur
  • du net =) (ce serait quand même super pratique, même un clé 4G)
Pour chaque participant
  • un ordinateur portable
  • un cable mini-us
  • Softs: Arduino
Pour économiser la bande passante locale

On va voir la puce, ce qu'elle sait faire.
On va voir une façon de le faire (y en a d'autres).
On va la triturer une peu.

Tour d'horizon des caractéristiques de la puce

ADC - 1 seule, 1024 valeurs de 0 a 1V.
GPIO - 16 théorique
  attention a n°16 en pull down
  attention a n°0 et n°2 qui servent a la prog
  n°1 et n°3 rx-tx
  6 reellement utilisables.
  notées 1..16 ou D1..Dx
Wifi
  20 ans de fonctionnement dans le milieu hostile de la bande libre.
  BT existe en 2 goûts, apple et pas apple qui s'aiment pas.
  Superbe portée avec un bon routeur, ajustable. Mesure de puissance dispo.
  Suffit d'un tel pour paramétrer.
Frequence: 80Mhz, 4ns entre 2 loop.
Prix a peu près 2 euros...

Electronique - 3.3V, 215mA crête. Différents formfactor, quelles différences pour quelles utilisations

ESP01 ESP11 NodeMcu - peu de pattes
ESP12 - tres plat - lire les pattes au dos.
  besoin d'un FTDI (usb -> serie TTL 3.3v)
Wemos - avec des pattes et l'USB
  shield relais - cool
  shield lipo - cool
  shield oled... pas encore réussi grand chose ...
LoLin - des pattes, USB, plus gros
... plein d'autres formes, quasi le même chip au centre

matos qui va bien avec

leds ws2812
relais statique
ams117 - regul 3.3V
stepper driver

source de matos : Aliexpress, gotronic, adafruit, etc …

Au débuts était la chine :-). Et la chaîne de compilation était ardue à faire fonctionner, une VM a installer. Puis la communauté arduino est passée par là. Ce qu'en dit le Web.

Relais pilotés à distance, serveur web, etc… La liste est longue, nous en ferons un tour d'horizon.

La boite à lampe malade - relais statique
boites moteur - boites loupiotes - osc
Ouvre porte garage - relais std.
Trouble - 200 esp, fabrique de carte (Topo Guillaume)
Adler - pilote steppers - [[projet_adler|Projet Adler]]
Spécificités logicielles (diff avec les autres machins)
temps réel moins stable qu'un arduino. Parfois interrompu par les échanges de trames de la stack ip
le watchdog déclenche dés qu'on est trop long.
Nécessite un dev un peu spécifique 
  automates d'états
  mesure des temps.
  construire ses pages html, pêcher les réponses dans les trames, autoreload.
  interruptions
Un raspi aura plus de puissance de calcul mais 
  mais ++ cher
  mais pas d'ADC
  plus hackable
  mais ++ gourmand en elec
  plus linux
  mais - d'espoir d'en faire fonctionner sur pile.
Un arduino est 
  plus simple
  plus stable
  plus solide
  mais pas de wifi
  plus gros
  plus 5V 
  moins de mémoire...
Compatibilité : pas toutes
  • certaines libs utilisent des spécificitées arduino
  • certaines libs ont l'air portées puis cassées.
Celles qu'on à testées
  • Libs ESP8266WiFis liées au wifi
  • Libs ESP8266 spécificitées internes, timers & co
  • Ws2812 - leds multicolores
  • SoftwareSerial serie sur toutes les lignes ou presque
  • Servo
  • OSC
Sécurité
  • au niveau wifi - WPA2-PSK cablé.
  • au niveau appli - tout dépend de celui qui fait l'appli.
  • au bas niveau - tout dépends de la confiance en celui qui les fait
  • potentiellement à la mercie des chinois.

Les mains dans le cambouis: préparer l'IDE d'Arduino

chargement du package lié à la puce
NodeMCU 1.0 (ESP-12E) 80Mhz 4M 115200

Compiler les exemples fournis dans l'ide Modifier les exemples

Compatibilité avec les libs arduino

WS2812 - leds tricolores pilotables.
Libs communes, libs spécifiques, libs... a voir.

Se connecter à un réseau existant automatiquement Se retrouver sur le réseau

Wifi SSID/pwd Cli+AP
LAN MAC/IP
Connect Udp Tcp
Internet OSC - HTTP par le texte.
pas de routage entre les interfaces.

L'exemple d'un code complexe créé par Emmanuel Patoux, de 3615 Señor, pour un spectacle de la compagnie Tricyclique Dol appelé “Trouble”. L'ESP exploité à 100% de ses possibilités. Environ 200 puces ont été utilsées sur la création.

Du code de Trouble a été tiré une version plus générique qui permet de créer très facilement des réseaux d'objets. Présentation de ce morceau de code qui permet de configurer les choses sans une seule ligne de code, puis mise en pratique. Crab mets dans ce soft tout ce qui lui à été utile…

Ceci est une première tentative de documentation. Une fois satisfaisante, cette doc sera publiée, ainsi qu'une première version publique du code.

Le principe:

Une fois compilé (attention aux bibliothèques) et uploadé sur l'ESP, tous les réglages de l'ESP se feront via la page web qu'il publie, ou par une simple connexion série.

Connexion

  • Se connecter directement au réseau émis par l'ESP: le mot de passe est pour l'instant “BenAdmin”, l'ip à taper dans le navigateur http://192.168.5.1 ou http://192.168.4.1
  • Connexion série à 115200 bauds
  • Connexion automatique au réseau local en remplissant “Mines.h” (SSID et Password)

Notice générale

Chaque paramètre pourra être modifié selon la logique suivante: des caractères ou des chiffres + une lettre sont envoyés à l'ESP selon un schéma précis. Les chiffres et les caractères sont les paramètres, la lettre finale indique à quel endroit affecter cela. La syntaxe à respecter ainsi que le nombre de caractères possibles à rentrer sont indiqués à chaque fois en face du réglage actuel, sous une forme syntétique qui préserve la mémoire de l'ESP.

Exemple:

*2N : xxN Node → il faut lire la ligne à l'envers. Cette ligne indique le numéro de nœud (Node). Pour régler le numéro de nœud, il faut envoyer deux chiffres (xx) suivis de la lettre N en majuscule. Le réglage actuel et '2'. Si je veux le changer et le passer en 33, je vais passer la commande 33N .

Liste des paramètres

  • xxN Node : Le numéro de noeud de l'ESP, permet de l'identifier dans le réseau maillé sans se préoccuper de son IP. Prends deux chiffres en paramètre. Ex, 22N pour définir le nœud 22. Le réseau WIFI généré aura alors le SSID BEN_22
  • xR : définit le mode de fonctionnement de l'ESP. Un certain nombre de ces modes est très spécifique à des projets de 3615 Senor, et donc très lié à du matériel (DFPlayer, stepper, ou lego NXYT). Le mode qui nous intéressera ici car le plus générique sera le mode 6. Il faut donc envoyer la chaîne: 6R
  • xv : on définit ici le degré de précision des logs affichés dans la console série, de 1 à 3. Comme conseillé, 2 est une bonne valeur, on enverra donc 2v si le réglage est différent.
  • “x31x”D : le nom du réseau wifi auquel doit se connecter l'ESP. Doit être entre guillemets et peut contenir 31 caractères. Exemple: “monReseauWifi”D
  • “x63”d : le mot de passe de connexion du réseau auquel se connecter ci-dessus. Peut contenir jusqu'à 63 caractères.
  • “x14x”J : la ou les cibles des instructions OSC émises par l'ESP. Doivent être entre guillemets. La commande “BEN_051”J définira comme cible l'ESP qui a le nœud 51. Si les deux ESP (l'actuel et la cible) ne sont pas connectés au même réseau local, il faudra connecter l'un des ESP au réseau de l'autre (voir les deux instructions précédentes). La commande “BEN_*”J enverra l'instruction à tous les ESP. La commande “BEN_1*”J enverra l'instruction à tous les ESP ayant un numéro de noeud compris entre 10 et 19.
  • “x14x”yyK : nous définissons ici l'instruction qui sera envoyée à l'ESP cible définit précédemment. L'instruction sera envoyée lorsque la pin D5 sera reliée au ground (typiquement un switch). L'instruction en elle même prends place entre les guillemets et peut être longue de 14 caractères. Elle sera de l'un des types marqué ci-après comme Actions et sera précédée d'un underscore. yy correspond à l'état du switch: 01 = pushed, 02 = released. Ex: la commande “_104O”01K veut dire: envoyer à l'ESP définit par la commande J de passer sa pin 4 à l'état haut lorsque la pin D5 est reliée au ground. Plus clairement, un switch relié à la pin D5 d'un ESP allumera une led branchée sur la D4 d'un autre ESP.
  • La même formule que précédemment permettra d'envoyer des commandes via OSC à la cible lorsque une valeur analogique est modifiée sur la pin ADC. Il faudra cette fois utiliser la terminaison 03K (au lieu de 02K ou 01K). Grâce à un jeu de majuscules et de minuscules, il est possible de transformer la valeur analogique récupérée en valeurs RVB par exemple. Si la valeur ADC est 1234, XxXxx se transformera en 12123, XxxxX en 12341, XxXx70 en 121270.
  • xxxP : correction de la puissance d'émission.
  • xxxm : sauf erreur, uniquement utile en utilisation de spectacle, car seuil de déclenchement.
  • xxxxF : fonction perso, par exemple 0001F 'clique' le relais pour ouvrir la porte du garage.
  • ccnnxxxxf : pour le développeur

ACTIONS

  • yyxxxxS : permet de contrôler un servo, branché sur la pin indiquée plus bas sur la page (Servo pins:{ , }). Ce paramètre doit se définir à la compilation. yy est le numéro du moteur, xxxx la valeur à atteindre. Le timing est donné par l'instruction suivante.
  • yyxxxxl : définit le temps pour atteindre la position définie par S, juste au dessus. yy est le numéro du moteur).
  • * rrggbbnnL : permet de contrôler un ruban de led RGB type Neopix. Les valeurs RGB sont proposées de 1 à 99, les nn indiquent l'id de la led (position sur le ruban). Branchement du neopix à ajouter.
  • xxxxW : pause de xxxx millisecondes.
  • xnnO : permet de passer un pin digital à l'état haut (si x vaut 1) ou bas (x vaut 0). nn correspond au numéro de la pin.
  • xxxxnno : idem que précédemment, mais pour une valeur en PWM, comprise entre 0 et 1024. nn correspond au numéro de la pin.

Suivent un certain nombre d'informations relatives aux réglages: état du switch, de la connection wifi, adresse ip, cycles de l'eeprom, infos sur les moteurs.

  • commenailles-3.1511786121.txt.gz
  • Dernière modification: 2017/11/27 13:35
  • par crab