User Tools

Site Tools


wio:wiopi-fr
no way to compare when less than two revisions

Differences

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


wio:wiopi-fr [2025/03/18 16:22] (current) – created - external edit 127.0.0.1
Line 1: Line 1:
 +[[:france|{{ :hardware.png}}]][[:france|{{ :rocrail-logo-35.png}}]]
 +====== WIOpi ======
 +[[:wio:overview-fr|{{ :wio:wiologo.png}}]]
 +**[[: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-mobile-fr|WIO Mobile]] | [[:arduino:wio-cable-fr|Câble]] | [[:wio:wio-ledscript-fr|LEDScript]] | **[[:wio:wiopi-fr|WIOpi]]**
 +    * [[:wio:wiopi-01-fr|Circuit imprimé WIOpi-01]]
 +    * [[:wio:wiopico-fr|SIOpico]] //Esclave E/S I2C pour WIOpi//
 +    * [[:rocnet:headless-cam-fr|Configuration du Raspberry Pi sans écran]]
 +    * [[:rpi:interfaces-fr|Vitesse I2C]]
 +    * [[:wiopi:zero-server-fr|Serveur Rocrail Zero]]
 + \\
 +
 +{{:wio:zero.jpg?0x120}}
 + \\
 +|  Avant de monter le connecteur sur le Zero, vérifier ceci [[:wio:wiopi-01-fr|WIOpi-01]]  |
 +
 +<html><!--
 + \\
 +=====Versions PiOS=====
 +^ Version ^ Remarque ^ Date ^
 +| PiOS 11 'Bullseye' | OK |
 +| PiOS 12 'Bookworm' | L'I2C n'apporte qu'une erreur d'E/S (5) | Oct. 2023 |
 +--></html>
 +
 +
 + \\
 +
 +=====Introduction=====
 +WIOpi est un programme ciblé pour le Raspberry Pi et ses GPIO. (Modèle 1, 2, 3, 4 et ZeroW.)\\
 +Les exigences matérielles et le support sont les même que pour le __**[[:rocnet:rocnetnode-fr|RocNetNode]]**__.\\
 +En faisant fonctionner le programme WIOpi sur le Raspberry Pi, il se comportera et traitera comme un WIO sur base ESP.\\
 +|< >|
 +^ WIOpi s'exécute dans le contexte de l'utilisateur **pi**. ^\\
 +//L'utilisateur **pi** est par défaut dans les groupes **gpio**, **i2c** et **spi**, donc pas besoin d'exécuter WIOpi dans un contexte de super utilisateur.// \\
 +**Note**: Le type mobile devra fonctionner dans le contexte root pour être capable marcher dans un processus moteur haute performance.\\
 +<code>
 +$ groups
 +pi adm dialout cdrom sudo audio video plugdev games users input netdev gpio i2c spi
 +</code>
 +Les fichiers suivants et les répertoires sont extraits:
 +<code>
 +.
 +├── cam
 +│   └── cam.py
 +├── reboot.sh
 +├── scripts
 +│   └── Disco00.led
 +├── startwiopi.sh
 +├── update.sh
 +└── wiopi
 +</code>
 +
 +Les commandes pour démarrer et arrêter le script Python cam.py peuvent être spécifiées dans le fichier wiopi.ini.\\
 +Les valeurs par défaut sont:
 +<code>
 +    <var name="startcam" vt="string" defval="nohup python3 cam/cam.py &amp;"/>
 +    <var name="stopcam" vt="string" defval="killall python3"/>
 +</code>
 +
 + \\
 +
 +=====Cartes supportées=====
 +  * Raspberry ZeroW 1 et 2
 +  * Raspberry Pi 1, 2, 3 et 4
 +
 +
 + \\
 +
 +=====Installation=====
 +Activer **l'I2C**, le **SPI** et le **Port Série** dans l'utilitaire raspi-conf.\\
 +<code>
 +cd
 +mkdir WIOpi
 +cd WIOpi
 +wget https://wiki.rocrail.net/rocrail-snapshot/WIOpi-ARMHF.tar.gz
 +tar xf WIOpi-ARMHF.tar.gz
 +rm WIOpi-ARMHF.tar.gz
 +</code>
 +Ajouter une tâche crontab:
 +<code>
 +@reboot /home/pi/WIOpi/startwiopi.sh
 +</code>
 +//La version ARMHF fonctionne également sous PiOS 64bit. (ARM64)//\\
 +
 +
 +====Taille du Swap====
 +La taille du fichier swap par défaut est de 100MB pour un Zero avec 512MB de mémoire n'est pas suffisant.\\
 +<code bash>
 +sudo nano /etc/dphys-swapfile
 +</code>
 +Changer la taille du swap à 1024:
 +<code bash>
 +CONF_SWAPSIZE=1024
 +</code>
 +Redémarrer le service:
 +<code bash>
 +sudo /etc/init.d/dphys-swapfile stop
 +sudo /etc/init.d/dphys-swapfile start
 +</code>
 + \\
 +
 +
 +=====Options en Ligne de Commande=====
 +^ Option ^ Description ^
 +| -info | définir les informations de niveau de suivi |
 +| -t <filename> | nom du fichier de suivi |
 +| -server <ip> | Adresse IP du serveur Rocrail ou nom DNS ¹|
 +| -id <1...255> | Identifiant du Nœud WIOpi |
 +| -softpwm | Utilisation PWM logiciel des servos pour être capable de jouer des sons. |
 +
 +
 + \\
 +¹ Si WIOpi et le serveur Rocrail fonctionnent sur le même Raspberry pi, entrez **localhost**. Pour le démarrage automatique, entrez l'option dans le fichier startwiopi.sh.
 +=====Brochage=====
 +Le brochage et la cartographie est affiché dans la console après le démarrage.\\
 +Cela dépend de la configuration trouvée dans le fichier wiopi.ini.\\
 +Voir les informations sur le brochage du Raspberry Pi: https://www.raspberrypi.com/documentation/computers/raspberry-pi.html \\
 +Ou émettez dans un terminal la commande pinout.\\
 +
 + \\
 +=====Matériel supporté=====
 +  * __**[[:gca1-pi01-fr|Pi01]]**__
 +  * __**[[:rocnet:pi01can-fr|Pi01CAN]]**__
 +  * __**[[:gca_pi02-fr|Pi02]]**__ (max. 4 = 128 E/S)
 +  * __**[[:gca-pi03-fr|Pi03]]**__ (max. 8 = 128 Servos - adresse 1-128)  ((Le WIOpi enregistre uniquement les positions des servos en cas d'un arrêt.))
 +  * __**[[:gca-pi06-fr|Pi06]]**__ (Alimentation & Patch)
 +  * __**[[:gca-pi08-fr|Pi08]]**__ (max. 8 = 128 LED. Adresse de sortie < = 128)
 +  * __**[[:arduino:wio-fr#id-12la|ID12 RFID]]**__ lecteur sur Pi01
 +  * __**[[:arduino:wio-fr#afficheur_ssd1306_sh1106|SSD1306 / SH1106]]**__ OLED (max. 2, restriction faite par l'adressage I2C du SSD1306 / SH1106) \\ //Note: Le SH1106 semble incompatible avec le Pi01, le pilote I2C, donc il doit être connecté directement aux broches de l'I2C.//
 +  * __**[[:arduino:wio-fr#afficheur_a_segments_ht16k33|HT16K33]]**__ (max. 2 horloges)
 +  * __**[[:arduino:wio-fr#moteur_pas_a_pas|Moteur pas à pas 4 ou 3 fils]]**__
 +  * __**[[:arduino:wio-fr#detecteurs|BMx280]]**__ (max. 2 Environnements)
 +  * __**[[:gca214-fr|GCA214]]**__ Lecteur RailCom sur le Pi01 (PiOS 32bit seulement à cause du débit non standard de 250000.)
 +  * __**[[:arduino:wio-fr#son|Lecteur de son]]**__ avec "mplayer" (Sans préfixe barre oblique)
 +  * Logiciel mobile PWM pour contrôler un moteur à courant continu, MOSFET ou pont en H. ((//WIOpi doit être démarré avec "sudo" pour générer une bonne qualité PWM.//))
 +  * WS2801 RGB LEDs sur SPI (Adresse de sortie > 128)
 +    * Support LEDScript en cas ou le type de port est réglé à Macro. 
 +  * 2 Servos sur les broches PWM matériel (physiquement 32 & 33 - adresse 129 et 130). ((//WIOpi doit être démarré avec "sudo" pour être capable d'utiliser les sorties PWM.//))
 +  * Entrées analogiques: PCF8591
 +
 +**Note:** //Le WIOpi enregistre uniquement les positions des servos en cas d'un arrêt.//\\
 +
 + \\
 +
 +=====Servos embarqués=====
 +Les deux servos embarqués ont pour adresse 129 et 130.\\
 +Les fonctions mobile 1 et 2 sont mappés à ces adresses de servos embarquées.\\
 +**Note:** //Le WIOpi enregistre uniquement les positions des servos en cas d'un arrêt.//\\
 +
 + \\
 +=====Son=====
 +Les sorties servo, PWM0 et PWM1, peuvent également être utilisé pour l'audio:
 +<code>
 +dtoverlay=pwm-2chan,pin=12,func=2,pin2=13,func2=4
 +</code>
 +Le filtre est assez simple: (L'exemple est juste pour un canal, et non testé.)
 +<code>
 +                  1µ
 +                 || | 
 +Servo0 -+---+----|| |----+
 +        |      || |    |   /|
 +       +-+  |            |  / |
 +       |1| ---         +---+  |
 +       |5| --- 33n        |
 +       |0|  |          |    |
 +       +-+  |          +---+  |
 +        |              |  \ |
 +   GND -+---+------------+   \|
 +
 +</code>
 +
 +
 +
 + \\
 +=====Pi01=====
 +==== Les fonctions LED ====
 +Les deux LED clignotent rapidement sur une commande **show** pour s'identifier lui-même.\\
 +Une autre commande **show** arrêtera le clignotement.\\
 +
 +^ LED1 (vert)  ^ Description ^
 +| Off  | WIOpi ne fonctionne pas, ou pas d’accès autorisé GPIO.  |  
 +| Clignotement lent  | Fonctionnement normal.  |
 +| Clignotement rapide  | Pas de connexion au serveur Rocrail.  |
 + \\
 +
 +^ LED2 (rouge)  ^ Description ^
 +| Off  | Communication inactive.  |  
 +| Clignotement  | Paquets reçus. |
 + \\
 +==== Bouton poussoir ====
 +Au cas où les deux voyants clignotent pour s'identifier, cela arrêtera ce mode.\\
 +Sinon, il envoie une réponse de requête au serveur.\\
 +
 + \\
 +=====Signaux sur Pi02/Pi08/WS2801=====
 +Le __**[[:rocnet:rocnetnode-led-fr#support_du_signal|Support des signaux]]**__ est également disponible sur le Pi02, dans le cas ou aucun Pi08 n'est connecté.\\
 +
 +**Pi08**: 1...128 \\
 +**Pi02**: 1...128 \\
 +**WS2801**: 129...256 (mappé sur 1...128) \\
 +
 + \\
 +
 +===== Lecteur RFID ID12LA =====
 +Le périphérique série par défaut est ''/dev/ttyS0'', et peut être changé dans le fichier wiopi.ini:\\
 +<code>
 +serialdev="/dev/ttyAMA0"
 +</code>
 +|< >|
 +^ Modèle de Raspberry pi ^ PiOS 10 ^ PiOS 11 ^
 +| Zero 1 | /dev/ttyAMA0 |
 +| Rpi 1 | /dev/ttyAMA0 |
 +| Zero 2 | /dev/ttyS0 | /dev/ttyAMA0 |
 +| Rpi 2...4 | /dev/ttyS0 |
 +
 +**Note:** //Semble dépendre de la version de PiOS; Vérifier le système.//\\
 +
 + \\
 +=====Contrôle moteur pas à pas=====
 +Voir pour le réglage du pont tournant: __**[[:arduino:wio-fr#moteur_pas_a_pas|WIO Moteur pas à pas]]**__ \\
 +{{ :wio:img_20201213_122942_0.jpg?400}}\\
 +|< >|
 +|  4 fils  |||
 +^ Fonction ^ Connecteur ^ GPIO ^
 +| IN1 (Bobine 1) |  27  |  0  |
 +| GND |  9  |  -  |
 +| IN2 (Bobine 2) |  29  |  5  |
 +| IN3 (Bobine 3) |  31  |  6  |
 +| IN4 (Bobine 4) |  35  |  19  |
 +| HALL (Calibration) |  37  |  26  |
 + \\
 +
 +{{ :wio:3w-wired.jpg?400}}\\
 +|< >|
 +|  3 fils  |||
 +^ Fonction ^ Connecteur ^ GPIO ^ Exemple TB6600 ^
 +| STEP(Horloge) |  27  |  0  | CLK+ |
 +| GND |  9  |  -  | EN-, DIR-, CLK- |
 +| DIR |  29  |  5  | DIR+ |
 +| ENABLE |  31  |  6  | EN+ |
 +| HALL (Calibration) |  37  |  26  |
 +{{ :wio:qsh4218-35-10-027.jpg?400}}\\
 +
 +
 + \\
 +=====WS2801=====
 +|< >|
 +^ WS2801 ^ Connecteur ^ I/O1 ^ Fonction ^
 +| DI | 19 MOSI |  6  | Entrée Numérique |
 +| CI | 23 SCLK |  8  | Entrée Horloge |
 +| GND | 25 GND |  2  | Masse |
 +
 +====Réglages de sortie pour LEDScript====
 +Adresse > 128 ou compteur, Paramètre ON, est réglé à zéro.\\
 +Options Couleur, Type Macro.\\
 +
 + \\
 +=====WIOpi-01=====
 +  * [[https://pinout.xyz|Pinout]]
 +  * [[https://www.raspberrypi.org/documentation/hardware/raspberrypi/mechanical/README.md|Dessins mécaniques RaspberryPi]]
 +
 +====Fichiers====
 +  * https://gitlab.com/rocrail/wio/-/tree/master/hardware/WIOpi
 +
 +
 + \\
 +=====CAM=====
 +Le CAM peut être utilisé en parallèle avec WIOpi comme documenté ici:
 +  * __**[[:rocnet:headless-cam-fr|Raspberry Pi Zero & CAM]]**__
 +
 +<code>
 +top - 11:54:34 up 26 min,  2 users,  load average: 1.53, 1.27, 0.85
 +Tasks:  77 total,   1 running,  76 sleeping,   0 stopped,   0 zombie
 +%Cpu(s):  7.2 us, 15.4 sy,  0.0 ni, 71.9 id,  0.0 wa,  0.0 hi,  5.5 si,  0.0 st
 +MiB Mem :    368.4 total,    222.4 free,     73.5 used,     72.5 buff/cache
 +MiB Swap:      0.0 total,      0.0 free,      0.0 used.    244.2 avail Mem 
 +
 +  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                                              
 +  527 root      20              0      0 I   8.1   0.0   0:00.48 kworker/u2:2-brcmf_wq/mmc1:0001:                                                   
 +  435 pi        20    120260  20208   8232 S   7.8   5.4   1:56.07 python3                                                                              
 +  301 pi        20      9944   2528   2072 S   7.5   0.7   2:00.87 wiopi                                                                                
 +  526 root      20              0      0 I   2.9   0.0   0:00.61 kworker/0:1-events                                                                   
 +  521 pi        20     10280   2972   2516 R   1.3   0.8   0:01.73 top                                                                                  
 +</code>
 +
 +Lien vers la diffusion:
 +<code>
 +http://<zero-name>:8081
 +</code>
 +
 +====Mobile====
 +La fonction 8 peut être utilisée pour activer et désactiver le CAM.\\
 +
 +
 + \\
 +=====Esclaves I2C=====
 +WIOpi prend en charge jusqu'à 4 esclaves I2C.\\
 +Les adresses du dispositif I2C réservé sont0x7C, 0x7D, 0x7E et 0x7F.\\
 +
 +Pour adresser une broche sur un esclave, les paramètres suivants sont appliqués:
 +  * Identifiant du nœud: L'identifiant du WIOpi
 +  * Adresse: numéro de broche
 +  * Port: Identifiant esclave I2C
 +
 +Les objets Rocrail supportés:
 +  * Sortie numérique
 +La trace du moniteur DOUT(0x0A) sur la broche 5(data[0]) off(data[1]):
 +<code>
 +opc=0x0A dlc=5 data=05 00 00 00 7C 00 00 00
 +</code>
 +
 +
 +
 + \\
 +Dix fois par seconde, les esclaves sont interrogés pour l'état de leur broche d'entrée. (Si tout défini.)\\
 +<code>
 +20210105.083513.532 w9999I main     OWire    0187 I2C device found at 0x7C
 +20210105.083513.542 w9999I main     ODisplay 0392 init SSD1306 device 0x3C geometry=3
 +...
 +20210105.083513.886 w9999I doManage OManager 0101 read reg array slave 0x7C rc=2: opc=0x99 11 66
 +</code>
 +
 +
 +  * **Note 1:** //L'Arduino Nano ne peut pas gérer des vitesses I2C sans erreur au-dessus des 100 kHz par défaut.//\\
 +
 +=====Esclaves CAN=====
 +L'adaptateur CAN [[https://www.fischl.de/usbtin/|USBtin]] peut être utilisé pour inclure les modules [[:can-gca2-fr|CANGC2]] et [[:can-gc6-fr|CANGC6]].\\
 +Les modules CANGC doivent être programmés comme suit:
 +  * Évènements longs (désélectionner les évènements courts)
 +  * Le numéro de nœud doit réglé de façon à être égal au module son identifiant CAN
 +  * Le numéro d'évènement doit être réglé de façon à être égal au numéro de port correspondant (1...16)
 +  * SoD 4711
 +:!: //La programmation doit être faite par la bibliothèque RCAN dans Rocrail; Il n'est pas possible de programmer le CANGCx à travers le WIOpi. Le même USBtin peut être utilisé à cette effet.//\\
 + \\
 +
 +====Exemples de configuration====
 +{{:wio:cangc2-setup-wiopi-slave.jpg?600}}\\
 +{{:wio:cangc6-setup-wiopi-slave.jpg?600}}\\
 +
 +====Adressage Rocrail====
 +^ Objet ^ Identifiant du Nœud ^ Adresse ^ Port ^
 +| Détecteur | Identifiant du nœud WIOpi | Numéro d'évènement + (Numéro du nœud * 256) | - |
 +| Sortie/Servo | Identifiant du nœud WIOpi | Numéro d'évènement | Numéro du nœud |
 +
 +
 +
 +
 +
 + \\
 +
 +=====Définitions des broches utilisateur=====
 +Pour réassigner les broches pour Pi01, du Contrôle pas à pas et Mobile, les nœuds enfant suivants dans le ''wiopi.ini'' peuvent être utilisé:\\
 +
 +<code xml>
 +<wiopi server="localhost">
 +  <pindef fn="PWM" nr="12"/>
 +  <pindef fn="IN1" nr="7"/>
 +</wiopoi>
 +</code>
 +L'attribut **nr** ressemble au numéro de connecteur, __pas__ au GPIO.\\ 
 +
 +^ Nom(fn) ^ Description ^ Remarque ^
 +| LED1 | Sortie LED1 Pi01 |
 +| LED2 | Sortie LED2 Pi01 |
 +| Button | Entrée du bouton Pi01 |
 +| IN1 | Sortie pas à pas IN1 | Horloge 3W |
 +| IN2 | Sortie pas à pas IN2 | Direction 3W |
 +| IN3 | Sortie pas à pas IN3 | Activer 3W |
 +| IN4 | Sortie pas à pas IN4 |
 +| CAL | Entrée calibration pas à pas |
 +| PWM | Sortie PWM Mobile |
 +| FWD | Sortie impulsion relais Mobile avant |
 +| REV | Sortie impulsion relais Mobile inversé |
 +| LIGHTS1 | Sortie éclairage Mobile cab 1 |
 +| LIGHTS2 | Sortie éclairage Mobile Cab 2 |
 +
 + \\
 +
 +=====Connexion automatique au serveur=====
 +WIOpi utilise le service __**[[:networking-fr|R2RNet]]**__ pour détecter le serveur Rocrail sur le réseau.\\
 +Ce service doit être __**[[:networking-fr#configuration|activé dans les réglages du serveur]]**__.\\
 +\\
 +Si la connexion automatique au serveur ne fonctionne pas (par exemple le routeur ne supporte pas le Multicast UDP) l'IP du serveur Rocrail ou le Nom peuvent être ajoutés au fichier wiopi.ini:\\
 +<code xml>
 +<wiopi server="insert the server ip here" nid="99" nodename="WIOpi">
 +</code>
 +WIOpi devra être arrêter avant d'éditer ce fichier:
 +<code>
 +sudo killall wiopi
 +</code>
 +
 +
 + \\
 +
 +=====Niveau d'information=====
 +Vous pouvez éditer le fichier startwiopi.sh avec sudo nano startwiopi.sh \\
 +Ajoutez -info derrière ./wiopi pour plus d'information:
 +<code>
 +#!/bin/sh
 +cd /home/pi/WIOpi
 +sudo ./wiopi -info
 +</code>
 +Cela doit être fait uniquement pour tester à cause de la charge d'utilisation du processeur.
 +=====Moteur Double Mobile=====
 +Les locomotives avec deux moteurs nécessite le supprt de deux pont en H.\\
 +Réglez l'option "dualmotor" à "true" dans le fichier wiopi.ini pour activer cela.\\
 +Le second pont en H branché au connecteur I/O2 sur les broches 4, 5 et 6.\\
 +Le __**[[:gca-wiodrive-fr|WIO-Drive]]**__, sans ESP, peut être utilisé comme second pont en H. Montez seulement ces éléments nécessaire pour contrôler le pont en H. Ne pas mettre le redresseur, mais le cabler.\\
 +|< >|
 +^ I/O2 ^ Pont en H ^ Rpi Conn ^ WIODrive ^
 +|  2  |  GND  |  25  | IBB1-3 |
 +|  4  |  IN2  |  29  | IBB1-2 |
 +|  5  |  IN1  |  31  | IBB1-1 |
 +|  6  |  ENA  |  35  | ESC1-3 |
 +
 +
 +
 +
 +
 +
 +
  
wio/wiopi-fr.txt · Last modified: 2025/03/18 16:22 by 127.0.0.1