Innholdsfortegnelse:

Enkel Arduino-basert ergometervisning med differensiell tilbakemelding: 7 trinn (med bilder)
Enkel Arduino-basert ergometervisning med differensiell tilbakemelding: 7 trinn (med bilder)

Video: Enkel Arduino-basert ergometervisning med differensiell tilbakemelding: 7 trinn (med bilder)

Video: Enkel Arduino-basert ergometervisning med differensiell tilbakemelding: 7 trinn (med bilder)
Video: Где найти примеры правильной разводки печатной платы? Ti, STM, Microchip 2024, November
Anonim
Enkel Arduino-basert ergometervisning med differensiell tilbakemelding
Enkel Arduino-basert ergometervisning med differensiell tilbakemelding
Enkel Arduino-basert ergometervisning med differensiell tilbakemelding
Enkel Arduino-basert ergometervisning med differensiell tilbakemelding
Enkel Arduino-basert ergometervisning med differensiell tilbakemelding
Enkel Arduino-basert ergometervisning med differensiell tilbakemelding

Kardio-trening er kjedelig, spesielt når du trener innendørs. Flere eksisterende prosjekter prøver å lindre dette ved å gjøre kule ting som å koble ergometeret til en spillkonsoll, eller til og med simulere en ekte sykkeltur i VR. Spennende som disse er, teknisk sett hjelper de egentlig ikke så mye: Trening er fortsatt kjedelig. Så i stedet vil jeg bare kunne lese en bok eller se på TV mens jeg trener. Men da er det vanskelig å holde et jevnt tempo.

Tanken her er å fokusere på det sistnevnte problemet, og gi direkte tilbakemelding på om ditt nåværende treningsnivå er bra nok, eller om du bør legge ned mer innsats. Imidlertid vil det "gode nok" nivået variere ikke bare per person, men også over tid (på sikt, etter hvert som du blir bedre, men også innen en treningsøkt: for eksempel er det nesten umulig å gå i full fart før du har varmet opp). Derfor er tanken bak dette prosjektet ganske enkelt å registrere a) forrige runde og b) det beste løpet (aka highscore), og deretter gi direkte tilbakemelding på hvordan du har det for øyeblikket sammenlignet med disse løpene.

Hvis det høres litt abstrakt ut, gå til trinn 7 for detaljer om hva den ferdige skjermen vil vise

Et ytterligere mål med dette prosjektet er å holde ting veldig enkelt og billig. Avhengig av hvor du bestiller delene dine, kan du fullføre dette prosjektet for rundt $ 5 (eller omtrent 30 $ når du bestiller fra premium innenlandske selgere), og hvis du har spilt med Arduino -miljøet før, er det en ganske god sjanse for at du allerede har de fleste eller alle delene du trenger.

Trinn 1: Delliste

Deleliste
Deleliste

La oss gå gjennom listen over ting du trenger:

En Arduino -kompatibel mikroprosessor

Stort sett enhver Arduino som er solgt i løpet av de siste årene vil gjøre. Den eksakte varianten (Uno / Nano / Pro Mini, 8 eller 16 MHz, 3.3. Eller 5V) spiller ingen rolle. Du trenger imidlertid en ATMEGA328 -prosessor eller bedre, fordi vi bruker nesten 2k RAM og 1k EEPROM. Hvis du er kjent med inn og ut av Arduino -verdenen, anbefaler jeg å bruke en Pro Mini på 3.3V, da den vil være billigst og mest batterieffektiv. Hvis du er (relativt) ny på Arduino, anbefaler jeg en "Nano" da den gir samme funksjonalitet som en "Uno" i en mindre og billigere pakke.

Vær oppmerksom på at denne instruksen ikke vil snakke deg gjennom det grunnleggende. Du bør i det minste ha Arduino -programvaren installert, og vite hvordan du kobler til Arduino og laster opp en skisse. Hvis du ikke aner hva jeg snakker om, les disse to enkle opplæringsprogrammene: Først, andre.

En 128*64 piksler SSD1306 OLED -skjerm (I2C -variant, dvs. fire pinner)

Dette er en av de billigste og enkleste skjermer som er tilgjengelige i dag. Enig, den er liten, men god nok. Selvfølgelig, hvis du allerede har en skjerm med lignende eller bedre oppløsning, vil det i stedet være mulig å bruke det, men denne instruksen er skrevet for en SSD1306.

  • Et "loddeløst brødbrett" og litt hoppetråd, for å bygge prototypen din
  • En 100nF keramisk kondensator (kan være nødvendig eller ikke nødvendig; se trinn 4)
  • Enten noen croc-clips, eller en magnet, en sivbryter og en kabel (se trinn 4)
  • En rød og en grønn LED, hver (valgfritt; se trinn 5)
  • To 220Ohm motstander (hvis du bruker lysdiodene)
  • En trykknapp (også valgfri)
  • Et passende batteri (se trinn 6)

Trinn 2: Koble til skjermen

Koble til skjermen
Koble til skjermen

Som det første kobler vi skjermen til Arduino. Detaljerte instruksjoner er tilgjengelige. Imidlertid er SSD1306 veldig lett å koble til:

  1. Skjerm VCC -> Arduino 3.3V eller 5V (begge vil gjøre)
  2. Vis Gnd -> Arduino Gnd
  3. Skjerm SCL -> Arduino A5
  4. Skjerm SCA -> Arduino A4

Deretter går du i Arduino-miljøet til Skisse-> Inkluder bibliotek-> Administrer biblioteker og installerer "Adafruit SSD1306". Dessverre må du redigere biblioteket for å konfigurere det for varianten 128*64 piksler: Finn arduino "biblioteker" -mappen din, og rediger "Adafruit_SSD1306/Adafruit_SSD1306.h". Søk etter "#define SSD1306_128_32", deaktiver den linjen, og aktiver "#define SSD1306_128_64" i stedet.

På dette tidspunktet bør du laste inn Fil-> Eksempler-> Adafruit SSD1306-> ssd1306_128x64_i2c for å teste at skjermen er riktig tilkoblet. Vær oppmerksom på at du kanskje må justere I2C-adressen. 0x3C ser ut til å være den vanligste verdien.

I tilfelle problemer, se de mer detaljerte instruksjonene.

Trinn 3: Last opp skissen

Hvis alt fungerte, så langt, er det nå på tide å laste opp selve skissen til din Arduino. Du finner en kopi av skissen nedenfor. For en potensielt nyere versjon, se github -projektsiden. (Siden dette er en enkelt filskisse, er det nok å bare kopiere erogmetrino.ino -filen til Arduino -vinduet).

Skulle du ha måttet endre I2C -adressen i forrige trinn, må du gjøre den samme justeringen igjen, nå, i linjen som begynner med "display.begin".

Etter opplasting bør du se noen nuller på skjermen. Vi ser på betydningen av de forskjellige delene av skjermen, etter at alt annet er koblet til.

Vær oppmerksom på at ved den aller første starten vil displayet være ganske tregt til å lyse (kan ta opptil ti sekunder), siden skissen vil nullstille alle data som er lagret i EEPROM først.

Trinn 4: Koble til ergometeret

Koble til ergometeret
Koble til ergometeret

Dette trinnet kan egentlig ikke beskrives universelt, siden ikke alle ergometre er like. Imidlertid er de ikke alle forskjellige, heller. Hvis ergometeret ditt i det hele tatt inkluderer en elektronisk hastighetsvisning, må den ha en elektronisk sensor for å oppdage rotasjoner av pedalene, eller et (muligens internt) svinghjul, et sted. I mange tilfeller vil det ganske enkelt bestå av en magnet som passerer nær en sivbryter (se også nedenfor). Hver gang magneten passerer, vil bryteren stenge og signalisere en omdreining til hastighetsvisningen.

Det første du bør gjøre er å undersøke hastighetsvisningen på ergometeret for innkommende kabler. Hvis du finner en totrådskabel som kommer et sted fra ergometeret, har du nesten helt sikkert funnet forbindelsen til sensoren. Og med litt flaks kan du ganske enkelt koble fra denne, og bare koble den til Arduinoen din med noen croc-klipp (jeg skal fortelle deg hvilke pins du skal koble til på et minutt).

Men hvis du ikke finner en slik kabel, føler deg usikker på om du fant den riktige, eller hvis du ikke kan koble den fra uten å skade noe, kan du bare tape en liten magnet på en av pedalene og fikse en sivbryter til erogmeterets ramme slik at magneten vil passere den veldig tett. Koble to ledninger til bryteren og før dem til Arduino.

Koble de to ledningene (enten dine egne eller de fra en eksisterende sensor) går til Arduino Gnd og Arduino pin D2. Hvis du har en på hånden, kobler du også 100nF kondensatoren mellom pin D2 og Gnd for noen "debouncing". Dette er kanskje eller ikke nødvendig, men hjelper til med å stabilisere avlesningene.

Når du er ferdig, er det på tide å slå på Arduino og hoppe på sykkelen for en første rask test. Nummeret øverst til venstre skal begynne å vise et hastighetsmål. Hvis dette ikke fungerer, må du kontrollere alle ledninger og kontrollere at magneten er nær nok til sivbryteren. Hvis hastighetsmålet konsekvent virker for høyt eller for lavt, kan du bare justere definisjonen "CM_PER_CLICK" nær toppen av skissen (merk: skissen bruker metriske navn, men ingen enheter vises eller lagres hvor som helst, så ignorer det og levere 100.000 hundredeler av en kilometer per klikk).

Trinn 5: Valgfrie lysdioder for hurtigstatus

Valgfrie lysdioder for hurtigstatus
Valgfrie lysdioder for hurtigstatus

Lysdiodene som er beskrevet i dette trinnet er valgfrie, men fine: Hvis du er seriøs om å lese en bok / se på TV mens du trener, vil du ikke måtte stirre for mye på skjermen. Men to lysdioder i forskjellige farger vil lett merkes i perifert syn, og vil være nok til å gi deg en grov ide om hvordan du har det.

  • Koble den første (røde) lysdioden til pinne D6 (den lengre etappen på LED -en går til Arduino). Koble det korte benet til LED -en til Gnd via en 220Ohms -motstand. Denne LED -lampen lyser når du er 10% eller mer under din beste hastighet i den nåværende fasen av treningen. På tide å gjøre litt mer innsats!
  • Koble den andre (grønne) LED -en til pin D5, igjen med en motstand til Gnd. Denne LED -lampen lyser når du er innenfor 1%eller over ditt beste løp. Du har det bra!

Du vil at lysdiodene skal lyse avhengig av hvordan du har det i forhold til forrige løp, eller en vilkårlig gjennomsnittlig hastighet? Bare koble til en trykknapp mellom pin D4 og Gnd. Ved å bruke denne knappen kan du veksle mellom "ditt beste løp", "ditt forrige løp" eller "din nåværende hastighet". En liten bokstav "P" eller "C" i nedre venstre hjørne vil betegne de to sistnevnte modusene.

Trinn 6: Slå på Ergometer -skjermen

Slå på Ergometer -skjermen
Slå på Ergometer -skjermen

Det er mange måter å drive skjermen på, men jeg vil påpeke to som virker mer praktiske enn andre:

  1. Når du bruker en Arduino Uno eller Nano, vil du sannsynligvis drive den med en USB-strømbank med innebygd indikasjon på lavt batteri.
  2. Når du bruker en Arduino Pro Mini @ 3.3V (min anbefaling for avanserte brukere), kan du drive den direkte fra enten et enkelt LiPo -batteri eller tre NiMH -celler. Siden ATMEGA tåler forsyningsspenninger på opptil 5,5V, kan du koble dette til "VCC/ACC" direkte, omgå den innebygde spenningsregulatoren. I dette oppsettet vil det også være en advarsel om "lavt batteri" på rundt 3,4V, uten ekstra maskinvare (vist i nedre høyre hjørne). Ettersom ATMEGA kan forventes å fungere riktig, i det minste ned til 3,0V eller så, bør det gi deg nok tid til å fullføre treningsenheten før du lader.

Trinn 7: Bruke Ergometer -skjermen

Bruke Ergometer -skjermen
Bruke Ergometer -skjermen
Bruke Ergometer -skjermen
Bruke Ergometer -skjermen

La oss se nærmere på de forskjellige tallene på skjermen. Det større antallet øverst til venstre er ganske enkelt din nåværende hastighet, og det større tallet øverst til høyre er den totale distansen i din nåværende trening.

Neste linje er gjennomsnittshastigheten din siden starten på treningen (venstre), og tiden siden treningen startet (høyre). Vær oppmerksom på at timingen stoppes mens sykkelen er stoppet.

Så langt så trivielt. De to ytterligere linjene på høyre side er der det blir interessant: Disse sammenligner din nåværende timing med henholdsvis din tidligere og beste trening. Dvs. a "- 0:01:23" øverst på disse linjene vil bety at du har nådd din nåværende distanse 1 minutt og 23 sekunder tidligere enn på forrige løp. God. En nedre linje på "+ 0:00:12" vil bety at du til nåværende punkt henger 12 sekunder bak ditt beste løp. (Vær oppmerksom på at disse differensialtidene ikke vil være 100% eksakte. Tidspunkter lagres hver.5 km / mil, og interpoleres mellom det.) Selvfølgelig, selvsagt, under ditt første løp, er det ikke registrert noen tidsreferanser ennå, og så begge linjene ovenfor vil bare vise "-:-:-".

Til slutt inneholder den nedre venstre delen av displayet en graf over hastigheten din det siste minuttet. Dette lar deg se på et øyeblikk, om du går jevnt eller senker farten. (Vær oppmerksom på at denne linjen vil være mye jevnere i ekte trening - men det er rett og slett ikke lett å holde et jevnt tempo mens du prøver å ta et bilde …) Horisontale linjer indikerer den forrige / beste hastigheten du oppnådde nær gjeldende punkt i forrige treninger.

Lysdiodene montert nær toppen sammenligner din nåværende hastighet med din beste hastighet i denne fasen av treningen. Grønt viser at du er innenfor 1% av dine beste, røde viser at du er mer enn 10% tregere enn din beste trening. Når du ser det røde lyset, er det på tide å gjøre litt mer innsats. Vær oppmerksom på at i motsetning til differansetiden beskrevet ovenfor, refererer disse bare til den nåværende delen av treningen, det vil si at det er mulig at du henger etter i absolutt tid, men grønne viser at du tar igjen, og omvendt.

Referansehastigheten som brukes for de to lysdiodene kan endres med trykknappen. Ett trykk vil bytte fra best til tidligere registrert trening (en liten bokstav "P" vises nederst til venstre). Et nytt trykk og din nåværende hastighet på tidspunktet for knappetrykk blir den nye referansehastigheten (en liten bokstav "C" vises). Sistnevnte er spesielt nyttig under din første trening med det nye ergometeret, når det ikke er registrert noen referanse.

Når du er ferdig med treningen, er det bare å koble fra batteriet. Treningen din er allerede lagret i Arduinos interne EEPROM.

Som du ser endte jeg med å lodde prototypen min. Sikkert tegn på at jeg likte resultatet selv. Jeg håper du vil finne det nyttig også. God trening!

Anbefalt: