Satura rādītājs:

DIY iekštelpu velosipēdu viedais treneris: 5 soļi
DIY iekštelpu velosipēdu viedais treneris: 5 soļi

Video: DIY iekštelpu velosipēdu viedais treneris: 5 soļi

Video: DIY iekštelpu velosipēdu viedais treneris: 5 soļi
Video: BERMUDU DIVSTŪRIS x APVEDCEĻŠ - Brāl' Ar Dzīvi Nekaulē 2024, Novembris
Anonim
DIY iekštelpu velosipēdu viedais treneris
DIY iekštelpu velosipēdu viedais treneris
DIY iekštelpu velosipēdu viedais treneris
DIY iekštelpu velosipēdu viedais treneris
DIY iekštelpu velosipēdu viedais treneris
DIY iekštelpu velosipēdu viedais treneris

Ievads

Šis projekts sākās kā vienkārša iekštelpu velosipēda Schwinn IC Elite modifikācija, kurā pretestības iestatījumiem tiek izmantota vienkārša skrūve un filca spilventiņi. Problēma, kuru es gribēju atrisināt, bija tā, ka skrūves solis bija pārāk liels, tāpēc diapazons no nespējas nobraukt pedāli līdz riteņa griešanai pilnīgi brīvi bija tikai pāris grādu uz pretestības pogas. Sākumā es nomainīju skrūvi uz M6, bet pēc tam man bija jāizgatavo poga, tad kāpēc neizmantot vienkārši palikušo NEMA 17 pakāpiena modeli, lai mainītu pretestību? Ja jau ir kāda elektronika, kāpēc datoram nepievienot kloķa jaudas mērītāju un Bluetooth savienojumu, lai izveidotu gudru trenažieri?

Tas izrādījās grūtāk, nekā gaidīts, jo nebija piemēru, kā līdzināties jaudas mērītājam ar arduino un Bluetooth. Es galu galā tērēju aptuveni 20 stundas BLE GATT specifikāciju programmēšanai un interpretēšanai. Es ceru, ka, sniedzot piemēru, es varu palīdzēt kādam netērēt tik daudz laika, mēģinot saprast, ko īsti nozīmē “Pakalpojuma datu reklāmas lauka lauks” …

Programmatūra

Viss projekts ir pieejams vietnē GitHub:

github.com/kswiorek/ble-ftms

Es ļoti iesaku izmantot Visual Studio kopā ar VisualGDB spraudni, ja plānojat darīt kaut ko nopietnāku, nevis tikai kopēt un ielīmēt manu kodu.

Ja jums ir jautājumi par programmu, lūdzu, jautājiet, es zinu, ka mani minimālisma komentāri var daudz nepalīdzēt.

Kredīti

Paldies stoppi71 par viņa rokasgrāmatu, kā izveidot jaudas mērītāju. Es darīju kloķi pēc viņa dizaina.

Piegādes:

Šī projekta materiāli ir ļoti atkarīgi no tā, kādu velosipēdu jūs modificējat, taču ir dažas universālas detaļas.

Kloķis:

  1. ESP32 modulis
  2. HX711 Svara sensors ADC
  3. Celma mērītāji
  4. MPU - žiroskops
  5. Neliels Li-Po akumulators (aptuveni 750 mAh)
  6. Termiski saraušanās uzmava
  7. A4988 Stepper vadītājs
  8. 5V regulators
  9. Arduino mucas domkrats
  10. 12 V arduino barošanas avots

Konsole:

  1. NEMA 17 pakāpiens (jābūt diezgan jaudīgam,> 0,4 Nm)
  2. M6 stienis
  3. 12864 lcd
  4. WeMos LOLIN32
  5. Taktiskie slēdži

Aprīkojums

Lai to izdarītu, jūs, iespējams, varētu iztikt, izmantojot tikai 3D printeri, tomēr jūs varat ietaupīt daudz laika, izgriežot korpusu ar lāzeru, kā arī varat izgatavot PCB. DXF un gerber faili atrodas vietnē GitHub, tāpēc varat tos pasūtīt uz vietas. Savienotājs no vītņotā stieņa līdz motoram tika ieslēgts virpā, un tā varētu būt vienīgā problēma, jo detaļai jābūt diezgan izturīgai, lai vilktu uz spilventiņiem, taču šajā velosipēdā nav daudz vietas.

Kopš pirmā velosipēda izgatavošanas es iegādājos frēzmašīnu, kas ļauj man izveidot spraugas kloķa sensoriem. Tas nedaudz atvieglo to līmēšanu un arī aizsargā tos, ja kaut kas trāpītu kloķim. (Man šie sensori ir krituši dažas reizes, tāpēc es gribēju būt drošībā.)

1. solis: kloķis:

Kloķis
Kloķis
Kloķis
Kloķis
Kloķis
Kloķis

Vislabāk ir sekot šai apmācībai:

Būtībā jums ir jāpielīmē sensori četrās vietās pie kloķa un jāpievieno tie paneļa malām.

Pareizie savienojumi jau ir tur, tāpēc jums vienkārši jāpielodē vadu pāri tieši uz šiem astoņiem dēļa paliktņiem.

Lai izveidotu savienojumu ar sensoriem, izmantojiet iespējami plānāko vadu - spilventiņus ir ļoti viegli pacelt. Vispirms jums jāpielīmē sensori un jāatstāj tikai pietiekami daudz no tiem ārā, lai lodētu, un pēc tam pārklājiet ar epoksīdu. Ja pirms līmēšanas mēģināt lodēt, tie saritinās un salūst.

Lai saliktu PCB:

  1. Ievietojiet zelta tapas no apakšas (sānu ar pēdām) visos caurumos, izņemot tos, kas atrodas vertikāli apakšā.
  2. Novietojiet trīs dēļus (ESP32 uz augšu, pēc tam MPU, HX711 apakšā), lai zelta tapas izliktos cauri abiem caurumiem.
  3. Lodējiet galvenes pie dēļiem augšpusē
  4. Nogrieziet zelta tapas no apakšas. (Pirms salikšanas mēģiniet tos sagriezt, lai jūs zinātu, ka jūsu "zelta tapas" nav tērauda iekšpusē - tāpēc tos ir gandrīz neiespējami sagriezt, un jums tie jāsavīlē vai jāsasmalcina)
  5. atlikušās zelta tapas pielodēt tāfeles apakšā.
  6. Augšupielādējiet kloķa programmaparatūru

Pēdējais solis ir iepakot visu kloķi ar termiski saraucošu uzmavu.

Šī dēļa izgatavošanas metode nav ideāla, jo dēļi aizņem daudz vietas, kur varētu ievietot citas lietas. Vislabāk būtu visus komponentus pielodēt tieši pie tāfeles, bet man trūkst prasmes pašam pielodēt šos mazos SMD. Man tas būtu jāpasūta samontēts, un es, iespējams, pieļautu dažas kļūdas un galu galā pasūtītu tās trīs reizes un gaidītu gadu pirms ierašanās.

Ja kāds varētu uzbūvēt dēli, būtu lieliski, ja tam būtu kāda akumulatora aizsardzība un sensors, kas ieslēgtu ESP, ja kloķis sāk kustēties.

SVARĪGS

HX711 sensors pēc noklusējuma ir iestatīts uz 10 Hz - jaudas mērīšanai tas ir daudz lēnāks. Jums ir nepieciešams pacelt tapu 15 no tāfeles un savienot ar tapu 16. Tas virza tapu HIGH un iespējo 80Hz režīmu. Šis 80 Hz, starp citu, nosaka visas arduino cilpas ātrumu.

Lietošana

ESP32 ir ieprogrammēts gulēt pēc 30 gadiem, ja nav pievienota Bluetooth ierīce. Lai to atkal ieslēgtu, nospiediet atiestatīšanas pogu. Sensori tiek darbināti arī no digitālās tapas, kas miega režīmā kļūst LOW. Ja vēlaties pārbaudīt sensorus ar piemēru kodu no bibliotēkām, jums ir jāpārvieto tapa HIGH un nedaudz jāgaida, pirms sensori ieslēdzas.

Pēc montāžas sensori jākalibrē, nolasot vērtību bez spēka un pēc tam pieliekot svaru (es izmantoju 12 kg vai 16 kg tējkannu, kas piekārts uz pedāļa). Šīs vērtības ir jāievada powerCrank kodā.

Vislabāk ir pagriezt kloķi pirms katra brauciena - tam nevajadzētu būt spējīgam uzgriezt sevi, kad kāds brauc ar pedāļiem, bet labāk ir droši nekā nožēlot, un to ir iespējams ieslēgt tikai vienu reizi pēc ieslēgšanas. Ja pamanāt dīvainus jaudas līmeņus, jums ir jāatkārto šis process:

  1. Nolieciet kloķi taisni uz leju, līdz gaisma sāk mirgot.
  2. Pēc pāris sekundēm gaisma paliks ieslēgta - tad nepieskarieties tai
  3. Kad gaisma izslēdzas, pašreizējais spēks tiek noteikts kā jauns 0.

Ja vēlaties vienkārši izmantot kloķi bez konsoles, kods ir šeit vietnē github. Viss pārējais darbojas vienādi.

2. darbība: konsole

Konsole
Konsole
Konsole
Konsole
Konsole
Konsole

Korpuss ir sagriezts no 3 mm akrila, pogas ir 3D drukātas, un LCD ir atstarpes, kas izgrieztas no 5 mm akrila. Tas ir pielīmēts ar karstu līmi (tas diezgan labi pielīp pie akrila), un ir 3D drukāta "kronšteins", lai noturētu PCB pie LCD. LCD tapas ir pielodētas no apakšas, lai tas netraucētu ESP.

ESP ir lodēts otrādi, tāpēc USB ports ir piemērots korpusam

Atsevišķā poga PCB ir pielīmēta ar karstu līmi, tāpēc pogas ir notvertas savos caurumos, bet tās joprojām nospiež slēdžus. Pogas ir savienotas ar plāksni ar JST PH 2.0 savienotājiem, un tapas secību ir viegli secināt no shēmas

Ir ļoti svarīgi uzstādīt pakāpienu vadītāju pareizajā virzienā (potenciometrs pie ESP)

Visa SD kartes daļa ir atspējota, jo neviens to neizmantoja pirmajā versijā. Kods ir jāatjaunina, izmantojot dažus lietotāja interfeisa iestatījumus, piemēram, braucēja svara un grūtības iestatījumus.

Konsole ir uzstādīta, izmantojot lāzergriešanas "rokas" un rāvējslēdzējus. Mazie zobi ierok stūri un tur konsoli.

3. solis: motors

Motors
Motors
Motors
Motors
Motors
Motors

Motors tur sevi regulētāja pogas vietā ar 3D drukātu kronšteinu. Uz tās vārpstas ir uzstādīts savienojums - vienā pusē ir 5 mm caurums ar skrūvēm, lai turētu vārpstu, otrā pusē ir M6 vītne ar skrūvēm, lai to bloķētu. Ja vēlaties, jūs, iespējams, varat to izgatavot urbšanas presē no kādiem 10 mm apaļiem materiāliem. Tam nav jābūt īpaši precīzam, jo motors nav uzstādīts ļoti cieši.

Savienotājā ir ieskrūvēts M6 vītņstieņa gabals, un tas velk uz misiņa M6 uzgriezni. Es to apstrādāju, bet to var tikpat viegli izgatavot no misiņa gabala ar failu. Jūs pat varat metināt dažus gabalus pie parastā uzgriežņa, lai tas negrieztos. 3D drukāts uzgrieznis var būt arī risinājums.

Vītnei jābūt smalkākai par pamatskrūvi. Tā solis ir aptuveni 1,3 mm, bet M6 - 0,8 mm. Motoram nav pietiekami daudz griezes momenta, lai ieskrūvētu skrūvi.

Uzgrieznis ir labi jāieeļļo, jo motors tik tikko var pagriezt skrūvi augstākos iestatījumos

4. darbība: konfigurēšana

Konfigurācija
Konfigurācija
Konfigurācija
Konfigurācija

Lai augšupielādētu kodu ESP32 no Arduino IDE, jums jāievēro šī apmācība:

Tāfele ir "WeMos LOLIN32", bet darbojas arī "Dev modulis"

Es iesaku izmantot Visual Studio, taču tas bieži var salūzt.

Pirms pirmās lietošanas

Kloķis ir jāiestata saskaņā ar "Kloķa" soli

Izmantojot lietotni "nRF Connect", jums jāpārbauda kloķa ESP32 MAC adrese un jāiestata BLE.h failā.

IndoorBike.ino 19. rindā ir jāiestata, cik skrūves apgriezienu nepieciešams, lai pretestību iestatītu no pilnīgi brīvas uz maksimālo. (Maksimums ir mērķtiecīgs subjektīvs, ar šo iestatījumu jūs pielāgojat grūtības.)

Viedajam trenažierim ir "virtuālie pārnesumi", lai tos pareizi iestatītu, jums tas jākalibrē 28. un 29. rindā. Jums ir jāmedzē ar nemainīgu kadenci noteiktā pretestības iestatījumā, pēc tam nolasiet jaudu un iestatiet to failā. Atkārtojiet to vēlreiz ar citu iestatījumu.

Kreisākā poga pārslēdzas no ERG režīma (absolūtā pretestība) uz simulācijas režīmu (virtuālie pārnesumi). Simulācijas režīms bez datora savienojuma neko nedara, jo nav simulācijas datu.

36. rinda nosaka virtuālos pārnesumus - skaitu un attiecības. Jūs tos aprēķināt, dalot zobu skaitu priekšējā pārnesumā ar zobu skaitu aizmugurējā pārnesumā.

12. rindā jūs ievietojat braucēja un velosipēda svaru ([ņūtonos], masa reizināta ar gravitācijas paātrinājumu!)

Visa šī fizikas daļa, iespējams, ir pārāk sarežģīta, un pat es neatceros, ko tā dara, bet es aprēķinu nepieciešamo griezes momentu, lai velosipēdistu vilktu kalnā vai tamlīdzīgi (tāpēc kalibrēšana).

Šie parametri ir ļoti subjektīvi, tie ir jāiestata pēc dažiem braucieniem, lai tie darbotos pareizi.

Atkļūdošanas COM ports nosūta tiešos bināros datus, kas saņemti ar Bluetooth, pēdiņās ('') un simulācijas datos.

Konfigurētājs

Tā kā šķietami reālistiskās fizikas konfigurācija izrādījās milzīga problēma, lai tā justos reāli, es izveidoju GUI konfiguratoru, kas ļautu lietotājiem grafiski definēt funkciju, kas pārveido no kalna pakāpes uz absolūto pretestības līmeni. Tas vēl nav pilnībā pabeigts, un man nebija iespējas to pārbaudīt, bet nākamajā mēnesī es pārveidošu citu velosipēdu, tāpēc es to pulēšu.

Cilnē "Zobrati" varat iestatīt katra pārnesuma attiecību, pārvietojot slīdņus. Pēc tam jums ir jākopē koda bits, lai aizstātu kodā noteiktos pārnesumus.

Cilnē "Novērtējums" tiek parādīts lineāras funkcijas grafiks (jā, izrādās, ka matemātikā ienīstākais priekšmets patiesībā ir noderīgs), kas iegūst atzīmi (vertikālā ass) un izvada absolūtās pretestības soļus (horizontālā ass). Interesentiem mazliet vēlāk iedziļināšos matemātikā.

Lietotājs var definēt šo funkciju, izmantojot divus punktus. Labajā pusē ir vieta, kur mainīt pašreizējo pārnesumu. Izvēlētais pārnesums, kā jūs varētu iedomāties, maina veidu, kā pakāpe kartē pretestību - ar zemākiem pārnesumiem ir vieglāk nobraukt pedāļus. Pārvietojot slīdni, tiek mainīts 2. koeficients, kas ietekmē to, kā izvēlētais pārnesums maina funkciju. Visvieglāk ir ar to kādu laiku spēlēties, lai redzētu, kā tā uzvedas. Iespējams, jums būs jāizmēģina arī daži dažādi iestatījumi, lai atrastu sev piemērotāko.

Tas tika rakstīts Python 3, un tam vajadzētu strādāt ar noklusējuma bibliotēkām. Lai to izmantotu, rindas ir jāatceļ tūlīt pēc komentāru noņemšanas, lai izmantotu konfiguratoru. Kā jau teicu, tas netika pārbaudīts, tāpēc var būt dažas kļūdas, bet, ja kaut kas parādās, lūdzu, uzrakstiet komentāru vai atveriet problēmu, lai es varētu to labot.

Matemātika (un fizika)

Vienīgais veids, kā kontrolieris var likt justies kā kalnā, ir pagriezt pretestības skrūvi. Mums ir jāpārvērš pakāpe par apgriezienu skaitu. Lai atvieglotu iestatīšanu, viss diapazons no pilnīgi vaļīga līdz nespējai pagriezt kloķi ir sadalīts 40 soļos, kas tiek izmantoti ERG režīmā, taču šoreiz tas izmanto reālus skaitļus, nevis veselus skaitļus. Tas tiek darīts ar vienkāršu kartes funkciju - jūs varat to meklēt kodā. Tagad mēs esam vienu soli augstāk - tā vietā, lai tiktu galā ar skrūves apgriezieniem, mēs nodarbojamies ar iedomātiem soļiem.

Tagad kā tas faktiski darbojas, braucot ar velosipēdu kalnā (pieņemot nemainīgu ātrumu)? Acīmredzot ir vajadzīgs kāds spēks, kas jūs spiež uz augšu, pretējā gadījumā jūs nolaižaties. Šim spēkam, kā mums saka pirmais kustības likums, jābūt vienādam pēc lieluma, bet pretēji virzienam spēkam, kas jūs velk uz leju, lai jūs būtu vienmērīgā kustībā. Tas rodas no berzes starp riteni un zemi, un, ja jūs uzzīmējat šo spēku diagrammu, tam jābūt vienādam ar velosipēda svaru un braucēju ar pakāpi:

F = Fg*G

Kas tagad liek ritenim pielietot šo spēku? Tā kā runa ir par pārnesumiem un riteņiem, ir vieglāk domāt griezes momenta izteiksmē, kas ir vienkārši spēks, kas reizināts ar rādiusu:

t = F*R

Tā kā ir iesaistīti pārnesumi, jūs kloķim piešķirat griezes momentu, kas velk ķēdi un pagriež riteni. Riteņa griešanai nepieciešamais griezes moments tiek reizināts ar pārnesumu attiecību:

tp = tw*gr

un atpakaļ no griezes momenta formulas mēs iegūstam spēku, kas nepieciešams, lai pagrieztu pedāli

Fp = tp/r

To mēs varam izmērīt, izmantojot kloķa jaudas mērītāju. Tā kā dinamiskā berze ir lineāri saistīta ar spēku un šis velosipēds izmanto atsperes, lai piešķirtu šo spēku, tas ir lineārs skrūves kustībai.

Jauda ir spēks, kas reizināts ar ātrumu (pieņemot to pašu vektoru virzienu)

P = F*V

un pedāļa lineārais ātrums ir saistīts ar leņķisko ātrumu:

V = ω*r

un tā mēs varam aprēķināt spēku, kas nepieciešams, lai pagrieztu pedāļus noteiktā pretestības līmenī. Tā kā viss ir lineāri saistīts, mēs varam izmantot proporcijas.

Tas būtībā bija tas, kas programmatūrai bija jāaprēķina kalibrēšanas laikā un izmantojot apļveida ceļu, lai iegūtu sarežģītu kompozītmateriālu, bet lineāru funkciju, kas saistīta ar pakāpi un pretestību. Es uzrakstīju visu uz papīra, aprēķināju galīgo vienādojumu, un visas konstantes kļuva par trim koeficientiem.

Tehniski šī ir 3D funkcija, kas attēlo plakni (manuprāt), kas kā argumentu ņem atzīmi un pārnesumu attiecību, un šie trīs koeficienti ir saistīti ar tiem, kas nepieciešami, lai definētu plakni, bet, tā kā pārnesumi ir diskrēti skaitļi, tas bija vieglāk padarīt to par parametru, nevis nodarboties ar projekcijām un tamlīdzīgi. 1. un 3. koeficientu var definēt ar vienu līniju, un (-1)* 2. koeficients ir punkta X koordināta, kur līnija "rotē", mainot pārnesumus.

Šajā vizualizācijā argumentus attēlo vertikālā līnija, bet vērtības - horizontālā līnija, un es zinu, ka tas varētu būt kaitinoši, taču man tas bija intuitīvāk un labāk iederas GUI. Tas, iespējams, ir iemesls, kāpēc ekonomisti šādā veidā zīmē savus grafikus.

5. solis: pabeidziet

Tagad jums ir vajadzīgas dažas lietotnes, ar kurām braukt ar jauno trenažieri (tas ietaupīja aptuveni 900 USD:)). Šeit ir mans viedoklis par dažiem no tiem.

  • RGT Cycling - manuprāt, labākais - tam ir pilnīgi bezmaksas iespēja, taču tajā ir nedaudz dziesmu. Vislabāk tiek galā ar savienojuma daļu, jo tālrunis izveido savienojumu, izmantojot Bluetooth, un dators parāda celiņu. Izmanto reālistisku video ar AR velosipēdistu
  • Rouvy - daudz dziesmu, tikai maksas abonements, kāda iemesla dēļ datora lietotne ar to nedarbojas, jums ir jāizmanto tālrunis. Var rasties problēmas, ja jūsu klēpjdators izmanto vienu un to pašu karti Bluetooth un WiFi, tas bieži kavējas un nevēlas ielādēt
  • Zwift - animēta spēle, par kuru tiek maksāta tikai, ar treneri darbojas diezgan labi, taču lietotāja saskarne ir diezgan primitīva - palaidējs izmanto Internet Explorer, lai parādītu izvēlni.

Ja jums patika būvēt (vai nē), lūdzu, pastāstiet man komentāros un, ja jums ir kādi jautājumi, varat uzdot šeit vai iesniegt problēmu vietnē github. Es labprāt visu paskaidrošu, jo tas ir diezgan sarežģīti.

Ieteicams: