Turinys:

„Neopixel“LED juostelė, reaguojanti į „Myoware“raumenų jutiklį: 6 žingsniai
„Neopixel“LED juostelė, reaguojanti į „Myoware“raumenų jutiklį: 6 žingsniai

Video: „Neopixel“LED juostelė, reaguojanti į „Myoware“raumenų jutiklį: 6 žingsniai

Video: „Neopixel“LED juostelė, reaguojanti į „Myoware“raumenų jutiklį: 6 žingsniai
Video: Interaktyvus LED paveikslas "Metų laikai" 2024, Lapkritis
Anonim
„Neopixel“LED juostelė, reaguojanti į „Myoware“raumenų jutiklį
„Neopixel“LED juostelė, reaguojanti į „Myoware“raumenų jutiklį

Tikslas yra įdiegti raumenų jutiklį naudojant „Arduino“ir apdorojant gaunamus duomenis naudojant „Adafruit IO“ir gaunant išvestį su gaiduku, kad šviesa vieną minutę pasikeistų iš baltos į raudoną.

Kas yra raumenų jutiklis Raumenų jutiklis matuoja raumens elektrinį aktyvumą ir sukuria analoginį išėjimo signalą, kurį lengvai nuskaito mikrovaldiklis. Elektromiografija (EMG) matuoja raumenų reakciją arba elektrinį aktyvumą, reaguojant į nervo raumenų stimuliaciją. Tyrimas naudojamas neuromuskuliniams sutrikimams nustatyti. Bandymo metu viena ar kelios mažos adatos (dar vadinamos elektrodais) per odą įkišamos į raumenis.

Šiam projektui jums reikia: -MyoWare raumenų jutiklio -EMG elektrodų -NodeMCU (esp8266) -Silikono dangtelio viela -USB mikro kabelis -Neopixel LED juostelė

Bibliotekos, kurių jums reikės: -Adafruit io Arduino (bent 2.3.0 versija) -Adafruit Neopixel (1.2.5 versija) -Adafruit MQTT biblioteka (1.0.3) -Arduino HttpClients (0.4.0) Jei neturite bibliotekos dar įdiegtos. Tada eikite į Eskizas> įtraukti biblioteką> Tvarkyti bibliotekas … paieškos laukelyje įveskite: [norimos įdiegti bibliotekos pavadinimas].

1 žingsnis: „Myoware“raumenų jutiklio prijungimas (ypač tiems, kurie niekada anksčiau su juo nedirbo)

Jei niekada nedirbote su „Myoware“raumenų jutikliu, gerai suprasti, kaip šis jutiklis yra prijungtas ir skaitomas „Arduino“serijos monitoriuje. Ši operacija yra standartinė procedūra, kuri yra daugelyje jau aprašytų vadovų. „Adafruit“platforma aiškiai apibūdina, kaip tai veikia keliais žingsniais:

learn.adafruit.com/getting-started-with-my…

Jei atliksite visus šiuos veiksmus, nuosekliajame monitoriuje pamatysite, kad įtempus raumenis vertės pasikeičia. Kai iškišate kumštį ir įtempiate raumenis, vertės turėtų pakilti, o kai atpalaiduosite raumenis, šios vertės turėtų vėl sumažėti.

Svarbu Šis žingsnis skirtas tik jutiklio nustatymui. Jūsų naudojamas kodas nėra būtinas likusioje vadovo dalyje. Tik tai, kaip įdedate patį jutiklį, liks tas pats atliekant kitus veiksmus.

2 veiksmas: „Adafruit IO“sąranka

„Adafruit IO“sąranka
„Adafruit IO“sąranka
„Adafruit IO“sąranka
„Adafruit IO“sąranka
„Adafruit IO“sąranka
„Adafruit IO“sąranka

Pirmasis žingsnis yra prisijungti arba sukurti paskyrą „Adafruit IO“, eikite į „Adafruit IO“. „Adafruit IO“yra debesų platforma, prie kurios galite prisijungti internetu. „Adafruit IO“daro duomenis naudingus prisijungus prie duomenų.

Kai esate savo paskyroje:

Sukurkite „Analog FeedNext“, tada turėsite sukurti kanalą, pavadintą „Analog“. Jei jums reikia pagalbos pradedant kurti kanalus naudojant „Adafruit IO“, peržiūrėkite „Adafruit IO Feed Basics“vadovą (kaip 1 ir 2 nuotraukose).

Pridėję matuoklių bloką ir linijų diagramos bloką Toliau sukurkite naują prietaisų skydelį ir pavadinkite jį taip, kaip norite (kaip parodyta 3, 4 ir 5 nuotraukose, kad sukurtumėte naują prietaisų skydelį). Įsitikinkite, kad duomenų šaltiniu pasirinkote analoginį kanalą.

Kai esate prietaisų skydelyje, pridėkite naują matuoklio bloką, spustelėkite mėlyną pliusą viršutiniame dešiniajame kampe. Pavadinkite bloką, ką norite (parodyta 6 ir 7 nuotraukose), ir nurodykite maksimalią 1024 vertę, o minimalią reikšmę 0 (raumenų jutiklio vertės).

Pakartokite tą patį su linijinės diagramos bloku (8 nuotrauka), kaip aprašyta aukščiau su matuoklio bloku.

Jei atlikote viską aukščiau, turite turėti panašų ekraną, kaip ir paskutinė nuotrauka.

3 žingsnis: „Arduino“įvestis

„Arduino“įvestis
„Arduino“įvestis
„Arduino“įvestis
„Arduino“įvestis
„Arduino“įvestis
„Arduino“įvestis
„Arduino“įvestis
„Arduino“įvestis

1 veiksme teisingai nustatėte „MyoWare Muscle“jutiklio laidus. Šiame žingsnyje mes pasinersime į „Arduino“kodą, kuris pateikiamas prisijungus prie 2 veiksmo „Adafruit IO“prietaisų skydelio. Šio veiksmo pabaigoje dviejuose nustatytuose blokuose pamatysite „Myoware“raumenų jutiklio įvesties vertes.

„Arduino“sąranka

Įsitikinkite, kad įdiegėte visas aukščiau įžangoje nurodytas bibliotekas.

Mes ketiname dirbti su eskizo pavyzdžiu. Taigi atidarykite Failas> Pavyzdys> Adafruit IO Arduino> adafruitio_08_analog_in (1 nuotrauka). Kodėl šis eskizas? nes pirmiausia nustatome šio vadovo įvesties dalį. „MyoWare Muscle“jutiklis naudoja analoginę išvestį. Jei norite daugiau pasinerti į temą apie analogą.

Norėdami sukonfigūruoti tinklo nustatymus, spustelėkite eskizo skirtuką config.h Turite nustatyti „Adafruit IO“vartotojo vardą „IO_USERNAME“apibrėžime, o „Adafruit IO“raktą - „IO_KEY“apibrėžtyje. Vartotojo vardą ir raktą galite rasti „Arduino IO“ekrano viršuje dešinėje (pavyzdys 2 nuotraukoje)

#define IO_USERNAME „your_username“

#define IO_KEY „tavo_raktas“

„WiFi Config“„WiFi“yra įjungtas pagal numatytuosius nustatymus konfigūracijoje.h, taigi, jei naudojate vieną iš palaikomų „WiFi“plokščių, turėsite pakeisti konfigūracijos skirtuko WIFI_SSID ir WIFI_PASS parinktis.

#define WIFI_SSID "your_ssid" #define WIFI_PASS "your_pass"

„Arduino“kodas Jei pakeisite aukščiau pateiktus nustatymus, galime pereiti toliau prie tikrojo kodo, adafruit_08_analog_in. Šiame pavyzdyje pralaimėjimo kaištis yra statet AO. Tai yra tinkamas kaištis, nes 2 žingsnyje uždėjote raumenų jutiklį ant lentos.

Šiame pavyzdyje naudojamas fotoelementų jutiklis, nes mes naudojame raumenų jutiklį, todėl pakeisime šį pavadinimą. Nesvarbu, ar tai padarysite, tai bus tik semantiškai tvarkingiau. Pakeiskite PHOTOCELL_PIN į MUSCLESENSOR_PIN tai darykite dviejose eskizo vietose.

/************************ Pavyzdys prasideda čia ********************** *********/

// analoginis kaištis 0 #define PHOTOCELL_PIN A0

Paskutiniame kodekse yra uždelsimas. Ši delsos trukmė yra 1 sekundė, mes nustatysime 2 sekundes, taigi 2000 m. Tai darome todėl, kad „Adafruit IO“yra licencija su duomenų limitu, mažiau nei per dvi sekundes šis eskizas viršija tą duomenų limitą ir jis duos DĖMESIO ĮSPĖJIMĄ. Tai reiškia, kad nėra jokių reikšmių. Nustačius tai dviem sekundėms, tai neleidžiama.

// laukti vieną sekundę (1000 milisekundžių == 1 sekundė) uždelsimas (2000);

Tai turėjote pakeisti eskize, kad jis veiktų. Jei norite tiksliai žinoti, kaip veikia visas kodas. Ją galite rasti mokydamiesi „Adafruit“, paaiškindami kiekvieną kodo bloką.

Patikrinkite Įkelkite eskizą į savo lentą ir atidarykite „Arduino“serijos monitorių. Dabar jūsų plokštė turėtų prisijungti prie „Adafruit IO“.

dabar galite suveržti ranką ir turėtumėte matyti besikeičiančias vertes, siunčiamas „Adafruit IO“(kaip 3 nuotraukoje). Jei serijiniame monitoriuje nematote jokių verčių, patikrinkite, ar serijiniame monitoriuje nenustatėte „Baud“dažnio į 115200.

Patikrinkite „Adafruit IO“prietaisų skydelį ir pamatysite, kad matuoklis ir linijų diagrama reaguoja į „MyoWare“raumenų jutiklio verčių pokyčius.

4 veiksmas: „Adafruit IO Trigger“sąranka

„Adafruit IO“paleidimo įrenginio sąranka
„Adafruit IO“paleidimo įrenginio sąranka
„Adafruit IO“paleidimo įrenginio sąranka
„Adafruit IO“paleidimo įrenginio sąranka

Iki šiol mes galėjome įvesti duomenis iš „MyoWare“raumenų jutiklio į „Adafruit IO“veikimą. Dabar mes pradėsime skaityti šią informaciją. Taigi, kai po 5 kartų aptikta raumenų jutiklio vertė virš X, veiksmas atliekamas naudojant „Neopixel“lemputę.

Šis skyrius buvo skirtas man, kai turėjau ištirti, kaip galiu perskaityti „Adafruit IO“istoriją. Anksčiau dirbau su informacijos santraukomis ir informacijos suvestinėmis, todėl maniau, kad sukurtas sklaidos kanalas ir prietaisų skydelis gali tai perskaityti ir sukurti veiksmą čia, „Arduino“. Iki šiol man nepavyko. Po daugybės tyrimų ir „Adafruit IO“sužinojau, kad veiksmą galima suaktyvinti naudojant „Adafruit IO“funkciją. Sužinokite daugiau apie trigerius.

Prieš sukurdami trigerį, turime sukurti kitą kanalą, kad galėtume jį pavadinti „Arduino“, kad gautume išvestį. Sukurkite sklaidos kanalą pavadinimu „AlertTriggered“.

Šalia antraščių sklaidos kanalo ir prietaisų skydelio yra „Trigeris“, eikite čia. Sukurkite naują trigerį. Būsite paklausti, ar norite sukurti reaktyvų aktyviklį ar tvarkaraščio paleidiklį, pasirinkite Reaktyvusis aktyviklis ir spustelėkite sukurti. Taip yra todėl, kad norite ką nors sukelti tik tada, kai kažkas atsitinka (1 nuotrauka).

Turi būti nustatyta daug dalykų (tolesni veiksmai taip pat parodyti 2 nuotraukoje).-Pirmą kartą pasirinkite analoginį kanalą, jei įvestis bus paimta iš čia.

-Ar pasirenkate daugiau nei tai, nes norite kažką suaktyvinti, kai vertė viršija tokį skaičių.

-Palyginimo vertę galite įvesti norimą skaičių, kad suaktyvintumėte trigerį. Šiuo atveju padariau 600.

-Su „arduino“turėsite gauti atsiliepimą, kai jis viršys 600: taigi adresu Tada pasirinkite paskelbti pranešimą adresu:.

-Po to galite pasirinkti savo antrąjį sklaidos kanalą, sukurtą „AlertTriggered“.

Galiausiai spustelėkite sukurti.

5 žingsnis: Neopikselio išvestis

Neopikselio išvestis
Neopikselio išvestis

Paskutinis žingsnis yra sukurti išvestį. Atlikta jūsų redaguotame „Arduino“eskize, paskambinus į „AlertTriggered“sklaidos kanalą (kurį sukūrėte ankstesniame veiksme).

Kad galėtumėte generuoti išvestį, pirmiausia turite prijungti „Neopixel“šviesos diodų juostą prie „NodeMCU“.- + 5v (kairėje) jūsų LED juostos viela ant „NodeMCU-GND“(dešinė) laido ant mazgo G (G = GND))- D5 (arba bet kurio kito D prievado) šviesos diodo centrinis laidas DIN

„CodeI“į šį veiksmą įtraukė visą eskizą su pakeitimais kaip failą (galite rasti šio veiksmo apačioje). Tai yra tas pats eskizas, su kuriuo dirbote per pastaruosius kelis veiksmus, tačiau dabar galutinis eskizas yra įtrauktas į veiksmus, kuriuos turite atlikti, kad gautumėte išvestį. adafruitio_musclesensor_neopixel failą. Tai veikia su konfigūracija, kurią anksčiau nustatėte naudodami savo duomenis. Kodų blokai yra įtraukti į komentarus, kad galėtumėte pamatyti, kas vyksta.

Šiame kode sukūriau trigerį, kai „AlertTriggered“(tai, ką mes deklaravome ankstesniame žingsnyje, kai vertė didesnė nei 600) suaktyvinama daugiau nei 5 kartus. Tai reiškia, kad kai jis suaktyvinamas, „Neopixel“LED juostelė yra nuo baltos iki raudonos. Tai įvyks minutę, o raudona būsena išnyks ir vėl įjungiama į baltą būseną.

Kad jums, kaip programuotojui, būtų aiškiau, paskutinis kodų rinkinys skirtas serijiniam monitoriui. Kokios yra vertės ir kada suaktyvinamas įspėjimo lygis. Kartu su sekundžių pridėjimu, kai įspėjimo būsena įjungta, kol po 60 sekundžių ji vėl išsijungs į įspėjimo būseną. Todėl ši dalis yra neprivaloma.

// parodyti praeinančias sekundes serijiniame monitoriuje, kai alartstate yra Serial.println ("Sekundės praėjo:"); Serial.println (secondsPassed); } else {secondsPassed = 0; }

Jei atlikote visus veiksmus arba turite eskizą „adafruitio_musclesensor_neopixel“su savo konfigūracija.h, galite įkelti jį į „NodeMCU“. Jei tai padaryta, serijiniame monitoriuje turite pamatyti kažką panašaus, kaip nurodyta žemiau:

Prisijungiama prie „Adafruit IO“…

„Adafruit IO“prijungtas. Siunčiama -> 23 Siunčiama -> 78

1 nuotrauka yra serijinis monitorius, kai jis yra budėjimo režime.

Tai neveikia? Patikrinkite šiuos dalykus- Patikrinkite, ar config.h įtrauktas teisingai- Ar teisingai įvedėte „Adafruit IO“vartotojo vardą ir raktą- Ar įvedėte tinkamą SSID „Wifi“slaptažodį- Ar įdėjote „MyoWare“laidus? Raumenų jutiklis dešinėje ir iš „Neopixel Led Strip“

Arba patikrinkite ankstesnius veiksmus.

6 žingsnis: Rezultatai

Hurra, baigėte! Norėdami parodyti ir pamatyti galutinį produktą, įtraukiau vaizdo įrašą.

Rekomenduojamas: