سیستم اتوماسیون خانگی با صدای فعال برای بیماران بستری
سیستم اتوماسیون خانگی می تواند زندگی را برای بیماران بستری و افراد مسن آسان تر کند زیرا فرمان صوتی آنها می تواند بخش کنترلی را که موقعیت تخت آنها را تنظیم می کند فعال کند.
حتی می تواند لوازم خانگی مانند چراغ ها، پنکه و تلویزیون را بر اساس دستورات کنترل کند.
حتی کودکان می توانند با استفاده از دستورات صوتی بدون کمک والدین خود، چراغ ها را در شب روشن کنند.
می تواند گزینه ای برای دستورات متنی به جای دستورات صوتی وجود داشته باشد.
سیستم پیشنهادی کاربر پسند است و برای عملکرد آن نیازی به کمک فنی نیست.
نمونه اولیه در شکل 1 نشان داده شده است.
شکل 1: نمونه اولیه برای سیستم اتوماسیون خانگی با صدای فعال
یک هدست بیسیم که توسط یک فرد استفاده میشود، صدای فرد را به گوشی هوشمندی که از برنامه Google Assistant استفاده میکند، منتقل میکند.
این برنامه دارای نرم افزار تشخیص صدا برای تفسیر و ترجمه فرمان صوتی به دادههای دیجیتالی است
که توسط میکروکنترلر برای انجام کار(های) مورد نیاز قابل درک است.
بخش کنترل شامل میکروکنترلر با وای فای یکپارچه، رله و مدارهای مرتبط است.
مدار و کارکرد آن
بلوک دیاگرام سیستم در شکل 2 نشان داده شده است و بلوک دیاگرام عملکردی سیستم توسعه یافته در شکل 3 نشان داده شده است.
اگر فرمان معتبر باشد درخواست سرویس وب را به سرور Blynk ارسال می کند و آن را به داده های دیجیتالی که توسط میکروکنترلر قابل درک است تبدیل می کند و داده ها را به میکروکنترلر به صورت بی سیم از طریق Wi-Fi با فعال کردن دستگاه طبق دستور صوتی منتقل میکند.
شکل 2: بلوک دیاگرام برای سیستم اتوماسیون خانگی فعال شده صوتی
شکل 3: بلوک دیاگرام عملکردی برای سیستم اتوماسیون خانگی فعال شده صوتی
همانطور که در دیاگرام مدار در شکل 4 نشان داده شده است،
سیستم از یک برد ESP32 (Board1) استفاده می کند که دارای یک میکروکنترلر یکپارچه با فرستنده وای فای است.
هنگامی که فرمان صوتی دریافت می کند، مدار درایور رله را فعال می کند.
در این مثال از رله های 5 ولتی برای روشن/خاموش کردن چراغ، فن و تلویزیون استفاده می شود. (یک ماژول رله 3 کانال ممکن است به جای رله های جداگانه استفاده شود.)
شکل 4: دیاگرام مدار سیستم اتوماسیون خانگی فعال شده صوتی
هر زمان که یک فرمان معتبر توسط ESP32 دریافت میشود، برنامه یک سیگنال بالا یا پایین را به پینهای GPIO متصل به رلهها، که لوازم خانگی را کنترل میکنند، راهاندازی میکند.
سروو موتور برای تغییر وضعیت تخت استراحت به بالا یا پایین استفاده می شود.
پیاده سازی نرم افزار
این نرم افزار به همراه برنامه Google Assistant شامل برنامه نویسی ESP32 با استفاده از Arduino IDE، پیکربندی سرور Blynk و اپلت های IFTTT در گوشی هوشمند است.
نرم افزار Blynk را می توان با استفاده از مراحل زیر پیکربندی کرد:
- برنامه Blynk را از پلی استور یا اپ استور دانلود کنید.
- برنامه را باز کنید و یک حساب کاربری ایجاد کنید. اگر قبلا یک حساب کاربری ایجاد کرده اید، می توانید وارد شوید.
- با ایجاد یک پروژه جدید شروع کنید.
- یک نام پروژه ایجاد کنید (مثلاً Bedridden_IOT) و دستگاه را به عنوان “ESP32 Dev Board” و نوع اتصال را به عنوان “WiFi” انتخاب کنید.
- دکمه Create را فشار دهید. پنجرهای باز میشود که میگوید «Token تأیید به ایمیل شما ارسال شد». برای ادامه روی دکمه Ok ضربه بزنید. می توانید ایمیل خود را باز کنید تا کلید احراز هویت خود را بررسی کنید. این کلید بعداً در کدهای آردوینو و تنظیمات IFTTT شما استفاده خواهد شد.
- برای باز کردن جعبه ویجت، روی هر نقطه از بوم ضربه بزنید. تمام ویجت های موجود در اینجا قرار دارند.
- برای تغییر تنظیمات روی ویجت خاص ضربه بزنید.
به صورت زیر :
ویجت Button را انتخاب کنید و نام آن را به عنوان Light و خروجی دیجیتال به عنوان gp2 تغییر دهید و گزینه Mode را به Switch تغییر دهید.
به طور مشابه، ویجت Button دیگری را انتخاب کنید و خروجی دیجیتال را gp4 و gp15 نامگذاری کنید.
در اینجا، gp2 مربوط به لامپ/نور متصل به GPIO2 (ESP32) است.
به طور مشابه، gp4 و gp15 به ترتیب به GPIO4 و (ESP32) GPIO15برای فن و تلویزیون متصل می شوند.
- برای سروو موتور، دکمه را به سروموتور تغییر نام دهید. روی جعبه خروجی کلیک کنید، پین مجازی را به عنوان V1 انتخاب کنید و حالت را به گزینه فشار تغییر دهید (شکل 5).
به همین ترتیب، دوباره دکمه را انتخاب کنید و نام آن را به ServoV2، جعبه خروجی را به عنوان V2 و گزینه Mode as Switch را تغییر دهید.
شکل 5: تنظیمات سروو موتور در برنامه Blynk
- پس از انجام تنظیمات بالا، دکمه Play را فشار دهید.
این از حالت ویرایش به حالت پخش تغییر می کند که در آن می توانید با سخت افزار تعامل داشته باشید.
در حالت پخش، نمیتوانید ویجتهای جدید را بکشید یا تنظیم کنید. Stop را فشار دهید و به حالت ویرایش بازگردید.
- بعد، Arduino IDE را باز کنید، کتابخانه Blynk را از لینک دانلود کنید.
این فایل فشرده را دانلود کنید، آن را استخراج کنید و سپس این فایل کتابخانه را در فایل های کتابخانه آردوینو کپی کنید. پس از نصب، میتوانید فایل کتابخانه Blynk خود را پیدا کنید.
Blynk library file → examples → Blynk → Boards_WiFi → ESP32_WiFi
کلید Auth Token، جزئیات وای فای خود را در کد آردوینو (bedridden.ino) وارد کنید، کد آردوینو را کامپایل کرده و در برد ESP32 آپلود کنید.
برای کنترل لوازم خانگی از طریق اینترنت با استفاده از Google Assistant باید موارد زیر را انجام دهید:
- به وب سایت IFTTT بروید. آن را روی تلفن همراه خود نصب کنید.
- با استفاده از حساب Google خود (همان حساب Google که با Google Assistant استفاده می کنید) ثبت نام کنید.
- پس از وارد شدن به سیستم، روی “Applets My” کلیک کنید و “Apple New” را انتخاب کنید که رله را برای روشن کردن چراغ راه اندازی می کند.
- اکنون همانطور که در شکل 6 نشان داده شده است، روی “If This” کلیک کنید و در نوار جستجو، “Google Assistant” را جستجو کنید و روی آن ضربه بزنید. پنجره ای ظاهر می شود که در شکل 7 نشان داده شده است.
شکل 6: IFTTT در تلفن اندرویدی
شکل 7: دستیار گوگل در پلتفرم IFTTT
- گزینه “Say a simple phrase” را برای اقدام راه اندازی انتخاب کنید. روی Connect کلیک کنید تا اجازه راه اندازی کنش را بدهید.
- سپس، در اولین کادر متنی، عبارتی را تایپ کنید که میخواهید دستیار Google این عمل را فعال کند. برای مثال، « Turn on the light».
- برای دو جعبه متن بعدی، دستورات جایگزینی مانند ” Switch on the light” و ” Light on” را برای همان عمل می نویسید.
- در کادر متنی چهارم، پاسخی را که قرار است توسط دستیار گوگل داده شود، تایپ کنید، به عنوان مثال، ” Okay, I will turn on the light”. روی دکمه ” Create Trigger ” کلیک کنید.
- سپس بر روی دکمه « Then that» کلیک کنید.
- “webhooks” را در کادر جستجو تایپ کنید، آن را انتخاب کنید و روی Connect کلیک کنید. Webhooks به ما اجازه می دهد تا دستورات را به سرور Blynk ارسال کنیم. برای انجام این کار باید آن را به حساب Google خود متصل کنید.
- برای کنترل رله، باید URL زیر را به همراه آدرس IP برنامه Blynk، Auth Token و پین GPIO در کادر متن وارد کنید:
https://188.166.206.43/your auth token/update/D2
- D2 یک GPIO2 روی ESP32 میباشد. در اینجا باید توکن Auth خود را در URL جایگذاری کنید.
- سپس، فیلد Method را به عنوان “PUT”، نوع محتوا را به عنوان “Application/JSON” و Body type را به عنوان “[“1”] برای روشن کردن چراغ انتخاب کنید.
به همین ترتیب، برای روشن کردن فن و تلویزیون باید مراحل مشابهی را دنبال کنید.
- برای کنترل سروو موتور از آدرس زیر استفاده کنید:
https://188.166. 206.43/your auth token/update/V2
- V2 پین مجازی D23 روی ESP32 برای کنترل سروو موتور تعریف شده در کد منبع و برای کنترل موقعیت [“1”] است.
در اینجا، V2 مربوط به موقعیت 90 درجه (عمودی) و V1 مربوط به موقعیت 0 درجه (مسطح) است.
- در مرحله بعد، فیلد method را به عنوان “PUT”، نوع محتوا را به عنوان “Application/JSON” و نوع بدنه را به عنوان “[“1”] انتخاب کنید.
- اکنون بر روی “Create Action” و سپس “Finish” کلیک کنید.
- سپس، اپلت دیگری را به همین روش ایجاد کنید تا چراغ/فن/تلویزیون خاموش شود.
یعنی باید همان داده های بالا را با تغییرات جزئی در نوع Body پر کنید.
برای خاموش کردن دستگاه، نوع بدنه باید “[“0″]” باشد.
در سروموتور، URL باید https://188.166.206.43/your auth token/update/V1 باشد.
- برای تکمیل تنظیمات نرم افزار، “Finish” را بزنید.
سپس برنامه Google Assistant را از تلفن همراه خود فعال کنید تا در پس زمینه اجرا شود.
اکنون، میتوانید وسایل را از طریق برنامه Blynk با انگشت خود یا فقط با دادن فرمان صوتی
برای روشن/خاموش کردن دستگاهها کنترل کنید.
برای سروو موتور، می توانید از فرمان صوتی مانند “Bed up” برای چرخش 90 درجه سروو موتور برای بلند کردن تکیه گاه تخت استفاده کنید.
وقتی می گویید “تخت پایین”، سروو موتور به حالت 0 درجه می چرخد تا تخت به حالت عادی برگردد.
شکل 8: نمودار جریان سیستم
نمودار جریان پروژه در شکل 8 به نمایش درآمده و کد منبع (bedridden.ino) در زیر فهرست گردیده:
Source code
#define BLYNK_PRINT Serial
#include#include#include#include
Servo servo;
// You should get Auth Token in the Blynk
App.
// Go to the Project Settings (nut icon).
char auth[] = “Your auth token”;
// Your WiFi credentials.
// Set password to “” for open networks.
char ssid[] = “Your SSID”;
char pass[] = “Your password”;
void setup()
{
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
servo.attach(23);
}
void loop()
{
Blynk.run();
}
BLYNK_WRITE(V1)
{
servo.write(0);
}
BLYNK_WRITE(V2)
{
servo.write(90);
}