Mündəricat:

Geyinilə bilən - Son Layihə: 7 addım
Geyinilə bilən - Son Layihə: 7 addım

Video: Geyinilə bilən - Son Layihə: 7 addım

Video: Geyinilə bilən - Son Layihə: 7 addım
Video: How to Crochet a Long Sleeve Dress | Pattern & Tutorial DIY 2024, Iyun
Anonim
Geyinilə bilən - Son Layihə
Geyinilə bilən - Son Layihə

GİRİŞ

Bu layihədə kiborg funksiyalarına əsaslanan funksional geyilə bilən bir prototip hazırlamaq vəzifəmiz var idi. Ürəyinizin musiqi BPM ilə sinxronlaşdığını bilirdinizmi? Musiqi ilə əhvalınızı idarə etməyə cəhd edə bilərsiniz, amma texnologiyanın sakitləşməyimizə icazə versək nə olar? Sadəcə bəzi komponentlərə, Arduino və qulaqlıqlara ehtiyacımız var. Yenilik edək!

Marc Vila, Guillermo Stauffacher və Pau Carcellé tərəfindən layihə

Addım 1: Materiallar və Komponentlər

Materiallar və Komponentlər
Materiallar və Komponentlər

Tikinti materialları:

- 3d çaplı biləklik

- M3 vintlər (x8)

- M3 qoz -fındıq (x12)

- Fanny paketi

Elektron materiallar:

-Ürək Hızı Sensoru BPM

- Düymələr (x2)

- Potansiyometr

- LCD C 1602 MODÜLÜ

- MODÜL DFPLAYER MINI MP3

- 3.5 mm Jack Stereo TRRS QULAKLIĞI

- MicroSD kartı

- Arduino Uno Plate

- Qaynaqçı

- Bakelit boşqab

Addım 2: Biləklik dizayn edin

Biləklik dizayn edin
Biləklik dizayn edin
Biləklik dizayn edin
Biləklik dizayn edin

Əvvəlcə biləklikdəki müxtəlif komponentləri təşkil etmək üçün bir neçə eskiz hazırlayırıq.

Aydın fikirlə, qrup üzvlərinin üç qolunu ölçdük, sonra dizayn üçün optimal ölçüsü tapmaq üçün ortalamanı etdik. Nəhayət məhsulu 3d proqramı ilə dizayn edirik və 3D printerlə çap edirik.

. STL fayllarını buradan yükləyə bilərsiniz.

Addım 3: Elektron Bağlantılar

Elektron Əlaqələr
Elektron Əlaqələr

3d dizaynımızın lazımi yoxlamalarına davam edirik, ölçülərin düzəldildiyini görmək üçün prototipdəki bütün komponentlərin ilk montajını etdik.

Bütün komponentləri Arduino lövhəsinə bağlamaq üçün 0, 5 metrlik kabellərdən istifadə edərək komponentlərdən fərqli bağlantılar qurduq, beləliklə lövhənin görmə qabiliyyətini azaldırıq və prototipi daha yaxşı təşkil edirik.

Addım 4: Kod

Kod
Kod
Kod
Kod
Kod
Kod

Bu layihə bir kiborg prototipidir. Aydındır ki, dərinin altına komponentlər daxil etməmişik, buna görə də ortez kimi bilərziklə simulyasiya etmişik (funksional cəhətləri dəyişdirmək üçün bədənə tətbiq olunan xarici cihaz).

Kodumuz istifadəçinin düymələrini alır və LCD ekrandan istifadə edərək göstərir. BPM -ə əlavə olaraq, istifadəçi ürək dərəcəsi ilə müqayisə edə bilməsi üçün ekranda istənilən intensivlik göstərilir. Öz BPM -ni artırmağın və ya azaltmağın maraqlı olduğu bir çox vəziyyət var. Məsələn, dözümlülük idmançıları həddindən artıq yorulmamaq üçün pulsasiyalara nəzarət etməlidirlər. Gündəlik bir nümunə, əsəbi vəziyyətdə yatmaq və ya sakitləşməkdir. Otizmli insanlar üçün hiss etdikləri stresi azaltmaq üçün bir müalicə üsulu olaraq da tətbiq oluna bilər. Ekranın yanında istədiyiniz intensivliyi idarə etmək və ürək dərəcəsini artırmaq və ya azaltmaq üçün iki düymə var. Şiddətdən asılı olaraq əvvəllər öyrənilmiş bir musiqi növü çalınır. Musiqinin BPM -ni dəyişdirə biləcəyini göstərən tədqiqatlar var. Mahnının Beats Per Minute mahnısına görə, insan bədəni bu BPM -ni təqlid edir və ona uyğun gəlir.

int SetResUp = 11; // intensivliyi artırmaq düyməsinə malik Arduinonun 10 pin.int SetResDown = 12; // intensivliyi azaltma düyməsi olan Arduino pin 11

int ResButtonCounter = 0; // müqavimət parametrini artıran və ya azaldan sayaç, 0 -ın başlanğıc dəyəri ResButtonUpState = 0; // intensivliyi artırma düyməsinin indiki vəziyyəti int ResButtonDownState = 0; // intensivliyi azaltma düyməsinin cari vəziyyəti int lastResButtonUpState = 0; // intensivliyi artırma düyməsinin son vəziyyəti int lastResButtonDownState = 0; // intensivliyi azaltma düyməsinin son vəziyyəti

int pulsePin = 0; // A0 portuna bağlı Pulse Sensor // Bu dəyişənlər uçucu olur, çünki onlar ikinci sekmədə kəsilmə qaydası zamanı istifadə olunur. uçucu int BPM; // Beats per minute uçucu int Siqnal; // Pulse sensor məlumat girişi uçucu int IBI = 600; // Pulse vaxtı uçucu boolean Pulse = yalan; // Pulse dalğası yüksək olduqda doğru, Düşük uçucu boole QS = yanlış olduqda yalan;

# müəyyənləşdir Start_Byte 0x7E # Version_Byte 0xFF təyin et # Command_Length 0x06 # End_Byte 0xEF təyin et # Acknowledge 0x00 təyin et // 0x41 [0x01: məlumat, 0x00: məlumat yoxdur] əmri ilə məlumatı qaytarır

// PANTALLA #daxil edin // LCD ekranın funksiyaları üçün kitabxananı yükləyin #daxil edin #daxil edin

LiquidCrystal lcd (7, 6, 5, 4, 3, 2); // LCD -nin qoşulduğu limanları elan edin

// LECTOR #include #include // dfplayer mini MP3 modulunun funksiyaları üçün kitabxananı yükləyin.

serial serial məlumatları; int nsong; int v;

SoftwareSerial comm (9, 10); // DFPlayer -in qoşulduğu limanları elan edin DFRobotDFPlayerMini mp3;

void setup () {Serial.begin (9600); pinMode (SetResUp, INPUT); pinMode (SetResDown, GİRİŞ);

// LCD (16x2) lcd.begin (16, 2) ölçülərini təyin edin; // Mətnin hansı sütunda və hansı sətirdə göstərilməyə başladığını seçirik // LECTOR comm.begin (9600);

mp3.begin (comm); // Komponent serialData = (char) (('')) başlayır; mp3.start (); Serial.println ("Çal"); // Mahnı çal mp3.cild (25); // Həcmi təyin et}

void loop () {if (digitalRead (11) == LOW) {mp3.next (); // Düymə basılarsa, mahnı keçir} if (digitalRead (12) == LOW) {mp3.previous (); // Düymə basılarsa, əvvəlki mahnı} // if (SetResUp && SetResDown == LOW) {

int pulso = analogRead (A0); // A0 Analog portuna qoşulmuş nəbz monitorunun dəyərini oxuyun

Serial.println (pulso/6); if (QS == true) {// Quantified Self Bayrağı arduino axtarışında olduğu kimi doğrudur BPM QS = false; // Miqdarı Özünün bayrağını sıfırlayın}

lcd.setCursor (0, 0); // İstədiyiniz mətni göstərin lcd.print ("BPM:"); lcd.setCursor (0, 1); // İstədiyiniz mətni göstərin lcd.print ("INT:"); lcd.setCursor (5, 0); // İstədiyiniz mətni göstərin lcd.print (pulso); lcd.setCursor (5, 1); // İstədiyiniz mətni göstərin lcd.print (ResButtonCounter); gecikmə (50); lcd.clear (); ResButtonUpState = digitalRead (SetResUp); ResButtonDownState = digitalRead (SetResDown);

// TempButtonState -i əvvəlki vəziyyəti ilə müqayisə edin

if (ResButtonUpState! = lastResButtonUpState && ResButtonUpState == LOW) {// son vəziyyət dəyişərsə sayğacı artırın

ResButtonCounter ++; }

// cari vəziyyəti son vəziyyət kimi qeyd edin, // növbəti dəfə döngə yerinə yetirilir lastResButtonUpState = ResButtonUpState;

// düymənin vəziyyətini (artım və ya azalma) son vəziyyətlə müqayisə edin

əgər (ResButtonDownState! = lastResButtonDownState && ResButtonDownState == LOW) {

// son vəziyyət dəyişərsə sayğacı azaldın

ResButtonCounter-; }

// cari vəziyyəti son vəziyyət kimi qeyd edin, // növbəti dəfə döngə yerinə yetirilir lastResButtonDownState = ResButtonDownState; {Serial.println (ResButtonCounter);

əgər (ResButtonCounter> = 10) {ResButtonCounter = 10; }

if (ResButtonCounter <1) {ResButtonCounter = 1; }

}

}

Addım 5: Ümumi montaj

Düzgün proqramlaşdırılmış və prototipimizin iki hissəsi artıq yığılmış vəziyyətdə. Bütün komponentləri yerinə qoyduq və bilərziyə yapışdırmaq üçün bantla bağladıq. Bilərzikdə olan komponentlər, əvvəllər 3D faylında dizayn edilmiş müvafiq çuxurda olan Nəbz Sensoru BPM, iki düymə, potensiometr və LCD Ekrandır. Birinci hissə tamamlandıqda, hər bir konnektoru Arduino lövhəsinin düzgün pinindəki protoboya taxırıq. Nəhayət, hər bir komponentin təsdiqlənmiş işləməsi ilə telləri gizlətmək üçün fanny paketinə qoyduq.

Addım 6: Video

Addım 7: Nəticə

Bu layihənin ən maraqlı tərəfi insan bədənini şüursuz şəkildə musiqi ilə təqlid etməyi öyrənməkdir. Bu, gələcək layihələr üçün bir çox variantın qapısını açır. Düşünürəm ki, bu tam bir layihədir, işlədilmiş kodu olan olduqca müxtəlif komponentlərə sahibik. Yenidən başlasaq, digər komponent alternativlərini düşünər və ya daha keyfiyyətli alarıq. Qırılan kabellər və qaynaqlar ilə bağlı bir çox problemimiz var, onlar kiçik və çox incədir (xüsusən BPM). Digər tərəfdən komponentləri birləşdirərkən diqqətli olmalısınız, onların bir çox çıxışı var və səhv etmək asandır.

Arduino -nun müxtəlif hardware və proqram seçimlərinə toxunduğumuz çox zəngin bir layihədir.

Tövsiyə: