Sadržaj:

Pametan trener DIY zatvorenog bicikla: 5 koraka
Pametan trener DIY zatvorenog bicikla: 5 koraka

Video: Pametan trener DIY zatvorenog bicikla: 5 koraka

Video: Pametan trener DIY zatvorenog bicikla: 5 koraka
Video: Every Workday is a Matchday 2024, Novembar
Anonim
Uradi sam pametni trener za zatvorene bicikle
Uradi sam pametni trener za zatvorene bicikle
Uradi sam pametni trener za zatvorene bicikle
Uradi sam pametni trener za zatvorene bicikle
Uradi sam pametni trener za zatvorene bicikle
Uradi sam pametni trener za zatvorene bicikle

Uvod

Ovaj je projekt započeo kao jednostavna modifikacija unutarnjeg bicikla Schwinn IC Elite koji koristi jednostavne vijke i podloške od filca za postavke otpora. Problem koji sam želio riješiti bio je to što je nagib vijka bio prevelik, pa je raspon od nemogućnosti okretanja pedale do potpunog slobodnog okretanja kotača bio samo nekoliko stupnjeva na gumbu otpora. U početku sam vijak promijenio u M6, no onda bih morao napraviti gumb, pa zašto jednostavno ne biste upotrijebili lijevi NEMA 17 koračni moto za promjenu otpora? Ako već postoji neka elektronika, zašto računaru ne biste dodali mjerač snage radilice i bluetooth vezu kako biste napravili pametni trener?

To se pokazalo težim od očekivanog, jer nije bilo primjera kako oponašati mjerač snage s arduinom i bluetoothom. Na kraju sam potrošio oko 20 sati na programiranje i tumačenje BLE GATT specifikacija. Nadam se da ću pružanjem primjera pomoći nekome da ne gubi ovoliko vremena pokušavajući shvatiti što točno znači "Polje vrste podataka o uslužnim podacima" …

Softver

Cijeli projekt je na GitHub -u:

github.com/kswiorek/ble-ftms

Toplo preporučujem korištenje Visual Studija s dodatkom VisualGDB ako planirate učiniti nešto ozbiljnije od kopiranja mog koda.

Ako imate pitanja o programu, pitajte, znam da moji minimalistički komentari možda neće puno pomoći.

Krediti

Hvala stoppi71 na vodiču o tome kako napraviti mjerač snage. Napravio sam ručicu prema njegovom dizajnu.

Potrošni materijal:

Materijali za ovaj projekt uvelike ovise o tome koji bicikl mijenjate, ali postoje neki univerzalni dijelovi.

Ručica:

  1. ESP32 modul
  2. HX711 Senzor težine ADC
  3. Sonde
  4. MPU - žiroskop
  5. Mala Li-Po baterija (oko 750 mAh)
  6. Termoskupljajuća navlaka
  7. A4988 Steper vozač
  8. 5V regulator
  9. Utikač za arduino cijev
  10. 12V arduino napajanje

Konzola:

  1. NEMA 17 steper (mora biti prilično moćan,> 0,4 Nm)
  2. M6 štap
  3. 12864 lcd
  4. WeMos LOLIN32
  5. Taktni prekidači

Oprema

Da biste to učinili, vjerojatno biste se mogli izvući koristeći samo 3D pisač, međutim možete uštedjeti mnogo vremena laserskim rezanjem kućišta, a možete napraviti i PCB -ove. DXF i gerber datoteke nalaze se na GitHub -u, pa ih možete naručiti lokalno. Spojka od navojne šipke do motora bila je okrenuta na tokarilici i to bi mogao biti jedini problem, jer dio mora biti prilično čvrst da povuče jastučiće, ali u ovom biciklu nema puno prostora.

Od izrade prvog bicikla nabavio sam glodalicu koja mi omogućava izradu utora za senzore u radilici. Olakšava njihovo lijepljenje i štiti ih ako nešto udari u ručicu. (Nekoliko puta su mi padali ovi senzori pa sam htio biti siguran.)

Korak 1: Ručica:

Ručica
Ručica
Ručica
Ručica
Ručica
Ručica

Najbolje je samo slijediti ovaj vodič:

U osnovi morate zalijepiti senzore na ručicu na četiri mjesta i spojiti ih sa stranicama ploče.

Odgovarajuće veze već postoje, pa samo morate lemiti parove žica izravno na ovih osam jastučića na ploči.

Za spajanje na senzore upotrijebite najtanju moguću žicu - jastučići se vrlo lako podižu. Morate prvo zalijepiti senzore i ostaviti ih dovoljno vani za lemljenje, a zatim ostatak prekriti epoksidom. Ako pokušate lemiti prije lijepljenja, oni se uvijaju i lome.

Za sastavljanje PCB -a:

  1. Umetnite zlatne igle odozdo (strana sa tragovima) u sve rupe osim okomitih pri dnu.
  2. Postavite tri ploče (ESP32 na vrh, zatim MPU, HX711 na dno) tako da zlatne igle zabode kroz obje rupe.
  3. Zalijepite zaglavlja na ploče na vrhu
  4. Isecite zlatne igle sa dna. (Pokušajte ih prije rezanja isjeći tako da znate da vaše "zlatne igle" nisu od čelika iznutra - to ih čini gotovo nemogućim za rezanje i morate ih turpijom ili samljeti)
  5. lemite preostale zlatne igle na dno ploče.
  6. Učitajte firmver za radilicu

Posljednji korak je pakiranje cijele ručice termoskupljajućom navlakom.

Ova metoda izrade ploče nije idealna jer ploče zauzimaju puno prostora u koji možete smjestiti druge stvari. Najbolje bi bilo lemiti sve komponente direktno na ploču, ali nemam vještinu da sam zalemim ove male SMD -ove. Morao bih naručiti sklopljeno i vjerojatno bih napravio neke greške i na kraju ih naručio tri puta i čekao godinu dana prije nego što stignu.

Ako bi netko mogao dizajnirati ploču, bilo bi sjajno da ima neki zaštitni sklop baterije i senzor koji bi uključio ESP ako bi se ručica počela kretati.

BITAN

Senzor HX711 je prema zadanim postavkama postavljen na 10Hz - mnogo je spor za mjerenje snage. Morate podići pin 15 s ploče i spojiti ga na pin 16. Ovo dovodi pin u VISOKOST i omogućuje način rada od 80Hz. Usput, ovih 80Hz postavlja brzinu cijele arduino petlje.

Upotreba

ESP32 je programiran da ide u san nakon 30 -ih godina bez povezanog bluetooth uređaja. Da biste ga ponovo uključili, morate pritisnuti dugme za poništavanje. Senzori se napajaju i digitalnim pinom, koji se u stanju mirovanja NIZAKA. Ako želite testirati senzore s primjerom koda iz biblioteka, morate voziti pin visoko i pričekati malo prije nego se senzori uključe.

Nakon montaže senzore je potrebno kalibrirati očitavanjem vrijednosti bez sile, a zatim s primijenjenom težinom (koristio sam kettlebell od 12 kg ili 16 kg obješen na pedalu). Ove vrijednosti je potrebno unijeti u powerCrank kôd.

Najbolje je skinuti ručicu prije svake vožnje - ne bi se trebala moći tarati kad netko pedalira, već bolje biti siguran nego žaliti, a moguće ju je tarati samo jednom po uključivanju. Ako primijetite neke čudne nivoe snage, morate ponoviti ovaj postupak:

  1. Spustite ručicu ravno dok svjetlo ne počne treperiti.
  2. Nakon nekoliko sekundi svjetlo će ostati upaljeno - tada ga ne dirajte
  3. Kad se svjetlo isključi, postavlja trenutnu silu otkrivenu kao novo 0.

Ako želite samo koristiti ručicu, bez konzole, kôd je ovdje na githubu. Sve ostalo radi isto.

Korak 2: Konzola

Konzola
Konzola
Konzola
Konzola
Konzola
Konzola

Kućište je izrezano od akrila od 3 mm, dugmad su 3D štampana i postoje odstojnici za LCD, izrezani od akrila od 5 mm. Zalijepljen je vrućim ljepilom (prilično se lijepi za akril) i postoji 3D štampani "nosač" koji drži PCB na LCD -u. Igle za LCD su lemljene s donje strane tako da ne ometaju ESP.

ESP je lemljen naopako, pa USB priključak staje u kućište

PCB zasebnog dugmeta zalijepljen je vrućim ljepilom, pa su gumbi zarobljeni u svojim rupama, ali i dalje pritiskaju prekidače. Gumbi su spojeni na ploču pomoću JST PH 2.0 konektora, a redoslijed pinova lako se zaključuje iz sheme

Vrlo je važno montirati upravljač koraka u ispravnoj orijentaciji (potenciometar u blizini ESP -a)

Cijeli dio za SD karticu je onemogućen, jer ga nitko nije koristio u prvoj verziji. Kôd je potrebno ažurirati nekim postavkama korisničkog sučelja, poput težine vozača i postavljanja poteškoća.

Konzola se montira pomoću laserski izrezanih "ruku" i patentnih zatvarača. Mali zubići zabijaju se u upravljač i drže konzolu.

Korak 3: Motor

Motor
Motor
Motor
Motor
Motor
Motor

Motor se drži na mjestu gumba za podešavanje s 3D tiskanim nosačem. Na osovinu je montirana spojnica - jedna strana ima otvor od 5 mm sa vijcima za držanje osovine, a druga ima navoj M6 sa vijcima za pričvršćivanje. Ako želite, vjerovatno ga možete napraviti u bušilici od nekih 10 mm okruglih zaliha. Ne mora biti izuzetno precizan jer motor nije postavljen jako čvrsto.

Komad M6 navojne šipke je uvrnut u spojnicu i povlači mesinganu M6 maticu. Mašinski sam ga obrađivao, ali isto tako lako se može napraviti od komada mjedi s turpijom. Možete čak i zavariti neke komade na normalnu maticu kako se ne bi rotirala. 3D štampana matica takođe može biti rešenje.

Navoj mora biti finiji od pužnog vijka. Nagib mu je oko 1,3 mm, a za M6 0,8 mm. Motor nema dovoljan zakretni moment da okrene zališni vijak.

Matica mora biti dobro podmazana jer motor jedva može okrenuti vijak na višim postavkama

Korak 4: Konfiguracija

Konfiguracija
Konfiguracija
Konfiguracija
Konfiguracija

Da biste učitali kôd na ESP32 iz Arduino IDE-a, morate slijediti ovaj vodič:

Ploča je "WeMos LOLIN32", ali "Dev modul" takođe radi

Predlažem korištenje Visual Studija, ali često se može pokvariti.

Prije prve upotrebe

Ručicu je potrebno postaviti prema koraku "Radilica"

Pomoću aplikacije "nRF Connect" morate provjeriti MAC adresu ručice ESP32 i postaviti je u datoteku BLE.h.

U retku 19 indoorBike.ino trebate postaviti, koliko je rotacija vijka potrebno da postavite otpor od potpuno labavog do maksimalnog. ("Maksimum" je namjerno subjektivan, s ovom postavkom prilagođavate poteškoće.)

Pametni trener ima "virtualne zupčanike" za pravilno postavljanje, morate ga kalibrirati na linijama 28 i 29. Morate pedalirati s konstantnom ritmom na zadanoj postavci otpora, zatim pročitati snagu i postaviti je u datoteku. Ponovite ovo ponovo s drugom postavkom.

Krajnje lijevo dugme prebacuje se iz načina rada ERG (apsolutni otpor) u način simulacije (virtualni zupčanici). Način simulacije bez računarske veze ne radi ništa jer nema simulacijskih podataka.

Red 36. postavlja virtualne zupčanike - broj i omjere. Izračunavate ih dijeljenjem broja zuba u prednjem zupčaniku s brojem zuba u stražnjem zupčaniku.

U liniju 12. stavljate težinu vozača i bicikla (U [newtons], masa pomnožena s gravitacijskim ubrzanjem!)

Cijeli dio iz fizike je vjerojatno previše kompliciran i čak se i ne sjećam što točno radi, ali izračunavam potreban zakretni moment da biciklistu povučem uzbrdo ili nešto slično (zato kalibracija).

Ovi parametri su vrlo subjektivni, morate ih postaviti nakon nekoliko vožnji kako bi radili ispravno.

COM port za otklanjanje grešaka šalje direktne binarne podatke primljene preko bluetootha u navodnicima ('') i podatke simulacije.

Konfigurator

Budući da se konfiguracija navodno realne fizike pokazala kao velika gnjavaža kako bi se učinila realnom, stvorio sam GUI konfigurator koji bi trebao omogućiti korisnicima da grafički definiraju funkciju koja se pretvara s nagiba brda u apsolutni nivo otpora. Još nije u potpunosti dovršen i nisam imao priliku testirati ga, ali u narednih mjesec dana pretvarat ću drugi bicikl, pa ću ga tada ispolirati.

Na kartici "Gears" možete postaviti omjer svakog stupnja prijenosa pomicanjem klizača. Zatim morate kopirati bitni kod kako biste zamijenili definirane zupčanike u kodu.

Na kartici "Ocjena" dobivate grafikon linearne funkcije (da, ispostavlja se da je najomraženiji predmet iz matematike zapravo koristan) koji uzima ocjenu (okomita os) i daje korake apsolutnog otpora (vodoravna os). Za zainteresovane ću se malo pozabaviti matematikom.

Korisnik može definirati ovu funkciju pomoću dvije točke koje leže na njoj. S desne strane postoji mjesto za promjenu trenutne brzine. Odabrani stupanj prijenosa, kao što možete zamisliti, mijenja način, način ocjenjivanja na otpor - na nižim brzinama lakše je pedalirati uzbrdo. Pomicanjem klizača mijenja se drugi koeficijent, koji utječe na to kako odabrani stupanj prijenosa mijenja funkciju. Najlakše je igrati se s njim neko vrijeme kako biste vidjeli kako se ponaša. Možda ćete također morati isprobati nekoliko različitih postavki da pronađete ono što vam najbolje odgovara.

Napisan je u Pythonu 3 i trebao bi raditi sa zadanim bibliotekama. Da biste ga koristili, morate otkomentirati redove odmah nakon "raskomentirajte ove retke da biste koristili konfigurator". Kao što sam rekao, nije testirano, pa bi moglo biti grešaka, ali ako se nešto pojavi, napišite komentar ili otvorite problem kako bih to mogao ispraviti.

Matematika (i fizika)

Jedini način na koji kontroler može stvoriti osjećaj kao da idete uzbrdo je okretanjem otpora zavrtnja. Moramo pretvoriti ocjenu u broj rotacija. Radi lakšeg postavljanja, cijeli raspon od potpuno labavog do nemogućnosti okretanja ručice podijeljen je u 40 koraka, isto što se koristi u ERG načinu rada, ali ovaj put koristi stvarne brojeve umjesto cijelih brojeva. To se radi pomoću jednostavne funkcije karte - možete je potražiti u kodu. Sada smo korak više - umjesto da se bavimo okretajima vijka, mi se bavimo zamišljenim koracima.

Kako to zapravo funkcionira kada se biciklom penjete uzbrdo (pod pretpostavkom konstantne brzine)? Očigledno mora postojati neka sila koja vas tjera prema gore, inače ćete se otkotrljati. Ova sila, kako nam govori prvi zakon kretanja, mora biti jednaka po veličini, ali suprotna po smjeru sili koja vas vuče prema dolje, kako biste bili u jednolikom gibanju. Dolazi od trenja između kotača i tla, a ako nacrtate dijagram ovih sila, mora biti jednaka težini bicikla i vozaču puta ocjeni:

F = Fg*G

Šta tjera kotač da primijeni ovu silu? Kako se bavimo zupčanicima i kotačima, lakše je razmišljati o zakretnom momentu, koji je jednostavno sila puta radijus:

t = F*R

Kako su u pitanju zupčanici, ručici se daje okretni moment koji povlači lanac i okreće kotač. Okretni moment potreban za okretanje kotača množi se s prijenosnim omjerom:

tp = tw*gr

i natrag iz formule zakretnog momenta dobivamo silu potrebnu za okretanje pedale

Fp = tp/r

To je nešto što možemo mjeriti pomoću mjerača snage u radilici. Kako je dinamičko trenje linearno povezano sa silom i kako ovaj bicikl koristi opruge za prijenos te sile, linearno je prema kretanju vijka.

Moć je sila puta brzina (pretpostavljajući isti smjer vektora)

P = F*V

a linearna brzina pedale povezana je s kutnom brzinom:

V = ω*r

i tako možemo izračunati silu potrebnu za okretanje pedala na zadanu razinu otpora. Kako je sve linearno povezano, za to možemo koristiti proporcije.

To je u osnovi bilo ono što je softver trebao izračunati tijekom kalibracije i korištenjem kružnog toka da bismo dobili složeni kompozit, ali linearnu funkciju koja se odnosi na stupanj otpora. Napisao sam sve na papiru, izračunao konačnu jednadžbu i sve konstante postale su tri koeficijenta.

Ovo je tehnički 3D funkcija koja predstavlja ravninu (mislim) koja uzima ocjenu i omjer prijenosa kao argumente, a ova tri koeficijenta su povezana s onima potrebnim za definiranje ravnine, ali kako su zupčanici diskretni brojevi, bilo je lakše da to bude parametar umjesto bavljenja projekcijama i slično. Prvi i treći koeficijent mogu se definirati jednom linijom, a (-1)* drugi koeficijent je X koordinata točke, gdje se linija "okreće" okolo pri promjeni stupnjeva prijenosa.

U ovoj vizualizaciji argumenti su predstavljeni okomitom linijom, a vrijednosti vodoravnom, i znam da bi to moglo biti neugodno, ali meni je to bilo intuitivnije i bolje je odgovaralo grafičkom sučelju. To je vjerovatno razlog zašto ekonomisti crtaju svoje grafikone na ovaj način.

Korak 5: Završite

Sada su vam potrebne neke aplikacije za vožnju na vašem novom trenažeru (čime ste uštedjeli oko 900 USD:)). Evo mojih mišljenja o nekima od njih.

  • RGT Biciklizam - po meni najbolji - ima potpuno besplatnu opciju, ali ima malo pjesama. Najbolji dio se odnosi na dio povezivanja, jer se vaš telefon povezuje putem Bluetootha, a računalo prikazuje pjesmu. Koristi realan video zapis s AR biciklistom
  • Rouvy - puno pjesama, samo plaćena pretplata, iz nekog razloga PC aplikacija ne radi s ovim, morate koristiti telefon. Mogući su problemi kada vaš laptop koristi istu karticu za bluetooth i WiFi, često zaostaje i ne želi se učitati
  • Zwift - animirana igra, samo plaćena, radi prilično dobro s trenerom, ali korisničko sučelje je prilično primitivno - pokretač koristi Internet Explorer za prikaz izbornika.

Ako vam se svidjela izrada (ili ne), recite mi u komentarima, a ako imate bilo kakvih pitanja, možete ih postaviti ovdje ili poslati problem githubu. Rado ću vam sve objasniti jer je prilično komplicirano.

Preporučuje se: