Sadržaj:

Pametni trener za unutarnje bicikle DIY: 5 koraka
Pametni trener za unutarnje bicikle DIY: 5 koraka

Video: Pametni trener za unutarnje bicikle DIY: 5 koraka

Video: Pametni trener za unutarnje bicikle DIY: 5 koraka
Video: Беслан. Помни / Beslan. Remember (english & español subs) 2024, Studeni
Anonim
Pametan trener DIY zatvoreni bicikl
Pametan trener DIY zatvoreni bicikl
Pametan trener DIY zatvoreni bicikl
Pametan trener DIY zatvoreni bicikl
Pametan trener DIY zatvoreni bicikl
Pametan trener DIY zatvoreni bicikl

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 htio riješiti bio je velik korak vijka, pa je raspon od nemogućnosti okretanja pedale do potpunog slobodnog okretanja kotača bio samo nekoliko stupnjeva na gumbu za otpor. U početku sam vijak promijenio u M6, no onda bih morao napraviti gumb, pa zašto jednostavno ne biste upotrijebili lijevi stepen NEMA 17 za mijenjanje otpora? Ako već postoji neka elektronika, zašto računalu 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 troši ovoliko vremena na pokušaj razumijevanja što točno znači "Polje vrste podataka oglasa usluge" …

Softver

Cijeli projekt je na GitHub -u:

github.com/kswiorek/ble-ftms

Toplo preporučujem korištenje Visual Studija s dodatkom VisualGDB ako namjeravate 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.

Zasluge

Hvala stoppi71 na vodiču o tome kako napraviti mjerač snage. Radionicu sam napravio prema njegovu nacrtu.

Pribor:

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. Mjerači napona
  4. MPU - žiroskop
  5. Mala Li-Po baterija (oko 750 mAh)
  6. Termoskupljajući rukav
  7. A4988 Vozač koraka
  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. Šipka M6
  3. 12864 LCD
  4. WeMos LOLIN32
  5. Taktni prekidači

Oprema

Za to biste se vjerojatno mogli izvući koristeći samo 3D pisač, međutim možete uštedjeti puno vremena laserskim rezanjem kućišta, a možete i izraditi PCB -ove. DXF i gerber datoteke nalaze se na GitHubu, pa ih možete naručiti lokalno. Spojka od navojne šipke do motora bila je okrenuta na tokarskom stroju 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ćuje izradu utora za senzore u radilici. To ih čini malo lakšim lijepljenjem i štiti ako nešto udari u ručicu. (Nekoliko puta su mi padali ti 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 stranama 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 da se leme, 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 iglice zalijepe kroz obje rupe.
  3. Zalijepite zaglavlja na ploče na vrhu
  4. Odrežite zlatne igle s dna. (Pokušajte ih prije rezanja rezati, 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. lemiti 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 izravno lemiti sve komponente na ploču, ali nedostaje mi vještina da sam lemim ove male SMD -ove. Morao bih ga naručiti sastavljenog, vjerojatno bih napravio neke pogreš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.

VAŽNO

Senzor HX711 prema zadanim postavkama postavljen je na 10Hz - mnogo je sporije za mjerenje snage. Morate podići pin 15 s ploče i spojiti ga na pin 16. Time se pin podiže i omogućuje način rada 80Hz. Usput, ovaj 80Hz postavlja brzinu cijele arduino petlje.

Upotreba

ESP32 je programiran za odlazak u san nakon 30 -ih godina bez povezanog Bluetooth uređaja. Da biste ga ponovno uključili, morate pritisnuti gumb za poništavanje. Senzori se također napajaju iz digitalnog pina, koji se u stanju mirovanja smanjuje. Ako želite testirati senzore s primjerom koda iz knjižnica, 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 papučicu). Ove vrijednosti potrebno je unijeti u powerCrank kôd.

Ručicu je najbolje tarati prije svake vožnje - ona se ne bi trebala moći tarati kad netko pedalira, već bolje nego što je žao, a moguće ju je tarati samo jednom po uključivanju. Ako primijetite neke čudne razine snage, morate ponoviti ovaj postupak:

  1. Stavite ručicu ravno dolje dok svjetlo ne počne treptati.
  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, kod je ovdje na githubu. Sve ostalo radi isto.

Korak 2: Konzola

Konzola
Konzola
Konzola
Konzola
Konzola
Konzola

Kućište je izrezano od 3 mm akrila, gumbi su 3D ispisani i postoje odstojnici za LCD, izrezani od 5 mm akrila. Zalijepljen je vrućim ljepilom (prilično se dobro lijepi za akril) i postoji 3D tiskani "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 stane u kućište

PCB zasebnog gumba 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 konektora JST PH 2.0, 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 s vijcima za pričvršćivanje osovine, a druga ima navoj M6 s vijcima za učvršćivanje. Ako želite, vjerojatno ga možete napraviti u bušilici od nekih 10 mm okruglih zaliha. Ne mora biti iznimno precizan jer motor nije postavljen jako čvrsto.

Komad M6 navojne šipke uvijen je u spojnicu i povlači mjedenu maticu M6. Strojno sam ga obrađivao, ali se isto tako lako može napraviti od komada mjedi s turpijom. Možete čak i zavariti neke komade na normalnu maticu kako se ne bi rotirala. 3D ispisana matica također može biti rješ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 za okretanje stočnog vijka.

Maticu je potrebno dobro podmazati 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đer radi

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

Prije prve uporabe

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 njihovo pravilno postavljanje, morate ga kalibrirati na linijama 28 i 29. Morate pedalirati s konstantnom kadencom na zadanoj postavci otpora, zatim pročitati snagu i postaviti je u datoteku. Ponovite ovo s drugom postavkom.

Krajnji lijevi gumb prebacuje se iz načina rada ERG (apsolutni otpor) u način simulacije (virtualni zupčanici). Način simulacije bez veze s računalom ne radi ništa jer nema simulacijskih podataka.

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

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

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

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

COM port za otklanjanje pogrešaka šalje izravne binarne podatke koje Bluetooth prima pod 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 grafičko definiranje funkcije koja se pretvara s nagiba brda u apsolutnu razinu otpora. Još nije u potpunosti dovršen i nisam ga imao priliku testirati, ali u nadolazećem mjesecu preinačit ć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, pokazalo se da je najomraženiji predmet u matematici zapravo koristan) koji uzima ocjenu (okomita os) i daje korake apsolutnog otpora (vodoravna os). Za matematičare ću malo kasnije otići u matematiku.

Korisnik može definirati ovu funkciju pomoću dvije točke na njoj. S desne strane postoji mjesto za promjenu trenutnog stupnja prijenosa. Odabrani stupanj prijenosa, kao što možete zamisliti, mijenja način, kako ocjena označava otpor - na nižim stupnjevima prijenosa 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 se igrati s njim neko vrijeme kako biste vidjeli kako se ponaša. Možda ćete također morati isprobati nekoliko različitih postavki kako biste pronašli ono što vam najbolje odgovara.

Napisan je na Pythonu 3 i trebao bi raditi sa zadanim knjižnicama. Da biste ga koristili, morate dekomentirati retke odmah nakon "raskomentirajte ove retke da biste koristili konfigurator". Kao što sam rekao, nije testirano, pa bi moglo doći do pogreš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 ocjenu pretvoriti 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 umjesto stvarnih brojeva koristi stvarne brojeve. 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 kad se biciklom penjete uzbrdo (pod pretpostavkom konstantne brzine)? Očito 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

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

t = F*R

Budući da su u pitanju zupčanici, ručici se daje okretni moment koji povlači lanac i okreće kotač. Zakretni 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.

Snaga 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 komplicirani 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 ta tri koeficijenta povezana su s onima potrebnima za definiranje ravnine, ali kako su zupčanici diskretni brojevi, bilo je lakše učiniti parametrom umjesto da se bavi 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 vjerojatno razlog zašto ekonomisti na ovaj način crtaju svoje grafikone.

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 je dio spoja jer se vaš telefon povezuje putem Bluetootha, a računalo prikazuje pjesmu. Koristi realističan video zapis s AR biciklistom
  • Rouvy - puno pjesama, samo plaćena pretplata, iz nekog razloga aplikacija za računalo ne radi s tim, morate koristiti telefon. Mogući su problemi kada vaše prijenosno računalo 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 sve objasniti jer je prilično komplicirano.

Preporučeni: