Cuprins:

DIY Trainer Smart Bike Bike: 5 pași
DIY Trainer Smart Bike Bike: 5 pași

Video: DIY Trainer Smart Bike Bike: 5 pași

Video: DIY Trainer Smart Bike Bike: 5 pași
Video: UNBOXING & REVIEW! - MOBI FITNESS Turbo Exercise Bike - The Smart Indoor Exercise Bike! 2024, Noiembrie
Anonim
Antrenor inteligent pentru biciclete interioare DIY
Antrenor inteligent pentru biciclete interioare DIY
Antrenor inteligent pentru biciclete interioare DIY
Antrenor inteligent pentru biciclete interioare DIY
Antrenor inteligent pentru biciclete interioare DIY
Antrenor inteligent pentru biciclete interioare DIY

Introducere

Acest proiect a început ca o simplă modificare a unei biciclete de interior Schwinn IC Elite care folosește un șurub simplu și plăcuțe de pâslă pentru setările de rezistență. Problema pe care am vrut să o rezolv a fost că pasul șurubului era prea mare, așa că intervalul de la neputință de a pedala până la rotirea roții complet libere era de doar câteva grade pe butonul de rezistență. La început, am schimbat șurubul pe M6, dar apoi ar trebui să fac un buton, așa că de ce să nu folosesc doar un motor de pas cu pas NEMA 17 pentru a schimba rezistența? Dacă există deja unele componente electronice, de ce nu adăugați un contor de putere cu manivelă și o conexiune bluetooth la un computer pentru a crea un antrenor inteligent?

Acest lucru s-a dovedit mai dificil decât se aștepta, deoarece nu au existat exemple despre cum să emulați un contor de putere cu un arduino și bluetooth. Am ajuns să petrec în jur de 20 de ore pentru programarea și interpretarea specificațiilor BLE GATT. Sper că, oferind un exemplu, pot ajuta pe cineva să nu piardă atât de mult timp încercând să înțeleagă exact ce înseamnă „Câmpul tipului de date AD de serviciu” …

Software

Întregul proiect este pe GitHub:

github.com/kswiorek/ble-ftms

Vă recomand cu drag să utilizați Visual Studio cu un plugin VisualGDB dacă intenționați să faceți ceva mai serios decât să copiați codul meu.

Dacă aveți întrebări despre program, vă rugăm să întrebați, știu că comentariile mele minimaliste s-ar putea să nu ajute prea mult.

credite

Mulțumim stoppi71 pentru ghidul său despre cum să faci un contor de putere. Am făcut manivela conform designului său.

Provizii:

Materialele pentru acest proiect depind în mare măsură de motocicleta pe care o modificați, dar există unele părți universale.

Manivelă:

  1. Modulul ESP32
  2. HX711 Senzor de greutate ADC
  3. Calibre de tensiune
  4. MPU - giroscop
  5. O baterie mică Li-Po (aproximativ 750mAh)
  6. Manșon termocontractabil
  7. A4988 Driver pas cu pas
  8. Regulator 5V
  9. Un jack arduino
  10. Sursa de alimentare arduino de 12V

Consolă:

  1. NEMA 17 pas cu pas (trebuie să fie destul de puternic,> 0,4 Nm)
  2. Tija M6
  3. 12864 lcd
  4. WeMos LOLIN32
  5. Comutatoare tactice

Echipament

Pentru a face acest lucru, probabil că ați putea scăpa de utilizarea doar a unei imprimante 3D, cu toate acestea puteți economisi mult timp tăind cu laser carcasa și puteți, de asemenea, să faceți PCB-uri. Fișierele DXF și gerber sunt pe GitHub, astfel încât să le puteți comanda local. Cuplajul de la tija filetată la motor a fost pornit la strung și aceasta ar putea fi singura problemă, deoarece piesa trebuie să fie destul de puternică pentru a trage de tampoane, dar nu există mult spațiu în această bicicletă.

De când am făcut prima bicicletă, am achiziționat o mașină de frezat care îmi permite să creez sloturi pentru senzorii din manivelă. Le face lipirea puțin mai ușoară și, de asemenea, le protejează dacă ceva ar lovi manivela. (Am căzut acești senzori de câteva ori, așa că am vrut să fiu în siguranță.)

Pasul 1: Manivela:

Manivela
Manivela
Manivela
Manivela
Manivela
Manivela

Cel mai bine este să urmați acest tutorial:

În principiu, trebuie să lipiți senzorii pe manivelă în patru locuri și să le conectați la părțile laterale ale plăcii.

Conexiunile adecvate sunt deja acolo, deci trebuie doar să lipiți perechile de fire direct pe aceste opt tampoane de pe placă.

Pentru a vă conecta la senzori utilizați cel mai subțire fir posibil - tampoanele sunt foarte ușor de ridicat. Mai întâi trebuie să lipiți senzorii și să lăsați suficient din ei afară pentru a se lipi, apoi acoperiți restul cu epoxidic. Dacă încercați să lipiți înainte de lipire, acestea se ondulează și se rup.

Pentru a asambla PCB-ul:

  1. Introduceți vârfurile de aur din partea de jos (partea cu urme) în toate găurile, cu excepția celor verticale din partea de jos.
  2. Așezați cele trei plăci (ESP32 deasupra, apoi MPU, HX711 în partea de jos), astfel încât clemele aurii să rămână prin ambele găuri.
  3. Lipiți anteturile pe panourile de deasupra
  4. Tăiați vârfurile de aur de jos. (Încercați mai întâi să le tăiați înainte de asamblare, astfel încât să știți că „știfturile de aur” nu sunt din oțel în interior - le face aproape imposibil de tăiat și trebuie să le tăiați sau să le măcinați)
  5. lipiți vârfurile de aur rămase în partea de jos a plăcii.
  6. Încărcați firmware-ul pentru manivelă

Ultimul pas este împachetarea întregii manivele cu manșon termocontractabil.

Această metodă de realizare a plăcii nu este ideală, deoarece plăcile ocupă mult spațiu în care ați putea încăpea alte lucruri. Cel mai bun ar fi să lipiți direct toate componentele pe placă, dar îmi lipsește abilitatea de a lipi singur aceste mici SMD. Aș fi nevoie să-l comand asamblat și probabil că aș face niște greșeli și aș ajunge să le comand de trei ori și să aștept un an înainte să ajungă.

Dacă cineva ar fi capabil să proiecteze placa, ar fi grozav dacă ar avea un circuit de protecție a bateriei și un senzor care ar porni ESP-ul dacă manivela ar începe să se miște.

IMPORTANT

Senzorul HX711 este setat implicit la 10Hz - este mult mai lent pentru măsurarea puterii. Trebuie să ridicați pinul 15 de pe placă și să îl conectați la pinul 16. Aceasta acționează pinul HIGH și activează modul 80Hz. Apropo, acest 80Hz setează rata întregii bucle arduino.

Utilizare

ESP32 este programat să intre în repaus după 30 de ani, fără dispozitiv Bluetooth conectat. Pentru a-l reporni, trebuie să apăsați butonul de resetare. Senzorii sunt, de asemenea, alimentați de la un pin digital, care devine LOW în modul de repaus. Dacă doriți să testați senzorii cu exemplul de cod din biblioteci, trebuie să conduceți pinul HIGH și să așteptați puțin înainte ca senzorii să se aprindă.

După asamblare, senzorii trebuie calibrați citind valoarea fără forță și apoi cu o greutate aplicată (am folosit un kettlebell de 12 kg sau 16 kg atârnat pe pedală). Aceste valori trebuie introduse în codul powerCrank.

Cel mai bine este să tarăm manivela înainte de fiecare călătorie - nu ar trebui să se poată tară singură când cineva pedalează, dar mai bine în siguranță decât îmi pare rău și este posibil să o tarăm o singură dată la pornire. Dacă observați anumite niveluri de putere ciudate, trebuie să repetați acest proces:

  1. Puneți manivela drept în jos până când lumina începe să clipească.
  2. După câteva secunde, lumina va rămâne aprinsă - nu o atingeți atunci
  3. Când lumina se stinge setează forța curentă detectată ca un nou 0.

Dacă doriți să utilizați doar manivela, fără consolă, codul este aici pe github. Orice altceva funcționează la fel.

Pasul 2: Consola

Consola
Consola
Consola
Consola
Consola
Consola

Carcasa este decupată din acrilic de 3mm, butoanele sunt imprimate 3D și există distanțieri pentru LCD, decupate din acrilic de 5mm. Este lipit cu adeziv fierbinte (se lipeste destul de bine de acrilic) și există un „suport” tipărit 3D pentru a ține PCB-ul pe LCD. Pinii pentru LCD sunt lipiți din partea inferioară, astfel încât să nu interfereze cu ESP.

ESP-ul este lipit cu susul în jos, astfel încât portul USB se potrivește în carcasă

PCB-ul cu butoane separate este lipit cu adeziv fierbinte, astfel încât butoanele sunt capturate în găurile lor, dar totuși apasă butoanele. Butoanele sunt conectate la placa cu conectori JST PH 2.0, iar ordinea pinilor este ușor de dedus din schemă

Este foarte important să montați driverul pas cu pas în orientarea corectă (potențiometrul lângă ESP)

Întreaga porțiune pentru cardul SD este dezactivată, deoarece nimeni nu a folosit-o în prima versiune. Codul trebuie actualizat cu unele setări ale interfeței de utilizare, cum ar fi greutatea călătorului și setarea dificultății.

Consola este montată cu ajutorul „brațelor” lasercut și zipties. Dinții mici sapă în ghidon și țin consola.

Pasul 3: Motorul

Motorul
Motorul
Motorul
Motorul
Motorul
Motorul

Motorul se menține în locul butonului de reglare cu un suport tipărit 3D. Pe arborele său este montat un cuplaj - o parte are o gaură de 5 mm cu șuruburi de fixare pentru a ține arborele, cealaltă are un filet M6 cu șuruburi de fixare pentru a-l bloca. Dacă doriți, probabil că o puteți face într-o presă de burghiu dintr-un material rotund de 10 mm. Nu trebuie să fie extrem de precis, deoarece motorul nu este montat foarte bine.

O bucată de tijă filetată M6 este înșurubată în cuplaj și trage de o piuliță M6 din alamă. L-am prelucrat, dar poate fi la fel de ușor de făcut dintr-o bucată de alamă cu o pila. Puteți chiar să sudați niște biți la o piuliță normală, astfel încât să nu se rotească. O piuliță imprimată 3D poate fi, de asemenea, o soluție.

Filetul trebuie să fie mai fin decât șurubul de fixare. Pasul său este de aproximativ 1,3 mm, iar pentru M6 este de 0,8 mm. Motorul nu are cuplu suficient pentru a transforma șurubul de rezervă.

Piulița trebuie să fie bine lubrifiată, deoarece motorul abia poate roti șurubul pentru setările superioare

Pasul 4: Configurare

Configurare
Configurare
Configurare
Configurare

Pentru a încărca codul în ESP32 din Arduino IDE, trebuie să urmați acest tutorial:

Placa este „WeMos LOLIN32”, dar funcționează și „modulul Dev”

Vă sugerez utilizarea Visual Studio, dar se poate rupe adesea.

Înainte de prima utilizare

Manivela trebuie configurată în conformitate cu pasul "Manivelă"

Folosind aplicația „nRF Connect” trebuie să verificați adresa MAC a manivelei ESP32 și să o setați în fișierul BLE.h.

În linia 19 a indoorBike.ino trebuie să setați, câte rotații ale șurubului sunt necesare pentru a seta rezistența de la complet slab la maxim. („Maximul” este subiectiv intenționat, ajustați dificultatea cu această setare.)

Antrenorul inteligent are „unelte virtuale” pentru a le configura corect, trebuie să îl calibrați pe liniile 28 și 29. Trebuie să pedalați cu o cadență constantă pe o setare de rezistență dată, apoi să citiți puterea și să o setați în fișier. Repetați acest lucru din nou cu o altă setare.

Butonul din stânga trece de la modul ERG (rezistență absolută) la modul de simulare (unelte virtuale). Modul de simulare fără o conexiune la computer nu face nimic deoarece nu există date de simulare.

Linia 36. setează uneltele virtuale - numărul și raporturile. Le calculați împărțind numărul de dinți din treapta din față la numărul de dinți din treapta din spate.

În linia 12. puneți greutatea călărețului și a bicicletei (În [newtoni], masa este mai mare decât accelerația gravitațională!)

Întreaga parte a fizicii este probabil prea complicată și chiar nu-mi amintesc exact ce face, dar calculez cuplul necesar pentru a trage ciclistul în sus sau ceva de genul acesta (de aceea calibrarea).

Acești parametri sunt foarte subiectivi, trebuie să-i configurați după câteva călătorii pentru ca aceștia să funcționeze corect.

Portul COM de depanare trimite date binare directe primite de bluetooth între ghilimele ( ) și date de simulare.

Configuratorul

Deoarece configurația presupusei fizici realiste s-a dovedit a fi o problemă uriașă pentru a o face să se simtă realistă, am creat un configurator GUI care ar trebui să permită utilizatorilor să definească grafic funcția care se convertește de la gradul dealului la nivelul de rezistență absolută. Nu este încă complet terminată și nu am avut ocazia să o testez, dar în luna următoare voi converti o altă bicicletă, așa că o voi lustrui atunci.

În fila „Angrenaje” puteți seta raportul fiecărei trepte de viteză prin mișcarea glisoarelor. Apoi, trebuie să copiați bitul de cod pentru a înlocui uneltele definite în cod.

În fila „Notă” vi se oferă un grafic al unei funcții liniare (da, se pare că subiectul cel mai urât din matematică este de fapt util) care ia nota (axa verticală) și emite pași de rezistență absolută (axa orizontală). Voi intra la matematică puțin mai târziu pentru cei interesați.

Utilizatorul poate defini această funcție folosind cele două puncte care stau pe ea. În dreapta există un loc pentru schimbarea treptelor actuale. Uneltele selectate, așa cum ți-ai putea imagina, schimbă modul, modul în care pânza de hârtie este rezistentă - pe treptele inferioare este mai ușor să pedalezi în sus. Deplasarea glisorului schimbă al doilea coeficient, care influențează modul în care treapta de viteză selectată schimbă funcția. Este cel mai ușor să te joci cu el o vreme pentru a vedea cum se comportă. De asemenea, poate fi necesar să încercați câteva setări diferite pentru a găsi ceea ce funcționează cel mai bine pentru dvs.

A fost scris în Python 3 și ar trebui să funcționeze cu bibliotecile implicite. Pentru a-l utiliza, trebuie să decomentați liniile imediat după „decomentați aceste linii pentru a utiliza configuratorul”. Așa cum am spus, nu a fost testat, deci ar putea exista unele erori, dar dacă apare ceva, vă rugăm să scrieți un comentariu sau să deschideți o problemă, astfel încât să o pot corecta.

Matematica (și fizica)

Singurul mod în care controlerul îl poate face să pară că urcați în sus este prin rotirea șurubului de rezistență. Trebuie să convertim gradul la numărul de rotații. Pentru a fi mai ușor de configurat, întreaga gamă de la complet slabă până la a nu putea roti manivela este împărțită în 40 de trepte, aceleași utilizate în modul ERG, dar de data aceasta folosește numere reale în loc de numere întregi. Acest lucru se face cu o funcție de hartă simplă - o puteți căuta în cod. Acum suntem cu un pas mai sus - în loc să ne ocupăm de rotațiile șurubului, avem de-a face cu pași imaginați.

Acum, cum funcționează de fapt atunci când mergi în sus pe bicicletă (presupunând o viteză constantă)? În mod evident, trebuie să existe o forță care să te împingă în sus, altfel te-ai rostogoli. Această forță, așa cum ne spune prima lege a mișcării, trebuie să fie egală în mărime, dar opusă în direcția forței care te trage în jos, pentru ca tu să fii în mișcare uniformă. Provine din fricțiunea dintre roată și sol și, dacă trageți diagrama acestor forțe, trebuie să fie egală cu greutatea bicicletei și călărețul de ori mai mare decât nota:

F = Fg * G

Acum, ce face roata să aplice această forță? Întrucât avem de-a face cu roți dințate și roți, este mai ușor să ne gândim în termeni de cuplu, care este pur și simplu forța de mai mult decât raza:

t = F * R

Deoarece există unelte implicate, dați un cuplu pe manivelă, care trage de lanț și rotește roata. Cuplul necesar rotirii roții se înmulțește cu raportul de transmisie:

tp = tw * gr

și înapoi de la formula cuplului obținem forța necesară pentru a roti pedala

Fp = tp / r

Acesta este un lucru pe care îl putem măsura cu ajutorul contorului de putere din manivelă. Deoarece fricțiunea dinamică este legată liniar de forță și, deoarece această bicicletă utilizează arcuri pentru a transmite această forță, este liniară cu mișcarea șurubului.

Puterea este forța de viteza (presupunând aceeași direcție a vectorilor)

P = F * V

iar viteza liniară a pedalei este legată de viteza unghiulară:

V = ω * r

și astfel putem calcula forța necesară pentru a roti pedalele pe un nivel de rezistență stabilit. Deoarece totul este legat liniar, putem folosi proporții pentru a face acest lucru.

Aceasta a fost în esență ceea ce software-ul trebuia să calculeze în timpul calibrării și folosind o cale giratorie pentru a obține un compozit complicat, dar o funcție liniară care să raporteze gradul la rezistență. Am scris totul pe hârtie calculând ecuația finală și toate constantele au devenit trei coeficienți.

Aceasta este din punct de vedere tehnic o funcție 3D care reprezintă un plan (cred) care ia nota și raportul de transmisie ca argumente, iar acești trei coeficienți sunt legați de cei necesari pentru a defini un plan, dar, deoarece angrenajele sunt numere discrete, a fost mai ușor pentru a face din acesta un parametru în loc să se ocupe de proiecții și altele. Coeficienții 1 și 3 pot fi definiți printr-o singură linie și (-1) * al 2-lea coeficient este coordonata X a punctului, unde linia „se rotește” la schimbarea vitezelor.

În această vizualizare, argumentele sunt reprezentate de linia verticală și valorile de cea orizontală și știu că acest lucru ar putea fi enervant, dar a fost mai intuitiv pentru mine și se potrivește mai bine cu GUI. Acesta este probabil motivul pentru care economiștii își desenează graficele în acest fel.

Pasul 5: Termină

Acum aveți nevoie de câteva aplicații cu care să mergeți pe noul dvs. antrenor (ceea ce v-a salvat în jur de 900 USD:)). Iată părerile mele despre unele dintre ele.

  • RGT Cycling - în opinia mea cea mai bună - are o opțiune complet gratuită, dar are câteva piese. Se ocupă cel mai bine de partea de conectare, deoarece telefonul dvs. se conectează prin Bluetooth și un computer afișează pista. Folosește un videoclip realist cu un ciclist AR
  • Rouvy - o mulțime de piese, abonament plătit numai, din anumite motive aplicația pentru computer nu funcționează cu acest lucru, trebuie să vă folosiți telefonul. S-ar putea să apară probleme când laptopul dvs. folosește același card pentru bluetooth și WiFi, de multe ori rămâne în urmă și nu vrea să se încarce
  • Zwift - un joc animat, plătit doar, funcționează destul de bine cu antrenorul, dar interfața de utilizare este destul de primitivă - lansatorul folosește Internet Explorer pentru a afișa meniul.

Dacă ți-a plăcut construirea (sau nu), te rog spune-mi în comentarii și dacă ai vreo întrebare, poți să o pui aici sau să trimiți o problemă la github. Voi explica cu plăcere totul, deoarece este destul de complicat.

Recomandat: