احتمالا در آموزش های مختلف، با این مورد مواجه شدهاید که با استفاده از رله وسایل برقی مختلفی را کنترل می کنند، اما سوال اینجاست چطور به زیبا ترین شکل به این رله فرمان؟! خب در این آموزش با استفاده از یک کلید تاچ وضعیت ماژول رله را تغییر خواهیم داد، همچنین در این بین وضعیت فعلی ماژول بر روی نمایشگر oled نمایش داده خواهد شد. در ادامه آموزش کنترل وسایل برقی با ماژول تاچ TTP223 با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
ماژول تاچ TTP223
سنسور لمسی touch، یک حسگر الکترونیکی است که در تشخیص و ضبط لمس فیزیکی استفاده می شود. این سنسور همچنین به عنوان سنسورهای لمسی شناخته می شود، یک سنسور کوچک، ساده و کم هزینه است که برای جایگزینی سوئیچ های مکانیکی قدیمی که در گذشته شاهد بودیم ساخته شده است. ماژول تاچ TTP223 مانند یک سوئیچ کار می کند، در صورت تماس، لمس یا فشار روی سطح سنسور، یک مدار الکتریکی باز می شود و اجازه می دهد جریان از آن عبور کند.
سنسور لمسی خازنی: سنسورهای لمسی خازنی به طور گسترده ای در اکثر دستگاه های قابل حمل مانند تلفن های همراه و دستگاه های پخش موزیک استفاده می شوند. سنسورهای لمسی خازنی را حتی می توان در وسایل خانگی و دستگاه های صنعتی یافت. دلایل این پیشرفت دوام، استحکام، طراحی جذاب محصول و هزینه آن است. ساده ترین شکل خازن را می توان با دو هادی جدا شده توسط یک نارسانا ساخت. صفحات فلزی را می توان به عنوان هادی در نظر گرفت. فرمول ظرفیت در زیر نشان داده شده است.
C = ε۰ * εr * A / d
سنسور لمسی مقاومتی: سنسورهای لمسی مقاومتی مدت زمان بیشتری نسبت به سنسور های خازنی مورد استفاده قرار می گیرند زیرا دارای مدارهای کنترل ساده هستند. سنسور لمسی مقاومتی به خاصیت الکتریکی ظرفیت حساس نیستند. از این رو، سنسورهای لمسی مقاومتی می توانند با مواد غیر رسانا مانند قلم و انگشت پوشیده شده با دستکش فعال و غیرفعال می شوند. در مقابل سنسورهای لمسی خازنی که ظرفیت را اندازه گیری می کنند، سنسورهای لمسی مقاومتی فشار روی سطح را حس می کنند.
برد آردوینو
مجموعه برد های آردوینو از جمله برد های توسعه پرطرفدار بین مهندسین امبدد هستند که در مدل های مختلفی از جمله Micro , proMini , Nano , Uno و همچنین Mega قابل تهیه هستند، هسته مرکزی این برد های محبوب از سری AtMega328 می باشد. آردوینو پلتفرم سختافزاری و نرمافزاری متنباز است. همان طور که قبل تر اشاره کردیم، پلتفرم آردوینو شامل یک میکروکنترلر تکبردی متنباز است که قسمت سختافزار آردوینو را تشکیل میدهد. علاوه بر این، پلتفرم آردوینو یک نرمافزار آردوینو IDE که به منظور برنامهنویسی برای بردهای آردوینو طراحی شدهاست و یک بوت لودر نرمافزاری که بر روی میکروکنترلر بارگذاری میشود را در بر میگیرد.
ماژول Relay
رله یک سوئیچ الکتریکی است که می تواند روشن یا خاموش شود، همچنین اجازه می دهد جریان عبور کند، یا خیر. و می توان آن را با ولتاژهای پایین کنترل کرد، مانند ۵ ولت ارائه شده توسط پایه های آردوینو. کنترل ماژول رله با Arduino به سادگی کنترل هر خروجی دیگری در آردوینو است.
این ماژول رله دارای دو کانال است (از دو عدد رله استفاده شده است). مدل های دیگری نیز با یک، چهار و هشت کانال وجود دارد. این ماژول باید از ۵ ولت تغذیه کند که مناسب استفاده با آردوینو است. ماژول های رله دیگری نیز وجود دارند که با استفاده از ۳٫۳ ولت تغذیه می شوند که برای ESP32 ، ESP8266 و سایر میکروکنترلرها ایده آل هستند.
وسایل موردنیاز
نصب کتابخانه مورد نیاز
ابتدا در نرم افزار Arduino IDE اقدام به نصب کتابخانه مورد نیاز خواهیمکرد. مراحل زیر را دنبال کنید:
- این مسیر را دنبال کنید Sketch > Include Library > Manage Libraries
- کلمه Adafruit SSD1306 را جستجو کنید.
- کتابخانه را نصب کنید.
- سپس کلمه “GFX” را جستجو کنید و آن را نصب کنید.
اتصالات و راه اندازی
در این مرحله اتصالات مربوط به ماژول های Oled , RC522 و همچنین ماژول رله در جداول زیر با آردوینو مشخص شده، همچنین برای برقراری اتصالات می توانید از شماتیک موجود استفاده کنید. ابتدا اتصالات سنسور تاچ را برقرار می کنیم.
- این قسمت اتصالات ماژول رله را برقرار می کنیم.
- در نهایت اتصالات نمایشگر Oled را برقرار خواهیم کرد.
-
شماتیک پروژه کنترل وسایل برقی با ماژول تاچ و نمایشگر Oled آردوینو Arduino
خب بعد از برقراری اتصالات، نوبت به کد پروژه میرسد. در ادامه باهم قسمت های مهمی از این کد را بررسی خواهیم کرد. در چند خط اول کتابخانه های مورد نیاز را معرفی میکنیم.
#include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h>
در این قسمت متغیر های مورد نیاز را تعریف و مشخصات آن ها از جمله حالت اولیه، اسم و شماره پایه را مشخص خواهیم کرد.
const int SENSOR_PIN = 7; int lastState = LOW; int currentState; int ledState = LOW; int relay = 3;
این بخش مربوط به دو شرط موجود برای راهاندازی oled و تغییر متن آن نسبت به تاچ سنسور است.
if(lastState == LOW && currentState == HIGH){ if(ledState == LOW) { ledState = HIGH; display.setTextSize(3); display.setTextColor(WHITE); display.setCursor(40,5); display.print("ON"); display.display(); display.clearDisplay(); } else if(ledState == HIGH) { ledState = LOW; display.setTextSize(3); display.setTextColor(WHITE); display.setCursor(40,5); display.print("OFF"); display.display(); display.clearDisplay(); } digitalWrite(relay, ledState); }
در مواردی که سنسور از مدار جدا شود، رله شروع به سوویچ زنی پشت سرهم خواهد کرد، و این باعث خرابی وسایل متصل شده به رله و یا صدمه دیدن خود قطعات می شود. از این رو با استفاده از این سه خط میتوانیم این امر را بهبود دهیم. (البته راه حل های متفاوتی برای این مورد وجود دارد. اگر راه حلی در نظر دارید در کامنت های این پست ذکر کنید )
if (lastState == HIGH) delay(1000); else (lastState == LOW); return;
کد کامل پروژه کنترل وسایل برقی با ماژول تاچ TTP223 و نمایشگر Oled آردوینو Arduino
#include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> Adafruit_SSD1306 display = Adafruit_SSD1306(128, 32, &Wire); const int SENSOR_PIN = 7; int lastState = LOW; int currentState; int ledState = LOW; int relay = 3; void setup() { Serial.begin(9600); display.begin(0x3C); display.display(); display.clearDisplay(); pinMode(SENSOR_PIN, INPUT); pinMode(relay, OUTPUT); display.display(); delay(1000); display.clearDisplay(); display.display(); } void loop() { currentState = digitalRead(SENSOR_PIN); if(lastState == LOW && currentState == HIGH){ if(ledState == LOW) { ledState = HIGH; display.setTextSize(3); display.setTextColor(WHITE); display.setCursor(40,5); display.print("ON"); display.display(); display.clearDisplay(); } else if(ledState == HIGH) { ledState = LOW; display.setTextSize(3); display.setTextColor(WHITE); display.setCursor(40,5); display.print("OFF"); display.display(); display.clearDisplay(); } digitalWrite(relay, ledState); } lastState = currentState; /* if (lastState == HIGH) delay(1000); else (lastState == LOW); return; */ }
جمع بندی
در این پروژه با چند ماژول ساده از جمله ماژول تاچ TTP223 و نمایشگر Oled، تاچ سنسور، ماژول رله و البته با استفاده از برد آردوینو یک سیتم کنترل وسایل برقی بصورت لمسی ساختیم البته برای کنترل چنین مداراتی از راه های بسیاری وجود دارد اگر موردی مدنظر دارید در کانت های این پست ذکر کنید تا آموزش مربوط در اولین فرصت منتشر شود.
- تنظیمات منوی tools در نرم افزار آردوینو نیز مانند تصویر زیر است.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.
سلام این سنسور تاچی که استفاده شده آیا از پشت شیشه هم جواب میده؟
سلام، در حالت عادی ماژول کمتر از نیم سانت و بدون تماس فیزیکی هم کار میکند، ولی این مورد مدنظر شما رو من امتحان نکردم.
سلام وقت بخیر
من نمیتونم کتابخانه adafruit ssd1306 و gfx رو کامپایل کنم .حتی رو برد uno هم نمیتونم کامپایل کنم
میشه راهنماییم کنید .سپاس
با سلام، مشکلی بوجود آمده را توضیح دهید، چه اروری دریافت میکنید؟
سلام
من از یک ماژول رله ۸ عددی استفاده کردم. بخاطر وجود سنسور و نمایشگر مجبور شدم ۴ عدد از رله ها رو به پایه های آنالوگ آردینو uno متصل کنم. پایه های ۱و۲و۳ درست اما میکنن اما رله ای که به پایه ۴ متصل هست دائم با سرعت بالا چشمک میزنه. روی پایه ۵ هم تست کردم همین اتفاق میفته.
لطفا راهنمایی بفرمایید دلیل این چشمک زدن چی هستش.
با تشکر.
سلام، بطور ایده آل این مشکل نباید وجود داشته باشد، اگر امکانش رو دارید با سخت افزار دیگری تست کنید در غیر اینصورت کد هایی که تغییر دادید برای هر پین باید به شکل زیر تعریف شود، بررسی کنید.
pinMode(A0, OUTPUT);
و برای کنترل:
digitalWrite(A0, HIGH);
سلام دوستان
پروژه ای دارم که از تعداد زیادی ماژول ttp223 ورژن قرمز توش استفاده میکنم، با فواصل حدود ۱۰ سانتی همدیگه قرار میگیرن.
کلیات مدار اینه که هر سنسور اگر تاچ بشه LED12V رو درایو میکنه تا زمانی که تاچ ادامه داشته باشه و بعد از اون fadeout میشنه نور LED رو. برای تغذیه سنسور از ۷۸۰۵ استفاده کردم به همراه خازن ۱۰۰n.
مشکل اینجاست که هر سنسور به تنهایی عملکرد درستی از خودش نشون میده ولی وقتی که همه سنسور ها رو روشن میکنم، خود سنسورها شروع میکنن به چشمک زدن و کار خراب میشه.
توجه داشته باشید که خود سنسور دچار تاچ اشتباه میشه و ارتباطی به pull-down خروجی نداره این مشکل.
ممنون میشم راهنماییم کنید که چکار کنم.
با سلام
کاربر گرامی در این خصوص با قطعیت بدون بررسی پروژه نمیتوانم نظری بدهم.
از دیگر کاربران که در این خصوص تجربه ای دارند تقاضا میکنم در بحث شرکت کنند.