User Tools

Site Tools


arduino:wio-fr

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
arduino:wio-fr [2019/11/10 10:30] – [Bibliothèques] phil45arduino:wio-fr [2020/10/19 10:57] – [WIO - E/S] phil45
Line 1: Line 1:
-======W I O - Manette WiFi - 32 E/S - LEDs - Servos - RFID - OLED - DCC ======+[[:arduino:wio-fr|{{ icons:fr.png|Version française}}]][[:arduino:wio-de|{{ icons:de.png|Version allemande}}]][[:arduino:wio-en|{{ icons:uk.png|Version anglaise}}]] 
 +====== Firmware WIO ======
 [[:france|{{ :hardware.png}}]][[:france|{{ :rocrail-logo-35.png}}]] [[:france|{{ :hardware.png}}]][[:france|{{ :rocrail-logo-35.png}}]]
 [[:france|Sommaire]] -> [[:hardware-fr#arduino|Arduino]] [[:france|Sommaire]] -> [[:hardware-fr#arduino|Arduino]]
-  * **[[:arduino:wio-fr|Firmware WIO]]** | [[:arduino:wio-setup-fr|Configuration WIO]] +  * [[:arduino:wio-overview-fr|Vue d'ensemble WIO]] | [[:arduino:wio-setup-fr|Configuration WIO]] | [[:arduino:wioctrl-fr|Contrôle WIO]] | [[:arduino:amp-fr|Bitmaps utilisateur]] | **[[:arduino:wio-fr|Firmware WIO]]** | [[:arduino:wio-cam-fr|CAM WIO]] | [[:wio:wio-ledscript-fr|LEDScript]] 
- \\ +  * [[:arduino:wio-rascii-fr|WIO RASCII]] | [[:arduino:wio-canprot-fr|Protocole CAN WIO]]
-{{ :arduino:rici-proto.png?0x300}}{{ :arduino:wio-01-pcb.jpg?0x300}} +
- T r a v a i l E n C o u r s  ^+
  
  \\  \\
 +
 =====Introduction===== =====Introduction=====
-Cette solution est basée sur le LOLIN D1 Mini. (ESP8266)\\+Cette solution est basée sur la famille des ESP8266/ESP32.\\ 
 Il peut être utilisé comme: Il peut être utilisé comme:
   * Manette sans fil   * Manette sans fil
-ou comme interface E/S sans fil avec avec une des quatre options suivantes+ou comme interface E/S sans fil avec: 
-  * 32 E/S +  * 32 E/S I2C [[:hardware-fr#unites_d_extension|Compatible GCA]] 
-  * 2 afficheurs +  * 2 afficheurs SSD1306 
-    - Contrôle de LED basé sur les WS2812+et une des options supplémentaires suivantes: 
 +    - Contrôle de LED WS2812
     - 4 servos     - 4 servos
     - 2 lecteurs RC522     - 2 lecteurs RC522
     - Générateur DCC     - Générateur DCC
 +    - PWM mobile, direction et lumières
 +et une des options suivantes:
 +  * Lecteur RFID ID12LA 125kHz sur RX
 +  * Lecteur RailCom sur RX
  
- \\+====Cartes supportées==== 
 +  * Lolin D1 Mini 
 +  * Lolin D32 
 +  * Module Dev ESP32 
 +  * Module CAM ESP32 
 +====Broches ESP utilisées==== 
 +Vérifiez la cartographie des broches dans Pins.cpp: 
 +  * https://gitlab.com/rocrail/wio/-/blob/master/Pins.cpp
  
 ====Prospectus==== ====Prospectus====
-  * https://gitlab.com/rocrail/Arduino/blob/master/WIO/docu/WIO.pdf+  * https://gitlab.com/rocrail/wio/blob/master/docu/WIO.odp
  
  \\  \\
-=====IDE Arduino===== + 
-//Testé avec la version 1.8.10//\\ +=====Attention===== 
-Préparez l'IDE Arduino avec les cartes et les bibliothèques suivantes:+{{ :arduino:wifi-analyse.jpg?300|Exposition des canaux WiFi utilisés...}} 
 +  - Le serveur Rocrail doit fonctionner sur un PC qui __ne__ doit __pas__ se mettre automatiquement en mode suspendre ou dormir en cas d'absence d'activité de l'utilisateur. Vérifier la configuration de l'énergie pour éviter la perte de communication. 
 +  - __Le routeur WiFi utilisé doit être configuré dans les règle de l'art; Utiliser uniquement du matériel maintenu.__ 
 +  - Soyer sûr que le SSID n'est pas visible pour prévenir tous trafic publique supplémentaire. 
 + 
 +^ L'utilisation de WIO est faite à vos risques et périls. \\ Peter Giling et Robert Jan Versluis ne peuevent pas être tenus responsable pour tous dommages ou problèmes par l'utilisation du matériel et le firmware proposés. \\ Les matériels publiés sont des prototypes, ils sont incomplets et pas prêt pour la publication. \\ Seul les kits GCA originaux sont supportés. ^ 
 + 
 + 
 + 
 + \\ 
 +=====IDE Arduino 1.8.12===== 
 +:!: La version 1.8.11 ne marche pas! Le cas de l'exemple BasicOTA ne compilera pas...)\\ 
 +  * https://www.arduino.cc/en/Main/OldSoftwareReleases#previous 
 +Prépare l'IDE Arduino avec les cartes et les bibliothèques suivantes: 
 ====Gestionnaire de carte===== ====Gestionnaire de carte=====
 Ajouter dans la boite de dialogue Préférence à "URL de gestionnaire de cartes supplémentaires" l'URL suivante: Ajouter dans la boite de dialogue Préférence à "URL de gestionnaire de cartes supplémentaires" l'URL suivante:
 <code> <code>
-https://arduino.esp8266.com/stable/package_esp8266com_index.json+https://arduino.esp8266.com/stable/package_esp8266com_index.json, https://dl.espressif.com/dl/package_esp32_index.json
 </code> </code>
 {{ :arduino:board-manager-en.png?300}} {{ :arduino:board-manager-en.png?300}}
Line 40: Line 67:
 ''LOLIN(WEMOS)D1 R2 & mini''\\ ''LOLIN(WEMOS)D1 R2 & mini''\\
 ====Bibliothèques==== ====Bibliothèques====
-  ESP8266WiFi (Carte maître)+===ESP8266 & ESP32=== 
 +  ESP8266 (Carte maître)  \\ :!: Restez avec la version **2.5.2** parce que il y a des problèmes non résolus avec la version 2.6.x.
   * Wire (I2C)   * Wire (I2C)
   * FastLED (WS2812)   * FastLED (WS2812)
Line 46: Line 74:
   * MFRC522 (RC522)   * MFRC522 (RC522)
   * Servo   * Servo
 +  * ArduinoOTA
 +  * MCP_CAN 
 +    * https://github.com/coryjfowler/MCP_CAN_lib
 +    * [[:arduino:rcan-fr#modifications|Modifications MCP_CAN]]
 +  * NTPClient
 +===ESP32===
 +  * ESP32 (Board Manager)
 +  * ESP32CAN
 +    * https://github.com/miwagner/ESP32-Arduino-CAN
 +
 +__**Modifications ESP32CAN**__\\
 +Le ''xSemaphoreTake'' devrait expirer après 500 ms au lieu d'attendre pour toujours.\\
 +Remplacer ''portMAX_DELAY'' avec 500, et retourner le rc de la fonction ''xSemaphoreTake'' au lieu de zéro. (CAN.c)
 +<code c>
 +int CAN_write_frame(const CAN_frame_t *p_frame) {
 + if (sem_tx_complete == NULL) {
 + return -1;
 + }
 +
 + // Write the frame to the controller
 + CAN_write_frame_phy(p_frame);
 +
 + // wait for the frame tx to complete
 + int rc = xSemaphoreTake(sem_tx_complete, 500);
 + return rc;
 +}
 +</code>
 +
 +| Juste descendre "Upload Speed" à 460800 au cas ou le sketch téléchargé affiche des erreurs de communication. |
 + \\
 +
 +====SPIFFS====
 +Sélectionner la taille 2M SPIFFS:\\
 +{{:arduino:arduino-esp8266-spiffs-2m.png?400}}\\
 +SPIFFS est un système de fichier qui peut être utilisé dans le WIO pour télécharger les bitmaps utilisateur.\\
 +L'installation de l'extension pour l'Arduino IDE pour télécharger les données:
 +  * https://github.com/esp8266/arduino-esp8266fs-plugin
  
 ====Thème Dark==== ====Thème Dark====
Line 53: Line 118:
  \\  \\
 =====Sketch WIO===== =====Sketch WIO=====
-| //Copyright (c) 2002-2019 Robert Jan Versluis, Rocrail.net// |+| //Copyright (c) 2002-2020 Robert Jan Versluis, Rocrail.net// |
 WIO est le firmware pour la manette de contrôle, l'I2C, les LEDs, les servos, les afficheurs et le DCC.\\ WIO est le firmware pour la manette de contrôle, l'I2C, les LEDs, les servos, les afficheurs et le DCC.\\
-  * https://gitlab.com/rocrail/Arduino/tree/master/WIO +  * https://gitlab.com/rocrail/wio 
-  * [[https://gitlab.com/rocrail/Arduino/-/archive/master/Arduino-master.zip?path=WIO|Télécharger le fichier Zip]] +  * [[https://gitlab.com/rocrail/wio/-/archive/master/wio-master.zip|Télécharger le fichier Zip]] 
-  * [[https://gitlab.com/rocrail/Arduino/-/network/master|Journal des changements]]+  * [[https://gitlab.com/rocrail/wio/-/network/master|Journal des changements]]
 Le code source est publique mais pas sous licence open source, et il ne peut être utilisé seulement pour le compiler et le charger dans le LOLIN D1 Mini.\\ Le code source est publique mais pas sous licence open source, et il ne peut être utilisé seulement pour le compiler et le charger dans le LOLIN D1 Mini.\\
  
 +:!: **Note:** Après avoir décompressé le fichier ZIP le dossier devrait être renommé avant de le charger dans l'IDE Arduino de "wio-master" à "WIO".\\
 ====Binaire==== ====Binaire====
 {{ :arduino:esp-downloadtool.jpg?400}} {{ :arduino:esp-downloadtool.jpg?400}}
 Utiliser l'outil Espressif pour charger le binaire WIO. Utiliser l'outil Espressif pour charger le binaire WIO.
-  * [[https://launchpad.net/rocrail/+download|Binaire WIO]]+  * [[https://gitlab.com/rocrail/wio/-/blob/master/WIO.ino.d1_mini.bin|Binaire WIO]]
   * [[https://www.espressif.com/en/support/download/other-tools|Outil de téléchargement Flash ESP]]   * [[https://www.espressif.com/en/support/download/other-tools|Outil de téléchargement Flash ESP]]
 +    * :!: Ne pas décocher "DoNotChgBin"
  
 ====Sortie du compilateur==== ====Sortie du compilateur====
Line 76: Line 143:
 </code> </code>
  
-Pratfall: Beaucoup de câbles micro USB fournissent 5V et aucune donnée, et ne peuvent pas être utilisés pour la programmation. ^+Déconvenue: Beaucoup de câbles micro USB fournissent 5V et aucune donnée, et ne peuvent pas être utilisés pour la programmation. ^
  
  
  
-La mise en place du WiFi peut être faite avec le moniteur série Arduino 9600bps, ou en modifiant le fichier [[#user_configuration|USERCNF.h]]:+La mise en place du WiFi peut être faite avec le moniteur série Arduino 115200 bps, ou en modifiant le fichier [[#user_configuration|USERCNF.h]]:
 <code> <code>
 #1CConnecting to [secure.home] #1CConnecting to [secure.home]
Line 91: Line 158:
 La sortie après une commande ?:\\ La sortie après une commande ?:\\
 <code> <code>
 +------------------------------
 +revision=261 WIO 20200812a (c)Rocrail
 +------------------------------
 Settings: Settings:
 ------------------------------ ------------------------------
-version=0.85 WIO 20191031d (c)Rocrail +ssid1
-ssid=xxxxxxxx +pwd1
-pwd=xxxxxxxx +ssid2= 
-server=xxxxxxxx+pwd2
 +server=
 port=8051 port=8051
-name= +name=[wio104] 
-id=33 +id=104 
-io=i2cdcc +io=i2cdcc (master) 
-i2c=ooooooooooooooooppppiiiibbbbbbbb +iostate=00 00 00 00 
-steps=50 +i2c=oooooooobbbbbbbboooooooobbbbbbbb 
-pulse=50 +steps=64 
-display=22 +sleeptimer=5 
-dccsc=0 +pulse=5 
-RSSI=-53 +pwmsize=0 
-MCP23017 status: 0x20=OK 0x21=OK +options=0x00 0x01 0x18 
-I2C device found at address 0x20 +booster=
-I2C device found at address 0x21 +board=1 
-I2C device found at address 0x3C +display=0 
-I2C found 3 devices +railcom=0 
-loco1=0 loco2=3 active=0+id12=0 
 +depart=0 
 +stepper=0 3w=
 +canprot=1(1) 
 +canio=1 
 +canusb=0 
 +trace=0 
 +SPIFFS total=1345kb used=0kb
  
 Change settings by typing: Change settings by typing:
Line 122: Line 200:
 *name=<Node name> *name=<Node name>
 *id=<Node number> *id=<Node number>
-*io=<type> <throttle> or <i2cled> or <i2cservo> or <i2crfid> or <i2cdcc>+*io=<throttle> or <i2cled> or <i2cservo> or <i2crfid> or <i2cdcc> or <i2cmobile> or <i2ccam> or <i2cbus> (reboot)
 *i2c=<oooooooobbbbbbbboooooooobbbbbbbb> o=output, i=input, b=block, p=pulse *i2c=<oooooooobbbbbbbboooooooobbbbbbbb> o=output, i=input, b=block, p=pulse
 *steps=<number of rotary steps> *steps=<number of rotary steps>
 *pulse=<output pulse length in 100ms units> *pulse=<output pulse length in 100ms units>
-*display=<geometry1><geometry2> 0=96x16 1=128x32 2=128x64 +*pwm=<mobile PWM size multiplier> 
-*dccsc=<short circuit detection> 0=off 1=on +*boost=<booster option for i2cdcc type> 0=off 1=on (reboot) 
-</code+*dccslave=<dccmode> 0=master 1=slave 
- +*board=<board type> 0=D1 1=D32 2=DevMod 3=User (reboot) 
 +*display=<display type> 0=96x16 1=128x32 2=128x64 3=132x64 
 +*trace=<level> 0=info 1=debug 9=none 
 +*canprot=<protocol0=MBUS 1=RCAN 
 +*canio=<I/O over CAN> 0=no 1=yes
  
 +</code>
  
 ====Configuration utilisateur==== ====Configuration utilisateur====
-Le fichier [[https://gitlab.com/rocrail/Arduino/blob/master/LOLii/USERCNF.h|USERCNF.h]] peut être utilisé pour l'initialisation, le premier démarrage, les valeurs du WiFi et du serveur Rocrail.\\+Le fichier [[https://gitlab.com/rocrail/wio/-/blob/master/USERCNF.h|USERCNF.h]] peut être utilisé pour l'initialisation, le premier démarrage, les valeurs du WiFi et du serveur Rocrail.\\
 Les valeurs doivent être fixées avant la compilation et le téléchargement.\\ Les valeurs doivent être fixées avant la compilation et le téléchargement.\\
 Ensuite ces valeurs peuvent être changées avec les commandes via le moniteur.\\ Ensuite ces valeurs peuvent être changées avec les commandes via le moniteur.\\
 +:!: Les valeurs dans les fichiers USERCNF.h sont uniquement utilisées, si il n'y a pas encore de configuration (nouveau dispositif).\\
 +- Si les valeurs dans la mémoire flash d'un dispositif WIO existant doivent être remplacées par celles du fichier USERCNF.h, l'option "Erase Flash" dans l'IDE Arduino doit être réglée à "All Flash Contents".\\
 +- Si seulement le micrologiciel d'un périphérique WIO existant doit être mis à jour, sans changement de la configuration (par exemple les paramètres WLAN), configurez l'IDE Arduino-IDE à "Erase flash -> only Sketch".
 ====Les commandes via le moniteur==== ====Les commandes via le moniteur====
 +Le moniteur série Arduino peut être utilisé à 115200 bps pour changer les réglages WIO.\\
 +  - Si RailCom a été activé la vitesse de transmission basculera automatiquement à 250000 et le moniteur série sera en lecture seule.
 +  - Si l'ID12 a été activé la vitesse de transmission basculera à 9600 et le moniteur série sera en lecture seule.
 +
 ^ Commande ^ Description ^ Défaut ^ ^ Commande ^ Description ^ Défaut ^
 | ?  | Affiche les réglages en cours et comment les changer. | | ?  | Affiche les réglages en cours et comment les changer. |
 | !  | Vide la mémoire flash utilisée. | | !  | Vide la mémoire flash utilisée. |
-| *ssid=<valeur> | Configure le SSID du point accès WiFi. | - | +| *ssid=<valeur> | Configure le SSID du point accès WiFi. | - | SSID primaire 
-| *pwd=<valeur> | Configure le mot de passe WiFi. Une reconnexion WiFi est déclenchée. | - | +| *pwd=<valeur> | Configure le mot de passe WiFi. Une reconnexion WiFi est déclenchée. | - | Mot de passe WiFi primaire | 
-| *server=<valeur> | Configure l'IP ou le nom du serveur Rocrail. | - |+| *ssid2=<valeur> | Configure le SSID du point d'accès WiFi. | - | SSID alternatif | 
 +| *pwd2=<valeur> | Configure le mot de passe WiFi. Une reconnexion WiFi est déclenchée. | - | Mot de passe WiFi alternatif 
 +| *server=<valeur> | Configure l'IP ou le nom du serveur Rocrail. | - | Peut être un CSV de 32 caractères maximum. (1.71+) \\ Exemple: "mba2019,win2019" |
 | *port=<valeur> | Configure le port du serveur Rocrail. | 8051 | | *port=<valeur> | Configure le port du serveur Rocrail. | 8051 |
 | *name=<valeur> | Nom du nœud optionnel. | - | | *name=<valeur> | Nom du nœud optionnel. | - |
 | *id=<valeur> | Numéro du nœud/identifiant de la manette; Doit être unique. | 33 | | *id=<valeur> | Numéro du nœud/identifiant de la manette; Doit être unique. | 33 |
-| *io=<valeur>Configuration E/S.  | Manette |+| *io=<valeur>type WIO.  | i2cled |
 | *i2c=<valeur> | Configuration du port I2C.  | oooooooobbbbbbbboooooooobbbbbbbb | | *i2c=<valeur> | Configuration du port I2C.  | oooooooobbbbbbbboooooooobbbbbbbb |
 | *steps=<valeur> | Nombre de pas de rotation. | 127 | | *steps=<valeur> | Nombre de pas de rotation. | 127 |
 | *pulse=<valeur> | Longueur de l'impulsion de sortie multiple de 100ms. | 5 | | *pulse=<valeur> | Longueur de l'impulsion de sortie multiple de 100ms. | 5 |
-| *display=<value> | Géométrie par défaut de l'afficheur: 0=96x16 1=128x32 2=128x64 | 00 |+| *canprot=<valeur> | Protocole CAN | MBUS | 0=MBUS, 1=RCAN | 
 +| *dccslave=<valeur> | Rôle DCC | Maitre | 0=Maitre, 1=Esclave(Booster) | 
 +| *trace=<valeur> | Niveau de traçage | 9 (volatile) | 0=Info, 1=Debug, 9=aucun \\ Seulement pour la session en cours. | 
 +| *ptmain=<valeur> | Mode Service, PT, sur le pont en H principal | 0 (volatile) | 0=off, 1=on \\ Seulement pour test! | 
 +| *pwm=<valeur> | Taille PWM pour contrôle de moteur mobile | - | 600=10Hz | 
 +| *display=<valeur> | Type d'affichage: 0=96x161=128x322=128x64, 3=SH1106 - | 1 |
 **Note:**  Remplacer <valeur> pour répondre à l'environnement WiFi local et à la configuration.\\ **Note:**  Remplacer <valeur> pour répondre à l'environnement WiFi local et à la configuration.\\
 +**Note:**  Une réinitialisation est nécessaire après avoir changé le type WIO.\\
 +
 +|< >|
 +^ Port type ^ Description ^
 +| i | Entrée |
 +| o | Sortie |
 +| b | Bloc: Entrée avec un délai de 2 secondes. |
 +| p | Impulsion: Sortie avec arrêt automatique. |
 +
  
 ===Type de configuration ES=== ===Type de configuration ES===
Line 163: Line 268:
  
  \\  \\
 +
 +====Configuration de base avec un navigateur WEB====
 +|  //Non activé en cas de type WIO DCC.//  |
 +Le WIO agit comme un petit point d’accès pour être capable de connecter et faire la configuration de base sans moniteur série.\\
 +Le nom du point d’accès WIO est formaté comme suit: "WIO<id>.<nom>" (Défaut: WIO33.local)\\
 +Les points d'accès WIO sont répertoriés et peuvent être sélectionnés:\\
 +{{:arduino:win10-aps.png?0x280}} {{:arduino:wio-ap.png?0x280}}\\
 +Le **mot de passe** du point d'accès par défaut est "12345678" qui peut être changé dans le fichier USERCNF.h.\\
 +Après la connexion au WIO, la configuration de base peut être changé avec un navigateur WEB à l'adresse:
 +<code>
 +http://192.168.4.1
 +</code>
 +Après **Submit** le WIO essayera automatiquement le WiFi et la connexion au serveur Rocrail.\\
 +Le point d'accès sera arrête après:
 +  * une soumission.
 +  * 2 minutes d'inactivité.
 + \\
 +
 +====Mise à jour OTA====
 +|  //Doit être activé par la fenêtre de dialogue WIO.//  |
 +Si ce n'est pas possible, ou encombrant, pour faire la mise à jour par USB, le WIO peut également être mise à jour par voie aérienne "Over The Air" (OTA).\\
 +{{:arduino:wio-ota-en.png?400}}\\
 +Sélectionner simplement le WIO désiré à partir de la liste au lieu du port USB, et télécharger.\\
 +Si il est demandé un **Mot de passe**, ce sera le même que pour le [[#configuration_de_base_avec_un_navigateur_WEB|Point d'Accès]] (Par défaut "12345678").\\
 +{{:arduino:wio-ota-display.png}}{{:arduino:ota-upload-en.png?600}}\\
 +
 +
 + \\
 +
 =====Manette - RIC===== =====Manette - RIC=====
 +| Note: RIC n'est plus supporté dans le firmware, et est remplacé par [[:arduino:wioctrl-fr|WIO Control]]. |
 **Note:** //Les contrôles de locomotives RIC par adresse, pas par identifiant. Donc le premier dans la liste sera utilisé si plusieurs locomotives partagent la même adresse.//\\ **Note:** //Les contrôles de locomotives RIC par adresse, pas par identifiant. Donc le premier dans la liste sera utilisé si plusieurs locomotives partagent la même adresse.//\\
 La manette de poche en mode E/S nécessite un commutateur rotatif, une LED et quatre boutons.\\ La manette de poche en mode E/S nécessite un commutateur rotatif, une LED et quatre boutons.\\
Line 230: Line 365:
     * Bloc     * Bloc
     * Impulsion     * Impulsion
-  * 128 LEDs compatible avec le WS2812 sur D8. (Sortie type couleur dans Rocrail.)+  * 100 LEDs compatible avec le WS2812 sur D8. (Sortie type couleur dans Rocrail.)
     * Couleur RGB     * Couleur RGB
     * Luminosité     * Luminosité
Line 242: Line 377:
   * Jusqu'à 255 unités sur le même réseau WiFi. (Dépendant de la configuration IP et de la disponibilité.)   * Jusqu'à 255 unités sur le même réseau WiFi. (Dépendant de la configuration IP et de la disponibilité.)
   * Une alarme sera générée si les messages 'en vie' n'arrivent plus.   * Une alarme sera générée si les messages 'en vie' n'arrivent plus.
-  * Les commandes Sortie/Aiguillage sont reconnus après leur traitement.+  * Les commandes Sortie/Aiguillage sont reconnus après leur traitement. (Les sorties clignotantes sont reconnues.)
   * Les évènements Entrée doivent être reconnues dans les 100ms. Après cette expiration un renvoi sera effectué. (5 essais maximum.)   * Les évènements Entrée doivent être reconnues dans les 100ms. Après cette expiration un renvoi sera effectué. (5 essais maximum.)
  
Line 250: Line 385:
 ^ Rocrail ^ WIO ^ ^ Rocrail ^ WIO ^
 | Identifiant de l'interface | "WIO" | | Identifiant de l'interface | "WIO" |
-| Bus | ID | +Identifiant du Nœud (Bus| ID | 
-| Adresse | I2C ou Port E/S |+| Adresse | Port I2C |
 | Adresse | Port LED | | Adresse | Port LED |
 | Adresse | Port du servomoteur | | Adresse | Port du servomoteur |
Line 260: Line 395:
   * Détecteurs   * Détecteurs
  
 +===Aiguillages double bobines===
 +| //__Désactive__ les options 'Accessoire' et 'Porte unique', et __selectionne__ le type sortie.// |
 +La prochaine adresse pour aucun aiguillage à porte simple est utilisée pour la commande de déviation.\\
 +Donc si sur le port 1 il y a un aiguillage à double bobines, le port 2 ne doit être utilisé, et le deuxième aiguillage ira sur le port 3.\\
 +Les deux sorties I2C doivent être du type impulsion 'p'.\\
 +Matériel possible:
 +  * **[[:mgv76-fr|GCA76]]**
 +  * [[:gca77-fr|GCA77]]
 +  * [[:gca107-fr|GCA107]]
 +
 +====Clignotement====
 +La sortie clignotante et les options de retard peut être utilisée pour faire clignoter un port I2C.\\
 +Si le retard est nul la longueur d'impulsion par défaut sera utilisée.\\
  \\  \\
 ====LEDs==== ====LEDs====
 +{{ :arduino:ws2812.jpg?200}}{{ :arduino:ws2811-chip.jpg?200}}
 L'adressage est le même que les sorties normales.\\ L'adressage est le même que les sorties normales.\\
  
Line 284: Line 433:
  
 ====Servos==== ====Servos====
 +{{ :arduino:servo.jpg?200}}{{ :arduino:servo-pwm.png?200}}
 L'adressage est le même que les sorties normales.\\ L'adressage est le même que les sorties normales.\\
 ^ Contrôle ^ Sortie ^ Commutation ^ Intervalle ^ ^ Contrôle ^ Sortie ^ Commutation ^ Intervalle ^
 | WIO | IID="WIO" | IID="WIO" | - | | WIO | IID="WIO" | IID="WIO" | - |
-| WIO ID | Bus | Bus | 1...255 |+| WIO ID | Identifiant du Nœud (Bus| Bus | 1...255 |
 | Port du servo | Adresse | Adresse | 1...4 | | Port du servo | Adresse | Adresse | 1...4 |
-| Options supplémantaires | - | Porte simple | - |+| Options supplémentaires | - | Porte simple ON | - |
 | Position 1 | Paramètre ON | Paramètre | 0...180° | | Position 1 | Paramètre ON | Paramètre | 0...180° |
 | Position 2 | Paramètre OFF | Valeur | 0...180° | | Position 2 | Paramètre OFF | Valeur | 0...180° |
Line 335: Line 485:
  \\  \\
  
-====Afficheur SSD1306====+====Afficheur SSD1306/SH1106====
 {{:arduino:wio-oled-128x32.jpg?0x160}}{{:cbus:display-goes.jpg?0x160}}\\ {{:arduino:wio-oled-128x32.jpg?0x160}}{{:cbus:display-goes.jpg?0x160}}\\
 Deux afficheurs peuvent être connectés à l'I2C du Type SSD1306 avec les adresses I2C 0x3C et 0x3D.\\ Deux afficheurs peuvent être connectés à l'I2C du Type SSD1306 avec les adresses I2C 0x3C et 0x3D.\\
Line 351: Line 501:
 </code> </code>
 ^ Commande ^ Paramètre ^ Description ^ Remarque ^ ^ Commande ^ Paramètre ^ Description ^ Remarque ^
-| {Bn} | n=0-19 Dessine un bitmap à la position courante. |+| {B#} | #=0-99999999 Lecture d'un fichier AMP, "#.amp", à partir de SPIFFS, et dessine le bitmap à la position courante. | 
 +| {B'//name//'} | //nom// du fichier AMP | Lecture d'un fichier AMP, "//nom//.amp", à partir de SPIFFS, et dessine le bitmap à la position courante. | Le nom doit être entre guillemets simples. |
 | {E} | - | Efface le tampon de l'afficheur. Un {P} supplémentaire est nécessaire pour effacer l'afficheur. | | {E} | - | Efface le tampon de l'afficheur. Un {P} supplémentaire est nécessaire pour effacer l'afficheur. |
-| {Fn} | n=0-2 | Sélectionner la police de caractère. 0=7x5 1=6x5w 2=6x5n | La police de caractère 5x5 n'est pas supportée parce qu'elle n'est pas lisible. | +| {F#} | #=0-2 | Sélectionne la police de caractère. 0=7x5 1=6x5w 2=6x5n | La police de caractère 5x5 n'est pas supportée parce qu'elle n'est pas lisible. | 
-| {Hn} | n=0-255 | Régler le contraste de l'afficheur. | +| {H#} | #=0-255 | Régler le contraste de l'afficheur. | 
-| {In} | n=0-1 | Inverser l'afficheur. 0=normal 1=inversé | +| {I#} | #=0-1 | Inverser l'afficheur. 0=normal 1=inversé | 
-| {Ln} | n=0-3 | Aller à la ligne. La gamme dépend de la taille de l'afficheur. |+| {L#} | #=0-3 | Aller à la ligne. La gamme dépend de la taille de l'afficheur. |
 | {P} | - | Copier le tampon vers l'afficheur. | | {P} | - | Copier le tampon vers l'afficheur. |
-| {Rn} | n=0,2 | Régler la rotation de la cartographie de l'afficheur. 0=0° 2=180° |+| {R#} | #=0,2 | Régler la rotation de la cartographie de l'afficheur. 0=0° 2=180° |
 | {?V} | - | Afficher la version du firmware. | | {?V} | - | Afficher la version du firmware. |
-| {Xn} | n=0-127 | Aller à la colonne. La gamme dépend de la taille de l'afficheur. | +| {X#} | #=0-127 | Aller à la colonne. La gamme dépend de la taille de l'afficheur. | 
-| {Yn} | n=0-32 | Aller à la ligne. La gamme dépend de la taille de l'afficheur. |+| {Y#} | #=0-32 | Aller à la ligne. La gamme dépend de la taille de l'afficheur. |
 ^ Nouvelle commande ^ Paramètre ^ Description ^ ^ Nouvelle commande ^ Paramètre ^ Description ^
-| {cn} | n=0-16 | Afficher une horloge analogique avec l'angle donné de la position actuelle. | +| {c#} | #=0-16 | Afficher une horloge analogique avec l'angle donné de la position actuelle. | 
-| {gn} | n=0,**1**,2 | Configurer la géométrie de l'afficheur. 0=96x16, 1=128x32, 2=128x64 (1 par défaut)| C'est seulement pour le test. Pour sauvegarder la charge CPU régler l'option [[#monitor_commands|afficheur]]. |+| {g#} | #=0,**1**,2,3 | Configurer la géométrie de l'afficheur. 0=96x16, 1=128x32, 2=128x64, 3=SH1106 (1 par défaut)| C'est seulement pour le test. Pour sauvegarder la charge CPU régler l'option [[#monitor_commands|afficheur]]. |
 | {i} | - | Basculer le texte inversé. | | {i} | - | Basculer le texte inversé. |
-| {sn} | n=1-x | Afficher le texte défilant à la position courante, avec une largeur de vue de n caractères. | Exemple: {s12}Scrolling text to show...{s} |+| {s#} | #=1-x | Afficher le texte défilant à la position courante, avec une largeur de vue de n caractères. | Exemple: {s12}Scrolling text to show...{s} |
 | {d} | - | Faire défiler une ligne de texte vers le bas. | | {d} | - | Faire défiler une ligne de texte vers le bas. |
 | {f} | - | Horloge rapide 7-Segments. | | {f} | - | Horloge rapide 7-Segments. |
 +| {p} | - | Permuter les afficheurs. |
 **Note:** //Si la géométrie n'est pas par défaut, 128x32, le texte DOIT démarrer avec une commande {gn} pour sélectionner la bonne géométrie.//\\ **Note:** //Si la géométrie n'est pas par défaut, 128x32, le texte DOIT démarrer avec une commande {gn} pour sélectionner la bonne géométrie.//\\
  
-==Bitmaps== + \\ 
-Les bitmaps ont une taille de 20 x 8 pixels. + 
-^ Numéro ^ Description ^ Original ^ +====Afficheur 7-Segments HT16K33 ==== 
-| 13 | Nederlandse Spoorwegen (NS) | {{:arduino:bitmaps:ns.jpg}} |+{{ :arduino:adafruit-ht16k33.jpg?200}} 
 +//Horloge rapide//\\ 
 +La carte dAdafruit HT16K33 est supportée sur I2C à l'adresse 0x70.\\ 
 +Il affiche le temps alternatif, la date et le température.\\ 
 +Avec le réglage ''NTP_CLOCK'' dans le fichier USERCNF.h le service "pool.ntp.org" sera utilisé pour obtenir le temps de la journée au lieu de celui du serveur Rocrail. Il n'alternera pas entre la date et la température.\\
  \\  \\
  
 ====Générateur DCC==== ====Générateur DCC====
 +:!: Uniquement supporté pour les cartes ESP8266.\\
 {{ :arduino:pulseview-wio-dcc.jpg?400}} {{ :arduino:pulseview-wio-dcc.jpg?400}}
 === WIO supporte le suivi des paquets DCC === === WIO supporte le suivi des paquets DCC ===
   * Vitesse de la locomotive et direction. (Pas de support pour 14 pas de vitesse.)   * Vitesse de la locomotive et direction. (Pas de support pour 14 pas de vitesse.)
-  * Les fonctions de la locomotive 0-28+  * Les fonctions de la locomotive 0-32
-  * Définir/obtenir le POM. (Un détecteur RailCom est nécessaire pour obtenir le POM.)+  * Définir/obtenir le PoM. (Un détecteur RailCom, GCA214, est nécessaire pour obtention du PoM.)
   * Accessoires.   * Accessoires.
   * BinState   * BinState
 +  * Voie de programmation; mode Service. (Un second pont en H est nécessaire: WIO-Boost-PT)
 +  * Adresses de locomotive >= 100 sont considérées comme des adresses longues.
 +  * Adresse courte 111 est utilisée comme factice pour déclencher d'autres décodeurs à diffuser 
 ===Caractéristiques=== ===Caractéristiques===
   * 100% conforme à la synchronisation NMRA.   * 100% conforme à la synchronisation NMRA.
   * Coupure de l'alimentation automatique après une perte de la connexion au serveur Rocrail.   * Coupure de l'alimentation automatique après une perte de la connexion au serveur Rocrail.
   * Affiche l'activité sur un afficheur si il y en a un de branché.   * Affiche l'activité sur un afficheur si il y en a un de branché.
-  * Rafraîchissement de 64 emplacements empilés avec purge automatique. +  * Rafraîchissement de 48 emplacements empilés avec purge automatique. 
-  * 16 file d'attente de commande accessoire.+  * 12 files d'attente de commande d'accessoire.
 ===Broches DCC=== ===Broches DCC===
 ^ Broche ^ Usage ^ Remarque ^ ^ Broche ^ Usage ^ Remarque ^
 | D6 & D7 | Signal symétrique DCC. | | | D6 & D7 | Signal symétrique DCC. | |
-| D5 | Détection de court-circuit. Nécessite une résistance de pull-up de 10k. |+| D5 | Active le pont en H 1 Opération | 
 +| D8 | Active le pont en H 2 | Service |
 ===ORD3=== ===ORD3===
 Pour utiliser le niveau 3.3V une résistance de 470 Ohm doit être ajoutée parallèlement à R1.\\ Pour utiliser le niveau 3.3V une résistance de 470 Ohm doit être ajoutée parallèlement à R1.\\
 ===Adressage Mobile=== ===Adressage Mobile===
 ^ IID | WIO | Remarque | ^ IID | WIO | Remarque |
-^ Bus | WIO ID |+Identifiant du Nœud (Bus| WIO ID |
 ^ Adresse | Adresse de décodeur DCC. | Adresses > 99 sont considérés comme adresse longue DCC. | ^ Adresse | Adresse de décodeur DCC. | Adresses > 99 sont considérés comme adresse longue DCC. |
 ^ Crans de vitesse | 28 ou 128 |  | ^ Crans de vitesse | 28 ou 128 |  |
Line 407: Line 568:
  \\  \\
  
-=====Mobile=====+====Mobile==== 
 +Utiliser le WIO comme décodeur mobile.\\ 
 +La valeur du __**[[:loc-int-fr#bus|Bus]]**__ de la locomotive doit être réglée avec l'identifiant WIO.\\ 
 +Le nombre de __**[[:loc-int-fr#pas_du_decodeur|pas du décodeur]]**__ doit être réglé dans la plage de 50 à 100.\\ 
 +===Broches du LOLIN D1=== 
 +{{  arduino:lipo3s-measure-.png?240}} 
 +^ Broches ^ Usage ^ Pont en H ^ Remarque ^ 
 +| D0 | Fonction éclairage | | Cab1 | 
 +| D3 | Feux arrières | | Cab2 | 
 +| D5 | Activation du moteur | ENA | RC ESC servo PWM | 
 +| D6 | Marche avant PWM | IN 1 | | 
 +| D7 | Marche arrière PWM | IN 2 | | 
 +| D8 | PWM Servo pour attelage | | F1 | 
 +| I2C 1-32 | Fonctions 1 à 32 | | | 
 +| A0 | Moniteur batterie LiPo 3S | | + 100kΩ A0 32kΩ - | 
 +L'accélération/décélération peut être simulé avec le paramètre de l'interface de la locomotive __**[[:loc-int-fr#masse|Masse]]**__. (résolution 10ms.)\\ 
 +Une valeur de masse de 5 augmentera/réduira le PWM de 1 pas chaque 5*10ms. 
 +Vstart et Vhigh, CV2/CV5, peut être simulé avec l'__**[[:loc-int-fr#intervalle_de_pas|Intervalle de pas]]**__\\ 
 +===Contrôleur de Vitesse Électronique=== 
 +Un Contrôleur de Vitesse Électronique, ESC (Electronic Speed Controller), sur la broche 5 peut également être utilisé pour le contrôle du moteur si cette option est définie.\\  
 +Note: __**Seulement la masse et le PWM au cas ou l'ESC supporte BEC.**__ 
 + 
 + \\ 
 + 
 +====ID-12LA==== 
 +{{ :arduino:rfid-card-antenna.jpg?200}}{{ http://id-innovations.com/httpdocs/assets/immage/id12new.jpg}} 
 +En option un lecteur RFID du type [[http://id-innovations.com|ID-12LA]] peut être connecté à la broche RX pour détecter les balises qui seront reportées vers Rocrail.\\ 
 +La balise est utilisé comme **[[:sensor-gen-fr#identifiant|Identifiant de capteur]]** ou **[[:sensor-int-fr#nom_de_l_uid|Nom de l'UID]]**, **[[:can-gc4-fr#notation_rfid|format décimal]]**.\\ 
 +La carte **[[:gca_rfid-fr|GCA RFID]]** peut être utilisé pour monter et connecter l'ID-12LA.\\ 
 +__Le moniteur série sera réglé à 9600bps.__\\ 
 +**Note:** Cela sert à analyser les balises entre les rails pour laisser à Rocrail le temps de savoir où se trouve le véhicule en marche.\\ 
 + 
 + \\ 
 +====RailCom==== 
 +{{ :arduino:railcom_cutout.jpg?400}} 
 +Le connecteur série sur le circuit imprimé WIO peut être utilisé pour le connecter à un amplificateur pour la lecture des données RailCom.\\ 
 +Le GCA214 peut être utilisé comme amplificateur.\\ 
 +Les identifiants RailCom suivants sont supportés: 
 +^ ID ^ Canal ^ Description ^ 
 +|  0  |  2  | Lecture POM | 
 +|  1  |  1  | Adresse basse du décodeur | 
 +|  2  |  1  | Adresse haute du décodeur | 
 +Le seul moyen pour activer la lecture RailCom dans le WIO est de régler cette option dans la fenêtre de dialogue WIO. (WIO 0.105, Rocrail 2.1.212)\\  
 +La vitesse du port série basculera à 250000, et le moniteur ne pourra être que seulement lu. __Donc avec cette option active il n'est pas possible de régler le WIO par les commandes du moniteur.__\\ 
 + \\ 
 +====Capteurs==== 
 +{{ :arduino:bmp280.jpg?200}}{{ :arduino:tsl2591.jpg?140}} 
 +Un capteur BME280/BMP280, connecté à l'I2C, est supporté pour la température, la pression et l'humidité.\\ 
 +Le USER_ALTITUDE dans le fichier USERCNF.h doit être ajusté pour correspondre à l'altitude locale pour avoir des valeurs de pression correctes.\\ 
 +Un capteur TSL2591 'Convertisseur Lumière-vers-Numérique', connecté à l'I2C, est supporté pour calculer la luminosité.\\ 
 +===Texte dynamique=== 
 +Aussi bien la température, la pression et l'humidité peuvent être utilisé comme texte et variables XMLScript.\\ 
 +Voir: __**[[:text-gen-fr#texte_dynamique|Texte dynamique]]**__ \\ 
 + \\ 
 + 
 +====Son==== 
 +Le son peut être joué sur les cartes ESP32 en utilisant une des broches DAC. (GPIO25 ou GPIO26)\\ 
 +Format supporté [[ https://de.wikipedia.org/wiki/RIFF_WAVE|RIFF Wave]]: 
 +  * Type PCM 
 +  * Taux d'échantillonnage 11.025 Hz 
 +  * 16 bits d'échantillonnage 
 +  * Un canal (Mono) 
 +===Action=== 
 +  * Type: Son 
 +  * Commande: Play 
 +  * Paramètre: Fichier son incluant le chemin comme : "/F9.wav" 
 +  * Interface Bus: WIO ID 
 +Exemple: 
 +<code xml> 
 +<ac id="F9" cmd="play" param="/F9.wav" type="sound" iid="WIO" bus="38" addr="0" port="0"/> 
 +</code> 
 +===Recommandations=== 
 +Le DAC est seulement capable d'utiliser 8 bits. les données 16 bits doivent être interprétées, ce qui n'est pas possible sans perte de données.\\ 
 +Pour obtenir un meilleur résultat: 
 +  * Normaliser les fichiers son de sorte que les données utilisent pleinement 16 bits. 
 + \\ 
 + 
 +====Moteur pas à pas==== 
 +TLe WIO-02 supporte deux types de moteur pas à pas: Pilote de pas 4-fils et 3-fils.\\ 
 +{{ :arduino:stepmotor-4wire.jpg?0x200}}{{ :arduino:stepmotor-3wire.jpg?0x200}} 
 +^ WIO-02 ^ 4-fils ^ 3-fils ^ Remarque ^ 
 +| Servo 5 | IN1 | CLK+ | 
 +| Servo 6 | IN2 | DIR+ | 
 +| Servo 7 | IN3 | ENABLE+ | 
 +| Servo 8 | IN4 | - | 
 +| DA1     | -   | | Capteur de calibration Hall/Reed |  
 +| EP1-1   | GND | CLK-,DIR-,ENABLE- | 
 +| -       | VCC | 12V-45V DC | Alimentation externe | 
 +===Configuration pont tournant=== 
 +|  Interface pont tournant  || 
 +^ Champ ^ Valeur ^ Remarque ^ 
 +| Identifiant du nœud | WIO-02 ID | | 
 +| Adresse | 1 | Fixe | 
 +| Lumières  | 1...32 | Éclairage de la cabine du pont en option. \\ Port de sortie numérique sur le même WIO-02. | 
 +| Type | wio | 
 +| Pas du décodeur | N° des pas pour une rotation de 360°. \\ En cas d'un 28BYJ-48: 4096 pas. | 
 +//Le nombre de pas du décodeur pour une rotation complète du pont tournant est nécessaire pour calculer le chemin le plus court.//\\ 
 + \\ 
 +|  Voies du pont tournant (Exemple 4096 pas)  || 
 +^ Voie ^ Voie du décodeur ^ 
 +|  0  |  0  | 
 +|  12  |  1024  | 
 +|  24  |  2048  | 
 +|  36  |  3072  | 
 + 
 +Exemple XML: (Seuls les attributs obligatoires sont répertoriés.) 
 +<code xml> 
 +  <tt ori="west" id="tt1" x="11" y="4" z="0" pos="0" iid="RCAN-1" bus="102" addr="1" type="wio" decsteps="4096"> 
 +    <track nr="0" decnr="0"/> 
 +    <track nr="12" decnr="1024"/> 
 +    <track nr="24" decnr="2048"/> 
 +    <track nr="36" decnr="3072"/> 
 +  </tt> 
 +</code> 
 + 
 + 
 + \\ 
 + 
 +====CAN==== 
 +{{ :arduino:gc2a-wio-can.jpg?400}} 
 +Le type WIO CAN peut être utilisé comme pont CAN-WiFi pour  
 +  * [[:mbus:cs3-fr#type_de_communication|MBUS, type TCP sur le port 5550]] 
 +  * RCAN, type TCP+binaire sur le port 5550 
 + 
 +====MCP2515==== 
 +La cartographie des broches pour l'utilisation du SPI MCP2515(16MHz) sur le __**[[:can-gca2a-fr|GC2a]]**__: 
 + 
 +^ Nom ^ Nano ^ Lolin D1 Mini ^ Lolin D32 ^ Remarque ^ 
 +| GND | GND | GND | GND | Masse | 
 +| 5V | 5V | 5V | 5V(USB) | | 
 +| CS | D10 | D3 | GPIO14 | Sélection de la puce | 
 +| MOSI | D11 | D7 | GPIO23(MOSI) | Sortie maître, Entrée esclave | 
 +| MISO | D12 | D6 | GPIO19(MISO) | Entrée maître, Sortie esclave | 
 +| SCK | D13 | D5 | GPIO18(SCK) | Horloge série | 
 + 
 +Le Lolin D1/D32 doit être branché au 5V USB sans alimentation venant du bus CAN.\\ 
 +Un kit WIO-CAN sera bientôt disponible.\\ 
 + 
 + \\ 
 + 
 +====ESP32==== 
 +Le firmware WIO en cours, 1.94, utilise le contrôleur CAN interne, et utilise donc seulement le MCP2551/2561. (SPI CAN n'est plus pris en charge pour le MCP2515)\\ 
 +En cas d'ESP32 la communication CAN est toujours activée, quelque soit le type de WIO sélectionné.\\ 
 +|< >|< >|< >| 
 +^ Connexion ^ Broche ESP32 ^ MCP2561 ^ 
 +| TXCAN  |  16 |  1 | 
 +| RXCAN  |   4 |  4 | 
 + 
 + \\ 
 +=====Lecteur RFID mobile=====
 Le WIO peut également être utilisé comme lecteur mobile RFID et d'E/S.\\ Le WIO peut également être utilisé comme lecteur mobile RFID et d'E/S.\\
 L'identifiant WIO doit être configuré dans le champ **[[:loc-int-fr#adresse_secondaire|Adresse secondaire]]**.\\ L'identifiant WIO doit être configuré dans le champ **[[:loc-int-fr#adresse_secondaire|Adresse secondaire]]**.\\
Line 436: Line 746:
   * https://wiki.rocrail.net/doku.php?id=gca:gca-index-fr   * https://wiki.rocrail.net/doku.php?id=gca:gca-index-fr
  
 +=====Dépannage=====
 +
 +====LOLIN vs Wemos====
 +|< >|
 +|  Avant  ||  Arrière  ||
 +|  LOLIN D1 mini  |  Wemos mini  |  LOLIN D1 mini  |  Wemos mini  |
 +| {{:arduino:d1-top.jpg?0x300}} || {{:arduino:d1-bottom.jpg?0x300}} ||
 +
 +|< >|
 +^ Broche ^ Lolin ^ Wemos ^
 +|  D3  |  -  | Ne démarre pas en cas de niveau bas. |
 +
 + \\
 +
 +====Très lent====
 +Si un module I2C, comme le Pi02 ou le Pi03, est connecté au bus I2C du WIO, et n'a pas de puissance, cela va ralentir le traitement et aucun autre appareil I2C ne sera détecté. (Plusieurs secondes entre les appels de boucle.)\\
 +L'extenseur de bus I2C P82B715 semble drainer l'horloge I2C et les lignes de données, ce qui confondra l'ISR dans la librairie Wire.\\
 +Le Pi08, avec la puce PCA9622, ne souffre pas de ce problème avec son extenseur de bus I2C interne.\\
 +===Solution===
 +Soyez sûr que tous les modules I2C connectés sont alimentés en même temps que le WIO.\\
arduino/wio-fr.txt · Last modified: 2024/04/12 15:29 by phil45