Indholdsfortegnelse:
Video: DIY Indendørs Bike Smart Trainer: 5 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:25
Introduktion
Dette projekt startede som en simpel ændring af en Schwinn IC Elite indendørs cykel, der bruger en simpel skrue og filtpuder til modstandsindstillingerne. Det problem, jeg ønskede at løse, var, at skruens stigning var for stor, så rækkevidden fra ikke at være i stand til at pedalere til hjulet drejede helt frit var kun et par grader på modstandsknappen. Først ændrede jeg skruen til M6, men derefter skulle jeg lave en knap, så hvorfor ikke bare bruge en tilovers NEMA 17 stepper mottor til at ændre modstanden? Hvis der allerede er noget elektronik, hvorfor så ikke tilføje en krumtapmåler og en bluetooth -forbindelse til en computer for at lave en smart træner?
Dette viste sig mere vanskeligt end forventet, fordi der ikke var eksempler på, hvordan man efterligner en effektmåler med en arduino og bluetooth. Jeg endte med at bruge omkring 20 timer på programmering og fortolkning af BLE GATT -specifikationerne. Jeg håber, at jeg ved at give et eksempel kan hjælpe nogen, der ikke spilder så meget tid på at forsøge at forstå, hvad "Service Data AD Type Field" præcist betyder …
Software
Hele projektet er på GitHub:
github.com/kswiorek/ble-ftms
Jeg anbefaler stærkt at bruge Visual Studio med et VisualGDB-plugin, hvis du planlægger at gøre noget mere seriøst end bare at kopiere og indsætte min kode.
Hvis du har spørgsmål om programmet, så spørg, jeg ved, at mine minimalistiske kommentarer måske ikke hjælper meget.
Credits
Tak til stoppi71 for sin guide til, hvordan man laver en effektmåler. Jeg lavede håndsvinget i henhold til hans design.
Tilbehør:
Materialerne til dette projekt afhænger meget af, hvilken cykel du ændrer, men der er nogle universelle dele.
Crank:
- ESP32 -modul
- HX711 Vægtføler ADC
- Anstrengelsesmålere
- MPU - gyroskop
- Et lille Li-Po batteri (omkring 750mAh)
- Varmekrympemuffe
- A4988 Stepper driver
- 5V regulator
- En arduino tønde jack
- 12V arduino strømforsyning
Konsol:
- NEMA 17 stepper (skal være ret kraftig,> 0,4Nm)
- M6 stang
- 12864 lcd
- WeMos LOLIN32
- Taktafbrydere
Udstyr
For at gøre dette kan du sandsynligvis slippe afsted med kun at bruge en 3D -printer, men du kan spare meget tid ved at laserskære sagen, og du kan også lave PCB'er. DXF- og gerberfilerne er på GitHub, så du kan bestille dem lokalt. Koblingen fra gevindstangen til motoren blev tændt på en drejebænk, og dette kan være det eneste problem, da delen skal være ret stærk for at trække i puderne, men der er ikke meget plads i denne særlige cykel.
Siden jeg lavede den første cykel, anskaffede jeg mig en fræsemaskine, som giver mig mulighed for at lave åbninger til sensorerne i håndsvinget. Det gør det lidt lettere at lime dem og beskytter dem også, hvis noget skulle ramme håndsvinget. (Jeg har haft disse sensorer faldet et par gange, så jeg ville være i sikkerhed.)
Trin 1: Crank:
Det er bedst bare at følge denne vejledning:
Du skal dybest set lime sensorerne til håndsvinget fire steder og forbinde dem med brættets sider.
De korrekte forbindelser er allerede der, så du skal bare lodde parene af ledninger direkte til disse otte pads på brættet.
For at oprette forbindelse til sensorerne skal du bruge den tyndeste ledning - padsene er meget lette at løfte. Du skal først lime sensorerne og efterlade lige nok af dem udenfor til lodning og derefter dække resten med epoxy. Hvis du forsøger at lodde før limning, krøller de og knækker.
Sådan samles printkortet:
- Sæt guldnåle fra bunden (siden med spor) i alle huller undtagen de lodrette nær bunden.
- Placer de tre tavler (ESP32 ovenpå, derefter MPU, HX711 i bunden), så guldnålene stikker gennem begge huller.
- Lodde hovederne til brædderne ovenpå
- Skær guldnålene af fra bunden. (Prøv at skære dem først, før de samles, så du ved, at dine "guldnåle" ikke er stål indeni - det gør dem næsten umulige at skære, og du skal filere eller male dem)
- lod de resterende guldnåle til bunden af brættet.
- Upload firmwaren til håndsvinget
Det sidste trin er at pakke hele kranken med varmekrympemuffe.
Denne metode til fremstilling af brættet er ikke ideel, da brædderne fylder meget, hvor du kan passe andre ting. Det bedste ville være at lodde alle komponenterne direkte til brættet, men jeg mangler evnen til selv at lodde disse små SMD'er. Jeg skulle bestille den samlet, og jeg ville nok lave nogle fejl og ende med at bestille dem tre gange og vente et år, før de ankommer.
Hvis nogen ville være i stand til at designe tavlen, ville det være fantastisk, hvis det havde noget batteribeskyttelseskredsløb og en sensor, der ville tænde ESP'en, hvis håndsvinget begyndte at bevæge sig.
VIGTIG
HX711 -sensoren er som standard indstillet til 10Hz - det er meget at bremse for effektmåling. Du skal løfte pin 15 fra kortet og slutte den til pin 16. Dette driver stiften HIGH og aktiverer 80Hz -tilstanden. Denne 80Hz indstiller i øvrigt hastigheden for hele arduino -sløjfen.
Anvendelse
ESP32 er programmeret til at gå i dvale efter 30’erne, uden at en Bluetooth -enhed er tilsluttet. For at tænde den igen skal du trykke på reset -knappen. Sensorerne drives også fra en digital pin, som drejer LAV i dvaletilstand. Hvis du vil teste sensorerne med eksempelkoden fra biblioteker, skal du køre stiften HØJ og vente lidt, før sensorerne tændes.
Efter montering skal sensorerne kalibreres ved at aflæse værdien uden kraft og derefter med en påført vægt (jeg brugte en 12 kg eller 16 kg kettlebell hængt på pedalen). Disse værdier skal sættes i powerCrank -koden.
Det er bedst at tare håndsvinget før hver tur - det burde ikke være i stand til at tare sig selv, når nogen træder i pedal, men bedre sikkert end undskyld, og det er muligt at tære det kun én gang pr. Tænding. Hvis du bemærker nogle mærkelige effektniveauer, skal du gentage denne proces:
- Sæt håndsvinget lige ned, indtil lyset begynder at blinke.
- Efter et par sekunder forbliver lyset tændt - rør det ikke derefter
- Når lyset slukker, indstiller den den aktuelle kraft detekteret som en ny 0.
Hvis du bare vil bruge håndsvinget, uden konsollen, er koden her på github. Alt andet fungerer det samme.
Trin 2: Konsollen
Etuiet er skåret i 3 mm akryl, knapperne er 3D -trykte, og der er afstandsstykker til LCD -skærmen, skåret i 5 mm akryl. Den er limet med varm lim (den klistrer ganske godt til akrylen), og der er et 3D -printet "beslag" til at holde printkortet på LCD'et. Benene til LCD'et er loddet fra undersiden, så det ikke forstyrrer ESP.
ESP er loddet på hovedet, så USB-porten passer i etuiet
Den separate knap PCB er limet med varm lim, så knapperne fanges i deres huller, men de trykker stadig på kontaktene. Knapperne er forbundet til kortet med JST PH 2.0 -stik, og pin -rækkefølgen er let at udlede af den skematiske
Det er meget vigtigt at montere stepperdriveren i den korrekte retning (potentiometeret nær ESP)
Hele delen til SD -kortet er deaktiveret, da ingen brugte det i den første version. Koden skal opdateres med nogle UI -indstillinger som ryttervægt og vanskelighedsindstilling.
Konsollen er monteret ved hjælp af lasercut "arme" og lynlåse. De små tænder graver i styret og holder konsollen.
Trin 3: Motoren
Motoren holder sig i stedet for justeringsknappen med et 3D -trykt beslag. På akslen er der monteret en kobling - den ene side har et 5 mm hul med sætskruer til at holde akslen, den anden har en M6 gevind med sætskruer til at låse den. Hvis du vil, kan du sandsynligvis gøre det i en boremaskine fra et 10 mm rundt lager. Det behøver ikke at være ekstremt præcist, da motoren ikke er monteret særlig tæt.
Et stykke M6 gevindstang er skruet i koblingen, og den trækker i en M6 møtrik. Jeg bearbejdede det, men det kan lige så let laves af et stykke messing med en fil. Du kan endda svejse nogle bits til en normal møtrik, så den ikke roterer. En 3D -trykt møtrik kan også være en løsning.
Tråden skal være finere end stamskruen. Dens stigning er omkring 1,3 mm, og for M6 er den 0,8 mm. Motoren har ikke nok drejningsmoment til at vende stamskruen.
Møtrikken skal smøres godt, da motoren næsten ikke kan dreje skruen til de højere indstillinger
Trin 4: Konfiguration
For at uploade kode til ESP32 fra Arduino IDE skal du følge denne vejledning:
Tavlen er "WeMos LOLIN32", men "Dev -modulet" fungerer også
Jeg foreslår at bruge Visual Studio, men det kan ofte gå i stykker.
Inden første brug
Kranken skal konfigureres i henhold til "Crank" trin
Ved hjælp af "nRF Connect" -appen skal du kontrollere MAC -adressen på håndsvinget ESP32 og indstille den i BLE.h -filen.
I linje 19 på indoorBike.ino skal du indstille, hvor mange rotationer af skruen der skal til for at indstille modstanden fra helt løs til maksimum. ("Maksimum" er subjektivt med vilje, du justerer vanskeligheden med denne indstilling.)
Den smarte træner har "virtuelle gear" for at konfigurere dem korrekt, du skal kalibrere den på linje 28 og 29. Du skal pedalere med en konstant kadence på en given modstandsindstilling, derefter læse strømmen og indstille den i filen. Gentag dette igen med en anden indstilling.
Knappen til venstre skifter fra ERG -tilstand (absolut modstand) til simuleringstilstand (virtuelle gear). Simuleringstilstand uden en computerforbindelse gør ingenting, da der ikke er nogen simuleringsdata.
Linje 36. indstiller de virtuelle gear - antallet og forholdene. Du beregner dem ved at dividere antallet af tænder i forhjulet med antallet af tænder i baggearet.
I linje 12. sætter du rytterens og cyklens vægt (I [newton], massetider gravitationsacceleration!)
Hele fysikdelen af dette er nok for kompliceret, og selv husker jeg ikke, hvad det gør præcist, men jeg beregner det nødvendige moment for at trække cyklisten op ad bakke eller sådan noget (derfor er kalibreringen).
Disse parametre er meget subjektive, du skal konfigurere dem efter et par forlystelser, for at de kan fungere korrekt.
Debug COM -porten sender direkte binære data modtaget af bluetooth i anførselstegn ('') og simuleringsdata.
Konfiguratoren
Fordi konfigurationen af den formodentlig realistiske fysik viste sig at være et kæmpe besvær for at få det til at føles realistisk, oprettede jeg en GUI -konfigurator, der skulle give brugerne mulighed for grafisk at definere den funktion, der konverterer fra bakkens karakter til det absolutte modstandsniveau. Den er endnu ikke helt færdig, og jeg havde ikke mulighed for at teste den, men i den kommende måned konverterer jeg endnu en cykel, så jeg polerer den derefter.
På fanen "Gears" kan du indstille forholdet for hvert gear ved at flytte skyderne. Du skal derefter kopiere bitkoden for at erstatte de definerede tandhjul i koden.
På fanen "Karakter" får du en graf over en lineær funktion (ja, det viser sig, at det mest hadede emne i matematik faktisk er nyttigt), der tager karakteren (lodret akse) og udsender absolutte modstandstrin (vandret akse). Jeg vil gå ind i matematikken lidt senere for de interesserede.
Brugeren kan definere denne funktion ved hjælp af de to punkter, der ligger på den. Til højre er der et sted at skifte det aktuelle gear. Det valgte gear ændrer, som du måske forestiller dig, måden, hvor karakteren tilordnes modstand - på lavere gear er det lettere at trampe op ad bakke. Flytning af skyderen ændrer den 2. koefficient, hvilket påvirker, hvordan det valgte gear ændrer funktionen. Det er lettest at lege med det et stykke tid for at se, hvordan det opfører sig. Du skal muligvis også prøve et par forskellige indstillinger for at finde ud af, hvad der fungerer bedst for dig.
Det blev skrevet i Python 3 og skulle fungere med standardbiblioteker. For at bruge det skal du fjerne kommentarerne til linjerne umiddelbart efter "at kommentere disse linjer for at bruge konfiguratoren". Som sagt, det blev ikke testet, så der kan være nogle fejl, men hvis der kommer noget, kan du skrive en kommentar eller åbne et problem, så jeg kan rette det.
Matematik (og fysik)
Den eneste måde, controlleren kan få det til at føles som om du går op ad bakke, er ved at dreje modstandsskruen. Vi skal konvertere karakteren til antallet af omdrejninger. For at gøre det lettere at oprette er hele området fra helt løst til ikke at kunne dreje håndsvinget opdelt i 40 trin, det samme bruges i ERG -tilstanden, men denne gang bruger det reelle tal i stedet for heltal. Dette gøres med en simpel kortfunktion - du kan slå den op i koden. Nu er vi et trin højere - i stedet for at håndtere skruens omdrejninger, har vi at gøre med imaginære trin.
Nu hvordan fungerer det egentlig, når du går op ad bakke på en cykel (forudsat en konstant hastighed)? Der skal naturligvis være en kraft, der skubber dig op, ellers ville du rulle ned. Denne kraft, som den første bevægelseslov fortæller os, skal være lige stor i størrelse men modsat i retning af kraften, der trækker dig ned, for at du er i ensartet bevægelse. Det kommer fra friktionen mellem hjulet og jorden, og hvis du tegner diagrammet over disse kræfter, skal det være lig med vægten af cyklen og rytteren gange karakteren:
F = Fg*G
Hvad er det nu, der får hjulet til at anvende denne kraft? Da vi har at gøre med gear og hjul, er det lettere at tænke i form af drejningsmoment, som simpelthen er kraften gange radius:
t = F*R
Da der er gear involveret, giver du et drejningsmoment på håndsvinget, som trækker i kæden og drejer hjulet. Drejningsmomentet, der er nødvendigt for at dreje hjulet, multipliceres med gearforholdet:
tp = tw*gr
og tilbage fra momentformlen får vi den kraft, der kræves for at dreje pedalen
Fp = tp/r
Dette er noget, som vi kan måle ved hjælp af effektmåleren i håndsvinget. Da dynamisk friktion er lineært relateret til kraften, og da denne særlige cykel bruger fjedre til at overføre denne kraft, er den lineær i forhold til skruens bevægelse.
Kraft er kraft gange hastigheden (forudsat den samme retning af vektorer)
P = F*V
og pedalens lineære hastighed er relateret til vinkelhastigheden:
V = ω*r
og så kan vi beregne den kraft, der kræves for at dreje pedalerne på et bestemt modstandsniveau. Da alt er lineært relateret, kan vi bruge proportioner til at gøre det.
Det var i det væsentlige, hvad softwaren havde brug for til at beregne under kalibreringen og ved hjælp af en rundkørsel for at få os en kompliceret sammensat, men en lineær funktion, der vedrører karakter til resistens. Jeg skrev alt på papir beregnet den endelige ligning, og alle konstanterne blev til tre koefficienter.
Dette er teknisk set en 3D -funktion, der repræsenterer et plan (tror jeg), der tager karakteren og gearforholdet som argumenterne, og disse tre koefficienter er relateret til dem, der er nødvendige for at definere et fly, men da gearene er diskrete tal, var det lettere at gøre det til en parameter i stedet for at beskæftige sig med fremskrivninger og sådan. 1. og 3. koefficienter kan defineres af en enkelt linje og (-1)* 2. koefficient er X-koordinatet for punktet, hvor linjen "roterer" rundt ved skift af gear.
I denne visualisering er argumenterne repræsenteret ved den lodrette linje og værdierne ved den vandrette, og jeg ved, at dette kan være irriterende, men det var mere intuitivt for mig, og det passede bedre til GUI'en. Det er sandsynligvis grunden til, at økonomerne tegner deres grafer på denne måde.
Trin 5: Afslut
Nu har du brug for nogle apps til at køre med på din nye træner (hvilket sparede dig omkring $ 900:)). Her er mine meninger om nogle af dem.
- RGT Cykling - efter min mening den bedste - den har en helt gratis mulighed, men har lidt få baner. Handler forbindelsesdelen bedst, fordi din telefon opretter forbindelse via bluetooth, og en pc viser sporet. Bruger realistisk video med en AR -cyklist
- Rouvy - mange spor, kun betalt abonnement, af en eller anden grund fungerer pc -appen ikke med dette, du skal bruge din telefon. Der kan være problemer, når din bærbare computer bruger det samme kort til bluetooth og WiFi, den halter ofte og vil ikke indlæse
- Zwift - et animeret spil, kun betalt, fungerer ganske godt med træneren, men brugergrænsefladen er ret primitiv - launcheren bruger Internet Explorer til at vise menuen.
Hvis du nød bygningen (eller ej), bedes du fortælle mig det i kommentarerne, og hvis du har spørgsmål, kan du stille her eller indsende et problem til github. Jeg vil med glæde forklare alt, da det er ret kompliceret.
Anbefalede:
Indendørs luftkvalitetsmåler: 5 trin (med billeder)
Indendørs luftkvalitetsmåler: Enkelt projekt for at kontrollere luftkvaliteten i dit hus. Da vi bliver/arbejder hjemmefra meget på det seneste, kan det være en god idé at overvåge luftkvaliteten og minde dig selv om, hvornår det er tid til at åbne vinduet og få lidt frisk luft ind
Bærbart indendørs lys med 100W LED -chip: 26 trin (med billeder)
Bærbart indendørs lys med 100W LED -chip: I denne instruerbare / video vil jeg vise dig, hvordan jeg lavede bærbart indendørs lys med 100W LED -chip, der drives med 19V 90W strømforsyning fra en gammel bærbar. UPDATE 2 (FINAL): Temperatur omkring LED'en (37C stabil @85W efter 30 minutter i et 20C rum)
Smart indendørs planteovervågning - vide, hvornår dit anlæg skal vandes: 8 trin (med billeder)
Smart indendørs planteovervågning - ved, hvornår din plante skal vandes: For et par måneder siden lavede jeg en jordfugtighedsovervågningspind, der er batteridrevet og kan sidde fast i jorden i din indendørs plantes potte for at give dig nogle nyttige oplysninger om jorden fugtighedsniveau og flash -lysdioder for at fortælle dig, hvornår du skal vente
Smart indendørs urtehave: 6 trin (med billeder)
Smart indendørs urtehave: I denne instruktive vil jeg vise dig, hvordan jeg lavede min smarte indendørs urtehave! Jeg havde et par inspirationer til dette projekt, hvor det første var, at jeg havde en vis interesse i Aerogarden -modellerne i hjemmet. Derudover havde jeg en ubrugt Arduino Mega w
Infinity Bike - Indendørs cykeltræning videospil: 5 trin
Infinity Bike - Indendørs cykeltræning Videospil: I vinterhalvåret, kolde dage og dårligt vejr har cyklistentusiaster kun få muligheder for at dyrke deres yndlingssport. Vi ledte efter en måde at gøre indendørs træning med en cykel/træner opsætning lidt mere underholdende, men mest pr