Inhoudsopgave:

Eenvoudig Arduino-gebaseerd ergometerdisplay met differentiële feedback - Ajarnpa
Eenvoudig Arduino-gebaseerd ergometerdisplay met differentiële feedback - Ajarnpa

Video: Eenvoudig Arduino-gebaseerd ergometerdisplay met differentiële feedback - Ajarnpa

Video: Eenvoudig Arduino-gebaseerd ergometerdisplay met differentiële feedback - Ajarnpa
Video: 30 невероятных проектов Arduino, которые вы должны попробовать 2024, November
Anonim
Eenvoudig Arduino-gebaseerd ergometerdisplay met differentiële feedback
Eenvoudig Arduino-gebaseerd ergometerdisplay met differentiële feedback
Eenvoudig Arduino-gebaseerd ergometerdisplay met differentiële feedback
Eenvoudig Arduino-gebaseerd ergometerdisplay met differentiële feedback
Eenvoudig Arduino-gebaseerd ergometerdisplay met differentiële feedback
Eenvoudig Arduino-gebaseerd ergometerdisplay met differentiële feedback

Cardio-training is saai, vooral als je binnenshuis traint. Verschillende bestaande projecten proberen dit te verlichten door coole dingen te doen, zoals het koppelen van de ergometer aan een gameconsole, of zelfs het simuleren van een echte fietstocht in VR. Hoe opwindend deze ook zijn, technisch gezien helpen ze niet echt veel: trainen is nog steeds saai. Dus in plaats daarvan wil ik tijdens het trainen gewoon een boek kunnen lezen of tv kunnen kijken. Maar dan is het moeilijk om een constant tempo aan te houden.

Het idee hier is om je op het laatste probleem te concentreren en directe feedback te geven of je huidige trainingsniveau goed genoeg is, of dat je wat meer moeite moet doen. Het niveau "goed genoeg" varieert echter niet alleen per persoon, maar ook in de tijd (op lange termijn, naarmate je beter wordt, maar ook binnen een trainingssessie: het is bijvoorbeeld bijna onmogelijk om op volle snelheid te gaan voordat je opgewarmd). Daarom is het idee achter dit project simpelweg om a) de vorige run en b) de beste run (ook wel highscore genoemd) vast te leggen en vervolgens directe feedback te geven over hoe je het momenteel doet in vergelijking met die runs.

Als dat een beetje abstract klinkt, ga dan naar stap 7 voor details over wat het voltooide scherm zal tonen

Een ander doel van dit project is om dingen heel eenvoudig en goedkoop te houden. Afhankelijk van waar je je onderdelen bestelt, kun je dit project voltooien voor ongeveer $ 5 (of ongeveer 30 $ wanneer je bestelt bij premium binnenlandse verkopers), en als je eerder met de Arduino-omgeving hebt gespeeld, is de kans redelijk groot dat je al hebben de meeste of alle onderdelen die u nodig hebt.

Stap 1: Onderdelenlijst

Onderdelen lijst
Onderdelen lijst

Laten we de lijst met dingen die je nodig hebt doornemen:

Een Arduino-compatibele microprocessor

Vrijwel elke Arduino die de afgelopen jaren is verkocht, is geschikt. De exacte variant (Uno / Nano / Pro Mini, 8 of 16 MHz, 3.3. of 5V) maakt niet uit. U hebt echter een ATMEGA328-processor of beter nodig, omdat we bijna 2k RAM en 1k EEPROM zullen gebruiken. Als je bekend bent met de ins en outs van de Arduino-wereld, raad ik aan om een Pro Mini van 3,3 V te gebruiken, omdat deze het goedkoopst en meest batterij-efficiënt is. Als Arduino (relatief) nieuw voor je is, raad ik een "Nano" aan omdat deze dezelfde functionaliteit biedt als een "Uno" in een kleiner en goedkoper pakket.

Merk op dat deze instructable je niet door de basis zal leiden. Je moet op zijn minst de Arduino-software hebben geïnstalleerd en weten hoe je je Arduino moet aansluiten en een schets moet uploaden. Als je geen idee hebt waar ik het over heb, lees dan eerst deze twee eenvoudige tutorials: Ten eerste, ten tweede.

Een 128*64 pixel SSD1306 OLED-display (I2C-variant, d.w.z. vier pinnen)

Dit is een van de goedkoopste en gemakkelijkste displays die momenteel beschikbaar zijn. Akkoord, het is klein, maar goed genoeg. Als je al een scherm hebt met een vergelijkbare of betere resolutie, is het natuurlijk mogelijk om dat in plaats daarvan te gebruiken, maar deze instructable is geschreven voor een SSD1306.

  • Een "soldeerloze breadboard" en wat jumperdraad, voor het bouwen van je prototype
  • Een keramische condensator van 100 nF (al dan niet nodig; zie stap 4)
  • Ofwel wat croc-clips, of een magneet, een reed-schakelaar en wat kabel (zie stap 4)
  • Een rode en een groene LED, elk (optioneel; zie stap 5)
  • Twee 220Ohm-weerstanden (bij gebruik van de LED's)
  • Een drukknop (ook optioneel)
  • Een geschikte batterij (zie stap 6)

Stap 2: Het beeldscherm aansluiten

Het beeldscherm aansluiten
Het beeldscherm aansluiten

Als eerste zullen we het display aansluiten op de Arduino. Gedetailleerde instructies zijn beschikbaar. De SSD1306 is echter heel eenvoudig aan te sluiten:

  1. Geef VCC weer -> Arduino 3.3V of 5V (beide zullen doen)
  2. Gnd weergeven -> Arduino Gnd
  3. SCL weergeven -> Arduino A5
  4. SCA weergeven -> Arduino A4

Ga vervolgens in uw Arduino-omgeving naar Sketch->Bibliotheek opnemen->Beheer bibliotheken en installeer "Adafruit SSD1306". Helaas moet u de bibliotheek bewerken om deze voor de 128*64 pixelvariant te configureren: zoek uw arduino-map "bibliotheken" en bewerk "Adafruit_SSD1306/Adafruit_SSD1306.h". Zoek naar "#define SSD1306_128_32", schakel die regel uit en schakel in plaats daarvan "#define SSD1306_128_64" in.

Op dit punt moet u Bestand->Voorbeelden->Adafruit SSD1306->ssd1306_128x64_i2c laden om te testen of uw beeldscherm correct is aangesloten. Houd er rekening mee dat u mogelijk het I2C-adres moet aanpassen. 0x3C lijkt de meest voorkomende waarde te zijn.

Raadpleeg bij problemen de meer gedetailleerde instructies.

Stap 3: Upload de schets

Als alles tot nu toe werkte, is het nu tijd om de eigenlijke schets naar je Arduino te uploaden. Hieronder vindt u een kopie van de schets. Raadpleeg de github-projectpagina voor een mogelijk recentere versie. (Aangezien dit een schets van een enkel bestand is, volstaat het om het bestand erogmetrino.ino naar uw Arduino-venster te kopiëren).

Mocht u in de vorige stap het I2C-adres hebben moeten wijzigen, dan moet u dezelfde aanpassing nu opnieuw maken in de regel die begint met "display.begin".

Na het uploaden zou u enkele nullen op uw display moeten zien verschijnen. We zullen kijken naar de betekenis van de verschillende secties van het scherm, nadat al het andere is aangesloten.

Merk op dat bij de allereerste start, het display nogal langzaam oplicht (kan tot ongeveer tien seconden duren), omdat de schets eerst alle gegevens die in de EEPROM zijn opgeslagen, op nul zet.

Stap 4: De Ergometer aansluiten

De ergometer aansluiten
De ergometer aansluiten

Deze stap kan niet echt universeel worden beschreven, aangezien niet alle ergometers hetzelfde zijn. Ze zijn echter ook niet allemaal verschillend. Als uw ergometer überhaupt een elektronische snelheidsweergave heeft, moet deze een elektronische sensor hebben om ergens omwentelingen van de pedalen of een (mogelijk intern) vliegwiel te detecteren. In veel gevallen zal dat gewoon bestaan uit een magneet die dicht bij een reed-schakelaar passeert (zie ook hieronder). Elke keer dat de magneet passeert, zal de schakelaar sluiten, wat een omwenteling aangeeft op het snelheidsdisplay.

Het eerste dat u moet doen, is de snelheidsweergave op uw ergometer controleren op binnenkomende kabels. Als je ergens een tweeaderige kabel uit de ergometer ziet komen, heb je vrijwel zeker de verbinding met de sensor gevonden. En met een beetje geluk kun je dit eenvoudig loskoppelen en het gewoon op je Arduino aansluiten met wat croc-clips (ik zal je zo vertellen op welke pinnen je moet aansluiten).

Als u echter zo'n kabel niet kunt vinden, twijfelt u of u de juiste hebt gevonden, of als u hem niet kunt loskoppelen zonder iets te beschadigen, kunt u eenvoudig een kleine magneet op een van de pedalen plakken en een reed-schakelaar aan het frame van uw erogmeter bevestigen, zodat de magneet er heel dichtbij langs zal gaan. Sluit twee draden aan op de schakelaar en leid ze naar je Arduino.

Verbind de twee draden (of uw eigen of die van een bestaande sensor) gaat naar Arduino Gnd en Arduino pin D2. Als je er een bij de hand hebt, sluit dan ook de 100nF-condensator aan tussen pin D2 en Gnd voor wat "debouncing". Dit kan al dan niet nodig zijn, maar helpt om de meetwaarden te stabiliseren.

Als je klaar bent, is het tijd om je Arduino aan te zetten en op de fiets te springen voor een eerste snelle test. Het nummer linksboven zou een snelheidsmaat moeten weergeven. Als dit niet werkt, controleer dan alle bedrading en zorg ervoor dat de magneet zich dicht genoeg bij de reed-schakelaar bevindt. Als de snelheidsmaat constant te hoog of te laag lijkt, pas dan gewoon de "CM_PER_CLICK"-definitie aan de bovenkant van de schets aan (let op: de schets gebruikt metrische namen, maar er worden nergens eenheden weergegeven of opgeslagen, dus negeer dat gewoon, en leveren 100.000ste van een mijl per klik).

Stap 5: Optionele Quick Status-LED's

Optionele snelle status-LED's
Optionele snelle status-LED's

De LED's die in deze stap worden beschreven zijn optioneel, maar netjes: als je serieus een boek wilt lezen / tv wilt kijken tijdens het sporten, wil je niet te veel naar het display moeten staren. Maar twee LED's in verschillende kleuren zullen gemakkelijk opvallen in het perifere zicht en zullen voldoende zijn om u een ruw idee te geven van hoe u ervoor staat.

  • Sluit de eerste (rode) LED aan op pin D6 (de langere poot van de LED gaat naar de Arduino). Verbind het korte been van de LED met Gnd via een 220Ohm weerstand. Deze LED gaat branden wanneer je 10% of meer onder je beste snelheid zit in de huidige fase van de training. Tijd om wat meer moeite te doen!
  • Sluit de tweede (groene) LED aan op pin D5, opnieuw met een weerstand op Gnd. Deze LED gaat branden wanneer u binnen 1% of meer van uw beste run bent. Je doet het goed!

Wil je dat de LED's oplichten afhankelijk van hoe je het doet in vergelijking met je vorige run, of een willekeurige gemiddelde snelheid? Wel, sluit gewoon een drukknop aan tussen pin D4 en Gnd. Met behulp van die knop kunt u schakelen tussen "uw beste run", "uw vorige run" of "uw huidige snelheid". Een kleine letter "P" of "C" in de linkerbenedenhoek geeft de laatste twee modi aan.

Stap 6: Uw ergometer-display van stroom voorzien

Uw ergometer-display van stroom voorzien
Uw ergometer-display van stroom voorzien

Er zijn veel manieren om uw scherm van stroom te voorzien, maar ik zal er twee noemen die praktischer lijken dan andere:

  1. Wanneer u een Arduino Uno of Nano gebruikt, wilt u deze waarschijnlijk van stroom voorzien met een USB-powerbank met ingebouwde indicatie voor een bijna lege batterij.
  2. Bij gebruik van een Arduino Pro Mini @ 3.3V (mijn aanbeveling voor gevorderde gebruikers), kun je die rechtstreeks voeden met een enkele LiPo-batterij of drie NiMH-cellen. Aangezien de ATMEGA voedingsspanningen tot 5,5V kan verdragen, kunt u deze rechtstreeks op "VCC/ACC" aansluiten, waarbij de ingebouwde spanningsregelaar wordt omzeild. In deze opstelling zal er ook een "lage batterij"-waarschuwing zijn bij ongeveer 3,4V, zonder extra hardware (weergegeven in de rechter benedenhoek). Aangezien van de ATMEGA kan worden verwacht dat hij correct werkt, in ieder geval tot 3,0 V of zo, zou u voldoende tijd moeten hebben om uw trainingseenheid af te maken voordat u hem oplaadt.

Stap 7: Uw ergometer-display gebruiken

Uw ergometer-display gebruiken
Uw ergometer-display gebruiken
Uw ergometer-display gebruiken
Uw ergometer-display gebruiken

Laten we de verschillende cijfers op uw display eens nader bekijken. Het grotere getal linksboven is gewoon je huidige snelheid en het grotere getal rechtsboven is de totale afstand in je huidige training.

De volgende regel is je gemiddelde snelheid sinds de start van de training (links) en de tijd sinds de start van de training (rechts). Merk op dat de timing wordt gestopt terwijl de fiets is gestopt.

Tot zover triviaal. De twee verdere regels aan de rechterkant zijn waar het interessant wordt: deze vergelijken je huidige timing met respectievelijk je vorige en beste training. D.w.z. een "- 0:01:23" in de bovenste van deze lijnen betekent dat je je huidige afstand 1 minuut en 23 seconden eerder hebt bereikt dan tijdens je vorige run. Mooi zo. Een onderste regel van "+ 0:00:12" betekent dat u tot aan het huidige punt 12 seconden achterloopt op uw beste run. (Merk op dat deze differentiële tijden niet 100% exact zullen zijn. Tijdspunten worden elke 0,5 km / mijl opgeslagen en daartussen geïnterpoleerd.) Het is natuurlijk onvermijdelijk dat bij uw eerste run nog geen tijdreferenties zijn vastgelegd, en dus beide bovenstaande regels zullen alleen "--:--:--" tonen.

Ten slotte bevat het linkerondergedeelte van het display een grafiek van uw snelheid in de afgelopen minuut. Zo kunt u in één oogopslag zien of u rustig of langzamer rijdt. (Merk op dat deze lijn veel vloeiender zal zijn in echte training - maar het is gewoon niet gemakkelijk om een constant tempo aan te houden terwijl je probeert een foto te maken…) Horizontale lijnen geven de vorige/beste snelheid aan die je bereikte in de buurt van het huidige punt van je vorige trainingen.

De LED's die bovenaan zijn gemonteerd, vergelijken uw huidige snelheid met uw beste snelheid tijdens deze fase van de training. Groen laat zien dat je binnen 1% van je beste bent, rood geeft aan dat je meer dan 10% langzamer bent dan je beste training. Als je het rode licht ziet, is het tijd om wat meer moeite te doen. Merk op dat, in tegenstelling tot de hierboven beschreven differentiële tijden, deze alleen betrekking hebben op het huidige deel van de training, d.w.z. het is mogelijk dat u in absolute tijd achterloopt, maar groen geeft aan dat u aan het inhalen bent en vice versa.

De referentiesnelheid die voor de twee LED's wordt gebruikt, kan worden gewijzigd met behulp van de drukknop. Met één druk op de knop schakelt u over van de beste naar de vorige opgenomen training (een kleine letter "P" verschijnt linksonder). Nog een keer drukken en uw huidige snelheid op het moment dat u op de knop drukt, wordt de nieuwe referentiesnelheid (een kleine letter "C" wordt weergegeven). Dat laatste is vooral handig tijdens je eerste training met je nieuwe ergometerdisplay, als er nog geen referentie is vastgelegd.

Als u klaar bent met uw training, koppelt u gewoon de batterij los. Je training is al opgeslagen in de interne EEPROM van je Arduino.

Zoals je kunt zien, heb ik uiteindelijk mijn prototype gesoldeerd. Zeker een teken dat ik het resultaat zelf mooi vond. Ik hoop dat u het ook nuttig zult vinden. Veel plezier met sporten!

Aanbevolen: