Mundarija:
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-13 06:58
KIRISH
Ushbu loyihada biz kiborg funktsiyalariga asoslangan funktsional taqiladigan prototip yaratish vazifasini oldik. Bilasizmi, yuragingiz BPM musiqasi bilan hamohang. Siz kayfiyatingizni musiqa orqali boshqarishga urinib ko'rishingiz mumkin, lekin agar texnologiya bizga tinchlanishga yordam bersa -chi? Bizga faqat ba'zi komponentlar, Arduino va minigarnituralar kerak. Keling, yangilik qilaylik!
Loyiha Mark Vila, Gilyermo Stauffaxer va Pau Karselse
1 -qadam: Materiallar va komponentlar
Qurilish materiallari:
- 3D bosma bilaguzuk
- M3 vintlardek (x8)
- M3 yong'oq (x12)
- Fanny to'plami
Elektron materiallar:
-Yurak urish tezligi sensori BPM
- tugmalar (x2)
- Potentsiometr
- LCD C 1602 MODULI
- MODUL DFPLAYER MINI MP3
- 3,5 mm Jek Stereo TRRS eshitish vositasi
- MicroSD karta
- Arduino Uno plitasi
- Payvandchi
- Bakelit plitasi
2 -qadam: bilaguzukni loyihalash
Avval bilaguzukning turli qismlarini tartibga solish uchun bir nechta eskizlar tayyorlaymiz.
Aniq fikr bilan biz guruh a'zolarining uchta qo'lini o'lchadik, so'ngra dizayn uchun eng maqbul o'lchovni topdik. Nihoyat, biz mahsulotni 3d dastur bilan loyihalashtiramiz va uni 3D printer bilan chop etamiz.
Bu erda. STL fayllarini yuklab olishingiz mumkin.
3 -qadam: Elektron ulanish
Biz 3d dizaynimizni kerakli tekshiruvlarini o'tkazishda davom etamiz, o'lchovlar to'g'rilanganligini ko'rish uchun prototipdagi barcha komponentlarning birinchi yig'ilishini qildik.
Barcha komponentlarni Arduino kartasiga ulash uchun biz 0, 5 metrli kabellar yordamida komponentlardan turli xil ulanishlarni o'rnatdik, shu orqali biz taxtaning ko'rinishini kamaytiramiz va prototipni yaxshiroq tashkil qilamiz.
4 -qadam: Kod
Bu loyiha kiborg prototipidir. Shubhasiz, biz terining ostiga tarkibiy qismlarni kiritmaganmiz, shuning uchun biz bilaguzukni ortez sifatida simulyatsiya qildik (funktsional tomonlarini o'zgartirish uchun tanaga qo'llaniladigan tashqi qurilma).
Bizning kodimiz foydalanuvchining tugmachalarini bosadi va ularni LCD displey yordamida ko'rsatadi. BPMga qo'shimcha ravishda, ekran kerakli tezlikni ko'rsatadi, shunda foydalanuvchi uni yurak urish tezligi bilan taqqoslay oladi. O'zingizning BPM -ni ko'paytirish yoki kamaytirish qiziq bo'lgan vaziyatlar ko'p. Masalan, chidamli sportchilar haddan tashqari charchamaslik uchun pulsatsiyani boshqarishi kerak. Kundalik misol, asabiy holatda uxlashni yoki tinchlanishni xohlashdir. Bundan tashqari, autizmli odamlar uchun stressni kamaytirish uchun terapevtik usul sifatida qo'llanilishi mumkin. Ekran yonida kerakli tezlikni boshqarish va yurak tezligini oshirish yoki kamaytirish uchun ikkita tugma mavjud. Zo'ravonlikka qarab, ilgari o'rganilgan musiqa turi ijro etiladi. Musiqa BPM -ni o'zgartirishi mumkinligini ko'rsatadigan tadqiqotlar mavjud. Beats per Minute qo'shig'iga ko'ra, inson tanasi o'sha BPMga taqlid qiladi va unga mos keladi.
int SetResUp = 11; // intensivlikni oshirish tugmasi bilan Arduino 10 -pinli pin.int SetResDown = 12; // intensivlikni pasaytirish tugmasi bilan Arduino 11 -pin
int ResButtonCounter = 0; // qarshilik sozlamalarini oshiruvchi yoki kamaytiruvchi taymer, boshlang'ich qiymati 0 int ResButtonUpState = 0; // intensivlikni oshirish tugmachasining hozirgi holati int ResButtonDownState = 0; // intensivlikni pasaytirish tugmachasining hozirgi holati int lastResButtonUpState = 0; // intensivlikni oshirish tugmachasining oxirgi holati int lastResButtonDownState = 0; // intensivlikni pasaytirish tugmasining oxirgi holati
int pulsePin = 0; // A0 portiga ulangan puls sensori // Bu o'zgaruvchilar o'zgaruvchan, chunki ular ikkinchi tabdagi uzilishlar paytida ishlatiladi. o'zgaruvchan int BPM; // Beats per minute uchuvchan int Signal; // Puls sensori ma'lumotlarini kiritish uchuvchi int IBI = 600; // Puls vaqti o'zgaruvchan boolean Pulse = false; // Puls to'lqini baland bo'lsa, to'g'ri, past volatli boolean QS = noto'g'ri;
# belgilash Start_Byte 0x7E # Version_Byte 0xFF ni belgilang # Command_Length 0x06 # End_Byte 0xEF ni aniqlang # Acknowledge 0x00 ni belgilang // 0x41 buyrug'i bilan ma'lumotlarni qaytaradi [0x01: info, 0x00: hech qanday ma'lumot]
// PANTALLA #include // LCD displey funktsiyalari uchun kutubxonani yuklang #include #include
LiquidCrystal lcd (7, 6, 5, 4, 3, 2); // LCD ulangan portlarni e'lon qiling
// LECTOR #include #include // dfplayer mini MP3 moduli funktsiyalari uchun kutubxonani yuklang.
char serialData; int nsong; int v;
SoftwareSerial comm (9, 10); // DFPlayer ulangan portlarni e'lon qiling DFRobotDFPlayerMini mp3;
void setup () {Serial.begin (9600); pinMode (SetResUp, INPUT); pinMode (SetResDown, INPUT);
// LCD (16x2) lcd.begin (16, 2) o'lchamlarini aniqlang; // Matn qaysi ustunda va qaysi qatorda ko'rsatila boshlanishini tanlaymiz // LECTOR comm.begin (9600);
mp3.begin (comm); // Komponent serialData = (char) (('')) boshlanadi; mp3.start (); Serial.println ("O'ynash"); // Qo'shiq kuylash mp3. tovush (25); // Ovoz balandligini aniqlash}
void loop () {if (digitalRead (11) == LOW) {mp3.next (); // Agar tugma bosilsa, qo'shiq o'tadi} if (digitalRead (12) == LOW) {mp3.previous (); // Agar tugma bosilsa, oldingi qo'shiq} // if (SetResUp && SetResDown == LOW) {
int pulso = analogRead (A0); // A0 analog portiga ulangan yurak urish tezligi monitorining qiymatini o'qing
Serial.println (pulso/6); if (QS == true) {// Quantified Self bayrog'i arduino qidiruvi kabi to'g'ri bo'lsa, BPM QS = false; // Quantified Self bayrog'ini tiklash}
lcd.setCursor (0, 0); // Kerakli matnni ko'rsatish lcd.print ("BPM:"); lcd.setCursor (0, 1); // Kerakli matnni ko'rsatish lcd.print ("INT:"); lcd.setCursor (5, 0); // Kerakli matnni ko'rsatish lcd.print (pulso); lcd.setCursor (5, 1); // Kerakli matnni ko'rsatish lcd.print (ResButtonCounter); kechikish (50); lcd.clear (); ResButtonUpState = digitalRead (SetResUp); ResButtonDownState = digitalRead (SetResDown);
// TempButtonState -ni oldingi holati bilan solishtiring
if (ResButtonUpState! = lastResButtonUpState && ResButtonUpState == LOW) {// agar oxirgi holat o'zgargan bo'lsa, hisoblagichni oshiring
ResButtonCounter ++; }
// joriy holatni oxirgi holat sifatida saqlang, // keyingi safar pastadir bajariladi lastResButtonUpState = ResButtonUpState;
// tugma holatini (oshirish yoki kamaytirish) oxirgi holat bilan solishtiring
agar (ResButtonDownState! = lastResButtonDownState && ResButtonDownState == LOW) {
// agar oxirgi holat o'zgargan bo'lsa, hisoblagichni kamaytiring
ResButtonCounter-; }
// joriy holatni oxirgi holat sifatida saqlang, // keyingi safar loop bajariladi lastResButtonDownState = ResButtonDownState; {Serial.println (ResButtonCounter);
if (ResButtonCounter> = 10) {ResButtonCounter = 10; }
if (ResButtonCounter <1) {ResButtonCounter = 1; }
}
}
5 -qadam: Umumiy yig'ilish
Kod to'g'ri dasturlashtirilgan va prototipimizning ikki qismi allaqachon yig'ilgan. Biz barcha komponentlarni joyiga qo'yamiz va bilaguzukga mahkamlash uchun lenta bilan biriktiramiz. Bilaguzukdagi komponentlar - bu yurak urish tezligi sensori BPM, ikkita tugma, potansiometr va LCD displey, ularning har biri ilgari 3D faylda yaratilgan. Birinchi qism tugagandan so'ng, biz protoboardga e'tibor qaratamiz, har bir ulagich Arduino kartasining to'g'ri pimida. Nihoyat, har bir komponentning tekshirilgan ishlashi bilan biz simlarni yashirish uchun uni fanny paketiga joylashtirdik.
6 -qadam: video
7 -qadam: Xulosa
Loyihaning eng qiziq tomoni - bu inson tanasini behush holda musiqaga taqlid qilishni o'rganish. Bu kelajakdagi loyihalar uchun ko'plab variantlarga yo'l ochadi. Menimcha, bu to'liq loyiha, bizda ishlangan kodli juda ko'p komponentlar mavjud. Agar biz yana boshlasak, biz boshqa komponentlar haqida o'ylar edik yoki ularni sifatli sotib olamiz. Biz singan kabellar va payvandlash bilan bog'liq juda ko'p muammolarga duch keldik, ular kichik va juda nozik (ayniqsa BPM). Boshqa tomondan, siz komponentlarni ulashda ehtiyot bo'lishingiz kerak, ularning chiqishlari ko'p va xato qilish oson.
Bu juda boyituvchi loyiha bo'lib, unda biz Arduino -ning apparat va dasturiy ta'minotining keng tanlovini ko'rib chiqdik.