IOT

ساعت و اتوماسیون خانگی با استفاده از صفحه نمایش سنگی

فهرست

  1. توضیحات:
  2. طراحی رابط کاربری گرافیکی

3. نمودار مدار

  1. رمز
  2. تصویری

توضیحات:

در این پروژه قصد داریم یک ساعت و یک سیستم اتوماسیون طراحی کنیم که به کمک آن می توانیم چراغ خانه را روشن یا خاموش کنیم و همچنین ساعتی وجود دارد که زمان و تاریخ را نشان می دهد.

برای این ما استفاده می کنیم صفحه نمایش TFT (STONE-HMI)، این نمایشگر دارای یک نرم افزار است که یک نرم افزار رابط کاربری گرافیکی است با این کمک ما قصد داریم رابط کاربری طراحی کنیم که شامل ساعت بخش و اتوماسیون خواهد بود. نرم افزار رابط کاربری گرافیکی را دانلود کنید. اینجا کلیک کنید

طراحی قسمت ساعت: -

بیایید ابتدا قسمت ساعت را طراحی کنیم، ابتدا باید تمام تصاویری که در پوشه داده شده است را اضافه کنیم. اینجا .

همانطور که در سمت چپ مشاهده می کنید همه تصاویر در قسمت فایل تصویر اضافه شده اند. اکنون روی تصویر '14' کلیک کنید و این رابط را همانطور که در تصویر می بینید دریافت خواهید کرد. اکنون برای تنظیم زمان از تنظیمات لمسی 'RTC' را انتخاب کنید. و تاریخ را انجام دهید و تمام تنظیمات را برای این کار انجام دهید ابتدا تصویر 'در صفحه' را به عنوان تصویر شماره 6 اضافه کنید که در زمان تنظیم استفاده می شود. اکنون به تصویر شماره 6 بروید و تمام دکمه ها و مقادیر کلیدهای آنها را اضافه کنید. در این قالب باشد

برای '1' - 0031

برای '2' - 0031

برای '3' - 0031

برای '4' - 0031

برای '5' - 0031

برای '6' - 0031

برای '7' - 0031

برای '8' - 0031

برای '9' - 0031

برای '0' - 0030

برای «OK» – 00F1

پس از آن افکت دکمه را به عنوان تصویر number-7 برای همه دکمه ها اضافه کنید، بنابراین با این قسمت تنظیمات ساعت انجام می شود. اجازه دهید برای ایجاد عقربه های ساعت بیشتر حرکت کنیم.

به طور مشابه، ساعت شماره گیری را از بالا اضافه کنید و تمام عقربه ها، ساعت، دقیقه و عقربه دوم را اضافه کنید، ابتدا باید برای این عقربه ها آیکون ایجاد کنیم، بنابراین برای این کار به تولید کننده نماد بروید و این تصاویر را انتخاب کنید، پوشه جدید را در بخش پیدا خواهید کرد. از "فایل آیکون" از اینجا باید همه نمادها را با توجه به نیازهای عقربه انتخاب کنید. پس از آن تمام نمادها را با توجه به نیازهای عقربه های ساعت انتخاب کنید، و فراموش نکنید که مرکز هر عقربه را برای ساعت، با این روش انتخاب کنید. این کار انجام می شود اکنون باید به سراغ قسمت اتوماسیون برویم و برای این کار یک نماد اتوماسیون همانطور که در تصویر بالا مشاهده می کنید اضافه کرده ایم، برای این دکمه انتخاب و آن دکمه را در قسمت نماد خودکار قرار دهید و سپس " را انتخاب کنید. تغییر صفحه به عنوان تصویر-1 زیرا این تصویر برای اتوماسیون است و پس از آن تصویر-1 را برای طراحی بیشتر انتخاب کنید.

طراحی قطعات اتوماسیون:

بیایید بخش اتوماسیون را برای این کار طراحی کنیم، ما به آردوینو نیاز داریم که مقدار کلید خاصی را روی یک آدرس ارسال کند، در اینجا ما از '0001' برای تمام مقادیر کلید استفاده می کنیم. برای دکمه Fan(ON) مقدار کلید '0001' و برای Fan(OFF) ارسال می کنیم. ) ما مقدار کلید '0002' را ارسال می کنیم به طور مشابه برای تمام مقادیر خاص برای همه لوازم ارسال می کنیم. در اینجا همچنین یک دکمه برای تغییر به رابط کاربری گرافیکی ساعت اضافه کردیم که به انتقال از این رابط به رابط ساعت کمک می کند.

برای سوئیچ صفحه از دکمه استفاده می کنیم که در بالا سمت چپ قرار می گیرد و برای دکمه اتوماسیون از تابع "بازگشت مقدار کلید فشار دهید" استفاده می کنیم که دارای دو پارامتر اول مقدار آدرس و دیگری مقدار کلید است همانطور که در بالا ذکر کردیم. با استفاده از مقادیر کلیدی مختلف برای هر دکمه اتوماسیون.

مدار

همانطور که در اتصال مشاهده می کنید سه LED light-1,light-2 وجود دارد و برای فن در اینجا ما فقط از LED استفاده می کنیم اما می توانید لوازم واقعی را به آن متصل کنید. Light-1 به پین ​​-D6 آردوینو وصل می شود. 2 به پین-D7 آردوینو وصل شوید، فن مشابه با D5 با آردوینو وصل شوید. و اتصال Rx و Tx را طبق نمودار مدار انجام دهید. در اینجا Tx را با پین-2 و Rx را با پایه-3 آردوینو وصل کرده ایم. بر اساس کد آردوینو. اجازه دهید نحوه کار با کد را بیشتر کنیم.

انواع مختلفی از ارتباطات سریال وجود دارد. وقتی از برد آردوینو در پروژه ای استفاده می کنید، می توانید پین های سریال استاندارد را به عنوان سریال نرم افزار آردوینو Rx Tx، از UART داخل برد آردوینو انتخاب کنید، بنابراین Serial TTL نامیده می شود. در آن صورت، ما از کتابخانه Hardware serial.h استفاده می کنیم، اما برخی از پین های اضافی می توانند به عنوان Rx یا Tx کار کنند. به عنوان مثال، پین های ارتباطی SPI می توانند به عنوان MISO، MOSI و Select (SC) کار کنند، اما آنها همچنین پین هایی هستند که می توانند به عنوان ورودی یا خروجی دیجیتال کار کنند، یا در صورت نیاز می توانید از آن پین ها به عنوان Rx، Tx با استفاده از سریال نرم افزار استفاده کنید. کتابخانه .h. 

بیایید بیشتر حرکت کنیم تا بدانیم کد چگونه کار می کند. 

کد: - 

#عبارتند از //کتابخانه سریال نرم افزار

SoftwareSerial max232(2,3);

داده کاراکتر؛ 

راز رشته;

int f = 5; // پین برای فن

int l1 = 6; // پین برای light-1

int l2 = 7; // پین برای light-2

تنظیم باطل ()

{

Serial.begin(115200); //در اینجا Baudrate 115200 است

max232.begin(115200);

pinMode (f، OUTPUT)؛     

digitalWrite (f، LOW)؛ 

pinMode (l1، OUTPUT)؛    

digitalWrite (l1، LOW)؛

pinMode (l2، OUTPUT)؛    

digitalWrite (l2، LOW)؛

}

حلقه باطل ()

{

if (max232.available()>0)

 {

   data = max232.read();

   mystring = mystring + byte(data) ; 

   تأخیر (10)

 }

else if (mystring.endsWith("101")) //condition for Fan ON

  {

    mystring = ""; 

   digitalWrite (f،HIGH)؛

  }

else if (mystring.endsWith("102")) //condition for Fan OFF

  {

   mystring = ""; 

   digitalWrite (f، LOW)؛

  }

else if (mystring.endsWith("103")) //condition for Light-1 ON

  {

  mystring = ""; 

  digitalWrite (l1,HIGH)؛

  }

else if (mystring.endsWith("104")) //condition for Light-1 OFF

  {

   mystring = ""; 

   digitalWrite(l1,LOW);

  }

else if (mystring.endsWith("105")) //condition for Light-2 ON

  {

  mystring = ""; 

  digitalWrite (l2,HIGH)؛

  }

else if (mystring.endsWith("106")) //condition for Light-2 OFF

  {

   mystring = ""; 

   digitalWrite(l2,LOW);

  }

else if (mystring.endsWith("107")) //condition for All appliances ON

  {

   mystring = ""; 

   digitalWrite (l1,HIGH)؛

   digitalWrite (l2,HIGH)؛

   digitalWrite (f،HIGH)؛

  }

else if (mystring.endsWith(“108”)) //condition for All appliances OFF

  {

   mystring = ""; 

   digitalWrite(l1,LOW);

   digitalWrite(l2,LOW);

   digitalWrite (f، LOW)؛

  }

}

کار کردن :-

همانطور که بحث کردیم، از کتابخانه سریال نرم افزاری برای انتقال مقدار کلید روی یک آدرس استفاده می کنیم، برای این کار اضافه کرده ایم. در این کد رابطی را برای اتصال آردوینو و نمایشگر STON-HMI ارائه می دهیم. پس از آن، تمام پایه های خروجی را که برای LED ها و فن استفاده می کنیم، اعلام می کنیم، برای این دستگاه ها، این پین ها را به عنوان OUTPUT اعلام می کنیم و سپس نرخ Baud را تنظیم می کنیم. برای کتابخانه سری نرم افزار. همه اینها در قسمت تنظیم void انجام شده است، اکنون اجازه دهید شرایط را برای دستگاه هایی که استفاده می کنیم ایجاد کنیم، این قسمت در حلقه void اضافه می شود زیرا این کار چندین بار تکرار می شود که ما دکمه را فشار می دهیم. دکمه روی نمایشگر

در بخش void loop چهار شرط برای دستگاه ها وجود دارد. شرط اول روشن و خاموش بودن فن است در اینجا ما مقدار کلید '0001' را برای شرط ON و '0002' را برای وضعیت خاموش روی آدرس '0001' ارسال می کنیم. برای همه دستگاه‌ها یکسان است. برای دستگاه دوم که برای light-1 است، ما '0003' را برای وضعیت روشن و '0004' را برای وضعیت خاموش، به طور مشابه برای light-2 '0005' برای ON و '0006' برای شرایط خاموش ارسال می کنیم. به این ترتیب این شرایط برای دستگاه فردی کار می کند.

یک شرط دیگر برای خاموش کردن یا روشن کردن همه دستگاه ها به طور همزمان وجود دارد که ما از «0007» برای روشن و «0008» برای خاموش کردن استفاده می کنیم.

خروجی ویدیو:-

این ویدیوی خروجی از این پروژه در این ویدیو است که ابتدا تنظیمات ساعت را نشان می دهد و همانطور که در فیلم مشاهده می کنید اتوماسیون در حال کار است.

این ویدیوی خروجی است که می توانید با کلیک بر روی آن ویدیو دانلود کنید. ما تمام داده های مربوط به آن را اضافه کرده ایم اگر در مورد طراحی رابط کاربری گرافیکی شک دارید، می توانید فایل پروژه را دانلود کرده و مستقیماً آن را باز کنید، در این صورت لازم نیست هر رابط کاربری گرافیکی را طراحی کنید، طرحی را که ما ساخته ایم دریافت خواهید کرد. اما اگر می خواهید رابط کاربری گرافیکی متفاوتی طراحی کنید، باید تمام مراحل را دنبال کنید.

رمز

//برای اطلاعات بیشتر در مورد این پروژه به: - wwww.electrocircuit.net // مراجعه کنید

#عبارتند از

SoftwareSerial max232(2,3);

داده کاراکتر؛ 

راز رشته;

int f = 5; 

int l1 = 6; 

int l2 = 7;  

تنظیم باطل ()

{

Serial.begin (115200)؛ 

max232.begin(115200);

pinMode (f، OUTPUT)؛ /////////قرمز////////

digitalWrite (f، LOW)؛ 

pinMode (l1، OUTPUT)؛ ////////سبز///////

digitalWrite (l1، LOW)؛

pinMode (l2، OUTPUT)؛ ///////آبی/////////

digitalWrite (l2، LOW)؛

}

حلقه باطل ()

{

if (max232.available()>0)

 {

   data = max232.read();

   mystring = mystring + byte(data) ; 

   تأخیر (10)

 }

else if (mystring.endsWith("101"))

  {

    mystring = ""; 

   digitalWrite (f،HIGH)؛

  }

else if (mystring.endsWith("102"))

  {

   mystring = ""; 

   digitalWrite (f، LOW)؛

  }

else if (mystring.endsWith("103"))

  {

  mystring = ""; 

  digitalWrite (l1,HIGH)؛

  }

else if (mystring.endsWith("104"))

  {

   mystring = ""; 

   digitalWrite(l1,LOW);

  }

else if (mystring.endsWith("105"))

  {

  mystring = ""; 

  digitalWrite (l2,HIGH)؛

  }

else if (mystring.endsWith("106"))

  {

   mystring = ""; 

   digitalWrite(l2,LOW);

  }

else if (mystring.endsWith("107"))

  {

   mystring = ""; 

   digitalWrite (l1,HIGH)؛

   digitalWrite (l2,HIGH)؛

   digitalWrite (f،HIGH)؛

  }

else if (mystring.endsWith("108"))

  {

   mystring = ""; 

   digitalWrite(l1,LOW);

   digitalWrite(l2,LOW);

   digitalWrite (f، LOW)؛

  }

}

منبع: اطلاعات داده های افلاطون