ارتقای سیستم اتوماسیون خانگی
حالا که فهمیدیم که هر یک از روش های ارتباطی به طور مستقل، چگونه کار می کنند، می خواهیم بیش از یک وسیله ی برقی را کنترل کنیم. در این فصل می خواهیم یک لامپ و یک پنکه را که در یک اتاق قرار دارند و یک تلویزیون و یک لامپ که در اتاق دیگری قرار دارند را کنترل کنیم. این یعنی در این بخش می خواهیم چهار وسیله ی برقی را همزمان کنترل کنیم. وقتی که شما روش این کار را فهمیدید و تفاوت آن با وقتی که فقط یک وسیله ی برقی را کنترل می کردیم را دریابید، قادر خواهید با تا تعداد بیشتری وسیله ی برقی را کنترل کنید.
کنترل کردن چند وسیله ی برقی
اگر بخواهیم چهار وسیله ی برقی را کنترل کنیم به چهار رله نیاز داریم. به جای اینکه چهار رله ی تکی خریداری کنیم، می توانیم یک رله ی چهار کاناله 5 ولت مناسب برای آردوینو خریداری کنیم. که در تصویر زیر نشان داده شده است:
چون که ما از قبل با رله ها آشنا هستیم، چیز جدیدی در اینجا وجود ندارد. تنها نکته ای که وجود دارد این است که در اینجا ما تنها از یک پین GND و یک پین VCC(VIN) استفاده می کنیم. قبل از اینکه مدار را به طور کامل ایجاد کنیم، اجازه دهید تا آردوینو را به رله ی 4 کاناله متصل کنیم؛ و مطمئن شویم که کار می کند و می تواند به طور مستقل کنترل شود. پس مدار زیر را ایجاد کنید:
اتصالات از آردوینو به رله ی 4 کاناله به صورت زیر هستند:
- GND به GND
- 5V به VCC
- A1 به IN1 (لامپ اتاق)
- A2 به IN2 (برای پنکه ی اتاق)
- A3 به IN3 (برای لامپ اتاق نشمین)
- A4 به IN4 (برای تلویزیون اتاق نشمین)
حالا IDE آردوینو را اجرا کنید و برد آردوینو را هم متصل کنید و فایل home_automation_complete.ino که در فایل های دانلودی مربوط به این فصل قرار دارد را باز کنید. سپس کدها را در آردوینو آپلود کنید.
تفاوت اصلی این کد و کدهای قبلی استفاده از یک تابع کلید(switch) است. در این کدها از چندین دستور if استفاده شده است که شما با آنها آشنا هستید. در برنامه ی home_automation_simple می خواهیم به جای دستورات if زیر از دستور switch استفاده کنیم:
if((ch=='1')||(ch=='0')||(ch=='q'))
{
//Serial.println(char(ch));
if(ch == '1')
{
analogWrite(A0, 255);
//digitalWrite(12, HIGH);
chatServer.write("RELAY ON \n");
delay(100);
relay_status = 1;
}
else if(ch == '0')
{
analogWrite(A0, 0);
//digitalWrite(12, LOW);
chatServer.write("RELAY OFF\n");
delay(100);
relay_status = 0;
}
else if(ch == 'q')
{
//Serial.println(F("\n\nClosing the connection"));
chatServer.write("DISCONNECTED");
cc3000.disconnect();
}
}
اکنون می خواهیم از دستور switch زیر استفاده کنیم:
switch(ch)
{
case '1':
analogWrite(light_room, 255);
chatServer.write("ROOM LIGHT ON\n");
delay(500);
break;
case '2':
{
analogWrite(light_room, 0);
chatServer.write("ROOM LIGHT OFF\n");
delay(500);
break;
}
case '3':
{
analogWrite(fan_room, 255);
chatServer.write("ROOM FAN ON\n");
delay(500);
break;
}
case '4':
{
analogWrite(fan_room, 0);
chatServer.write("ROOM FAN OFF\n");
delay(500);
break;
}
case '5':
{
analogWrite(light_main, 255);
chatServer.write("MAIN LIGHT ON\n");
delay(500);
break;
}
case '6':
{
analogWrite(light_main, 0);
chatServer.write("MAIN LIGHT OFF\n");
delay(500);
break;
}
case '7':
{
analogWrite(tv_main, 255);
chatServer.write("TV ON\n");
delay(500);
break;
}
case '8':
{
analogWrite(tv_main, 0);
chatServer.write("TV OFF\n");
delay(500);
break;
}
case 'q':
{
chatServer.write("DISCONNECTED");
cc3000.disconnect();
break;
}
default:
break;
}
همان طور که مشاهده می کنید، کدها مرتب تر و متراکم تر شده است. البته ما می توانستیم از دستورات if بیشتری برای نوشتن کدها استفاده کنیم اما با استفاده از دستور switch به سادگی می توانیم به صورت زیر وسایل دیگری را نیز اضافه کنیم:
case 'a':
{
analogWrite(something, 255);
chatServer.write("something ON\n");
delay(500);
break;
}
case 'b':
{
analogWrite(something, 0);
chatServer.write("something OFF\n");
delay(500);
break;
}
با این روش لازم نیست حتما از اعداد استفاده کنیم.
کار کردن با ترمینال
اکنون نرم افزار Putty را اجرا کنید. تنها چیزی که فرق کرده است، دستورات هستند که به صورت زیر هستند:
- 1 : روشن کردن لامپ اتاق
- 2 : خاموش کردن لامپ اتاق
- 3 : روشن کردن پنکه ی اتاق
- 4 : خاموش کردن پنکه ی اتاق
- 5: روشن کردن لامپ اتاق نشمین
- 6: خاموش کردن لامپ اتاق نشیمن
- 7: روشن کردن تلویزیون
- 8: خاموش کردن تلویزیون
- q : قطع کردن اتصال
حالا کار را شروع کنید. با صفحه ی زیر مواجه خواهید شد:
از ترمینال احتمالا به ندرت برای ارتباطات استفاده می شود. اما با این وجود ترمینال برای تست کردن و دیباگ کردن بهترین گزینه است. البته فعلا فقط صدای قطع و وصل شدن رله را خواهید شنید اما وقتی که رله ها به وسایل برقی متصل شوند، آنها را کنترل خواهند کرد.
ارتباط از طریق گوشی هوشمند(اندروید)
اپبیکیشن UDP TCP Server را باز کنید و بر روی دکمه ی NEW TEMPLATE ضربه بزنید تا بتوانید یک template جدید ایجاد کنید. به بخش Button Settings بروید و پارامترها را مطابق تصویر زیر تغییر دهید:
به طور مشابه، ما باید چند دکمه ایجاد کنیم. وقتی که به صفحه ی اصلی برویم، باید به صورت تصویر زیر باشد:
اکنون می توانید این دکمه ها را امتحان کنید. مطمئن شود که برای رله ها از command های مناسبی استفاده کرده اید.
ارتباط از طریق گوشی هوشمند(iOS)
ما از قبل می دانیم که چگونه این کار را انجام دهیم. اپلیکیشن cmd. را ارجا کنید. شما باید شش دکمه ی دیگر اضافه کنید که جمعا می شود 8 عدد(اگر یک دکمه ی قطع اتصال هم اضافه کنید می شود 9 تا). اگر دارید از template رله ی تکی استفاده می کنید، به یاد داشته باشید که command دکمه ی خاموش یا OFF آن را از 0 به 2 تغییر دهید. صفحه ی اصلی و صفحه ی دکمه ها پس از انجام تغییرات به صورت زیر خواهند بود:
تمام دکمه ها را امتحان کنید تا مطمئن شوید که کار می کنند.
ارتباط از طریق نرم افزار تشخیص صدا
نرم افزار BitVoicer را اجرا کنید و اسکیمای home_automation_complete.vsc که در فایل های دانلودی این فصل قرار دارد را بارگذاری کنید. پس از انجام این کار، نرم افزار به صورت زیر خواهد بود:
بخش command space به صورت زیر خواهد بود:
وقتی که کارها را به درستی انجام دادید بر روی دکمه ی Start کلیک کنید و آن را تست کنید. اگر رله ها به درستی کار می کنند، وقت آن رسیده است که مدار را کامل کنیم.
- نوشته شده توسط احسان عباسی
- بازدید: 2063