[wpfp-link] 

Arduino UNO , RGB modülü ve GSM modülü kullanarak bir lambanın nasıl kontrol edilebileceğini aşama aşama anlatacağız.  Herhangi bir telefondan gönderilen sms meajlarına göre lambayı açıp kapayabilir, ışık rengini istediğiniz gibi değiştirebilirsiniz.

 

Sms mesajında yazdığınız karaktere göre lambanın davranışı değişiyor. Aşağıdaki videoyu izleyerek çalışmasını daha iyi anlayabilirsiniz:

 

 

Karakterlerin listesi:

R kırmızı renk
G yeşil renk
B mavi renk
Y sarı renk
O turuncu renk
P mor renk
W beyaz renk
F renkler arası geçişi ayarlar

 

Bu uygulama GSM / GPRS  modülüyle yapılabilecek uygulamaların sadece bir örneği. Aynı mantıkla ev aydınlatmanızı, alarm sisteminizi, kısaca istediğiniz her aygıtı  sms ile kontrol edebilirsiniz.

Bunların yanında SIM900 modülünü kullanarak DTMF kodlarını da kullanabilirsiniz.

DTMF Dual Tone Multi Frequency kelimelerinin baş harflerinden oluşur.
Kelime anlamı çift tonlu çoklu frekans kodlama sistemidir. DTMF esas olarak
Amerikan ordusu için Bell telefon laboratuvarlarında geliştirilmiş bir kodlama
sistemidir. Daha sonra telefon şebekelerinde bilgi yollamanın güvenli yolu
olarak tercih edilmiş ve telefon abonesinin santrala aradığı abone ile ilgili
bilgileri ilettiği standart yöntem olarak günümüzde yaygın olarak kullanılmaktadır.
DTMF kodlama sistemi radyo amatörlüğünde yerini son yirmi yıl içinde yaygın
olarak almıştır. Günümüzde telsiz cihazlarının çoğunda DTMF sinyallerini
yollamaya ve almaya yarayan modüller ile tuş takımı bulunmaktadır. Bu imkan
sayesinde telsiz yardımıyla DTMF kodlu mesajlar, çağrı kodları yollamak;
uzaktan kumanda amaçlı rölelerin kontrolu gibi işler gerçekleştirilebilir.

 

Uygulamanın arduino programı aşağıdaki şekildedir:

 

//GSM Shield for Arduino
//www.open-electronics.org
//this code is based on the example of Arduino Labs

#include "SIM900.h"
#include "sms.h"
#include "SoftwareSerial.h"
#include "sms.h"
SMSGSM sms;
int red = 10; // RED LED connected to PWM pin 3
int green = 5; // GREEN LED connected to PWM pin 5
int blue = 6; // BLUE LED connected to PWM pin 6
int r=50; int g=100; int b=150;
int rup; int gup; int bup;

boolean started=false;
char smsbuffer[160];
char n[20];
int fader=1;
int inc=10;

void setup()
{
//Serial connection.
Serial.begin(9600);
Serial.println("GSM Shield testing.");
//Start configuration of shield with baudrate.
if (gsm.begin(2400)){
Serial.println("\nstatus=READY");
started=true;
}
else Serial.println("\nstatus=IDLE");
if(started){
delsms();
}

};

void loop()
{
int pos=0;
//Serial.println("Loop");
if(started){
pos=sms.IsSMSPresent(SMS_ALL);
if(pos){
Serial.println("IsSMSPresent at pos ");
Serial.println(pos);
sms.GetSMS(pos,n,smsbuffer,100);
Serial.println(n);
Serial.println(smsbuffer);
if(!strcmp(smsbuffer,"R")){
Serial.println("RED");
r=255;
g=0;
b=0;
}
if(!strcmp(smsbuffer,"G")){
Serial.println("GREEN");
r=0;
g=255;
b=0;
}
if(!strcmp(smsbuffer,"B")){
Serial.println("BLUE");
r=0;
g=0;
b=255;
}
if(!strcmp(smsbuffer,"P")){
Serial.println("PURPLE");
r=255;
g=0;
b=255;
}
if(!strcmp(smsbuffer,"Y")){
Serial.println("YELLOW");
r=255;
g=255;
b=0;
}
if(!strcmp(smsbuffer,"O")){
Serial.println("ORANGE");
r=255;
g=165;
b=0;
}
if(!strcmp(smsbuffer,"W")){
Serial.println("WHITE");
r=255;
g=255;
b=255;
}
if(!strcmp(smsbuffer,"F")){
Serial.println("FADER");
fader=1;
r=50; g=100; b=150;
}
else
{
fader=0;
}
rgb(r, g, b);
delsms();

}
if(fader){
funcfader();
}

}
};

void delsms(){
Serial.println("delsms");
for (int i=0; i<10; i++){ //do it max 10 times int pos=sms.IsSMSPresent(SMS_ALL); if (pos!=0){ Serial.print("\nFind SMS at the pos "); Serial.println(pos); if (sms.DeleteSMS(pos)==1){ Serial.print("\nDeleted SMS at the pos "); Serial.println(pos); } else { Serial.print("\nCant del SMS at the pos "); Serial.println(pos); } } } } void funcfader(){ if (rup==1){r+=1;} else{r-=1;} if (r>=255){rup=0;}
if (r<=0){rup=1;} if (gup==1){g+=1;} else{g-=1;} if (g>=255){gup=0;}
if (g<=0){gup=1;} if (bup==1){b+=1;} else{b-=1;} if (b>=255){bup=0;}
if (b<=0){bup=1;} rgb(r, g, b); } void rgb(int r, int g, int b) {   if (r>255) r=255;   if (g>255) g=255;   if (b>255) b=255;   if (r<0) r=0;   if (g<0) g=0;   if (b<0) b=0;   analogWrite(red, r);   analogWrite(green, g);   analogWrite(blue, b);    }

 

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz