Collegare qualsiasi tapis roulant a Zwift utilizzando un Raspberry Pi e una chiavetta Ant+ come misuratore di velocità.
Fase 1 – Configurazione Raspberry Pi
Ho usato Raspbian Buster Lite come sistema operativo base
da raspberrypi.org.
Accedere a Raspberry Pi con ssh o collegarsi alla console seriale, aggiornare il sistema e installare alcuni strumenti:
sudo apt update && sudo apt upgrade
sudo reboot
sudo apt install vim git libudev-dev
Verificare se un Raspberry Pi è a 32 o 64 bit:
uname -m
armv7l
Installare Node.js versione LTS da Node.js.org, in questo esempio l’ultima versione è la 12.16.3.
wget https://nodejs.org/dist/latest-v12.x/node-v12.16.3-linux-armv7l.tar.gz
tar -xzf node-v12.16.3-linux-armv7l.tar.gz
cd node-v12.16.2-linux-armv7l/
sudo cp -R * /usr/local/
Test della versione di NodeJS e di npm:
node -v
v12.16.3
npm -v
6.14.4
cd
Inserire la chiavetta USB Ant+ e leggere l’id del dispositivo:
$ lsusb
...
Bus 001 Device 004: ID 0fcf:1009 Dynastream Innovations, Inc. ANTUSB-m Stick
...
Creare una regola UDEV per poter accedere al dispositivo, il ANT+ stick è prodotto dalla Garmin:
sudo vim /etc/udev/rules.d/Dynastream-ANTUSB-m.rules
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fcf", ATTRS{idProduct}=="1009", RUN+="/sbin/modprobe usbserial vendor=0x0fcf product=0x1009", MODE="0666", OWNER="pi", GROUP="root"
Scollegate e reinserite nuovamente la chiavetta USB e verificate che sia possibile accedere al dispositivo da
/dev/ttyUSB0:
ls /dev/ttyUSB0
/dev/ttyUSB0
Fase 2 – Ant-plus, un modulo node.js per ANT+
Clonare questo repository https://github.com/Loghorn/ant-plus:
git clone https://github.com/Loghorn/ant-plus.git
Editare ant-plus.js aggiungendo le linee qui sotto in module.exports{...}
cd ant-plus/
vim ant-plus.js
...
module.exports = {
...
Messages: Ant.Messages,
};
Installare ant-plus con npm:
$ npm install
per questo occorre un po di tempo… poi testare!
$ node sample/sample.js
3 Stick found
3 startup
3 Max channels: 8
3 sensor1 attached
...
Installare il modulo rpi-gpio:
npm install rpi-gpio
Usere questo repo per creare il sensore Stride Speed Distance
nella cartella sample e provare a far partire lo script:
cd ./sample
git clone https://github.com/gallochri/strideSpeedDistance.git
node strideSpeedDistance/start.js
Ctrl + C
Fermare lo script e controllare start.js per abilitare il DEBUG, tutto il codice è commentato.
In speedMeter.js è possibile abilitare il DEBUG, impostare la lunghezza del tapis roulant (il mio tappeto è di 293 cm)
e impostare il pin utilizzato su raspberry pi.
È possibile abilitare il DEBUG anche in strideSpeedDistance.js.
Fase 3 – Hardware
Per determinare la velocità del tapis roulant ho usato un solo marcatore sul tappeto e un hunt sensor per linee bianche
e nere.
Se si desidera una maggiore precisione è possibile inserire più marcatori sul tappeto e modificare il codice di
conseguenza.
Questo è
l’hunt sensor che ho
usato:

e questo è lo schema per collegare il sensore al raspberry pi:

Ho utilizzato una piccola scatola nera per contenere il sensore, poi ho piegato una striscia di alluminio e infine ho
inserito una barra filettata per creare una staffa di montaggio per il tapis roulant.
Ecco alcune foto:


Infine, è necessario creare un marcatore sul tappeto e assicurarsi che venga rilevato dal sensore:


Fase 4 – Connettere Zwift
La quarta fase dipende dal dispositivo su cui viene eseguito Zwift.
Io eseguo Zwfit sul mio Xiaomi Mi 9T che supporta nativamente Ant+, quindi è sufficiente scaricare i plugin e far
funzionare Ant+.
Avviare il sensore con node strideSpeedDistance/start.js sulla console, avviare l’app Zwift sul telefono e la
procedura guidata per connettersi al sensore e calibrarlo.
Uso anche una fascia cardio che supporta ant+ e Zwift.
Se si desidera eseguire Zwift su PC, è necessario disporre di una seconda chiavetta Ant+ per ricevere i dati dal
sensore.
Fase 5 – Correre!!!




