در این آموزش براتون پروژه سیستم اتوماسیون خانگی با آردوینو با فعال ساز صوتی را آماده کردیم. محبوبیت مفهوم اتوماسیون خانگی در حال افزایش است. زیرا به کاهش فعالیتهای انسانی و خطاها و درنتیجه افزایش کارآیی کمک میکند. میتوانیم با کمک سیستم اتوماسیون خانگی، لوازم مختلفی مانند لامپ، پنکه، تلویزیون، سیستمهای تهویه و غیره را کنترل کنیم. علاوه بر این، یک سیستم اتوماسیون خانگی همچنین میتواند ویژگیهای دیگری مانند امنیت، زنگ خطر، سیستمهای اضطراری و غیره را یکپارچه کند.
انواع مختلفی از سیستمهای اتوماسیون خانگی مانند کنترل به وسیله بلوتوث، اینترنت، RF، ریموت (IR ریموت) و غیره وجود دارد. هر نوع مزایا و معایب خاص خود را دارند. در این پروژه، یک سیستم اتوماسیون خانگی با فعال ساز صوتی را طراحی کردهایم که در آن وسایل مختلف، با ارسال یک فرمان صوتی کنترل میشوند.
پیش نیازها
پروژه اتوماسیون خانگی با فعال ساز صوتی با استفاده از آردوینو UNO، بلوتوث و یک تلفن هوشمند اجرا میشود. در بخشهای بعدی شماتیک مدار، اجزای موردنیاز و نحوه کار پروژه توضیح داده خواهد شد.
شماتیک مدار سیستم اتوماسیون خانگی با آردوینو با فعال ساز صوتی
قطعات موردنیاز
- آردوینو UNO – 1 عدد
- ماژول بلوتوث HC–05 – یک عدد
- تلفن هوشمند یا تبلت – 1 عدد
- ترانزیستور 2N2222 NPN – 4 عدد
- رله 12 ولت – 4 عدد
- مقاومت 1KΩ – 4 عدد
- دیود پیوندی 1N4007 PN – چهار عدد
- منبع تغذیه
- سیم جامپر
- برد بورد (پرف بورد)
- برنامه انتقال صدا به بلوتوث
تشریح قطعات
ماژول بلوتوث HC – 05 : برای ارتباط بیسیم، از فناوری بلوتوث استفاده کردیم و ماژول مورد استفاده آن HC-05 است. این ماژول را می توان با استفاده از پروتکل UART با طیف گستردهای از نرخهایbaud (یکای اندازهگیری به معنای بر ثانیه) که قابل برنامهریزی هستند، یکپارچه کرد. اما میزان پیشفرض baud، bps9600 است. ماژول بلوتوث HC – 05 میتواند به صورت master یا slave تنظیم شود. در حالیکه یک ماژول دیگر HC – 06 میتواند فقط در حالت slave کار کند.
تصویر زیر ماژول بلوتوث HC – 05 مورداستفاده در این پروژه را نشان میدهد. در این ماژول پینهایی برای VCC (5V) ، GND ، TX و RX وجود دارد.
کنترل صدا BT برای آردوینو : این برنامه توسط SimpleLabsIN برای پروژههای آردوینو مبتنی بر صدا تهیه شده است. این برنامه اندروید از ویژگی تشخیص صدا تلفن استفاده میکند و دستورات صوتی را به متن تبدیل کرده و از طریق بلوتوث منتقل میکند.
برنامه کنترل صدا BT برای آردوینو را میتوان از اینجا دانلود کرد.
اگر با هر برنامه مشابه دیگری آشنایی دارید، میتوانید از آن نیز استفاده کنید.
برد رله (4 – کانال) : از رله برای اتصال یک مدار ترانزیستور جریان کوچک با یک مدار AC جریان بزرگ استفاده میشود. در این پروژه از برد رلهی از پیشساخته شده با 4 کانال استفاده کردهایم.
توجه : هنگام استفاده از برد رله با منبع تغذیه AC محتاط باشید.
طراحی مدار
اکنون شاهد طراحی مدار اتوماسیون خانگی با فعال ساز صوتی خواهیم بود. ابتدا ماژول بلوتوث را به آردوینو متصل خواهیم کرد. از آنجا که بلوتوث از پروتکل UART استفاده میکند، باید از پینهای RX و TX آردوینو استفاده کنیم. ما از کتابخانه ” SoftwareSerial ” برای تعریف پینهای RX و TX استفاده خواهیم کرد (پین 2 RX و پین 3 TX است).
توجه : ما از اتصال RX بلوتوث و TX آردوینو اجتناب کردیم؛ زیرا از آن استفاده نمیشود. در صورت بروز مشکل، از تقسیم ولتاژ برای تبدیل سیگنال TX آردوینو 5 ولتی به RX بلوتوث 3.3 ولتی استفاده کنید.
در مرحله بعد، رلهها را به آردوینو وصل خواهیم کرد. از آنجا که از یک برد رله آماده با 4 کانال استفاده کردهایم، تنها کاری که باید انجام دهیم اتصال ورودیهای هر رله به آردوینو است. برای اتصال دقیق قطعات مانند مقاومت، ترانزیستور، دیود و رله به شماتیک مدار مراجعه کنید.
توجه : ما هیچ باری را به رله وصل نکردهایم. اما همیشه میتوانید برخی از بارهای کوچک را به هم متصل کرده و عملکرد مدار را بررسی کنید. در هنگام استفاده از منبع تغذیه AC با برد رله، بیشتر مراقب باشید.
تمام اتصالات لازم، در شماتیک مدار توضیح داده شده است.
نحوه کار پروژه
در این پروژه، یک سیستم اتوماسیون خانگی با فعال ساز صوتی طراحی شده است. از دستورات صوتی برای کنترل وسایل مختلف استفاده میشود. اکنون شاهد نحوه کار پروژه خواهیم بود. تمام اتصالات، طبق شماتیک مدار بالا برقرار شدهاند.
پس از برقراری اتصالات لازم، باید منبع تغذیه را به مدار وصل کنیم. حال باید بلوتوث تلفن را به ماژول بلوتوث HC – 05 متصل کنیم. قبل از آن، ما باید برنامه ذکر شده در بالا را در گوشی نصب کنیم. صفحه اصلی برنامه، چیزی شبیه به این تصویر است.
مرحله بعدی، اتصال گوشی به ماژول بلوتوث است. برای این کار گزینه “Connect Robot” را انتخاب کرده و دیوایس بلوتوث مناسب را انتخاب کنید. اگر دیوایسها از قبل pair (جفت) نیستند، باید آنها را با استفاده از پین ماژول بلوتوث HC – 05 جفت کنیم.
پس از اتصال موفقیت آمیز، دیوایس ها آماده انتقال اطلاعات هستند. برای انتقال، آیکون میکروفون را در برنامه فشار داده و شروع به ارسال دستورات صوتی خود کنید.
توجه : اطمینان حاصل کنید که ویژگی تشخیص صدا در گوشی فعال شده است (این موضوع معمولاً به برنامههای خود گوگل مربوط است).
به عنوان مثال، اگر آیکون میکروفون را فشار داده و بگوییم “turn on light” یا “لامپ را روشن کن”، برنامه دستور را تشخیص میدهد و آن را به ماژول بلوتوث منتقل میکند. همچنین، دستور برای ما روی صفحه نمایش، نشان داده میشود.
هنگامی که دستور “turn on light” توسط برنامه تشخیص داده میشود، دستور را با عنوان “*turn on light#” ارسال میکند. بنابراین، پیام دریافت شده توسط ماژول بلوتوث در قالب “*Message#” است. دلیل قرار داشتن * و # در شروع و پایان این دستور، شناسایی شروع و پایان پیام است.
میتوانیم # را از پیام حذف کنیم، اما * را نیاز داریم تا بتوانیم شروع پیام را مشخص کنیم. پیام دریافت شده با برخی پیام های از پیش تعریف شده مقایسه میشود. اگر پیام با هر یک از آنها مطابقت داشته باشد، در این صورت اقدام مربوط مانند روشن یا خاموش کردن لامپ انجام میشود.
ما از دستورات زیر استفاده کردهایم:
“turn on AC”, “turn off AC”, “turn on light”, “turn off light”, “turn on TV”, “turn off TV”, “turn on fan”, “turn off fan”, “turn on all” , “turn off all”.
کد
#include <SoftwareSerial.h> const int rxPin = 2; const int txPin = 3; SoftwareSerial mySerial(rxPin, txPin); int ac=4; int light=5; int fan=6; int tv=7; String data; void setup() { Serial.begin(9600); mySerial.begin(9600); pinMode(ac, OUTPUT); pinMode(light, OUTPUT); pinMode(fan, OUTPUT); pinMode(tv, OUTPUT); digitalWrite(ac, LOW); digitalWrite(light, LOW); digitalWrite(fan, LOW); digitalWrite(tv, LOW); } void loop() { int i=0; char ch=0; data=""; while(1) { while(mySerial.available()<=0); ch = mySerial.read(); if(ch=='#') break; data+=ch; } Serial.println(data); if(data=="*turn on AC") { digitalWrite(ac,HIGH); Serial.println("ac on"); } else if(data=="*turn off AC") { digitalWrite(ac,LOW); Serial.println("ac off"); } else if(data=="*turn on light") { digitalWrite(light,HIGH); Serial.println("light on"); } else if(data=="*turn off light") { digitalWrite(light,LOW); Serial.println("light off"); } else if(data=="*turn on fan") { digitalWrite(fan,HIGH); Serial.println("fan on"); } else if(data=="*turn off fan") { digitalWrite(fan,LOW); Serial.println("fan off"); } else if(data=="*turn on TV") { digitalWrite(tv,HIGH); Serial.println("tv on"); } else if(data=="*turn on TV") { digitalWrite(tv,LOW); Serial.println("tv off"); } else if(data=="*turn on all") { digitalWrite(ac,HIGH); digitalWrite(light,HIGH); digitalWrite(fan,HIGH); digitalWrite(tv,HIGH); Serial.println("all on"); } else if(data=="*turn off all") { digitalWrite(ac,LOW); digitalWrite(light,LOW); digitalWrite(fan,LOW); digitalWrite(tv,LOW); Serial.println("all off"); } }
کاربرد های سیستم اتوماسیون خانگی با آردوینو با فعال ساز صوتی
- سیستم اتوماسیون خانگی با فعال سازی صوتی به ما کمک میکند تا دیوایسهای مختلف (وسایل برقی) را با دستورات صوتی ساده کنترل کنیم.
- این نوع سیستم برای افراد معلول بسیار مفید است.
- علاوه بر این، پروژه را میتوان با اضافه کردن سنسورهای مختلف (نور، دود و غیره) گسترش داد.
ویدیو ساختار مدار و خروجی
منبع: ترجمه از وبسایت ElectronicHub
اگر علاقمند بودید توصیه میکنم دیگر پروژههای آردوینو را هم مطالعه کنید.
اگر این نوشته برایتان مفید بود لطفا کامنت بنویسید.
درود بر شما
مهندس جان این کد ها رو باید به ماژول بلوتوث هم بدیم یا فقط به ای سی کنترلر و این که شما پورت کامپیوتر وصل کردید جهت ولتاژ یا باید همیشه با کامپیوتر هم اتصال داشته باشه بی زحمت اگه ممکنه توضیح بدید
سپاس
درود بر شما
مهندس این مدار رو من بستم با همین کد درست کار میکنه اما رله ی قسمت tv درست کار نمیکرد که باید در کد این گزینه از on به off تغییر پیدا کنند و فقط هم با همین نرم افزار بلوتوث دستور میگرفت
else if(data==”*turn on TV”)
و اوکی کار میکنه
با سپاس از مهندس گرامی