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

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)


Options en Ligne de Commande

Option Description
-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


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


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 moteur continu (Alimentation MOSFET et relais de direction bistable)
  • 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). 1)
  • Entrées analogiques: PCF8591 et ADS1115


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.
1)
Note: WIOpi doit être démarré avec sudo pour être capable d'utiliser les sorties PWM.
wio/wiopi-fr.1610881100.txt.gz · Last modified: 2021/01/17 11:58 by phil45