Table of Contents
WIOpi
- Configuration WIO | Contrôle WIO | Bitmaps utilisateur | Firmware WIO | WIO Mobile | Câble | LEDScript | WIOpi
- SIOpico Esclave E/S I2C pour WIOpi
Avant de monter le connecteur sur le Zero, vérifier ceci WIOpi-01 |
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 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.
$ groups pi adm dialout cdrom sudo audio video plugdev games users input netdev gpio i2c spi
Les fichiers suivants et les répertoires sont extraits:
. ├── cam │ └── cam.py ├── reboot.sh ├── scripts │ └── Disco00.led ├── startwiopi.sh ├── update.sh └── wiopi
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:
<var name="startcam" vt="string" defval="nohup python3 cam/cam.py &"/> <var name="stopcam" vt="string" defval="killall python3"/>
Cartes supportées
- Raspberry ZeroW 1 et 2
- Raspberry Pi 1, 2, 3 et 4
Installation
Activer l'I2C, le SPI et l'UART dans l'utilitaire raspi-conf.
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
Ajouter une tâche crontab:
@reboot /home/pi/WIOpi/startwiopi.sh
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.
sudo nano /etc/dphys-swapfile
Changer la taille du swap à 1024:
CONF_SWAPSIZE=1024
Redémarrer le service:
sudo /etc/init.d/dphys-swapfile stop sudo /etc/init.d/dphys-swapfile start
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é
- Pi02 (max. 4 = 128 E/S)
- Pi06 (Alimentation & Patch)
- Pi08 (max. 8 = 128 LED. Adresse de sortie < = 128)
- ID12 RFID lecteur sur Pi01
- 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. - HT16K33 (max. 2 horloges)
- BMx280 (max. 2 Environnements)
- GCA214 Lecteur RailCom sur le Pi01 (PiOS 32bit seulement à cause du débit non standard de 250000.)
- 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. 2)
- 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). 3)
- 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:
dtoverlay=pwm-2chan,pin=12,func=2,pin2=13,func2=4
Le filtre est assez simple: (L'exemple est juste pour un canal, et non testé.)
1µ || | Servo0 -+---+----|| |----+ | | || | | /| +-+ | | / | |1| --- +---+ | |5| --- 33n | | | |0| | | | | +-+ | +---+ | | | | \ | GND -+---+------------+ \|
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 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:
serialdev="/dev/ttyAMA0"
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: WIO Moteur pas à pas
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 |
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 |
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
Fichiers
The Rpi-Zero header mounted on the bottom side. (without factory header) The Rpi-1/4 header mounted on the top side. (factory default) Short header on the Rpi-1; No native servo support. -------------------- | Rpi0 bottom hdr | -------------------- | | -- Zero set top | | | | ---------------------------------------- | WIOpi-01 | ---------------------------------------- | | || | | || -- Pi2++ piggy bag || | | || ---------------------------------------- | Rpi1/4 top hdr | ----------------------------------------
CAM
Le CAM peut être utilisé en parallèle avec WIOpi comme documenté ici:
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 0 0 I 8.1 0.0 0:00.48 kworker/u2:2-brcmf_wq/mmc1:0001:1 435 pi 20 0 120260 20208 8232 S 7.8 5.4 1:56.07 python3 301 pi 20 0 9944 2528 2072 S 7.5 0.7 2:00.87 wiopi 526 root 20 0 0 0 0 I 2.9 0.0 0:00.61 kworker/0:1-events 521 pi 20 0 10280 2972 2516 R 1.3 0.8 0:01.73 top
Lien vers la diffusion:
http://<zero-name>:8081
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]):
opc=0x0A dlc=5 data=05 00 00 00 7C 00 00 00
Dix fois par seconde, les esclaves sont interrogés pour l'état de leur broche d'entrée. (Si tout défini.)
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
- 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 USBtin peut être utilisé pour inclure les modules CANGC2 et 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
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é:
<wiopi server="localhost"> <pindef fn="PWM" nr="12"/> <pindef fn="IN1" nr="7"/> </wiopoi>
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 R2RNet pour détecter le serveur Rocrail sur le réseau.
Ce service doit être 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:
<wiopi server="insert the server ip here" nid="99" nodename="WIOpi">
WIOpi devra être arrêter avant d'éditer ce fichier:
sudo killall wiopi
Niveau d'information
Vous pouvez éditer le fichier startwiopi.sh avec sudo nano startwiopi.sh
Ajoutez -info derrière ./wiopi pour plus d'information:
#!/bin/sh cd /home/pi/WIOpi sudo ./wiopi -info
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 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 |