Featured image of post Sensore di velocità universale per tapis roulant per Zwift con Ant+ stick e Raspberry Pi

Sensore di velocità universale per tapis roulant per Zwift con Ant+ stick e Raspberry Pi

Sensore di velocità universale per tapis roulant per Zwift con Ant+ stick e Raspberry Pi

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:

Hunt Sensor

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

Schema Hunt Sensor

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:

Scatola nera Hunt sensor nella scatola
Braccetto per il montaggio Sensore pronto

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

MarcatoreTapis Roulant

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!!!

Corsa a LondraCorse a New York
Mezza Maratona Watopia FestivalMezza Maratona

comments powered by Disqus
Realizzato con Hugo
Tema Stack realizzato da Jimmy