Mundarija:

Arduino-ga asoslangan oddiy ergometrli displey, differentsial teskari aloqa: 7 qadam (rasmlar bilan)
Arduino-ga asoslangan oddiy ergometrli displey, differentsial teskari aloqa: 7 qadam (rasmlar bilan)

Video: Arduino-ga asoslangan oddiy ergometrli displey, differentsial teskari aloqa: 7 qadam (rasmlar bilan)

Video: Arduino-ga asoslangan oddiy ergometrli displey, differentsial teskari aloqa: 7 qadam (rasmlar bilan)
Video: How to use Prototyping Shield with breadboard for Arduino 2024, Iyul
Anonim
Differentsial teskari aloqa bilan oddiy Arduino-ga asoslangan ergometrli displey
Differentsial teskari aloqa bilan oddiy Arduino-ga asoslangan ergometrli displey
Differentsial teskari aloqa bilan oddiy Arduino-ga asoslangan ergometrli displey
Differentsial teskari aloqa bilan oddiy Arduino-ga asoslangan ergometrli displey
Differentsial teskari aloqa bilan oddiy Arduino-ga asoslangan ergometrli displey
Differentsial teskari aloqa bilan oddiy Arduino-ga asoslangan ergometrli displey

Kardio-mashq zerikarli, ayniqsa yopiq joylarda mashq qilishda. Bir nechta mavjud loyihalar ergometrni o'yin konsoliga ulash yoki hatto VRda haqiqiy velosipedda yurishni simulyatsiya qilish kabi ajoyib ishlarni bajarish orqali buni engillashtirishga harakat qilmoqda. Bu hayajonli, texnik jihatdan, ular unchalik yordam bermaydi: mashg'ulotlar hali ham zerikarli. Shunday qilib, men mashg'ulot paytida shunchaki kitob o'qishni yoki televizor ko'rishni xohlardim. Ammo keyin barqaror tezlikni saqlab qolish qiyin.

Bu erda fikr, oxirgi muammoga e'tibor qaratish va sizning hozirgi tayyorgarlik darajangiz etarlimi yoki yo'qmi, yana bir oz kuch sarflash kerakligi haqida to'g'ridan-to'g'ri fikr bildirish. Biroq, "etarlicha yaxshi" daraja nafaqat odamga, balki vaqt o'tishi bilan ham o'zgaradi (uzoq vaqt davomida, siz yaxshilansangiz, balki mashg'ulot davomida ham: masalan, siz tezlik bilan harakat qilishingiz mumkin emas) isitiladi). Shuning uchun, bu loyihaning g'oyasi shunchaki a) oldingi yugurishni va b) eng yaxshi yugurishni (aka reytingi) yozib olish, so'ngra bu yugurishlarga nisbatan hozirda o'zingizni qanday his qilayotganingiz haqida to'g'ridan -to'g'ri fikr bildirishdir.

Agar bu biroz mavhum bo'lib tuyulsa, tugallangan displeyda ko'rsatiladigan tafsilotlar uchun 7 -bosqichga o'ting

Loyihaning yana bir maqsadi - hamma narsani sodda va arzon saqlash. Qaysi qismlarga buyurtma berishingizga qarab, siz ushbu loyihani 5 dollarga (yoki yuqori sifatli mahalliy sotuvchilardan buyurtma qilishda taxminan 30 dollarga) bajarishingiz mumkin, va agar siz Arduino muhiti bilan o'ynagan bo'lsangiz, unda sizda juda yaxshi imkoniyat bor. sizga kerak bo'ladigan qismlarning ko'pi yoki hammasi bor.

1 -qadam: qismlar ro'yxati

Qismlar ro'yxati
Qismlar ro'yxati

Keling, sizga kerak bo'lgan narsalar ro'yxatini ko'rib chiqaylik:

Arduino bilan mos keladigan mikroprotsessor

So'nggi bir necha yil ichida sotilgan Arduino deyarli hamma narsani qiladi. Aniq variant (Uno / Nano / Pro Mini, 8 yoki 16 MGts, 3.3 yoki 5V) muhim emas. Ammo sizga ATMEGA328 yoki undan yuqori protsessor kerak bo'ladi, chunki biz deyarli 2k RAM va 1k EEPROMdan foydalanamiz. Agar siz Arduino dunyosining ichki va tashqi tomonlarini yaxshi bilsangiz, men 3.3V kuchlanishli Pro Mini -dan foydalanishni tavsiya qilaman, chunki u eng arzon va batareyani tejamkor qiladi. Agar siz Arduino -da (nisbatan) yangi bo'lsangiz, men "Nano" ni tavsiya qilaman, chunki u "Uno" funktsiyasini kichikroq va arzonroq paketda taqdim etadi.

E'tibor bering, bu ko'rsatma sizga oddiy narsalar haqida gapirmaydi. Siz hech bo'lmaganda Arduino dasturini o'rnatgan bo'lishingiz va Arduino -ni qanday ulashni va eskizni yuklashni bilishingiz kerak. Agar men nima haqida gapirayotganimni bilmasangiz, bu ikkita oson darslikni o'qing: birinchi, ikkinchisi.

128*64 pikselli SSD1306 OLED -displey (I2C varianti, ya'ni to'rtta pin)

Bu bugungi kunda eng arzon va eng oson displeylardan biri. Qabul qilaman, kichkina, lekin etarlicha yaxshi. Albatta, agar sizda shunga o'xshash yoki yaxshiroq aniqlikdagi displey mavjud bo'lsa, buning o'rniga uni ishlatish mumkin bo'ladi, lekin bu ko'rsatma SSD1306 uchun yozilgan.

  • Prototipingizni yaratish uchun "lehimsiz non paneli" va bir nechta o'tish simlari
  • 100nF sopol kondansatör (kerak yoki kerak emas; 4 -qadamga qarang)
  • Yoki qisqich yoki magnit, qamish kaliti va kabel (4-qadamga qarang)
  • Har biri qizil va yashil LED (ixtiyoriy; 5 -qadamga qarang)
  • 220 ohmlik ikkita rezistor (agar LEDlar ishlatilsa)
  • Tugma (ixtiyoriy)
  • Tegishli batareya (6 -qadamga qarang)

2 -qadam: displeyni ulash

Displeyni ulash
Displeyni ulash

Birinchi narsa sifatida biz displeyni Arduino -ga ulaymiz. Batafsil ko'rsatmalar mavjud. Biroq, SSD1306 -ni ulash juda oson:

  1. VCC displeyi -> Arduino 3.3V yoki 5V (yoki shunday bo'ladi)
  2. Gndni ko'rsatish -> Arduino Gnd
  3. SCL displeyi -> Arduino A5
  4. SCA -> Arduino A4 displeyini ko'rsatish

Keyin Arduino muhitida Sketch-> Kutubxonani qo'shish-> Kutubxonalarni boshqarish-ga o'ting va "Adafruit SSD1306" ni o'rnating. Afsuski, kutubxonani 128*64 pikselli variantga sozlash uchun tahrir qilishingiz kerak bo'ladi: arduino "kutubxonalar" papkasini toping va "Adafruit_SSD1306/Adafruit_SSD1306.h" ni tahrir qiling. "#Define SSD1306_128_32" ni qidiring, bu qatorni o'chiring va "#define SSD1306_128_64" ni yoqing.

Bu vaqtda siz ekran- ni to'g'ri ulanganligini tekshirish uchun File-> Examples-> Adafruit SSD1306-> ssd1306_128x64_i2c-ni yuklashingiz kerak. E'tibor bering, siz I2C manzilini sozlashingiz kerak bo'ladi. 0x3C eng keng tarqalgan qiymat bo'lib ko'rinadi.

Muammo bo'lsa, batafsil ko'rsatmalarga murojaat qiling.

3 -qadam: Eskizni yuklang

Agar hamma narsa ishlagan bo'lsa, hozircha haqiqiy eskizni Arduino -ga yuklash vaqti keldi. Eskizning nusxasini quyida topasiz. Potentsial yangi versiya uchun github loyiha sahifasiga qarang. (Bu bitta faylli eskiz bo'lgani uchun, erogmetrino.ino faylini Arduino oynasiga nusxalash kifoya).

Agar oldingi qadamda I2C manzilini o'zgartirishingiz kerak bo'lsa, xuddi shu sozlamani yana "display.begin" bilan boshlanadigan qatorda qilishingiz kerak bo'ladi.

Yuklab olgandan so'ng, siz displeyda nollarni ko'rsatishingiz kerak. Qolgan hamma narsa ulangandan so'ng, biz displeyning turli bo'limlarining ma'nosini ko'rib chiqamiz.

E'tibor bering, birinchi boshlanishida displey sekin yonadi (taxminan o'n soniya davom etishi mumkin), chunki eskiz birinchi navbatda EEPROMda saqlangan ma'lumotlarni nolga aylantiradi.

4 -qadam: Ergometrni ulash

Ergometrni ulash
Ergometrni ulash

Bu qadamni umuman tasvirlab bo'lmaydi, chunki hamma ergometrlar ham bir xil emas. Biroq, ularning hammasi boshqacha emas. Agar sizning ergometringizda elektron tezlik ko'rsatkichi umuman mavjud bo'lsa, unda pedallarning aylanishi yoki biron -bir (ehtimol ichki) uchish g'ildiragini aniqlash uchun elektron sensori bo'lishi kerak. Ko'p hollarda, bu faqat qamish kalitiga yaqin o'tadigan magnitdan iborat bo'ladi (shuningdek, quyida qarang). Har safar magnit o'tib ketganda, kalit yopiladi, bu tezlik ko'rsatkichida bitta inqilobni bildiradi.

Siz qilishingiz kerak bo'lgan birinchi narsa - ergometrdagi kiruvchi kabellar uchun tezlik ko'rsatkichini tekshirish. Agar ergometr ichidan ikkita simli kabel kelayotganini ko'rsangiz, deyarli sensor bilan aloqani topdingiz. Biroz omad bo'lgach, siz uni shunchaki ajratib qo'yishingiz mumkin va uni Arduino-ga qisqichlar yordamida ulashingiz mumkin (men sizga bir daqiqada qanday pinlarni ulash kerakligini aytaman).

Ammo, agar siz bunday kabelni topa olmasangiz, to'g'ri kabelni topganingizga ishonchingiz komil bo'lmasa yoki uni hech narsaga zarar etkazmasdan uzib qo'ya olmasangiz, pedallardan biriga kichik magnitni yopishtirib, qamish kalitini erogmetr ramkasiga o'rnatishingiz mumkin., shunday qilib, magnit uning yonidan yaqindan o'tadi. Kalitga ikkita simni ulang va ularni Arduino -ga olib boring.

Ikkita simni ulang (o'zingizniki yoki mavjud sensordan bo'ladimi) Arduino Gnd va Arduino pin D2 ga o'tadi. Agar sizda qo'lingiz bo'lsa, D2 va Gnd pinlari orasidagi 100nF kondansatkichni ham "o'chirish" uchun ulang. Bu kerak yoki kerak emas, lekin o'qishni barqarorlashtirishga yordam beradi.

Ish tugagach, Arduino -ni ishga tushirish va velosipedda birinchi tez sinovdan o'tish vaqti keldi. Chap yuqori raqam tezlikni o'lchashni boshlashi kerak. Agar bu ishlamasa, barcha simlarni tekshiring va magnit qamish kalitiga etarlicha yaqin ekanligiga ishonch hosil qiling. Agar tezlik o'lchovi juda yuqori yoki juda past ko'rinadigan bo'lsa, eskizning yuqori qismidagi "CM_PER_CLICK" ta'rifini o'zgartiring (eslatma: eskizda metrik nomlar ishlatilgan, lekin hech bir birlik ko'rsatilmagan yoki saqlanmagan, shuning uchun bunga e'tibor bermang va bir marta bosish uchun 100 mingdan bir mil).

5 -qadam: Ixtiyoriy tezkor holat LEDlari

Ixtiyoriy tezkor holat LEDlari
Ixtiyoriy tezkor holat LEDlari

Ushbu bosqichda tasvirlangan LEDlar ixtiyoriy, lekin toza: Agar siz mashg'ulot paytida kitob o'qishga / televizor ko'rishga jiddiy yondashsangiz, displeyga ko'p qarab turishni xohlamaysiz. Ammo har xil rangdagi ikkita svetodiod periferik ko'rishda osonlikcha seziladi va sizning holatingiz haqida qo'pol tasavvur berish uchun etarli bo'ladi.

  • Birinchi (qizil) LEDni D6 piniga ulang (LEDning uzun oyog'i Arduinoga o'tadi). LEDning qisqa oyog'ini 220 Ohmlik rezistor orqali Gnd ga ulang. Mashg'ulotning hozirgi bosqichida eng yaxshi tezligingizdan 10% yoki undan past bo'lganingizda, bu LED yonadi. Yana kuch sarflash vaqti keldi!
  • Ikkinchi (yashil) LEDni D5 piniga, yana Gnd rezistoriga ulang. Agar siz 1%yoki undan yuqori ishlayotganingizda bu LED yonadi. Siz yaxshilik qilyapsiz!

Sizning oldingi ishingiz bilan taqqoslaganda yoki o'zboshimchalik bilan o'rtacha tezlikka qarab LEDlar yonishini xohlaysizmi? D4 va Gnd pinlari orasidagi tugmachani ulang. Bu tugma yordamida siz "eng yaxshi yugurish", "oldingi yugurish" yoki "hozirgi tezligingiz" o'rtasida ma'lumot almashishingiz mumkin. Pastki chap burchakdagi "P" yoki "C" harfi oxirgi ikkita rejimni bildiradi.

6 -qadam: Ergometr displeyini quvvatlantirish

Ergometr displeyini quvvatlantirish
Ergometr displeyini quvvatlantirish

Displeyni quvvatlantirishning ko'p usullari bor, lekin men boshqalarga qaraganda ancha amaliy ko'rinadigan ikkita usulni ko'rsataman:

  1. Arduino Uno yoki Nano-dan foydalanganda, ehtimol siz batareyaning ko'rsatkichi past bo'lgan USB quvvat banki yordamida quvvat olmoqchisiz.
  2. Arduino Pro Mini @ 3.3V dan foydalanganda (ilg'or foydalanuvchilar uchun mening tavsiyam) siz to'g'ridan -to'g'ri bitta LiPo batareyasidan yoki uchta NiMH xujayrasidan quvvat olishingiz mumkin. ATMEGA 5,5 V gacha bo'lgan kuchlanishlarga toqat qilsa, siz uni bortdagi voltaj regulyatorini chetlab o'tib, to'g'ridan-to'g'ri "VCC/ACC" ga ulashingiz mumkin. Ushbu sozlamada, qo'shimcha qurilmasiz (o'ng pastki burchakda ko'rsatiladi) 3,4V atrofida "batareya quvvati pastligi" haqida ogohlantirish bo'ladi. ATMEGA to'g'ri ishlashini kutish mumkin, hech bo'lmaganda 3,0 V ga qadar, bu sizga zaryadlashdan oldin o'quv birligingizni tugatish uchun etarli vaqt qoldirishi kerak.

7 -qadam: Ergometrli displeydan foydalanish

Ergometrli displeydan foydalanish
Ergometrli displeydan foydalanish
Ergometrli displeydan foydalanish
Ergometrli displeydan foydalanish

Keling, displeyingizdagi turli raqamlarni batafsil ko'rib chiqaylik. Yuqori chapning kattaroq soni - bu sizning hozirgi tezligingiz, va yuqori o'ngdagi katta son - sizning hozirgi mashg'ulotingizdagi umumiy masofa.

Keyingi qator - bu mashg'ulot boshlanganidan (chapda) va mashg'ulot boshlanganidan keyingi vaqtga (o'ngda) o'rtacha tezligingiz. E'tibor bering, velosiped to'xtab qolganda vaqt to'xtatiladi.

Hozircha arzimas. O'ng tomondagi yana ikkita chiziq qiziqarli bo'ladi: bu sizning hozirgi vaqtingizni mos ravishda oldingi va eng yaxshi mashg'ulotlaringiz bilan solishtiradi. Ya'ni bu satrlarning yuqori qismidagi "- 0:01:23" sizning hozirgi masofaga oldingi yugurishdan 1 daqiqa 23 soniya oldin etib kelganingizni bildiradi. Yaxshi. "+ 0:00:12" ning pastki chizig'i, hozirgi nuqtaga qadar, siz eng yaxshi yugurishdan 12 soniya orqada qolayotganingizni bildiradi. (E'tibor bering, bu differentsial vaqtlar 100% aniq bo'lmaydi. Vaqt nuqtalari har 5 km / milda saqlanadi va ular orasida interpolatsiya qilinadi.) Albatta, sizning birinchi yugurishingizda hech qanday vaqt haqida ma'lumot yozilmagan. shuning uchun yuqoridagi satrlarning ikkalasida ham "-:-:-" ko'rsatiladi.

Nihoyat, displeyning pastki chap qismida oxirgi daqiqadagi tezligingiz grafikasi mavjud. Bu sizga bir qarashda ko'rish imkonini beradi, siz barqaror harakat qilyapsizmi yoki sekinlashyapsizmi. (E'tibor bering, bu chiziq haqiqiy mashg'ulotlarda ancha silliq bo'ladi - lekin suratga olish paytida bir maromda tezlikni ushlab turish oson emas …) Gorizontal chiziqlar oldingi oldingi eng yaxshi tezlikni ko'rsatadi. treninglar.

Tepaga yaqin o'rnatilgan LEDlar mashg'ulotning ushbu bosqichida sizning hozirgi tezligingizni eng yaxshi tezligingiz bilan solishtiradi. Yashil shoular sizning eng yaxshi ko'rsatkichlaringizdan 1% ichida, qizil ko'rsatuvlar sizning eng yaxshi mashg'ulotingizdan 10% sekinroq. Qizil chiroqni ko'rganingizda, yana kuch sarflash vaqti keldi. E'tibor bering, yuqorida tavsiflangan differentsial vaqtlardan farqli o'laroq, ular mashg'ulotning joriy qismini nazarda tutadi, ya'ni siz absolyut vaqt ichida ortda qolishingiz mumkin, lekin yashil rang sizga etib kelayotganini ko'rsatadi va aksincha.

Ikkita LED uchun mos yozuvlar tezligini o'zgartirish tugmasi yordamida o'zgartirish mumkin. Bir marta bosish uni eng yaxshisidan oldingi yozilgan mashg'ulotlarga o'tkazadi (chap pastki qismida kichik "P" harfi ko'rsatiladi). Boshqa bosish va tugma bosilganda sizning hozirgi tezligingiz yangi mos yozuvlar tezligiga aylanadi ("C" kichik harfi ko'rsatiladi). Ikkinchisi, ayniqsa, sizning yangi ergometrli displeyingiz bilan birinchi mashg'ulot paytida, hali hech qanday ma'lumot yozilmagan bo'lsa, foydalidir.

Mashg'ulot tugagach, batareyani ajratib oling. Sizning mashg'ulotlaringiz Arduino ichki EEPROM -da saqlangan.

Ko'rib turganingizdek, men prototipimni lehim bilan tugatdim. Ishonchim komilki, natija menga yoqdi. Umid qilamanki, siz ham buni foydali deb topasiz. Baxtli mashg'ulotlar!

Tavsiya: