Arduino KY-008 Laser Transmitter i Receiver
Siguran sam da smo svi nekada gledali akcione filmove kada lopov provaljuje u trezor banke ili u neki muzej i provlači se između optičkih niti kako ne bi aktivirao alarm. U ovoj lekciji naučit ćemo osnovne karakteristike laser transmittera i laser receivera u kombinaciji sa mikrokontrolerom i možda baš vi napravite novi sigurnosni sistem!
U ovoj lekciji ćemo objasniti:
- Šta je to laser transmitter i receiver?
- Šema povezivanja i kod za kontrolu laser transmitter i receivera,
- Specifikacija materijala
Šta je to laser transmitter i receiver?
KY-008 Laser transmitter modul je jedan od najčešćih uređaja koji se koriste u Arduino projektima. U kombinaciji s drugim komponentama, može se koristiti za optičke niti kao što je u našem primjeru.
KY-008 je posebno uredan jer se može izravno napajati iz Arduino izlaznog pin-a.
Kao što smo prethodno naveli uloga KY-008 transmittera u našem projektu je isključivo da nam stvori optičku nit, tačnije, da nam usmjeri lasersku zraku (snop) prema detektoru (receiveru). Na ovom primjeru možemo zaključiti da će detektor imati funkciju input-a, a transmitter ćemo povezati direktno na 5V. Obzirom da koristimo digitalne parametre, u nastavku ćemo postavljati uslove na osnovu digitalnih stanja HIGH (1) i LOW (0). Kako bi cijelo vrijeme imali očitanje receivera, tj. da bi konstantno dobivali informacije sa receivera da li je stanje 1 ili 0, transmitter će cijelo vrijeme imati usmjerenu optičku nit prema receiveru.
Iz tehničkih karakteristika vidimo da transmitter radi na 5V što je idealno jer možemo iskoristiti direktno napajanje sa Arduino Uno ploče.
Šema povezivanja i kod za kontrolu laser transmitter i receivera:
Povezivanje KY-008 transmitter i receivera sa Arduino kontrolerom ćemo uraditi sljedećim redoslijedom:
Značenje boja:
Crvena = 5v (+)
Zelena = pin 10 -> preuzimanje podatka sa laser receivera
Plava = GND (-)
Nakon što smo izvršili povezivanje komponenti kao na slici pređimo na programiranje:
Kao provjeru koda i ispis rezultata stanja koristit ćemo ispis vrijednosti na Serial monitor. U slučaju kada je laserska nit ili optički snop usmjeren u receiver stanje će biti istinito tj. Serial monitor će nam ispisati broj jedan (1), a suprotno tome nula (0). Kaš što možete vidjeti na slici, koristili smo boolean tip podatka. Petlja se ponavlja svakih 1000 milisekundi (1 sekunda).
U prethodnim lekcijama (link za buzzer – lekciju link za If lekciju) stekli smo znanje da koristimo funkciju if i da kontrolišemo rad buzzera ili zvona.
Kako bi ovaj projekat učinili još interesantnijim, proširit ćemo kod koji smo već napisali i postavit ćemo uslov (komandu if) da nam u ovisnosti od digitalnog očitanja laser receivera (1 ili 0) pokrene zvučni indikator upozorenja.
Proširena verzija našeg projekta:
Prethodni kod smo proširili tako što smo ubacili uslov (if) i kod za buzzer kao OUTPUT tj. da ima funkciju alarma u ovisnosti od stanja očitanja. Kao što možete primjetiti u kodu smo koristili malu drugačiju sintaksu komante tone nego u lekciji koja se odnosi na buzzer-e.
Buzzer Syntax
Primjer iz prethodne lekcije:
tone(pin, frequency)
Primjer iz ove lekcije:
tone(pin, frequency in hertz, duration in milliseconds)
Čak ni ovo rješenje nije idealno, ali je puno bolje od prethodnog, jer smo u istoj liniji koda odredili period trajanja zvuka. Prednost korištenja ove sintakse jeste ta što koristimo paralelno dva tajmera tj. izvršavaju se istovremeno dva procesa.
U nastavku ćemo malo detaljnije objasniti kako se redoslijedom kod izvršava:
Prije samog void setup imenovali smo tip podatka, nazive senzora i pinove koje koriste.
U void setup smo definisali serijski port (Serial.begin(9600)) za komunikaciju preko kojega ćemo dobivati ispis stanja u serijal monitoru,
Vrijednost očitanja (laserReceiver) smo spremili u boolean tipu podatka (1 ili 0) pod nazivm val i tražili smo ispis vrijednosti (Serial.println) koju možemo vidjeti u Serial monitoru,
Nakon što smo dobili rezultat 1 ili 0 postavili smo uslove. U našem primjeru uslov (if) je postavljen tako da u slučaju da je laserski snop usmjeren u receiver, pokretanjem Serial monitora, dobit ćemo vrijednost 1 (HIGH), a u slučaju da je snop prekinut dobit ćemo suprotnu vrijednost tj. 0 (LOW).
Naš uslov je postavljen tako da provjerava stanje receivera i da se aktivira samo u slučaju da je rezultat LOW tj. 0 (nula).
Sve dok je uslov HIGH ili 1, tj. sve dok je snop usmjeren u receiver, uslov nije ispunjen i petlja će se ponavljati svaki 150milisekundi (delay 150).
U trenutku kada prekinemo laserski snop, uslov će se ispuniti i čut ćemo buzzer koji će se aktivirati 100milisekundi, nakon čega će se ugasiti 50 milisekundi.
Sigurno se pitate: “a zašto buzzer nije aktivan 100 milisekundi, pa se ugasi 150 milisekundi, jer toliko smo napisali u delay?“
Odgovor leži u prethodno spomenutoj rečenici koja se odnosila na prednost korištenja ove buzzer sintakse u kojoj koristimo paralelno dva tajmera tj. da se izvršavaju istovremeno dva procesa.
Specifikacija materijala:
1x Arduino Uno
1x Breadboard
1x Buzzer – zvono
7x komunikacijski kablovi
1x Laser transmitter
1x Laser receiver
Napomena:
Ne znam u čemu je problem, ali neki transmitteri jednostavno ne rade kad ih pravilno povežemo tj . onako kako je naznačeno na samom modulu (+ i -). U slučaju da naletite na baš takav samo zamijenite polove plus i minus na kratko i testirajte da li modul radi.
Ako želite ovaj projekat učiniti još interesantnijim i naprednijim, povežite 4 – 5 laser transmitter i receiver i napravite igricu za sebe i djecu pod nazivom ” Avoiding Lasers “.
Pogledajte kako to rade moci iz serije “The Big Bang Theory“: