مرحبا اصدقاء! . يعتمد مشروع منزل دكي على أساس GSM باستخدام وحدة Arduino و GSM SIM900. سنناقش هنا مقدمة لنظام أتمتة المنزل القائم على GSM ، ومفهوم المشروع ، ومخطط الكتلة ، والمكونات المطلوبة ، ومخطط الدائرة ، ومبدأ العمل ، ورمز Arduino.
نظام أتمتة المنزل هو تقنية لاسلكية تُستخدم للتحكم في الأجهزة المنزلية عن بُعد. يسمح هذا النظام بالتحكم في أجهزتك المنزلية باستخدام جهاز كمبيوتر أو هاتف أو جهاز تحكم عن بعد. في الوقت الحاضر ، تتوفر أنواع كثيرة من أنظمة أتمتة المنزل في السوق. هذه هي أتمتة المنزل التي يتم التحكم فيها بواسطة DTMF ، وأتمتة المنزل عن بُعد بالأشعة تحت الحمراء ، وأتمتة المنزل التي يتم التحكم فيها عن بُعد بالتردد اللاسلكي ، وأتمتة المنزل التي يتم التحكم فيها عن طريق البلوتوث ، وأتمتة المنزل القائمة على إنترنت الأشياء. في هذه المدونة ، سنصمم أتمتة منزلية قائمة على GSM باستخدام وحدة Arduino و GSM SIM900.
كيف تعمل أتمتة المنزل مع Arduino؟
GSM ، وهو نظام عالمي للاتصالات المتنقلة كما يمثل الاسم ، نستخدمه أيضًا للتحكم في الأجهزة المنزلية. فقط نحتاج إلى إرسال رسالة أو مكالمة لتشغيل الدائرة التي تتحكم في الأجهزة المنزلية. عندما نرسل الرسالة إلى gsm المرفق مع Arduino ، يقرأ Arduino الرسالة عن طريق الاتصال التسلسلي ومقارنة الرسالة برسالة قاعدة البيانات إذا كانت الحالة صحيحة ، فسيبدأ تشغيل التعليمات المرفقة بالشرط وإذا لم يكن الشرط كذلك صحيح أن Arduino يتحقق من حالة أخرى. وسيتحقق باستمرار حتى تتحقق الحالة ، وينطبق نفس الشرط على المكالمة. نحتاج إلى إدخال بطاقة sim داخل وحدة GSM. يفضل دائمًا وحدة sim900 لأتمتة المنزل القائمة على الرسائل القصيرة. و 12 فولت ، 2 أمبير امدادات الطاقة.
المكونات المطلوبة
// Tech-hme.com
#define Bulb1 3
#define Bulb2 4
#define Bulb3 5
int temp=0,i=0;
int led=8;
char str[15];
void setup()
{
Serial.begin(9600);
pinMode(led, OUTPUT);
pinMode(Bulb1, OUTPUT);
pinMode(Bulb2, OUTPUT);
pinMode(Bulb3, OUTPUT);
digitalWrite(Bulb1,HIGH);
digitalWrite(Bulb2,HIGH);
digitalWrite(Bulb3,HIGH);
Serial.println("AT+CNMI=2,2,0,0,0");
delay(500);
Serial.println("AT+CMGF=1");
delay(1000);
}
void loop()
{
if(temp==1)
{
check();
temp=0;
i=0;
delay(1000);
}
}
void serialEvent()
{
while(Serial.available())
{
if(Serial.find("#A."))
{
digitalWrite(8, HIGH);
delay(1000);
digitalWrite(8, LOW);
while (Serial.available())
{
char inChar=Serial.read();
str[i++]=inChar;
if(inChar=='*')
{
temp=1;
return;
}
}
}
}
}
void check()
{
if(!(strncmp(str,"bulb1 on",8)))
{
digitalWrite(Bulb1, LOW);
delay(200);
}
else if(!(strncmp(str,"bulb1 off",9)))
{
digitalWrite(Bulb1, HIGH);
delay(200);
}
else if(!(strncmp(str,"bulb2 on",8)))
{
digitalWrite(Bulb2, LOW);
delay(200);
}
else if(!(strncmp(str,"bulb2 off",9)))
{
digitalWrite(Bulb2, HIGH);
delay(200);
}
else if(!(strncmp(str,"bulb3 on",8)))
{
digitalWrite(Bulb3, LOW);
delay(200);
}
else if(!(strncmp(str,"bulb3 off",9)))
{
digitalWrite(Bulb3, HIGH);
delay(200);
}
else if(!(strncmp(str,"all on",6)))
{
digitalWrite(Bulb1, LOW);
digitalWrite(Bulb2, LOW);
digitalWrite(Bulb3, LOW);
delay(200);
}
else if(!(strncmp(str,"all off",7)))
{
digitalWrite(Bulb1, HIGH);
digitalWrite(Bulb2, HIGH);
digitalWrite(Bulb3, HIGH);
delay(200);
}
}