Table des matières:

Entraîneur intelligent de vélo d'intérieur bricolage : 5 étapes
Entraîneur intelligent de vélo d'intérieur bricolage : 5 étapes

Vidéo: Entraîneur intelligent de vélo d'intérieur bricolage : 5 étapes

Vidéo: Entraîneur intelligent de vélo d'intérieur bricolage : 5 étapes
Vidéo: Séance sur home trainer : 30 minutes intensités | Entraînements 2024, Juillet
Anonim
Entraîneur intelligent de vélo d'intérieur bricolage
Entraîneur intelligent de vélo d'intérieur bricolage
Entraîneur intelligent de vélo d'intérieur bricolage
Entraîneur intelligent de vélo d'intérieur bricolage
Entraîneur intelligent de vélo d'intérieur bricolage
Entraîneur intelligent de vélo d'intérieur bricolage

introduction

Ce projet a commencé comme une simple modification d'un vélo d'intérieur Schwinn IC Elite qui utilise une simple vis et des coussinets en feutre pour les réglages de résistance. Le problème que je voulais résoudre était que le pas de la vis était trop grand, de sorte que la plage allant de l'impossibilité de pédaler au patinage complètement libre de la roue n'était que de quelques degrés sur le bouton de résistance. Au début, j'ai changé la vis en M6, mais ensuite je devrais faire un bouton, alors pourquoi ne pas simplement utiliser un moteur pas à pas NEMA 17 pour changer la résistance? S'il y a déjà de l'électronique, pourquoi ne pas ajouter un wattmètre à manivelle et une connexion bluetooth à un ordinateur pour faire un home trainer intelligent ?

Cela s'est avéré plus difficile que prévu, car il n'y avait pas d'exemples sur la façon d'émuler un wattmètre avec un arduino et un bluetooth. J'ai finalement passé environ 20h à programmer et interpréter les spécifications du GATT BLE. J'espère qu'en fournissant un exemple, je pourrai aider quelqu'un à ne pas perdre autant de temps à essayer de comprendre ce que signifie exactement "Champ de type AD de données de service"…

Logiciel

L'ensemble du projet est sur GitHub:

github.com/kswiorek/ble-ftms

Je recommande fortement d'utiliser Visual Studio avec un plugin VisualGDB si vous envisagez de faire quelque chose de plus sérieux que de simplement copier-coller mon code.

Si vous avez des questions sur le programme, n'hésitez pas, je sais que mes commentaires minimalistes peuvent ne pas aider beaucoup.

Crédits

Merci à stoppi71 pour son guide sur la fabrication d'un wattmètre. J'ai fait la manivelle selon sa conception.

Fournitures:

Les matériaux de ce projet dépendent fortement du vélo que vous modifiez, mais il existe des pièces universelles.

Manivelle:

  1. Module ESP32
  2. HX711 Capteur de poids ADC
  3. Jauge de déformation
  4. MPU - gyroscope
  5. Une petite batterie Li-Po (environ 750mAh)
  6. Manchon thermorétractable
  7. Pilote pas à pas A4988
  8. Régulateur 5V
  9. Un jack baril arduino
  10. Alimentation arduino 12V

Console:

  1. Stepper NEMA 17 (doit être assez puissant, > 0,4 Nm)
  2. tige M6
  3. 12864 lcd
  4. WeMos LOLIN32
  5. Commutateurs tactiles

Équipement

Pour ce faire, vous pourriez probablement vous en tirer en n'utilisant qu'une imprimante 3D, mais vous pouvez gagner beaucoup de temps en coupant le boîtier au laser et vous pouvez également fabriquer des PCB. Les fichiers DXF et gerber sont sur GitHub, vous pouvez donc les commander localement. Le coupleur de la tige filetée au moteur a été tourné sur un tour et cela pourrait être le seul problème, car la pièce doit être assez solide pour tirer sur les plaquettes, mais il n'y a pas beaucoup d'espace dans ce vélo particulier.

Depuis la fabrication du premier vélo, j'ai acquis une fraiseuse qui me permet de faire des fentes pour les capteurs dans la manivelle. Cela facilite un peu leur collage et les protège également si quelque chose venait à frapper la manivelle. (J'ai fait tomber ces capteurs plusieurs fois, donc je voulais être en sécurité.)

Étape 1: La manivelle:

La manivelle
La manivelle
La manivelle
La manivelle
La manivelle
La manivelle

Il est préférable de suivre simplement ce tutoriel:

Vous devez essentiellement coller les capteurs à la manivelle à quatre endroits et les connecter aux côtés de la planche.

Les connexions appropriées sont déjà là, il vous suffit donc de souder les paires de fils directement à ces huit plots sur la carte.

Pour vous connecter aux capteurs, utilisez le fil le plus fin possible - les coussinets sont très faciles à soulever. Vous devez d'abord coller les capteurs et en laisser juste assez à l'extérieur pour les souder, puis recouvrir le reste d'époxy. Si vous essayez de souder avant de coller, ils s'enroulent et se cassent.

Pour assembler le PCB:

  1. Insérez des épingles d'or par le bas (le côté avec des traces) dans tous les trous sauf ceux verticaux près du bas.
  2. Placez les trois cartes (ESP32 en haut, puis MPU, la HX711 en bas) de manière à ce que les broches dorées passent à travers les deux trous.
  3. Soudez les en-têtes aux planches du dessus
  4. Coupez les épingles d'or du bas. (Essayez de les couper d'abord avant l'assemblage, afin que vous sachiez que vos "épingles en or" ne sont pas en acier à l'intérieur - cela les rend presque impossibles à couper et vous devez les limer ou les meuler)
  5. soudez les broches d'or restantes au bas de la carte.
  6. Téléchargez le firmware pour la manivelle

La dernière étape consiste à emballer toute la manivelle avec un manchon thermorétractable.

Cette méthode de fabrication de la planche n'est pas idéale, car les planches prennent beaucoup de place dans laquelle vous pourriez mettre d'autres choses. Le mieux serait de souder directement tous les composants à la carte, mais je n'ai pas les compétences pour souder moi-même ces petits SMD. Je devrais le commander assemblé, et je ferais probablement des erreurs et finirais par les commander trois fois et attendre un an avant qu'ils n'arrivent.

Si quelqu'un pouvait concevoir la carte, ce serait formidable s'il y avait un circuit de protection de la batterie et un capteur qui activerait l'ESP si la manivelle commençait à bouger.

IMPORTANT

Le capteur HX711 par défaut est réglé sur 10 Hz - c'est beaucoup trop lent pour la mesure de puissance. Vous devez soulever la broche 15 de la carte et la connecter à la broche 16. Cela entraîne la broche HAUT et active le mode 80 Hz. Soit dit en passant, ce 80 Hz définit le taux de toute la boucle arduino.

Usage

L'ESP32 est programmé pour se mettre en veille après 30 secondes sans périphérique Bluetooth connecté. Pour le rallumer, vous devez appuyer sur le bouton de réinitialisation. Les capteurs sont également alimentés par une broche numérique, qui passe à BAS en mode veille. Si vous souhaitez tester les capteurs avec l'exemple de code des bibliothèques, vous devez conduire la broche HIGH et attendre un peu avant que les capteurs ne s'allument.

Après assemblage les capteurs doivent être calibrés en lisant la valeur sans forcer puis avec un poids appliqué (j'ai utilisé un kettlebell de 12kg ou 16kg accroché à la pédale). Ces valeurs doivent être mises dans le code powerCrank.

Il est préférable de tarer la manivelle avant chaque trajet - elle ne devrait pas pouvoir se tarer lorsque quelqu'un pédale, mais mieux vaut prévenir que guérir et il est possible de la tarer une seule fois par mise en marche. Si vous remarquez des niveaux de puissance étranges, vous devez répéter ce processus:

  1. Mettez la manivelle vers le bas jusqu'à ce que le voyant commence à clignoter.
  2. Après quelques secondes, la lumière restera allumée - ne la touchez pas alors
  3. Lorsque la lumière s'éteint, elle définit la force actuelle détectée comme un nouveau 0.

Si vous voulez juste utiliser la manivelle, sans la console, le code est ici sur github. Tout le reste fonctionne de la même manière.

Étape 2: la console

La console
La console
La console
La console
La console
La console

Le boîtier est découpé dans de l'acrylique de 3 mm, les boutons sont imprimés en 3D et il y a des entretoises pour l'écran LCD, découpées dans de l'acrylique de 5 mm. Il est collé avec de la colle chaude (il adhère assez bien à l'acrylique) et il y a un "support" imprimé en 3D pour maintenir le PCB sur l'écran LCD. Les broches de l'écran LCD sont soudées par le bas afin de ne pas interférer avec l'ESP.

L'ESP est soudé à l'envers, donc le port USB rentre dans le boîtier

Le PCB du bouton séparé est collé avec de la colle chaude, de sorte que les boutons sont capturés dans leurs trous, mais ils appuient toujours sur les commutateurs. Les boutons sont connectés à la carte avec des connecteurs JST PH 2.0 et l'ordre des broches est facile à déduire du schéma

Il est très important de monter le moteur pas à pas dans le bon sens (le potentiomètre près de l'ESP)

Toute la partie pour la carte SD est désactivée, car personne ne l'utilisait dans la première version. Le code doit être mis à jour avec certains paramètres de l'interface utilisateur tels que le poids du cycliste et le réglage de la difficulté.

La console est montée à l'aide de "bras" découpés au laser et de zipties. Les petites dents s'enfoncent dans le guidon et maintiennent la console.

Étape 3: Le moteur

Le moteur
Le moteur
Le moteur
Le moteur
Le moteur
Le moteur

Le moteur se tient à la place du bouton de réglage avec un support imprimé en 3D. Sur son arbre est monté un coupleur - un côté a un trou de 5 mm avec des vis de réglage pour maintenir l'arbre, l'autre a un filetage M6 avec des vis de réglage pour le verrouiller. Si vous le souhaitez, vous pouvez probablement le fabriquer dans une perceuse à colonne à partir d'un stock rond de 10 mm. Il n'a pas besoin d'être extrêmement précis car le moteur n'est pas monté très serré.

Un morceau de tige filetée M6 est vissé dans le coupleur et il tire sur un écrou M6 en laiton. Je l'ai usiné, mais il peut être aussi facilement fabriqué à partir d'un morceau de laiton avec une lime. Vous pouvez même souder des morceaux à un écrou normal, afin qu'il ne tourne pas. Un écrou imprimé en 3D peut également être une solution.

Le filetage doit être plus fin que la vis d'origine. Son pas est d'environ 1,3 mm, et pour M6 il est de 0,8 mm. Le moteur n'a pas assez de couple pour tourner la vis d'origine.

L'écrou doit être bien lubrifié, car le moteur peut à peine tourner la vis sur les réglages les plus élevés

Étape 4: Configuration

Configuration
Configuration
Configuration
Configuration

Pour télécharger du code sur ESP32 depuis Arduino IDE, vous devez suivre ce tutoriel:

La carte est "WeMos LOLIN32", mais le "Dev module" fonctionne aussi

Je suggère d'utiliser Visual Studio, mais cela peut souvent casser.

Avant la première utilisation

La manivelle doit être configurée selon l'étape "Crank"

En utilisant l'application "nRF Connect", vous devez vérifier l'adresse MAC de la manivelle ESP32 et la définir dans le fichier BLE.h.

Dans la ligne 19 de indoorBike.ino, vous devez définir le nombre de rotations de la vis nécessaires pour régler la résistance de complètement lâche au maximum. (Le "maximum" est volontairement subjectif, vous ajustez la difficulté avec ce paramètre.)

Le smart trainer a des "engrenages virtuels" pour les régler correctement, vous devez le calibrer sur les lignes 28 et 29. Vous devez pédaler avec une cadence constante sur un réglage de résistance donné, puis lire la puissance et la régler dans le fichier. Répétez cette opération avec un autre réglage.

Le bouton le plus à gauche passe du mode ERG (résistance absolue) au mode simulation (engrenages virtuels). Le mode simulation sans connexion informatique ne fait rien car il n'y a pas de données de simulation.

La ligne 36. définit les engrenages virtuels - le nombre et les rapports. Vous les calculez en divisant le nombre de dents du train avant par le nombre de dents du train arrière.

À la ligne 12. vous mettez le poids du cycliste et du vélo (en [newtons], la masse multipliée par l'accélération gravitationnelle !)

Toute la partie physique est probablement trop compliquée et même je ne me souviens pas de ce qu'elle fait exactement, mais je calcule le couple requis pour tirer le cycliste en montée ou quelque chose comme ça (c'est pourquoi l'étalonnage).

Ces paramètres sont très subjectifs, il faut les paramétrer après quelques sorties pour qu'ils fonctionnent correctement.

Le port COM de débogage envoie directement les données binaires reçues par Bluetooth entre guillemets (' ') et les données de simulation.

Le configurateur

Parce que la configuration de la physique prétendument réaliste s'est avérée être un énorme problème pour la rendre réaliste, j'ai créé un configurateur d'interface graphique qui devrait permettre aux utilisateurs de définir graphiquement la fonction qui convertit le niveau de la colline au niveau de résistance absolu. Il n'est pas encore complètement terminé et je n'ai pas eu l'occasion de le tester, mais dans le mois à venir je vais convertir un autre vélo, donc je vais le polir ensuite.

Dans l'onglet « Engrenages », vous pouvez définir le rapport de chaque engrenage en déplaçant les curseurs. Vous devez ensuite copier le morceau de code pour remplacer les engrenages définis dans le code.

Dans l'onglet "Note", vous obtenez un graphique d'une fonction linéaire (oui, il s'avère que le sujet le plus détesté en mathématiques est en fait utile) qui prend la note (axe vertical) et génère des étapes de résistance absolues (axe horizontal). J'entrerai dans les maths un peu plus tard pour ceux que ça intéresse.

L'utilisateur peut définir cette fonction à l'aide des deux points qui s'y trouvent. Sur la droite il y a un endroit pour changer la vitesse actuelle. La vitesse sélectionnée, comme vous pouvez l'imaginer, change la façon dont la pente correspond à la résistance - sur les vitesses inférieures, il est plus facile de pédaler en montée. Le déplacement du curseur modifie le 2e coefficient, qui influence la façon dont le rapport sélectionné modifie la fonction. Il est plus facile de jouer avec un moment pour voir comment il se comporte. Vous devrez peut-être également essayer quelques paramètres différents pour trouver celui qui vous convient le mieux.

Il a été écrit en Python 3 et devrait fonctionner avec les bibliothèques par défaut. Pour l'utiliser, vous devez décommenter les lignes immédiatement après "décommenter ces lignes pour utiliser le configurateur". Comme je l'ai dit, il n'a pas été testé, il peut donc y avoir des erreurs, mais si quelque chose se produit, veuillez écrire un commentaire ou ouvrir un problème, afin que je puisse le corriger.

Les maths (et la physique)

La seule façon dont le contrôleur peut donner l'impression que vous montez est de tourner la vis de résistance. Nous devons convertir la note en nombre de rotations. Pour faciliter la configuration, toute la gamme, du complètement lâche à l'impossibilité de tourner la manivelle, est divisée en 40 étapes, les mêmes que celles utilisées dans le mode ERG, mais cette fois, il utilise des nombres réels au lieu d'entiers. Cela se fait avec une simple fonction de carte - vous pouvez la rechercher dans le code. Maintenant, nous sommes un cran plus haut - au lieu de traiter des révolutions de la vis, nous avons affaire à des étapes imaginaires.

Maintenant, comment cela fonctionne-t-il réellement lorsque vous montez à vélo (en supposant une vitesse constante) ? Il doit évidemment y avoir une force qui vous pousse vers le haut, sinon vous rouleriez vers le bas. Cette force, comme nous le dit la première loi du mouvement, doit être égale en grandeur mais opposée en direction à la force qui vous tire vers le bas, pour que vous soyez en mouvement uniforme. Cela vient du frottement entre la roue et le sol et si vous dessinez le diagramme de ces forces, il doit être égal au poids du vélo et au cycliste multiplié par la pente:

F=Fg*G

Maintenant, qu'est-ce qui fait que la roue applique cette force ? Comme il s'agit d'engrenages et de roues, il est plus facile de penser en termes de couple, qui est simplement la force multipliée par le rayon:

t=F*R

Comme il y a des engrenages impliqués, vous donnez un couple à la manivelle, qui tire sur la chaîne et fait tourner la roue. Le couple nécessaire pour faire tourner la roue est multiplié par le rapport de démultiplication:

tp=tw*gr

et de retour de la formule du couple on obtient la force nécessaire pour tourner la pédale

Fp=tp/r

C'est quelque chose que nous pouvons mesurer en utilisant le wattmètre dans la manivelle. Comme le frottement dynamique est linéairement lié à la force et que ce vélo particulier utilise des ressorts pour transmettre cette force, il est linéaire au mouvement de la vis.

La puissance est la force multipliée par la vitesse (en supposant la même direction des vecteurs)

P=F*V

et la vitesse linéaire de la pédale est liée à la vitesse angulaire:

V=ω*r

et ainsi nous pouvons calculer la force nécessaire pour tourner les pédales sur un niveau de résistance défini. Comme tout est lié linéairement, nous pouvons utiliser des proportions pour le faire.

C'était essentiellement ce que le logiciel avait besoin de calculer pendant l'étalonnage et en utilisant un moyen détourné pour nous obtenir un composite compliqué, mais une fonction linéaire reliant le grade à la résistance. J'ai tout écrit sur papier, calculé l'équation finale et toutes les constantes sont devenues trois coefficients.

Il s'agit techniquement d'une fonction 3D représentant un avion (je pense) qui prend la pente et le rapport de démultiplication comme arguments, et ces trois coefficients sont liés à ceux nécessaires pour définir un avion, mais comme les engrenages sont des nombres discrets, c'était plus facile pour en faire un paramètre au lieu de traiter des projections et autres. Les 1er et 3e coefficients peuvent être définis par une seule ligne et (-1)* le 2e coefficient est la coordonnée X du point, où la ligne "tourne" lors du changement de vitesse.

Dans cette visualisation, les arguments sont représentés par la ligne verticale et les valeurs par la ligne horizontale, et je sais que cela peut être ennuyeux, mais c'était plus intuitif pour moi et cela correspondait mieux à l'interface graphique. C'est probablement la raison pour laquelle les économistes tracent leurs graphiques de cette façon.

Étape 5: Terminez

Maintenant, vous avez besoin d'applications pour rouler avec votre nouvel entraîneur (ce qui vous a permis d'économiser environ 900 $:)). Voici mes opinions sur certains d'entre eux.

  • RGT Cycling - à mon avis le meilleur - il a une option totalement gratuite, mais a un peu peu de pistes. Traite le mieux la partie connexion, car votre téléphone se connecte via Bluetooth et un PC affiche la piste. Utilise une vidéo réaliste avec un cycliste AR
  • Rouvy - beaucoup de pistes, abonnement payant uniquement, pour une raison quelconque, l'application PC ne fonctionne pas avec cela, vous devez utiliser votre téléphone. Il peut y avoir des problèmes lorsque votre ordinateur portable utilise la même carte pour Bluetooth et WiFi, il est souvent en retard et ne veut pas se charger
  • Zwift - un jeu animé, payant uniquement, fonctionne assez bien avec l'entraîneur, mais l'interface utilisateur est assez primitive - le lanceur utilise Internet Explorer pour afficher le menu.

Si vous avez apprécié la version (ou non), veuillez me le dire dans les commentaires et si vous avez des questions, vous pouvez les poser ici ou soumettre un problème à github. Je vous expliquerai volontiers tout car c'est assez compliqué.

Conseillé: