این روزا، کلیدهای قدیمی دیگه از رده خارج شدن. این کلیدها، قطعات متحرک مکانیکی دارن که در صورت استفاده مداوم خراب میشن. کلیدهای سنتی جای خودشون رو به کلیدهای لمسی مدرن میدن که نه تنها ظاهر شکیلتری به خونه میدن بلکه استفاده ازشون راحتتر و مطمئنتره. این کلیدهای لمسی کاربردهای زیادی دارن و قطعه متحرک هم ندارن و نسبت به همتاهای قدیمی خودشون عمر طولانیتری دارن. علیرغم این مزایا، کلیدهای لمسی نسبتاً گرون هستن. پنل لمسی هوشمندی که قراره بسازیم ارزونتر از پنلهای موجود توی بازاره. با استفاده از این پنل یا از طریق صفحه لمسی مبتنی بر Arduino یا به صورت بیسیم و از طریق اپلیکیشن اندروید میتونین وسایل برقی رو کنترل کنین.
صفحه لمسی مبتنی بر Arduino میتونه دمای اتاق رو روی صفحه نمایش پنل لمسی هوشمند نشون بده.
برای ساخت این پروژه ابتدا باید قطعاتی که در جدول نشون داده شده رو تهیه کنیم. برای ساخت این پروژه از شیلد نمایشگر لمسی TFT (6 سانتیمتر) استفاده کردیم.
قطعات مورد نیاز برای ساخت پنل لمسی Arduino
قطعاتی که برای انجام این پروژه به اون ها نیاز خواهید داشت رو در تصویر بالا و همچنین لیست زیر می تونید مشاهده کنید.
قطعات مورد نیاز
-
Arduino Uno – برای برنامهنویسی
-
نمایشگر لمسی TFT (6 سانتیمتری) – MCUfriend ST7789V
-
ماژول رله 2 کاناله – برای خاموش و روشن کردن دو دستگاه
-
بلوتوث HC-05 – کنترل به صورت بیسیم (اختیاری)
-
سیم جامپر – اتصالات مداری
-
جعبه تابلو برق – محفظه
-
ترمیستور NTC 103 – نمایش دما (اختیاری)
کتابخانه Arduino
در قدم اول، کتابخانههای مورد نیاز رو در Arduino IDE نصب کنین. برای انجام این کار، به منوی Sketch برید و روی گزینه Manage libraries کلیک کنین. سپس نام کتابخانه رو جستوجو کنین و روی install کلیک کنین. کتابخانههایی که برای ساخت این پروژه بهشون نیاز داریم عبارتند از: Adafruit GFX، TouchScreen و NTC thermistor. این کتابخانهها رو نصب کنین (تصاویر پایین به ترتیب). هر صفحه نمایش لمسی کتابخانههای مخصوص به خودش رو داره. در اینجا ما از MCUFriend 6cm TFT LCD Library ST7789V استفاده کردیم.




کدنویسی
پس از نصب کتابخانههای مورد نیاز، کدنویسی Arduino رو شروع میکنیم. در بخش اول کد، کتابخانههای مورد نیاز رو مقداردهی میکنیم.
#include <Adafruit_GFX.h> #include <MCUFRIEND_kbv.h> MCUFRIEND_kbv tft; #include <TouchScreen.h> #define MINPRESSURE 5 #define MAXPRESSURE 1000 int command=0; //temp part SmoothThermistor smoothThermistor(A4);
برای دریافت نقطه لمسی روی نمایشگر LCD در مختصات X و Y یک تابع ایجاد کنین.
int pixel_x, pixel_y; //Touch_getXY() updates global vars bool Touch_getXY(void) { TSPoint p = ts.getPoint(); pinMode(YP, OUTPUT); //restore shared pins pinMode(XM, OUTPUT); digitalWrite(YP, HIGH); //because TFT control pins digitalWrite(XM, HIGH); bool pressed = (p.z > MINPRESSURE && p.z < MAXPRESSURE); if (pressed) { pixel_x = map(p.x, TS_LEFT, TS_RT, 0, tft.width()); //.kbv makes sense to me pixel_y = map(p.y, TS_TOP, TS_BOT, 0, tft.height()); } return pressed; }
در گام بعدی، کدهایی برای رنگهایی که در نمایشگر استفاده خواهیم کرد اضافه کنین.
#define BLACK 0x0000 #define BLUE 0x001F #define RED 0xF800 #define GREEN 0x07E0 #define CYAN 0x07FF #define MAGENTA 0xF81F #define YELLOW 0xFFE0 #define WHITE 0xFFFF #define GRAY 0x8410 #define ORANGE 0xFA60 #define LIME 0x07FF #define AQUA 0x04FF #define PINK 0xF8FF #define WALL 0x4E72 #define MAROON 0xC845 #define GREE 0x5DC0
در مرحله بعد، یک تابع setup ایجاد کنین؛ در این تابع کدهایی برای نشان دادن کلیدها و دیگر اجزای نمایشگر اضافه میکنیم.
Adafruit_GFX_Button *buttons[] = {&on_btn, &off_btn,&on_btn1, &off_btn1, NULL}; bool update_button(Adafruit_GFX_Button *b, bool down) { b->press(down && b->contains(pixel_x, pixel_y)); if (b->justReleased()) b->drawButton(false); if (b->justPressed()) b->drawButton(true); return down; } bool update_button_list(Adafruit_GFX_Button **pb) { bool down = Touch_getXY(); for (int i = 0 ; pb[i] != NULL; i++) { update_button(pb[i], down); } return down; } void loop(void) { command=Serial.read(); update_button_list(buttons); //use helper function if (on_btn.justPressed()or command== 'a') { Serial.println("on"); } if (off_btn.justPressed()or command=='c') { Serial.println("on"); } if (on_btn1.justPressed()or command=='d') { Serial.println("automode"); } if (off_btn1.justPressed() or command=='e') { Serial.println("manual mode"); } }
البته باید یک تابع دیگه برای چک کردن وضعیت کلیدها و اختصاص تسک به اونا ایجاد کنیم. برای مثال، اگر یه کلید رو لمس کردیم، تسک اختصاص یافته حالت رله رو به روشن یا خاموش تغییر میده.
لینک دانلود فایل کد نوشته شده ?
بخش کدنویسی در اینجا به پایان میرسه. کد رو با نام touch_switch.ino ذخیره کنین. سپس کد را کامپایل کنین و اون رو در بورد Arduino Uno بارگذاری کنین. مرحله بعدی توسعه اپلیکیشن هست.
توسعه اپلیکیشن اندروید
ما برای توسعه اپلیکیشن از MIT App Inventor استفاده کردیم. در قدم اول، باید یک حساب Google معتبر داشته باشین. بعد، برای شروعِ پروژه MIT App Inventor به لینک https://appinventor.mit.edu برید. در این لینک بالا، سمت راست صفحه دو تا tab به نامهای Designer و Blocks میبینین.
Designer رو باز کنین و یک layout برای اپلیکیشن ایجاد کنین و بعد چهار تا کلید، یک list picker و یک Bluetooth client به اون اضافه کنین.(تصویر پایین)
در مرحله بعد، Blocks رو در MIT App Inventor باز کنین. code block ها رو انتخاب کنین و جایگذاری کنین (شکل پایین). پروژه رو به اسم TouchSwitch.apk ذخیره کنین و این فایل .apk رو در تلفن اندروید خودتون نصب کنین. یا می تونید فایلی که از قبل براتون اماده کردم رو در انتهای مقاله دانلود کنید.
لینک دانلود فایل نصبی اندروید ?
اتصالات پنل لمسی با بورد Arduino
حالا باید قطعات رو به هم متصل کنیم و همه اونا رو به همراه ماژولهای رله در switch box یا محفظه جای بدیم. دیاگرام مدار در (شکل پایین) نشون داده شده. اتصالات میان Arduino و سایر قطعات در جدول نشون داده شدند.
بعد از اتصال Arduino به سایر قطعات، شیلد نمایشگر لمسی TFT رو روی بورد Arduino Uno نصب کنین. سپس همه قطعات رو به علاوه بورد Arduino، شیلد نمایشگر لمسی TFT و ماژول رله رو در یک جعبه پلاستیکی مناسب جای بدین. نمایشگر لمسی TFT رو با دقت درون محفظه قرار بدین.
تست نهایی جمع بندی ساخت پنل لمسی Arduino
اتصالات رو با دقت چک کنین چون اگه یکی از اونا اشتباه باشه ممکنه در نهایت مدار الکتریکی (Short circuit) داشته باشین. بعد از اینکه از اتصالات مطمئن شدین، Arduino و ماژول رله رو با 5V DC روشن کنین و بعد وسایل AC رو که به رله متصل هستن رو وصل کنین تا روشن بشن. زمانی که کلید off روی پنل لمسی رو میزنین، رله وسایل برقی که بهش وصل شدن رو خاموش میکنه. و وقتی کلید on رو میزنین، رله وسایل برقی که بهش وصل هستن رو روشن میکنه.
هدف از ساخت این پروژه، کنترل دو تا وسیله برقی بود. اول، دو تا کلید کنترل (خاموش و روشن) در اولین ردیف از پنل لمسی برای اولین وسیله و کلیدهای کنترل در ردیف بعدی برای وسیله دوم هستن.
به دنبال اون میشه وسایل برقی رو از طریق اپلیکیشن اندروید کنترل کرد. اپلیکیشن TouchSwitch رو باز کنین و روی آیکون Bluetooth کلیک کنین تا موبایل رو به Bluetooth HC-05 وصل کنین. بعد روی کلید on/off اپلیکیشن کلیک کنین تا به صورت بیسیم وسایل برقی رو کنترل کنین.