Sadržaj:

Interaktivno svjetlo bez dodira: 7 koraka (sa slikama)
Interaktivno svjetlo bez dodira: 7 koraka (sa slikama)

Video: Interaktivno svjetlo bez dodira: 7 koraka (sa slikama)

Video: Interaktivno svjetlo bez dodira: 7 koraka (sa slikama)
Video: VUK MOB FEAT. VOYAGE X BRESKVICA - KORACI U NOCI (OFFICIAL VIDEO) 2024, Novembar
Anonim
Interaktivno svjetlo bez dodira
Interaktivno svjetlo bez dodira

Zdravo svima! Ovdje bih podijelio projekt na kojem sam radio. Nadahnuo sam se da eksperimentišem sa kapacitivnim sensingom dodira kroz projekat na svom univerzitetu. Saznao sam za ovu tehnologiju putem instrukcija i iskoristio stvari koje sam naučio ovdje i s drugih mjesta na internetu za izradu vlastitog kontrolera bez dodira, koji koristim za miješanje različitih RGB vrijednosti za stvaranje zanimljivih svijetlih boja.

Za početak, kada sam započeo ovaj projekt, nisam znao ništa o elektronici niti kapacitivnom osjetljivom dodiru.

Neki problemi na koje sam naišao rano bili su uzrokovani nerazumijevanjem šta se zapravo događa. Dakle, kratki uvod kako ja to razumijem:

Kapacitivni senzor koristi više komponenti, uglavnom:

Kondenzator (u ovom projektu koristimo aluminijsku foliju, ali je moguće koristiti i provodljive tekućine itd.), žice (naravno, njegova elektronika)

i otpornik, sve ispod 10 MOhm je premali otpor za više od direktnog dodira.

način na koji to radi je mjerenje vremenske razlike između tačke A i tačke B. Od početnog pina šalje signal do krajnje osovine, vrijeme koje se mjeri mjeri se tajmerom. Smanjivanjem vrijednosti otpora (pomicanjem kondenzatora (u ovom slučaju vaše ruke) bliže kondenzatoru senzora (aluminijska folija) ovaj put se skraćuje, razlika u vremenu je ono što senzor vraća kao vrijednost.

Zbog utjecaja kapacitivnih površina na senzor, podaci mogu biti izrazito nestabilni zbog smetnji. To se može riješiti dobrim dijelom pravilnom izolacijom kondenzatora, kao i korištenjem mase (kasnije ću pokazati kako).

Dakle, to nije u mogućnosti da započnemo popis svih stvari koje su nam potrebne:

Korak 1: Šta nam treba?

Elektronika:

1. 2 x 22M Ohm + otpornici (što je veća vrijednost otpora, to vam senzor dalje reagira, osobno sam koristio 22M Ohma, minimum za dobijanje korisnih podataka koje sam doživio bio je 10M Ohm)

2. 3x 330 Ohm otpornici

3. Žice

4. Oglasna ploča

5. Ploča (moja je imala kontinuirane bakrene trake)

6. Više zajedničkih katodnih RGB LED svjetiljki (koristio sam 8, ali možete imati više ili manje, ovisno o tome koliko svjetla želite)

7. Aluminijska folija

8. Prozirna folija

9. Arduino Uno

10. Traka

Slučaj:

1. Drvo Koristio sam MDF 50 x 50 x 1,8 CM (možete koristiti zaista bilo šta. Zavisi od željenog efekta i alata koji imate na raspolaganju)

2. Akrilni pleksiglas Koristio sam 50 x 50 x 0,3 CM (ili bilo koji drugi prozirni/prozirni materijal poput rižinog papira)

3. Brusni papir (fini brusni papir)

4. Ljepilo za drvo

5. furnir (opcionalno)

6. Akrilno ljepilo

Alati:

Skidač žice

Lemilica + lim

Stanley nož

bušilica

Testera (koristio sam stonu testeru)

Korak 2: Izrada prototipa:

Izrada prototipa
Izrada prototipa
Izrada prototipa
Izrada prototipa

Sada imamo sve i možemo započeti izradu prototipa da vidimo kako to funkcionira:

Pripremni radovi:

Izrežite 4 pravokutnika iz aluminijske folije (moji su otprilike 10 x 5 cm), zamotajte ih u prozirnu foliju kako biste ih izolirali od izravnog dodira i zalijepite žicu na aluminijsku foliju. Samo sam zalijepio ogoljen kraj folije (sve dok ostanu u kontaktu).

Kako bih bio siguran da je aluminij izoliran, umotao sam ga u prozirnu foliju i peglao između papira (samo nekoliko sekundi da se potpuno ne otopi).

Zatim postavite krug kako se vidi na slici.

Pin 4 se koristi kao pin za slanje za oba senzora, dok su pinovi za prijem pin 2 i 5. Možete koristiti više pinova za slanje, ali to stvara probleme jer nisu savršeno sinhronizovani.

upotrijebite ovu postavku za otklanjanje pogrešaka prije nego što sve zalemite, kako biste bili sigurni da sve zaista funkcionira kako je predviđeno.

Korak 3: Kôd:

Sada imamo sve i možemo početi otklanjati greške na senzorima.

Da biste koristili moj kôd, preuzmite biblioteku kapacitivnog sensinga s Arduina i instalirajte je prema uputama datim na referentnoj stranici: Kliknite na mene

Kôd: (Nisam dobar u kodiranju, pa ako znate kako to bolje učiniti, učinite to)

#include // uvezite biblioteku kodova

CapacitiveSensor cs_4_2 = Kapacitivni senzor (4, 2); // Slanje pin = 4, prijem su 2 i 5 CapacitiveSensor cs_4_5 = CapacitiveSensor (4, 5); const int redPin = 11; const int greenPin = 10; const int bluePin = 9; const int numIndexR = 10; // veličina niza const int numIndexG = 10; int bojaR = 0; int bojaG = 0; float bojaB = 0; int indexR [numIndexR]; int posIndexR = 0; ukupno ukupnoR = 0; // mora biti dugačak jer je ukupna vrijednost mog niza bila prevelika za cijeli broj. int prosjekR = 0; int indexG [numIndexG]; int posIndexG = 0; ukupno ukupnoG = 0; int prosjekG = 0; void setup () {pinMode (redPin, OUTPUT); pinMode (greenPin, OUTPUT); pinMode (bluePin, OUTPUT); for (int thisIndexR = 0; thisIndexR <numIndexR; thisIndexR ++) {// postavlja niz na 0 indexR [thisIndexR] = 0; } for (int thisIndexG = 0; thisIndexG = 4500) {// ograničava vrijednosti senzora na upotrebljivi maksimum, to nije isto za svaku vrijednost otpornika i također se može malo razlikovati od okoline do okoline koju ćete možda morati prilagoditi svoje potrebe. ukupno1 = 4500; } if (ukupno2> = 4500) {ukupno2 = 4500; } totalR = totalR - indeksR [posIndexR]; // ovo ovdje stvara niz koji kontinuirano dodaje izlaz senzora i proizvodi prosjek. indexR [posIndexR] = ukupno1; totalR = totalR + indexR [posIndexR]; posIndexR = posIndexR + 1; if (posIndexR> = numIndexR) {posIndexR = 0; } prosjekR = totalR / brojIndexR; // koristimo prosjek umjesto sirovih podataka kako bismo izgladili izlaz, to malo usporava proces, ali i stvara zaista lijep glatki tok. totalG = totalG - indeksG [posIndexG]; indexG [posIndexG] = ukupno 2; totalG = totalG + indexG [posIndexG]; posIndexG = posIndexG + 1; if (posIndexG> = numIndexG) {posIndexG = 0; } prosekG = totalG / brojIndexG; if (averageR> = 2000) {// ne želimo da LED diode konstantno mijenjaju vrijednost osim ako nemate unos iz vaše ruke, pa se time osigurava da se ne uzmu u obzir sva niža očitavanja okoliša. colorR = mapa (prosjekR, 1000, 4500, 255, 0); analogWrite (redPin, colorR); } else if (averageR = 1000) {colorG = map (averageG, 1000, 4500, 255, 0); analogWrite (greenPin, colorG); } else if (prosjekG <= 1000) {colorG = 255; analogWrite (greenPin, colorG); } if (colorR <= 125 && colorG <= 125) {// B radi malo drugačije jer sam koristio samo 2 senzora pa sam mapirao B na oba senzora colorB = map (colorR, 255, 125, 0, 127.5) + mapa (colorG, 255, 125, 0, 127.5); analogWrite (bluePin, colorB); } else {colorB = map (colorR, 255, 125, 127.5, 0) + map (colorG, 255, 125, 127.5, 0); if (colorB> = 255) {colorB = 255; } if (colorB <= 0) {colorB = 0; } analogWrite (bluePin, colorB); } Serial.print (millis () - početak); // ovo je za potrebe otklanjanja grešaka Serial.print ("\ t"); Serial.print (colorR); Serial.print ("\ t"); Serial.print (colorG); Serial.print ("\ t"); Serial.println (colorB); kašnjenje (1); }

Ono što ovaj kod radi je izvlačenje sirovih podataka iz senzora (ti podaci će uvijek biti pomalo nestabilni zbog svih različitih faktora koji utječu na senzor) i stavlja neobrađene podatke u niz neprekidno, kada niz dosegne maksimalnu vrijednost (u mom slučaju 10) briše zadnju vrijednost i dodaje novu. Svaki put kada se doda vrijednost izračunava prosječnu vrijednost i stavlja je u novu varijablu. Ova prosječna varijabla se koristi za mapiranje vrijednosti na vrijednost od 0 do 255, to je vrijednost koju upisujemo na RGB pinove kako bismo povećali svjetlinu svakog kanala (kanali su RG i B).

Sada, ako postavite svoj kôd na arduino i otvorite serijski monitor, trebali biste vidjeti RGB vrijednosti niže kada pređete rukom preko svakog senzora, također bi se trebala promijeniti i svjetlosna boja LED diode.

Korak 4: Sada za slučaj:

Sada o slučaju
Sada o slučaju
Sada o slučaju
Sada o slučaju
Sada o slučaju
Sada o slučaju

Slučaj: Napravio sam slučaj pomoću alata dostupnih na svom univerzitetu, tako da ovaj tok rada nije primjenjiv na sve. Međutim, tu nema ničeg posebnog, potrebna mu je rupa na jednoj strani za prolaz kroz USB priključak, ali osim toga to je samo otvorena kutija s vrhom.

Dimenzije su sljedeće:

15 x 15 CM za prozirni vrh

i

15 x 8 cm za drvenu podlogu (za mene je debljina drveta bila 1,8 CM).

Pomoću stolne pile izrezao sam ploču MDF -a u odgovarajuće dimenzije koje su mi potrebne (to su 4 ploče 15 x 8 CM i 1 15 x 15 CM osnovna ploča), nakon čega sam izrezao uglove pod kutom od 45 stupnjeva. Sve dijelove koje sam spojio ljepilom za drvo i stezaljkama (ostavite da se osuše najmanje 30 minuta), koristio sam isti postupak za pleksiglas, ali s posebnim listom pile.

1 drvena strana trebala bi imati otvor u sredini na visini arduino USB priključka kako bi se omogućilo priključivanje arduina.

Završio sam bazu furnirom. Rezao sam ga na komade malo veće od površine svake strane.

Ovo sam zalijepio na nju, a zatim je pričvrstio 30 minuta za svaku stranu (bolje da to učinite pojedinačno kako biste bili sigurni da ne klizi, a nakon što se osušio, odrezao sam sve što je stršilo.

Poklopac koji sam zalijepio ljepilom specifičnim za Acryl pod nazivom Acryfix.

Imajte na umu da ako koristite akrilni pleksiglas, ljepilo malo otapa pleksiglas, pa budite što precizniji i brži (suši se u roku od nekoliko minuta, ali je izložen zraku u roku od nekoliko sekundi).

Da završim poklopac, kocku sam zaledila brusilicom za pesak, ali možete koristiti i fini brusni papir, potrebno je samo mnogo više vremena da izgleda ujednačeno. Pazite, međutim, ako koristite brusni papir, on mora biti sitnozrnat i lijepiti dijelove zajedno nakon postupka zamrzavanja (tako da ga nećete slučajno slomiti pritiskom na veliki pritisak)

Kako bih bio siguran da čep ne klizi previše, zalijepio sam nekoliko malih drvenih šipki na rubove drvene kocke.

Korak 5: Krajnji rezultat bi trebao izgledati otprilike ovako:

Krajnji rezultat bi trebao izgledati otprilike ovako
Krajnji rezultat bi trebao izgledati otprilike ovako

Korak 6: Lemljenje

Lemljenje!
Lemljenje!
Lemljenje!
Lemljenje!

Ako imate ploču, možete početi lemiti sve dijelove zajedno koristeći istu postavku koju ima i vaša ploča.

Moja ploča ima kontinuirane bakrene trake za lakše korištenje.

Za svaki senzor odrežem mali kvadrat za lemljenje otpornika i žica.

Žice za slanje (žice koje idu od pina 4 do svakog senzora) lemljene su u nizu na zasebnom kvadratu, s 1 žicom koja ide u pin 4.

Zadržao sam dugački pravokutnik da napravim improviziranu LED traku (izmjerite je tako da stane unutar poklopca, ali na rubove baze). Možete samo lemiti LED diode jedan za drugim (imajte na umu da sam slučajno lemio LED diode i otpornike na pogrešnoj strani ploče, bakrene trake uvijek trebaju biti s donje strane).

Kada završite sa lemljenjem pojedinačnih dijelova, postavite ih u kućište. Pojedinačne žice nisam lemio zajedno pa ih mogu lako promijeniti ako je potrebno.

Vrijeme je da sve uklopite u bazu: Ovo je prilično najjednostavniji korak, arduino mora biti na prvom mjestu s USB priključkom kroz otvor na stražnjoj strani kućišta. Sada dodajte senzore, provjerite da li folija senzora pristaje uz drvo s obje strane, s uzemljenom folijom ravno uz nju. Kad se sve dobro uklopi, umetnite RGB LED diode u desne igle (9, 10, 11) i pustite ih da se naslone na rubove baze.

Korak 7: Gotovi smo

Ako ste sve ovo ispratili, sada biste trebali imati radno svjetlo s kapacitivnim miješanjem boja na dodir. Zabavi se!

Preporučuje se: