خانه > مقالات > آموزش

هوشمند سازی منازل – قسمت اول ( کنترل LED )

نیما اژدری  

همان طور که در قسمت قبل دیدید تا حدودی با محیط برنامه MIT APP Inventor آشنا شدید و یک برنامه ساده “Hello World” را در انتها ساختیم. امروز قصد توسعه و انجام پروژه ای مرتبط به IoT را داریم (کنترل LED). همان طور که میدانید اینترنت اشیا در طی سالهای اخیر در زمینه خانه های هوشمند کاربرد بسیاری داشته است. این تکنولوژی باعث کنترل و مدیریت هر چه راحتتر محل زندگی افراد می شود. مقاله فعلی در چند بخش منتشر خواهد شد. در هر بخش کاربردهای مختلف یک سیستم هوشمند سازی خانه نشان داده خواهد شد.

کنترل LED با نرم افزار اندروید:

هدف از انجام این پروژه ساده و توسعه آن در هدف آسان سازی و کنترل اشیا منزل و سهولت در انجام کار ها می باشد. این پروژه به صورت کلی شامل دو بخش سمت سرویس دهنده و سرویس گیرنده می باشد. برای سرویس دهنده از برد آردوینو و یک LED استفاده می شود و سمت اندروید چند کلید برای اتصال و روشن و خاموش کردن LED استفاده می شود.

سخت افزار مورد نیاز :

 

  • برد آردوینو UNO
  • LED
  • مقاومت ۲۲۰  اهم
  • ماژول بلوتوث HM-10

شماتیک سمت آردوینو:

کد های برد آردوینو :

به طور خلاصه در بخش تنضیمات ابتدا پورت های RX و TX بلوتوث که در اینجا ما پورت ۷, ۸  را برای این کار در نظر گرفتیم. سپس تنظیم پورت سریال و تست اتصال پورت سریال را بررسی میکنیم.

در بخش ()Loop بررسی می شود که آیا پورت سریال بلوتوث در دسترس است یا خیر. اگر در دسترس بود مقادیر ورودی از سمت فرستنده که در اینجا به عنوان نمونه از سمت تلفن همراه  بررسی می شود که اگر ۱ بود LED را روشن و اگر ۲ بود خاموش کند.

#include <SoftwareSerial.h>
#define LED_PIN 2
SoftwareSerial mySerial(7, 8); // RX, TX تنظیم پین

void setup() {
  Serial.begin(9600);  
  mySerial.begin(9600);
}

void loop() {
  int c;
  if (mySerial.available()){ //دریافت ورودی
    c=mySerial.read();
    Serial.println("Got Input:");
    digitalWrite(LED_PIN,HIGH);

    //تشخیص مقدار ورودی
    if (c=='1'){
      Serial.println("ON");
      digitalWrite(LED_PIN,HIGH);
    }
    if(c=='2'){
      Serial.println("OFF");
      digitalWrite(LED_PIN,LOW);
    }
  }
}

بخش سمت اپلیکیشن اندروید و بلاک ها:

کلیه اجزای مورد نیاز شامل موارد زیر می باشد. ۲ کلید و یک لیست انتخاب مولفه هایی هستند که برای اتصال به ماژول بلوتوث در نظر میگریم. همچنین در ادامه با دو کلید دیگر  LED را روشن خاموش میکنیم. List Picker اضافه شده برای انتخاب نام ماژول بلوتوث متصل به آردوینو می باشد. یک Extension BluetoothLE1 برای جست و جو و ایجاد اتصال با ماژول بلوتوث Low Energy و برخی موارد دیگر از جمله لیبل ها.  مولفه های مختلف برنامه را در تصویر زیر می بینید.

نکته : کامپوننت BluetoothLE1 در کامپوننت های پیش فرض برنامه وجود نداشته. ابتدا از این لینک Extension را دانلود کرده و  برای افزودن آن از قسمت Palette گزینه Extension و Import extension و فایل Extension را انتخاب کنید.

بخش بلاک:

نکته: روندهایی که به رنگ بنفش می باشند ، برای اجرای مجموعه ای از دستورات هستند. عملکرد آن ها همانند تابع ها می باشد. برای نمونه در این پروژه روالی به اسم encender نوشته شده و در رویداد دیگر توسط نام  روال فراخوانی شده است.

رویداد هایی مانند Click که به رنگ قهوه ای هستند، برای هر اجزایی مثل کلید یا مولفه های دیگری وجود دارد. این رویداد ها انواع مختلفی بسته به نوع کامپوننت دارند. توضیح مختصری در مورد بلاک اپلیکیشن را در ادامه بیان شده است.

  1. هنگام اجرا برنامه ، BluetoothLE1 برای عملیات اسکن فراخوانی شده. و همچنین فراخوانی روند ها برای غیر فعال سازی تایمر و کلید های برنامه ، تا زمان اتصال به ماژول بلوتوث.
  2. بعد از کلیک بر روی کلید  No device از لیست باز شده ماژول بلوتوث مورد نظر که توسط کاربر در برنامه انتخاب شده را ذخیره می کند.
  3. سپس در ListPicker لیست بلوتوث انتخاب شده مرحله قبل را برای اتصال با آدرس فیزیکی مورد نظر آن ماژول انتخاب کرده.
  4. پس از اتصال ، کلید Disconnect برای قطع اتصال فعال می شود. به بیان دیگر اتصال به درستی انجام شده است. تا قبل از اتصال این کلید غیر فعال است.
  5. این بلاک برای چک کردن اتصال است. زمانی که اتصال برقرار بود باقی کلید های در برنامه را که از ابتدا غیر فعال بوده فعال میکند.

بلاک های برنامه

 

در انتها برای روشن کردن یک LED  ابتدا چک میشود که به دستگاه بلوتوثی متصل هست یا خیر سپس از مولفه BluetoothLE1 برای ارسال ، بلاک WriteByteValue را فراخوانی می کند. ServiceUUID  و CharacteristicUUID  پیش فرض ماژول HM-10 را تنظیم کرده و در نهایت مقدار ۱  برای روشن شدن را به برد آردوینو می فرستیم و برچسب متنی Status را به LED ON  تغییر می دهیم.

بلاک خاموش

 

برای خاموش کردن هم دقیقا از همین دستورات استفاده می کنیم با این تفاوت در Values مقدار ۲  فرستاده می شود.

بلاک خاموش

خروجی نهایی برنامه:

   

منابع