Inhaltsverzeichnis:
- Schritt 1: Die Kurbel:
- Schritt 2: Die Konsole
- Schritt 3: Der Motor
- Schritt 4: Konfiguration
- Schritt 5: Fertig
Video: DIY Indoor Bike Smart Trainer - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:15
Einführung
Dieses Projekt begann als einfache Modifikation eines Schwinn IC Elite Indoor Bikes, das eine einfache Schraube und Filzpads für die Widerstandseinstellungen verwendet. Das Problem, das ich lösen wollte, war, dass die Steigung der Schraube zu groß war, so dass der Bereich vom Nichtpedalieren bis zum völlig freien Drehen des Rads nur ein paar Grad am Widerstandsknopf betrug. Zuerst habe ich die Schraube auf M6 geändert, aber dann müsste ich einen Knopf machen, warum also nicht einfach einen links über NEMA 17 Stepper-Mottor verwenden, um den Widerstand zu ändern? Wenn es bereits Elektronik gibt, warum nicht einen Kurbel-Leistungsmesser und eine Bluetooth-Verbindung zu einem Computer hinzufügen, um einen intelligenten Trainer zu machen?
Dies erwies sich als schwieriger als erwartet, da es keine Beispiele dafür gab, wie ein Leistungsmesser mit einem Arduino und Bluetooth emuliert werden kann. Am Ende habe ich ungefähr 20 Stunden damit verbracht, die BLE GATT-Spezifikationen zu programmieren und zu interpretieren. Ich hoffe, dass ich durch die Bereitstellung eines Beispiels jemandem helfen kann, nicht so viel Zeit damit zu verschwenden, zu verstehen, was genau "Service Data AD Type Field" bedeutet…
Software
Das ganze Projekt ist auf GitHub:
github.com/kswiorek/ble-ftms
Ich empfehle dringend, Visual Studio mit einem VisualGDB-Plugin zu verwenden, wenn Sie vorhaben, etwas Ernsteres zu tun, als nur meinen Code zu kopieren und einzufügen.
Wenn Sie Fragen zum Programm haben, fragen Sie bitte, ich weiß, dass meine minimalistischen Kommentare möglicherweise nicht viel helfen.
Credits
Danke an stopi71 für seine Anleitung zum Bau eines Leistungsmessers. Ich habe die Kurbel nach seinem Design gemacht.
Lieferungen:
Die Materialien für dieses Projekt hängen stark davon ab, welches Fahrrad Sie modifizieren, aber es gibt einige universelle Teile.
Kurbel:
- ESP32-Modul
- HX711 Gewichtssensor ADC
- Dehnungsmessstreifen
- MPU - Gyroskop
- Ein kleiner Li-Po-Akku (ca. 750mAh)
- Schrumpfschlauch
- A4988 Stepper-Treiber
- 5V-Regler
- Ein arduino Barrel Jack
- 12V Arduino-Netzteil
Konsole:
- NEMA 17 Stepper (muss ziemlich stark sein, >0,4Nm)
- M6-Stab
- 12864 LCD-Bildschirm
- WeMos LOLIN32
- Taktschalter
Ausrüstung
Dafür könnten Sie wahrscheinlich nur einen 3D-Drucker verwenden, aber Sie können durch das Laserschneiden des Gehäuses viel Zeit sparen und auch Leiterplatten herstellen. Die DXF- und Gerber-Dateien befinden sich auf GitHub, sodass Sie diese lokal bestellen können. Die Kupplung von der Gewindestange zum Motor wurde auf einer Drehbank gedreht und dies könnte das einzige Problem sein, da das Teil ziemlich stark sein muss, um an den Belägen zu ziehen, aber es gibt nicht viel Platz in diesem speziellen Fahrrad.
Seit ich das erste Fahrrad gebaut habe, habe ich mir eine Fräsmaschine angeschafft, mit der ich Schlitze für die Sensoren in der Kurbel herstellen kann. Es erleichtert das Verkleben etwas und schützt sie auch, wenn etwas gegen die Kurbel schlagen sollte. (Ich habe diese Sensoren ein paar Mal fallen lassen, also wollte ich auf Nummer sicher gehen.)
Schritt 1: Die Kurbel:
Folgen Sie am besten einfach diesem Tutorial:
Grundsätzlich müssen Sie die Sensoren an vier Stellen an die Kurbel kleben und diese mit den Seiten der Platine verbinden.
Die richtigen Anschlüsse sind bereits vorhanden, so dass Sie nur die Adernpaare direkt an diese acht Pads auf der Platine löten müssen.
Verwenden Sie zum Anschließen der Sensoren einen möglichst dünnen Draht - die Pads lassen sich sehr leicht anheben. Sie müssen die Sensoren zuerst kleben und gerade genug davon draußen lassen, um zu löten, dann den Rest mit Epoxid bedecken. Wenn Sie versuchen, vor dem Kleben zu löten, kräuseln sie sich und brechen.
So montieren Sie die Platine:
- Stecken Sie Goldnadeln von unten (der Seite mit den Spuren) in alle Löcher außer denen, die vertikal in der Nähe des Bodens sind.
- Platzieren Sie die drei Platinen (ESP32 oben, dann MPU, HX711 unten) so, dass die Goldpins durch beide Löcher stecken.
- Löten Sie die Header an die Platinen oben
- Schneiden Sie die Goldnadeln von unten ab. (Versuchen Sie, sie vor dem Zusammenbau zu schneiden, damit Sie wissen, dass Ihre "Goldnadeln" innen kein Stahl sind - es ist fast unmöglich, sie zu schneiden und Sie müssen sie feilen oder schleifen)
- Löten Sie die restlichen Goldpins auf die Unterseite der Platine.
- Laden Sie die Firmware für die Kurbel hoch
Der letzte Schritt besteht darin, die gesamte Kurbel mit Schrumpfschlauch zu verpacken.
Diese Methode zur Herstellung des Boards ist nicht ideal, da die Boards viel Platz einnehmen, in dem Sie andere Dinge unterbringen könnten. Am besten alle Bauteile direkt auf die Platine löten, aber mir fehlt das Geschick, diese kleinen SMD selbst zu löten. Ich müsste es zusammengebaut bestellen, und ich würde wahrscheinlich einige Fehler machen und sie am Ende dreimal bestellen und ein Jahr warten, bis sie ankommen.
Wenn jemand in der Lage wäre, das Board zu entwerfen, wäre es großartig, wenn es eine Batterieschutzschaltung und einen Sensor hätte, der das ESP einschaltet, wenn sich die Kurbel bewegt.
WICHTIG
Der HX711 Sensor ist standardmäßig auf 10Hz eingestellt - er ist für die Leistungsmessung viel zu langsam. Sie müssen Pin 15 von der Platine abheben und mit Pin 16 verbinden. Dies treibt den Pin HIGH und aktiviert den 80Hz-Modus. Diese 80 Hz legen übrigens die Rate der gesamten Arduino-Schleife fest.
Verwendungszweck
Der ESP32 ist so programmiert, dass er nach 30 Sekunden in den Ruhezustand geht, ohne dass ein Bluetooth-Gerät angeschlossen ist. Um es wieder einzuschalten, müssen Sie die Reset-Taste drücken. Die Sensoren werden auch von einem digitalen Pin mit Strom versorgt, der im Schlafmodus auf LOW wechselt. Wenn Sie die Sensoren mit dem Beispielcode aus Bibliotheken testen möchten, müssen Sie den Pin HIGH ansteuern und etwas warten, bevor sich die Sensoren einschalten.
Nach der Montage müssen die Sensoren kalibriert werden, indem der Wert ohne Kraft und dann mit einem Gewicht abgelesen wird (ich habe eine 12kg oder 16kg Kettlebell verwendet, die am Pedal aufgehängt ist). Diese Werte müssen in den powerCrank-Code eingefügt werden.
Tarieren Sie die Kurbel am besten vor jeder Fahrt - sie sollte sich nicht selbst tarieren können, wenn jemand in die Pedale tritt, aber sicher ist es sicher und es ist möglich, sie nur einmal pro Einschalten zu tarieren. Wenn Sie seltsame Leistungsstufen bemerken, müssen Sie diesen Vorgang wiederholen:
- Stellen Sie die Kurbel gerade nach unten, bis das Licht zu blinken beginnt.
- Nach ein paar Sekunden bleibt das Licht an - fass es dann nicht an
- Wenn das Licht erlischt, setzt es die aktuelle erkannte Kraft als neue 0.
Wenn Sie nur die Kurbel ohne die Konsole verwenden möchten, ist der Code hier auf github. Alles andere funktioniert gleich.
Schritt 2: Die Konsole
Das Gehäuse ist aus 3mm Acryl geschnitten, die Tasten sind 3D gedruckt und es gibt Abstandshalter für das LCD, geschnitten aus 5mm Acryl. Es wird mit Heißkleber verklebt (es haftet ziemlich gut auf dem Acryl) und es gibt eine 3D-gedruckte "Halterung", um die Platine am LCD zu halten. Die Pins für das LCD werden von der Unterseite verlötet, damit es das ESP nicht stört.
Das ESP ist verkehrt herum verlötet, sodass der USB-Port in das Gehäuse passt
Die separate Tastenplatine wird mit Heißkleber verklebt, sodass die Tasten in ihren Löchern erfasst werden, aber trotzdem die Schalter drücken. Die Tasten sind mit JST PH 2.0 Steckern mit der Platine verbunden und die Pinreihenfolge ist leicht aus dem Schaltplan abzuleiten
Es ist sehr wichtig, den Schritttreiber in der richtigen Ausrichtung zu montieren (das Potentiometer in der Nähe des ESP)
Der gesamte Teil für die SD-Karte ist deaktiviert, da ihn in der ersten Version niemand verwendet hat. Der Code muss mit einigen UI-Einstellungen wie Fahrergewicht und Schwierigkeitsgrad aktualisiert werden.
Die Konsole wird mit lasergeschnittenen "Armen" und Kabelbindern montiert. Die kleinen Zähne graben sich in den Lenker ein und halten die Konsole.
Schritt 3: Der Motor
Der Motor hält sich mit einer 3D-gedruckten Halterung an der Stelle des Einstellknopfes. An seiner Welle ist eine Kupplung montiert - eine Seite hat ein 5 mm Loch mit Stellschrauben zum Halten der Welle, die andere hat ein M6-Gewinde mit Stellschrauben zum Sichern. Wenn Sie möchten, können Sie es wahrscheinlich in einer Bohrmaschine aus einem 10 mm Rundmaterial herstellen. Es muss nicht extrem präzise sein, da der Motor nicht sehr fest montiert ist.
Ein Stück Gewindestange M6 wird in die Kupplung eingeschraubt und zieht auf eine M6-Mutter aus Messing. Ich habe es bearbeitet, aber es kann genauso leicht mit einer Feile aus einem Stück Messing hergestellt werden. Sie können sogar einige Bits an eine normale Mutter schweißen, damit sie sich nicht dreht. Eine 3D-gedruckte Nuss kann auch eine Lösung sein.
Das Gewinde muss feiner sein als die Stockschraube. Seine Steigung beträgt etwa 1,3 mm und für M6 sind es 0,8 mm. Der Motor hat nicht genug Drehmoment, um die Standardschraube zu drehen.
Die Mutter muss gut geschmiert werden, da der Motor die Schraube in den höheren Einstellungen kaum drehen kann
Schritt 4: Konfiguration
Um Code von der Arduino IDE auf ESP32 hochzuladen, müssen Sie diesem Tutorial folgen:
Das Board ist "WeMos LOLIN32", aber das "Dev-Modul" funktioniert auch
Ich schlage vor, Visual Studio zu verwenden, aber es kann oft kaputt gehen.
Vor dem ersten Gebrauch
Die Kurbel muss gemäß Schritt "Kurbel" eingestellt werden
Mit der App "nRF Connect" müssen Sie die MAC-Adresse der Kurbel ESP32 überprüfen und in der Datei BLE.h einstellen.
In Zeile 19 von indoorBike.ino müssen Sie einstellen, wie viele Umdrehungen der Schraube benötigt werden, um den Widerstand von ganz locker auf maximal einzustellen. (Das "Maximum" ist absichtlich subjektiv, Sie passen den Schwierigkeitsgrad mit dieser Einstellung an.)
Der Smart Trainer verfügt über "virtuelle Gänge", um sie richtig einzustellen, Sie müssen ihn auf den Zeilen 28 und 29 kalibrieren. Sie müssen mit einer konstanten Trittfrequenz auf einer bestimmten Widerstandseinstellung treten, dann die Leistung ablesen und in der Datei einstellen. Wiederholen Sie dies noch einmal mit einer anderen Einstellung.
Die Taste ganz links wechselt vom ERG-Modus (absoluter Widerstand) in den Simulationsmodus (virtuelle Gänge). Der Simulationsmodus ohne Computerverbindung bewirkt nichts, da keine Simulationsdaten vorhanden sind.
Zeile 36. stellt die virtuellen Gänge ein - die Anzahl und die Übersetzungen. Sie berechnen sie, indem Sie die Zähnezahl des vorderen Zahnrads durch die Zähnezahl des hinteren Zahnrads dividieren.
In Zeile 12 tragen Sie das Gewicht des Fahrers und des Fahrrads ein (in [Newton], Masse mal Erdbeschleunigung!)
Der ganze physikalische Teil davon ist wahrscheinlich zu kompliziert und selbst ich weiß nicht mehr genau, was es genau macht, aber ich berechne das erforderliche Drehmoment, um den Radfahrer bergauf zu ziehen oder so (deshalb die Kalibrierung).
Diese Parameter sind sehr subjektiv, Sie müssen sie nach einigen Fahrten einstellen, damit sie richtig funktionieren.
Der Debug-COM-Port sendet direkte Binärdaten, die von Bluetooth in Anführungszeichen (' ') und Simulationsdaten empfangen werden.
Der Konfigurator
Da sich die Konfiguration der vermeintlich realistischen Physik als sehr mühsam herausstellte, um sie realistisch erscheinen zu lassen, habe ich einen GUI-Konfigurator erstellt, der es Benutzern ermöglichen sollte, die Funktion, die von der Steigung des Hügels in den absoluten Widerstandswert konvertiert, grafisch zu definieren. Es ist noch nicht ganz fertig und ich hatte keine Gelegenheit es zu testen, aber im kommenden Monat werde ich ein weiteres Bike umbauen, also werde ich es dann polieren.
Auf der Registerkarte "Zahnräder" können Sie die Übersetzung jedes Gangs durch Verschieben der Schieberegler einstellen. Sie müssen dann das Code-Bit kopieren, um die definierten Zahnräder im Code zu ersetzen.
Auf der Registerkarte "Note" erhalten Sie ein Diagramm einer linearen Funktion (ja, es stellt sich heraus, dass das am meisten gehasste Fach in Mathematik tatsächlich nützlich ist), das die Note (vertikale Achse) nimmt und absolute Widerstandsschritte (horizontale Achse) ausgibt. Auf die Mathematik gehe ich später für Interessierte ein.
Der Benutzer kann diese Funktion über die beiden darauf liegenden Punkte definieren. Auf der rechten Seite befindet sich eine Stelle, um den aktuellen Gang zu wechseln. Der gewählte Gang ändert, wie Sie sich vorstellen können, die Art und Weise, wie die Steigung dem Widerstand zugeordnet wird - in niedrigeren Gängen ist es einfacher, bergauf zu treten. Das Verschieben des Schiebereglers ändert den 2. Koeffizienten, der beeinflusst, wie der gewählte Gang die Funktion ändert. Es ist am einfachsten, eine Weile damit zu spielen, um zu sehen, wie es sich verhält. Möglicherweise müssen Sie auch einige verschiedene Einstellungen ausprobieren, um herauszufinden, was für Sie am besten funktioniert.
Es wurde in Python 3 geschrieben und sollte mit Standardbibliotheken funktionieren. Um es zu verwenden, müssen Sie die Zeilen direkt nach "Entkommentieren Sie diese Zeilen, um den Konfigurator zu verwenden" auskommentieren. Wie gesagt, es wurde nicht getestet, daher kann es zu Fehlern kommen, aber wenn etwas auftaucht, schreibe bitte einen Kommentar oder öffne ein Problem, damit ich es korrigieren kann.
Die Mathematik (und Physik)
Der Controller kann nur durch Drehen der Widerstandsschraube das Gefühl vermitteln, dass Sie bergauf fahren. Wir müssen die Note in die Anzahl der Umdrehungen umrechnen. Um das Einrichten zu erleichtern, ist der gesamte Bereich von völlig locker bis nicht drehbar in 40 Schritte unterteilt, die auch im ERG-Modus verwendet werden, diesmal jedoch reelle Zahlen anstelle von ganzen Zahlen. Dies geschieht mit einer einfachen Kartenfunktion - Sie können sie im Code nachschlagen. Jetzt sind wir einen Schritt höher - statt mit Umdrehungen der Schraube haben wir es mit imaginären Schritten zu tun.
Wie funktioniert es nun eigentlich, wenn man mit dem Fahrrad bergauf fährt (bei konstanter Geschwindigkeit)? Es muss offensichtlich eine gewisse Kraft vorhanden sein, die Sie nach oben drückt, sonst würden Sie herunterrollen. Diese Kraft muss, wie uns das erste Bewegungsgesetz sagt, betragsmäßig gleich sein, aber entgegengesetzt zu der Kraft, die Sie nach unten zieht, damit Sie sich in gleichmäßiger Bewegung befinden. Es kommt von der Reibung zwischen Rad und Boden und wenn Sie das Diagramm dieser Kräfte zeichnen, muss es gleich dem Gewicht des Fahrrads und des Fahrers mal der Steigung sein:
F=Fg*G
Was bringt nun das Rad dazu, diese Kraft aufzubringen? Da wir es mit Zahnrädern und Rädern zu tun haben, ist es einfacher, in Drehmoment zu denken, das einfach Kraft mal Radius ist:
t=F*R
Da es sich um Gänge handelt, üben Sie ein Drehmoment auf die Kurbel aus, das an der Kette zieht und das Rad dreht. Das zum Drehen des Rades benötigte Drehmoment wird mit dem Übersetzungsverhältnis multipliziert:
tp=tw*gr
und zurück aus der Drehmomentformel erhalten wir die Kraft, die zum Drehen des Pedals erforderlich ist
Fp=tp/r
Das können wir mit dem Powermeter in der Kurbel messen. Da die dynamische Reibung linear mit der Kraft zusammenhängt und dieses spezielle Fahrrad Federn verwendet, um diese Kraft zu übertragen, ist sie linear zur Bewegung der Schraube.
Leistung ist Kraft mal Geschwindigkeit (bei gleicher Richtung der Vektoren)
P=F*V
und die Lineargeschwindigkeit des Pedals hängt mit der Winkelgeschwindigkeit zusammen:
V=ω*r
und so können wir die Kraft berechnen, die erforderlich ist, um die Pedale auf einer bestimmten Widerstandsstufe zu drehen. Da alles linear zusammenhängt, können wir dazu Proportionen verwenden.
Dies war im Wesentlichen das, was die Software während der Kalibrierung berechnen musste und auf Umwegen eine komplizierte zusammengesetzte, aber eine lineare Funktion in Bezug auf Grad und Widerstand erhielt. Ich schrieb alles auf Papier, berechnete die endgültige Gleichung und alle Konstanten wurden zu drei Koeffizienten.
Dies ist technisch gesehen eine 3D-Funktion, die eine Ebene darstellt (glaube ich), die die Steigung und das Übersetzungsverhältnis als Argumente verwendet, und diese drei Koeffizienten beziehen sich auf diejenigen, die zum Definieren einer Ebene erforderlich sind, aber da die Zahnräder diskrete Zahlen sind, war es einfacher es zu einem Parameter zu machen, anstatt sich mit Projektionen und dergleichen zu befassen. Der 1. und 3. Koeffizient können durch eine einzelne Linie definiert werden und (-1)* der 2. Koeffizient ist die X-Koordinate des Punktes, um den sich die Linie beim Gangwechsel "dreht".
In dieser Visualisierung werden die Argumente durch die vertikale Linie und die Werte durch die horizontale dargestellt, und ich weiß, dass dies ärgerlich sein könnte, aber für mich war es intuitiver und passte besser zur GUI. Das ist wahrscheinlich der Grund, warum die Ökonomen ihre Grafiken so zeichnen.
Schritt 5: Fertig
Jetzt benötigen Sie einige Apps, mit denen Sie auf Ihrem neuen Trainer fahren können (wodurch Sie etwa 900 US-Dollar gespart haben:)). Hier sind meine Meinungen zu einigen von ihnen.
- RGT Cycling - meiner Meinung nach das Beste - es hat eine völlig kostenlose Option, hat aber ein bisschen wenige Strecken. Geht mit dem Verbindungsteil am besten um, denn dein Handy verbindet sich über Bluetooth und ein PC zeigt die Strecke an. Verwendet realistisches Video mit einem AR-Radfahrer
- Rouvy - viele Tracks, nur kostenpflichtiges Abonnement, aus irgendeinem Grund funktioniert die PC-App damit nicht, Sie müssen Ihr Telefon verwenden. Es kann zu Problemen kommen, wenn Ihr Laptop dieselbe Karte für Bluetooth und WLAN verwendet, er verzögert sich oft und möchte nicht geladen werden
- Zwift - ein animiertes Spiel, nur kostenpflichtig, funktioniert recht gut mit dem Trainer, aber die Benutzeroberfläche ist ziemlich primitiv - der Launcher verwendet den Internet Explorer, um das Menü anzuzeigen.
Wenn Ihnen der Build gefallen hat (oder nicht), teilen Sie mir dies bitte in den Kommentaren mit und wenn Sie Fragen haben, können Sie sie hier stellen oder ein Problem an github senden. Ich erkläre gerne alles, da es ziemlich kompliziert ist.
Empfohlen:
Smart B.A.L (verbundene Mailbox): 4 Schritte
Smart B.A.L (Connected Mailbox): Sie haben es satt, jedes Mal Ihre Mailbox zu überprüfen, während sich nichts darin befindet. Sie möchten wissen, ob Sie während einer Reise Ihre Post oder ein Paket erhalten. Es benachrichtigt Sie, wenn der Postbote eine Post oder eine Par
So erstellen Sie einen Smart Pot mit NodeMCU, der von der App gesteuert wird – wikiHow
So erstellen Sie einen Smart Pot mit NodeMCU, der von einer App gesteuert wird: In dieser Anleitung bauen wir einen Smart Pot, der von einem ESP32 und einer Anwendung für Smartphones (iOS und Android) gesteuert wird. Wir verwenden NodeMCU (ESP32) für die Konnektivität und die Blynk-Bibliothek für das Cloud-IoT und die Anwendung auf dem Smartphone. Endlich haben wir
DIY WiFi Smart Security Light mit Shelly
DIY WiFi Smart Security Light mit Shelly 1: Diese Anleitung wird sich mit der Erstellung eines DIY Smart Security Light mit dem Shelly 1 Smart Relais von Shelly befassen. Wenn Sie ein Sicherheitslicht intelligent machen, haben Sie viel mehr Kontrolle darüber, wann es aktiviert wird und wie lange es eingeschaltet bleibt. Es kann aktiv sein
So bauen Sie einen Smart Mirror mit Raspberry Pi 4: 10 Schritte
So bauen Sie einen Smart Mirror mit Raspberry Pi 4: In dieser Anleitung sehen wir, wie Sie einen Smartmirror aus recycelten Teilen wie einem Bilderrahmen, einem alten Monitor und einem Bilderglas bauen. Für die elektronischen Komponenten, die ich hier gekauft habe www.lcsc .com
Smart Home mit Arduino MKR1000 und M.I.T. Android-App: 4 Schritte
Smart Home mit Arduino MKR1000 und M.I.T. Android App: In diesem Tutorial beschreibe ich, wie Sie mit wenigen Komponenten Ihr Smart Home verbessern können. (Massachusetts Institu