Šitas aparatas nepadės tau kvėpuoti, jei to neišeina daryti savaime,
čia kiek kita esmė.
Šita priemonė pasako tau
kada
kvėpuoti. Suprantama jei iškyla klausimas, kodėl tau kažkas turėtų
aiškinti kada kvėpuoti, juk dabar nieks to nedaro, o tau kvėpuoti sekas
puikiai, gerai varai!
Bet jei sekas ne taip puikiai, ar
varai
gan prastai, kvėpavimo ritmo suvaldymas gali atnešt naudos, nuramint
arba energizuot, priklauso nuo to kaip nusiteikei, ee,
varyt.
Aparatas turi pora mygtukų, porai tokių kvėpavimo pratimų. Paspaudus
kurį nors iš jų, įsijungia 5 minučių laikmatis, kurio metu šitas
daiktas, tam tikrais intervalais, vibruos ir mirksės, taip pranešdamas
tau, kad laikas įkvėpt ar iškvėpt (arba sulaikyti kvėpavimą).
Asmeniškai tau, mielas skaitoriau (ar skaitore - visi laukiami),
užprogramavau aparato pasirodymą, kad būtų aiškiau apie ką šneku.
Įsijunk garsą pilnam efektui.
Jis vaikštinėja!
Išsiaiškinau, kad jei vibruojantis motoras daužo tavo ranką 5 minutes,
jausmas toks pat lyg būtum ranką nugulėjęs, tad įprastai jis taip
smarkiai nevibruoja, sekančiam video girdisi, kad jis vos pirsteli.
Bzzt!
Dalys
Norėjau, kad aparatas išeitų kuo mažesnis, bet aišku išėjo vis tiek gan
didelis, bet dalys viduje yra miniatiūrinės! Štai visa mėsa (esmė) su
šiek tiek pinigų masteliui suprast.
Vibruojantis motoras. Dar vadinamas kapeika (gal?)
LED lemputė, kuri šviečia taip smarkiai, kad aklą apakintų antrą
kartą.
Atrodo negrėsmingai
250 mAh tūrio
batareika, palyginimui - mano telefono
batareikos
tūris yra 5000 mAh.
Telpa kokie trys elektronai
Batareikos
pakrovėjas, su USB jungtim, apsauga nuo perkrovimo ir žinoma,
lemputėm.
Aparato
smegenys
- ATTiny85 mikroschema. Programuojamas, mažai elektros naudojantis
kompiuteriukas, kuris įjungs motorą su lempa ir seks laiką.
Aštuonios kojos ir biški smegenų
Kaip Dalykai Susijungia
Pirmą ką norėjau pabandyti, tai vibruojantį motorą, niekad tokio
neturėjau. Prieš bandant, pasiskaičiau kaip reikia su juo elgtis -
pasirodo gerai, kad pasiskaičiau, nes jo negalima jungti tiesiai į
"smegenis" (mikroschemą), nes gali įvykti "smegenų sutrenkimas"
(sudegusi mikroschema).
Galima pajungti motorą tiesiai į elektrą (bateriją), viskas veiks
puikiai, tačiau jis tiesiog vibruos be galo (ir be krašto) - reikia jį
kažkaip išjungt (ir paskui vėl įjungt).
Būtų patogu jei tarp motoro ir baterijos, galėtumem įtaisyti jungiklį,
su kuriuo motorą galėtumėm išjungti, taip pat kaip namie ant sienos
jungiklis išjungia
liustrą.
Būtų dar patogiau, jei tą jungiklį galėtų valdyti, anksčiau minėti
"smegenys".
Tokio plano įgyvendinimui galima panaudoti tranzistorių, kuris gali
veikti kaip jungiklis. Jis turi tris kojas, prie vienos prijungiama
elektra, prie kitos motoras, o trečia veikia kaip
liustros
jungklis ant sienos, tik vietoj paspaudimo pirštu, tranzistorius
įsijungia (ir įjungia motorą) nuo elektros įtampos, kurią suteikia
"smegenys".
Beskaitant apie motoro veikimo reikalus, sužinojau apie dar vieną
dalyką, kurį reiktų čia pridėti - diodą. Išjungus motorą, trumpam gali
pakilti elektros įtampa, kas gali pagadinti tranzistorių, bet pajungus
diodą ant abiejų motoro laidų, jis turėtu
sugerti
visokias įtampos kliurkas.
Trys draugeliai - tranzistorius, motoras ir diodas
Pasibandymui, vietoj mikroschemos, prie tranzistoriaus prijungiau
mygtuką ir jį šiek tieką pamaigiau.
Mažas motoras, didelis entuziazmas
Toliau reiktų pabandyti mikroschemą, kurią reikia užprogramuoti, kad ji
valdytų motorą, o ne mano pirštas. Bet kaip užprogramuoti kažką, kas
neturi USB jungties, tik 8 metalines kojas? Reikia kažko kas turi USB
jungtį ir žino kaip elgtis su metalinėm kojom, tas kažkas vadinasi
USBasp programuotojas.
Kaip matai jis irgi turi metalines kojas, kurias prijungus prie
mikroschemos atsiranda galimybė ją užprogramuoti.
Sujungimui panaudojau maketavimo plokštę
Viską sujungus, gaunam tokią pabaisą.
O viešpatie
Atrodo klaikiai, bet veikia, tad viskas dar ne taip ir blogai, dabar
galima pabandyti šitą jovalą padaryti dailesnį.
Aparato Kiautas
Kad dėžutė, į kurią sudėsiu dalis, nebūtų plytos dydžio, reikia
apkarpyt laidus ir prilituot dalis ant varinės plokštelės.
Plokštelę darysiu pats, panašiai kaip
gamindamas skaitmeninį laikrodį, tik šį kart nepiešiu ant plokštės ranka, nes pasiekiau technologinių
aukštumų.
Nusipirkau lazerinį spausdintuvą ir permatomo popieriaus (skaidrių),
kad galėčiau atspausdint takelius.
Technologinės aukštumos
Paveiksliuką viršuj padariau su programa KiCad, štai kaip tai atrodo.
KiCad
Tuomet įsigijau popieriaus kuris reaguoja į šviesą. Jo funkcija yra
prilipti prie varinės plokštelės tam tikrose vietose, kurias kitaip
turėčiau užpaišyt juodu markeriu.
Kadangi šitas popierius ne itin limpa, pravažiuoju jį per laminatorių,
neturint jo, turėtų sueit ir lygintuvas.
Ant popieriaus, kad laminatorius pričiuptų
Reikia uždėti skaidrę su takeliais ant viršaus ir pašviesti. Galima
naudoti paprastą lempą arba palikti ant saulės, bet tai nelabai tikslu
- dėl per daug šviesos, takeliai gali išsilieti, su skirtingais šviesos
šaltiniais, reikia skirtingai laiko švitinti. Tad, kad būtų tiksliau,
panaudojau ultravioletines LED lemputes.
Deja ultravioletinės lemputės brangios, todėl nusipirkau šitą pigų
daiktą skirtą džiovinti nagus.
Nepanašu, kad ant nagų yra ka džiovinti
Jame yra ultravioletinės LED lemputės ir laikmačio mechanizmas,
išardęs, viską sukišau į pietų dėžutę.
Reikia tik prisiminti ką daro mygtukai
Ant baltų kojokų yra uždėtas akrilinis stiklas, ant kurio dedasi
skaidrė ir varinė plokštė, taip pat ir popierius kuris prisiklijavo
važiuojant laminatorium.
Nuotrauka prieš laminatorių, iš apačios: varinė plokštė, į šviesą
reaguojantis popierius, skaidrė su atspausdintais takeliais
Važiojam!
Tereikia penkių sekundžių.
Atominė pietų dėžutė
Vietose, kur ant skaidrės nebuvo nieko atspausdinta, šviesa
prisvilino
popierių prie varinės plokštelės. Visa kita lengvai nusivalo įmetus
plokštę į puodelį vandens sumaišytą su šaukštu
kurmio
ir biški pamaskatavus (su tuo šaukštu nevalgyk).
Tuomet plokštę įmečiau į kibirą geležies chlorido, kad pašalint varį
aplink takelius.
Beveik idealiai
Beliko tik popierius ir varis po takeliais, iki jo galima prasibrauti
patrynus plokštę su acetonu.
Takeliai elektronams pasivaikščiot
Atitinkamose vietose išgrežęs skyles, viską sudėjau į vietas ir
prilitavau.
Dėžutę sukūriau su programa FreeCAD ir atspausdinau 3D spausdintuvu.
Atrodo nustebęs
Tada pradėjau dėliot komponentus į vietas ir apkirpinėt laidus.
:o
Kodas
Jei smalsu - štai kas įgyvendina visą funkcionalumą. Kad būtų
paprasčiau jį programuot, panaudojau dar Arduino kodą.
#include<Arduino.h>int motorPin = 0;
int ledPin = 1;
int buttonEx1 = 2;
int buttonEx2 = 3;
#define VIBRATION_DURATION 20#define VIBRATION_LONG_DURATION 40#define LED_CHANGE_STEP 1constint ledPulseDuration = (255 * LED_CHANGE_STEP) * 2;
int excercise1[] = {4, 7, 8};
int excercise2[] = {6};
void ledOn() {
for (int i = 0; i <= 255; i++) {
analogWrite(ledPin, i);
delay(LED_CHANGE_STEP);
}
}
void ledOff() {
for (int i = 255; i >= 0; i--) {
analogWrite(ledPin, i);
delay(LED_CHANGE_STEP);
}
}
void vibrateWithLedPulse() {
digitalWrite(motorPin, HIGH);
for (int i = 0; i <= 255; i++) {
analogWrite(ledPin, i);
delay(LED_CHANGE_STEP);
if (i >= VIBRATION_DURATION) {
digitalWrite(motorPin, LOW);
}
}
for (int i = 255; i >= 0; i--) {
analogWrite(ledPin, i);
delay(LED_CHANGE_STEP);
}
}
void vibrateAndSwitchOffLed() {
digitalWrite(motorPin, HIGH);
for (int i = 255; i >= 0; i--) {
analogWrite(ledPin, i);
delay(LED_CHANGE_STEP);
if (i <= 255 - VIBRATION_DURATION) {
digitalWrite(motorPin, LOW);
}
}
}
void vibrate() {
for (int i = 0; i < 2; i++) {
digitalWrite(motorPin, HIGH);
delay(VIBRATION_LONG_DURATION);
digitalWrite(motorPin, LOW);
delay(VIBRATION_LONG_DURATION);
}
}
void runExcercise(int ex[], int size) {
unsignedlong startAt = millis();
unsignedlong interval = 5 * 60 * 1000UL;
bool firstRun = true;
while (true) {
for (int i = 0; i < size; i++) {
if (firstRun) {
firstRun = false;
vibrateAndSwitchOffLed();
} else {
vibrateWithLedPulse();
}
delay((ex[i] * 1000) - ledPulseDuration);
}
unsignedlong duration = millis() - startAt;
if (duration >= interval) {
break;
}
}
vibrate();
ledOn();
}
void demo() {
while (true) {
digitalWrite(motorPin, HIGH);
for (int i = 0; i <= 255; i++) {
analogWrite(ledPin, i);
delay(LED_CHANGE_STEP);
}
for (int i = 255; i >= 0; i--) {
analogWrite(ledPin, i);
delay(LED_CHANGE_STEP);
}
digitalWrite(motorPin, LOW);
delay(1000);
}
}
void setup() {
pinMode(motorPin, OUTPUT);
digitalWrite(motorPin, LOW);
pinMode(ledPin, OUTPUT);
pinMode(buttonEx1, INPUT_PULLUP);
pinMode(buttonEx2, INPUT_PULLUP);
vibrate();
ledOn();
}
void loop() {
if (digitalRead(buttonEx1) == LOW) {
delay(100);
if (digitalRead(buttonEx2) == LOW) {
demo();
return;
}
}
if (digitalRead(buttonEx1) == LOW) {
runExcercise(excercise1, sizeof(excercise1) / sizeof(excercise1[0]));
}
if (digitalRead(buttonEx2) == LOW) {
runExcercise(excercise2, sizeof(excercise2) / sizeof(excercise2[0]));
}
}
Ačiū, kad skaitei, parašyk man jei irgi norėtum nustebusio kvėpavimo
aparato - kontaktai puslapio apačioj.