Vor Montage der Stiftleiste auf dem Zero, siehe hier: WIOpi-01 (en) |
WIOpi ist ein Programm für den Raspberry Pi und seine GPIO. (Modell 1, 2, 3, 4 und Null.)
Die Hardwareanforderungen und die Unterstützung sind die gleichen wie für RocNetNode.
Durch Ausführen des WIOpi-Programms auf dem Raspberry Pi verhält es sich und arbeitet es wie ein WIO auf ESP-Basis.
WIOpi läuft im Kontext des Benutzers pi. |
---|
Der Benutzer pi ist standardmäßig in den Gruppen gpio, i2c und spi, so ist es nicht notwendig, dass WIOpi im Superuser-Kontext läuft.
Hinweis: Typ mobile sollte im Root-Kontext ausgeführt werden, um einen Hochleistungsmotor-Thread ausführen zu können.
$ groups pi adm dialout cdrom sudo audio video plugdev games users input netdev gpio i2c spi
The following files and directories are extracted:
. ├── cam │ └── cam.py ├── reboot.sh ├── scripts │ └── Disco00.led ├── startwiopi.sh ├── update.sh └── wiopi
Die Befehle zum Starten und Stoppen des cam.py-Python-Skripts können in der wiopi.ini. angegeben werden.
Voreinstellungen sind:
<var name="startcam" vt="string" defval="nohup python3 cam/cam.py &"/> <var name="stopcam" vt="string" defval="killall python3"/>
Aktivieren von I2C, SPI und UART im raspi-conf-Dienstprogramm.
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
Einen Crontab-Job hinzufügen:
@reboot /home/pi/WIOpi/startwiopi.sh
Der ARMHF-Build läuft auch unter PiOS 64bit. (ARM64)
Die Standard "swap size" von 100MB ist für einen Zero mit 512MB-Speicher nicht ausreichend.
sudo nano /etc/dphys-swapfile
Ändern der "swap size" auf 1024:
CONF_SWAPSIZE=1024
Den Service neustarten:
sudo /etc/init.d/dphys-swapfile stop sudo /etc/init.d/dphys-swapfile start
Option | Beschreibung |
---|---|
-info | Aktiviert die Trace-Ebene Info |
-t <filename> | Trace-Dateiname |
-server <ip> | Rocrail-Server-IP oder DNS-Name ¹ |
-id <1…255> | WIOpi-Node-ID |
-softpwm | Software-PWM für Servos verwenden, um Sound-Abspielen zu aktivieren. |
¹ Wenn WIOpi und der Rocrail-Server auf demselben Raspberry Pi betrieben werden, geben Sie localhost an. Für den Autostart tragen Sie die Option in startwiopi.sh ein.
Die Pin-Belegung und Zuordnung wird nach dem Start in der Console ausgegeben.
Es ist von der in der wiopi.ini gefundenen Konfiguration abhängig.
Für die Raspberry Pi Pin-Belegung (Pinout information) siehe hier : https://de.pinout.xyz
Mehr detaillierte Informationen: https://www.raspberrypi.com/documentation/computers/raspberry-pi.html
Oder in einem Terminal den Pinout-Befehl eingeben.
Hinweis: Der WIOpi speichert Servo-Positionen nur im Fall eines shutdown.
Die zwei Onboard-Servos haben die Adressen 129 und 130.
Die Lok-Functionen 1 und 2 sind diesen Onboard-Servo-Adressen zugeordnet.
Hinweis: Der WIOpi speichert Servo-Positionen nur im Fall eines shutdown.
Die Servo-Ausgänge PWM0 und PWM1 können auch für Audio verwendet werden:
dtoverlay=pwm-2chan,pin=12,func=2,pin2=13,func2=4
Das Filter ist sehr einfach: (Beispiel für einen Kanal und nicht getestet.)
1µ || | Servo0 -+---+----|| |----+ | | || | | /| +-+ | | / | |1| --- +---+ | |5| --- 33n | | | |0| | | | | +-+ | +---+ | | | | \ | GND -+---+------------+ \|
Beide LEDs blinken schnell bei ein show-Befehl um sie zu identifizieren.
Ein weiterer show-befehl stoppt das Blinken.
LED1 (grün) | Beschreibung |
---|---|
Aus | WIOpi läuft nicht oder es wird kein GPIO-Zugriff erlaubt. |
Langsames Blinken | Normal-Funktion. |
Schnelles Blinken | Keine Rocrail-Server-Verbindung. |
LED2 (rot) | Beschreibung |
---|---|
Aus | Kommunications-Pause. |
Blinken | Paket empfangen. |
Falls beide LEDs blinken um sie zu identifizieren, wir dieser Modus gestoppt.
Andernfalls wird eine Abfrageantwort an den Server gesendet.
Signal-Unterstützung ist auch auf dem Pi02 verfügbar, wenn kein Pi08 angeschlossen ist.
Pi08: 1…128
Pi02: 1…128
WS2801: 129…256 (auf 1…128 zugeordnet)
Das Standard-Seriell-Gerät ist /dev/ttyS0
un kann in wiopi.ini
geändert werden:
serialdev="/dev/ttyAMA0"
Raspberry pi Model | PiOS 10 | PiOS 11 |
---|---|---|
Zero 1 | /dev/ttyAMA0 | |
Rpi 1 | /dev/ttyAMA0 | |
Zero 2 | /dev/ttyS0 | /dev/ttyAMA0 |
Rpi 2…4 | /dev/ttyS0 |
Hinweis: Scheint von der PiOS-Version abhängig zu sein; Das System überprüfen!.
Für Drehscheiben-Einstellungen siehe: WIO-Schritt-Motor
4 Draht | ||
Funktion | Stift | GPIO |
---|---|---|
IN1 (Spule 1) | 27 | 0 |
GND | 9 | - |
IN2 (Spule 2) | 29 | 5 |
IN3 (Spule 3) | 31 | 6 |
IN4 (Spule 4) | 35 | 19 |
HALL (Kalibrieren) | 37 | 26 |
3 Draht | |||
Funktion | Stift | GPIO | Beispiel TB6600 |
---|---|---|---|
STEP(Takt) | 27 | 0 | CLK+ |
GND | 9 | - | EN-, DIR-, CLK- |
DIR | 29 | 5 | DIR+ |
ENABLE | 31 | 6 | EN+ |
HALL (Kalibrieren) | 37 | 26 |
WS2801 | Stift | I/O1 | Funktion |
---|---|---|---|
DI | 19 MOSI | 6 | Digital In |
CI | 23 SCLK | 8 | Clock In |
GND | 25 GND | 2 | Ground |
Adresse > 128 oder Anzahl, EIN Parameter ist auf Null zu stellen.
Optionen Farbe, Typ Macro.
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 | ----------------------------------------
Die CAM kann parallel zu WIOpi verwendet werden, wie hier dokumentiert:
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
Link zum Stream:
http://<zero-name>:8081
Funktion 8 kann zum aktivieren und deaktivieren der CAM verwendet werden.
WIOpi unterstützt bis zu 4 I2C-Slaves.
Die resertvierten I2C-Geräte-Adressen sind 0x7C
, 0x7D
, 0x7E
und 0x7F
.
UM einen Stift auf einem Slave zu adressieren sind diese Parameter beteiligt:
Unterstützte Rocrail-Objekte:
Monitor-Trace DOUT(0x0A) on Pin 5(data[0]) off(data[1]):
opc=0x0A dlc=5 data=05 00 00 00 7C 00 00 00
Zehn mal je Sekunde werden die Slaves auf den Eingangsstatus der Stifte gepollt. (Falls definiert.)
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
Der USBtin CAN-Adapter kann verwendet werden, um CANGC2- und CANGC6-Module einzubinden.
Die CANGC-Module müssen wie folgt programmiert werden:
Die Programmierung muss durch die RCAN-Bibliothek in Rocrail erfolgen; Es ist nicht möglich CANGCx über WIOpi zu programmieren. Hierfür kann die gleiche USBtin verwendet werden.
Objekt | Node-ID | Adresse | Port |
---|---|---|---|
Rückmelder | WIOpi Node-ID | Event-Nr. + (Node Nr. * 256) | - |
Ausgang/Servo | WIOpi Node-ID | Event-Nr. | Node-Nr. |
Um Stifte für Pi01, Schrittmotoren und Mobil neu zuzuordnen, können die folgenden untergeordneten Knoten in der wiopi.ini
verwendet werden:
<wiopi server="localhost"> <pindef fn="PWM" nr="12"/> <pindef fn="IN1" nr="7"/> </wiopoi>
Das nr-Attribut ähnelt der Anschlussnummer, nicht dem GPIO.
Name(fn) | Beschreibung | Bemerkung |
---|---|---|
LED1 | Pi01 LED1 Ausgang | |
LED2 | Pi01 LED2 Ausgang | |
Button | Pi01 Taster Eingang | |
IN1 | Schrittmotor IN1 Ausgang | 3W Clock |
IN2 | Schrittmotor IN2 Ausgang | 3W Dir |
IN3 | Schrittmotor IN3 Ausgang | 3W Enable |
IN4 | Schrittmotor IN4 Ausgang | |
CAL | Schrittmotor calibration input | |
PWM | Mobil PWM Ausgang | |
FWD | Mobil Forwärts Impuls Ausgang | |
REV | Mobil Rückwärts Ipuls Ausgang | |
LIGHTS1 | Mobil Licht Cab 1 Ausgang | |
LIGHTS2 | Mobil Licht Cab 2 Ausgang |
WIOpi verwendet den R2RNet-Dienst um den Rocrail-Server im LAN zu erkennen.
Dieser Dienst muss in den Server-Einstellungen aktiviert sein.
Wenn Auto-Server-Verbinden nict funktioniert (z.B. wenn der Router UDP-Multicast nicht unterstützt) kann die Rocrail-Server-IP oder der Name zur wiopi.ini hinzugefügt werden:
<wiopi server="insert the server ip here" nid="99" nodename="WIOpi">
WIOpi muss gestoppt werden, bevor diese Datei editiert wird:
sudo killall wiopi
Die startwiopi.sh
kann mit sudo nano startwiopi.sh
editiert werden
-info
hinter ./wiopi
für Informationen hinzufügen:
#!/bin/sh cd /home/pi/WIOpi sudo ./wiopi -info
Dies sollte aufgrund der CPU-Auslastung nur zu Testzwecken erfolgen.
Lokomotiven mit zwei Motoren benötigen Unterstützung durch zwei H-Brücken.
Die "dualmotor"-Option in der wiopi.ini
auf "true" einstellen aktiviert das.
Die zweite H-Brücke mit I/O2-Anschluss, Stift 4, 5 und 6 verbinden.
Der WIO-Drive, ohne ESP, kann als zweite H-Brücke verwendet werden. Nur die Bauteile montieren, die zur Steuerung der H-Brücke benötigt werden. Den Gleichrichter nicht montieren, aber verdrahten.
I/O2 | H-Brücke | Rpi-Anschl. | WIODrive |
---|---|---|---|
2 | GND | 25 | IBB1-3 |
4 | IN2 | 29 | IBB1-2 |
5 | IN1 | 31 | IBB1-1 |
6 | ENA | 35 | ESC1-3 |