User Tools

Site Tools


wio:wiopi-fr

This is an old revision of the document!


WIOpi

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 &amp;"/>
    <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
img_20201213_122942_0.jpg

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


3w-wired.jpg

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

qsh4218-35-10-027.jpg


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.
wio/wiopi-fr.1610880159.txt.gz · Last modified: 2021/01/17 11:42 by phil45