Bu uygulamada bluetooth modülünü kullanarak 3 farklı ledi telefonumuzu kullanarak farklı düzenlerde yakıyoruz ve telefondan gönderdiğimiz girdileri seri port ekranında da görecek şekilde düzenliyoruz. Projeye geçmeden önce bluetooth modülünü ve arduino ile nasıl bağlantısını inceleyelim.
Şekilde de görüldüğü üzere bluetooth modülünün üzerinde 6 tane pini bulunmaktadır. Kısaca GND ve VCC pinleri besleme, TX ve RX bacakları da haberleşme için kullanılır. Arduino'nun TX(Transit x) pini veriyi gönderirken RX(Receive x) pini ise veriyi almaktadır. Bu portlar Arduino'daki RX ve TX portları ile çapraz bağlanmaktadır. Bunun nedeni ise basitçe, Arduio'nun yolladığı veriyi(Tx) bluetooth modülünün alması(Rx) ve bluetooth modülünün gönderdiği veriyi(Tx) ise Arduino'nun alması(Rx) gerekmektedir. Ayrıca bu pinler 3.3V seviyesinde çalışır. Bunun için Arduino'nun üzerinde bulunan ATmega 328P mikrodenetleyicinin datasheetine göz atmamız gerekmektedir.
Elektriksel karakteristikler kısmında Arduino'nun 5V besleme yapıldığında 4.1V verdiği görülmektedir. Bu da 3.3 Volt seviyesinde çalışan Rx ve Tx pinleri için tehlikelidir. Bu yüzden Arduino'nun Tx piniyle Bluetooth modülünün Rx pinini birbirlerine bağlarken voltaj bölücü uygulanmalıdır.

Burada Vin=Arduino(Tx), Vout=Bluetooth modülü(Rx), R1=1K ohm, R2=2K ohm'dur.
Vout=Vin*[R2/(R1+R2)]
Vout=5V*(2/3) --> Vout=3,33V
Arduino'nun hangi giriş voltaj seviyesine lojik 1 uyguladığını görmek için de tekrar datasheete dönmemiz gerekmektedir.
Datasheetten görüldüğü üzere Vcc=5V verdiğimizde Arduino 3V(0.6*5V=3V) ve üzeri voltajları lojik 1 algıladığını bize söylemektedir. Sonuç olarak Arduino'nun Rx pini ve bluetooth'un Tx pini arasında herhangi bir gerilim bölücü uygulanmasına gerek yoktur. Bluetooth modülü ve Arduino arasındaki bağlantılarına göz attıktan sonra artık proje yapılışına gelebiliriz.
Kullanılan malzemeler:
3 adet Led
3 adet 220 ohm direnç
3 adet 1K direnç
HC-05 bluetooth modülü(HC-06 da olur)
Devre şeması:
Not:Tinkercad'te bluetooth modül olmadığından sembolik olarak başka modül kullanılmıştır.
Bluetooth modülü yukarıda bahsedilen özelliklere göre, ledler ise bir önceki yazımızda gösterildiği şekilde bağlanmıştır. Bluetooth modülünün hem bilgisayarla hem de telefonla haberleşmesi için 10. ve 11.pinleri sanal haberleşme portları haline getiriyoruz. Bunu yaparken de SoftwareSerial kütüphanesini kullanıyoruz.
#include <SoftwareSerial.h>
SoftwareSerial bluetoothModulu(10, 11);
/* Arduino -> Bluetooth modulu
10 (Rx) -> Tx
11 (Tx) -> Rx
*/
const int LED1 = 2;
const int LED2 = 3;
const int LED3 = 4;
void setup()
{
Serial.begin(9600); /*Seri port haberleşmesi*/
bluetoothModulu.begin(9600); /* Bluetooth haberleşmesi */
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
}
char veri; /* okunan verilerin kaydedileceği değişken */
int a=0; /*sonsuz döngüde olmasını veya ondan çıkmasını sağlayan değişken*/
void loop()
{
while(bluetoothModulu.available()>0){ /* Modülden veri gelişini kontrol eder.*/
veri = bluetoothModulu.read(); /*veri değişkenine bluetoothtan gelen veriyi kaydeder.*/
Serial.println("Gelen veri: "); /*Seri port ekranına yazar*/
Serial.println(veri); /*Seri port ekranına yazar*/
switch(veri){
case '1':
bluetoothModulu.println("Ledler mod 1 düzeninde yanıyor.");
a=0;
while(a==0){
for(int i=2; i<5 ; i++) //Ledlerin 10 numaralı pinden 13 numaralı pine doğru sırayla yanıp sönmesini sağlayan döngü
{digitalWrite(i,HIGH);//ledlere lojik 1 gönderir ve ledleri yakar.
delay(100);//100 milisaniyelik gecikme
digitalWrite(i,LOW);//ledlere lojik 0 gönderir ve ledleri söndürür.
delay(100);}
if(bluetoothModulu.available()>0){ /*Eğer başka bir veri girişi olursa while döngüsünden çıkar*/
a=1;}
}
break;
case '2':
bluetoothModulu.println("Ledler mod 2 düzeninde yanıyor.");
a=0;
while(a==0){
for(int i=4; i>=2 ; i--) //Ledlerin 10 numaralı pinden 13 numaralı pine doğru sırayla yanıp sönmesini sağlayan döngü
{digitalWrite(i,HIGH);//ledlere lojik 1 gönderir ve ledleri yakar.
delay(100);//100 milisaniyelik gecikme
digitalWrite(i,LOW);//ledlere lojik 0 gönderir ve ledleri söndürür.
delay(100);
}
if(bluetoothModulu.available()>0){
a=1;}
}
break;
case '3':
bluetoothModulu.println("Ledler mod 3 düzeninde yanıyor.");
a=0;
while(a==0){
digitalWrite(LED2, HIGH);
delay(200);
digitalWrite(LED2, LOW);
digitalWrite(LED1, HIGH);
digitalWrite(LED3, HIGH);
delay(200);
digitalWrite(LED1, LOW);
digitalWrite(LED3, LOW);
delay(100);
if(bluetoothModulu.available()>0){
a=1;}
}
break;
} /* Switch sonu */
}/* While sonu*/
}/* Loop sonu */
Projenin çıktıları ise şu şekildedir:
Not: Bu projede aşağıdaki uygulama kullanılmıştır.
Yorumlar
Yorum Gönder