This is an old revision of the document!
Table of Contents
WIOpi
- Vue d'ensemble WIO | Configuration WIO | Contrôle WIO | Bitmaps utilisateur | Firmware WIO | CAM WIO | WIO Mobile | Câble | LEDScript | WIOpi
Travail en cours |
Introduction
WIOpi est un programme ciblé pour le Raspberry Pi et ses GPIO.
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.
$ 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"/>
Installation
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)
--------------------------------------------------- WW WW IIII OOOOOO WW WW II OO OO .. WW WW WW II OO OO ppppp ii WWWWWWWW II OO OO pp pp ii WW WW IIII OOOOOO ppppp ii pp pp --------------------------------------------------- TM and Copyright 2002-2020 Robert Jan Versluis. All Rights Reserved. r.j.versluis @ rocrail.net https://wiki.rocrail.net --------------------------------------------------- WIOpi 2.1.1021 [Dec 10 2020 07:52:42] --------------------------------------------------- 20201211.153950.005 w9999I main OI2C 0094 I2C device found at 0x20 fh=4 20201211.153950.005 w9999I main OI2C 0094 I2C device found at 0x21 fh=6 20201211.153950.010 w9999I main OI2C 0094 I2C device found at 0x3C fh=7 20201211.153950.012 w9999I main OI2C 0094 I2C device found at 0x40 fh=9 20201211.153950.017 w9999I main OI2C 0094 I2C device found at 0x60 fh=10 20201211.153950.021 w9999I main OIO 0098 init MCP23017 device 0x20 I/O map=0xF0F0 ppoobbiippoobbii 20201211.153950.022 w9999I main OIO 0098 init MCP23017 device 0x21 I/O map=0xFFFF iiiiiiiiiiiiiiii 20201211.153950.023 w9999I main OServo 0091 init PCA9685 device 0x40 prescale=101 20201211.153950.034 w9999I main OLED 0076 init PCA9622 device 0x60 20201211.153950.035 w9999I main ODisplay 0337 init SSD1306 device 0x3C geometry=1 20201211.153950.038 w9999I main ODisplay 0189 clear display[0] 20201211.153950.105 w9999I main OWIOpi 0638 Up and running 99:WIOpi-99 20201211.153950.712 w9999I wiocon OWIOpi 0320 send server [mbp2020:8051] WIO handshake... 20201211.153950.936 w9999I wiostat OWIOpi 0466 SSID "Keltenbahn" RSSI=-52 dBm 20201211.153951.105 w9999I doRFID OID12 0085 init ID12 device /dev/ttyS0
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 l'information du brochage du Raspberry Pi: https://de.pinout.xyz
-P-I-N-O-U-T--------------------- | Name | Log | Phys | +-------------------------------+ | I2C SDA | 08 | 03 | | I2C SCL | 09 | 05 | | Pi01 TxD | 15 | 08 | | Pi01 RxD | 16 | 10 | | Pi01 LED1 | 02 | 13 | | Pi01 LED2 | 07 | 07 | | Pi01 Button | 03 | 15 | | Pixel CI | 29 | 40 | | Pixel DI | 28 | 38 | | Servo 0 | 26 | 32 | | Servo 1 | 23 | 33 | | MCP2515 MOSI | 12 | 19 | | MCP2515 MISO | 13 | 21 | | MCP2515 SCLK | 14 | 23 | | MCP2515 INT | 06 | 22 | | MCP2515 CSO | 10 | 24 | | Stepper IN1 | 30 | 27 | | Stepper IN2 | 21 | 29 | | Stepper IN3 | 22 | 31 | | Stepper IN4 | 25 | 37 | | Stepper CAL | 11 | 26 | | S88 PS | 31 | 28 | | S88 RESET | 27 | 36 | | S88 CLOCK | 28 | 38 | | S88 DATA | 29 | 40 | ---------------------------------
Matériel supporté
- Pi02 (max. 4 = 128 E/S)
- Pi03 (max. 4 = 64 Servo)
- 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 "omxplayer" (Sans préfixe barre oblique)
- Logiciel mobile PWM pour contrôler un pont en H
- 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 (phys. 32 & 33).
Note: WIOpi doit être démarré avec sudo pour être capable d'utiliser les sorties PWM. - Entrées analogiques: PCF8591
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 pour juste un canal.)
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
Le Support des signaux est également disponible sur le Pi02, avec décalage d'adresse 129.
Pi08: 1…128
Pi02: 129…256 (mappé sur 1…128)
WS2801
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) | 7 | 4 |
GND | 9 | - |
IN2 (Bobine 2) | 11 | 17 |
IN3 (Bobine 3) | 13 | 27 |
IN4 (Bobine 4) | 15 | 22 |
HALL (Calibration) | 21 | 9 |
3 fils | |||
Fonction | Connecteur | GPIO | Exemple TB6600 |
---|---|---|---|
STEP(Horloge) | 7 | 4 | CLK+ |
GND | 9 | - | EN-, DIR-, CLK- |
DIR | 11 | 17 | DIR+ |
ENABLE | 13 | 27 | EN+ |
HALL (Calibration) | 21 | 13 |
WS2801
WS2801 | Connecteur | Fonction |
---|---|---|
DI | 19 MOSI | Entrée Numérique |
CI | 23 SCLK | Entrée Horloge |
GND | 25 GND | Masse |
Réglages de sortie pour LEDScript
Adresse > 128.
Options Coleur, Type Macro.
WIOpi-01
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 | ---------------------------------------- WIOpi-01 connectors: (pins) ============================== 1 x DC Power supply 2 1 x Pixx RJ12 2 x I2C 4 1 x WS2801 4 1 x Stepper 5 2 x Servo 3 1 x UART 4 1 x Lights 3 1 x Motor 2 2 or 4 x I/O (optional) 10 WIOpi-01 components: ============================== 2 x LED 1 x Button 1 x H-Bridge 2 x I2C I/O Extender (optional) 1 x I2C buffer for Pixx RJ12
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
Esclaves I2C
WIOpi prend en charge jusqu'à 4 esclaves Arduino.
Les adresses du dispositif I2C réservé sont0x7C, 0x7D, 0x7E et 0x7F.
Le WIOnano peut être utilisé comme skeleton:
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.