اینترنت اشیا IOT برد ESP8266 برد Nodemcu

کنترل وسایل برقی با Siri و برد ESP8266

control-any-device-with-siri-and-esp8266-arduino-digispark
نوشته شده توسط پریسا پوربلورچیان

بخش مهمی از کارهای ضروری بنده توسط سیری Siri انجام می‌شود! سیری ساعت چند است؟ سیری با مادرم تماس بگیر و حتی پیدا کردن رستوران و کافی شاپ بر اساس علایقم توسط siri پیشنهاد می‌شود. در این پروژه توسط Siri میتوانید نور محیط را مدیریت کنید! یا به عبارتی کنترل وسایل برقی با Siri را در منزل و یا محل کار انجام دهید. سیری دستیار صوتی و بسیار هوشمند سیستم عامل مک هست. در ادامه با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

کنترل وسایل برقی با Siri و برد ESP8266 - دیجی اسپارک

 


دستیار صوتی Siri


Siri does more than ever

Even before you ask

متن بالا شعار سیری است. سیری در آیفون به شما این امکان را میدهد تا بدون استفاده از تلفن کارهای ضروری خود را انجام دهید. مانند تماس تلفنی، ارسال پیام، اجرای یک برنامه و … که به سادگی توسط siri قابل اجرا است. در واقعیت سیری Siri همانند یک دستیار مجازی هوشمند با اتصال به اینترنت همیشه در اختیار ما است. از این قابلیت منحصر به فرد در آیفون به کنترل و مدیریت برنامه های نوشته شده توسط برد وای فای ESP رسیده ام. بردهای وای فای قابلیت اتصال به شبکه داشته و در هر برنامه میتوانید یک آی پی اختصاصی داشته باشید. جهت برقراری ارتباط بین برد وای فای ESP و دستیار مجازی Siri نیاز به یک شبکه ی وای فای یکسان داریم تا برد وای فای در نقش گیرنده و Siri در نقش ارسال کننده پیام تعریف شود. روش کار بسیار ساده است و بایستی برای اجرای هر فرمان در موبایل خود از تنظیمات siri فرمان مورد نظر را به صورت پیش فرض در siri تعریف کنید و به آن هویت دهید.

کنترل وسایل برقی با Siri - دیجی اسپارک

 


چگونگی کنترل وسایل برقی با Siri


یکی از اپ هایی که شاید تاکنون از آن استفاده نکرده اید، اپ Shortcut است. توسط اپلیکیشن Shortcut میتوانید مدیریت موبایل خود را آسان تر و در کمترین زمان انجام دهید. اما از قابلیت های ویژه اپلیکیشن ارتباط با Siri است. در این برنامه میتوانید رویدادهایی که در طول روز بیشترین استفاده را داشته است به یک روش کوتاه توسط siri تبدیل کنید و بدون دخالت و استفاده از تلفن خود به siri فرمان دهید تا درخواست شما را اجرا کند. انتخاب اسم برای اجرای یک درخواست در siri محدودیتی ندارد و میتوانید در اپلیکیشن به راحتی تعریف کنید.

هر برد وای فای دارای یک آی پی آدرس است که با وارد کردن آی پی آدرس در مرررگر اطلاعاتی که در کد برنامه نوشته شده است، نمایش داده می‌شود. به عنوان مثال در این پروژه فرمان خاموش و روشن شدن ال ای دی توسط دستورهایی که در برنامه نوشته شده است، در مرورگر در یک صفحه وب ساخته شده و قابل تغییر است. با کلیک بر روی هر آیکون آدرس مرورگر تغییر خواهد کرد و کافیست همان آدرس را به سیری Siri دهیم. در مرورگر از تگ های HTML استفاده می‌کنیم.

اپلیکیشن های مورد نیاز

  • Shortcut
  • fing
  • safari or chrome

 


استفاده از برد وای فای ESP


برای مدیریت و کنترل وسایل برقی با Siri از طریق شبکه ی آنلاین به یک برد وای فای نیاز دارید. تمامی بردهایی که از تراشه وای فای استفاده می‌کنند، قابلیت اجرا و استفاده در این پروژه را دارند. برای اجرای این پروژه بنده از برد وای فای ESP8266 استفاده میکنم. برد وای فای ESP8266 یکی از محبوب ترین سخت افزارهای توسعه یافته برای ایجاد یک هارمونی بی نظیر در شبکه وای فای و اینترنت و مدیریت وسایل را ایجاد کرده است. تراشه ESP8266 قابلیت اتصال به مودم‌ ، اتصال به شبکه اینترنت، قابلیت تبدیل به نقطه دسترسی Access Point، قرار گیری در مد سرور Server Mode داشته و بدون نیاز به برد کمکی قابلیت برنامه ریزی و اجرا بر روی Arduino IDE دارد. پس از آن دسترسی به شبکه اینترنت با ماژول ESP8266 فراهم شده و ارتباط با دنیای اینترنت اشیا آغاز می‌شود. برد Nodemcu از تراشه داخلی وای فای ESP8266 طراحی شده است و در پروژه های DIY اینترنت اشیا بسیار کاربردی است. مدل های مختلفی برای Nodemcu با سری های متفاوت عرضه شده است که هر کدام ویژگی های منحصر به فرد خود را دارد. ولتاژ کاری برد Nodemcu CP2102 برابر با ۳٫۳ ولت است و همچنین از پین Vin بهره می‌برد.

برد Nodemcu در کنترل وسایل برقی با Siri - دیجی اسپارک

 


استفاده از رله و اتصالات


در پروژه‌ی کنترل وسایل برقی با Siri هدف روشن و خاموش کردن لامپ های خانه است. برای اینکار نیاز به دانش فنی داریم و در صورتیکه تا به حال با رله کار نکرده اید، می‌بایست به دلیل خطر برق گرفتگی تمامی نکات فنی را دانسته و مطالعه کنید.

رله نوعی کلید الکترونیکی عملگر است که به دو حالت خاموش و روشن میتوانید آنرا تغییر وضعیت دهید. توسط رله می‌توانید جریان را عبور و یا قطع کنید. برای ساخت چراغ مطالعه با آردوینو از رله استفاده می‌کنیم. تمامی ماژول های رله در تعداد پایه‌های خروجی برابر است و مدل‌های مختلفی مانند رله تک کانال، رله دو کانال، چهار کانال و هشت کانال در بازار موجود است. مشخصا اتصال پایه‌های سنسور به پایه‌های ورودی رله بسیار ساده است. پایه‌هایی که با IN مشخص شده است مستقیم به پایه‌های برد میکروکنترلر متصل می‌شود. در برد آردوینو UNO یا Meg2560 از پایه های دیجیتال برای اتصال به IN رله میتوان استفاده کرد. در برد Nodemcu و Wemos از GPIO ها مانند D1, D2 میتوان استفاده کرد. به همین ترتیب می‌توانید اتصالات ورودی را انجام داده و تغذیه ۵ ولت و GND را از برد میکروکنترلر از جمله آردوینو، Nodemcu, Wemos تامین کنید. هر رله دارای سه پایه NO, COM و NC است.

  • پایه COM: پایه مشترک Common است.
  • پایه NC به معنای نرمالی کلوز یا همان پیش فرض بسته است و زمانی استفاده می‌شود که بخواهید رله به صورت پیش فرض بسته باشد. به این صورت که جریان در مدار وجود دارد و در صورت ارسال سیگنال از آردوینو مدار باز شده و جریان را متوقف می‌کند.
  • پایه NO به معنای نرمالی اوپن یا همان پیش فرض باز است و به این معنی که رله همیشه باز است و مدار باز بوده و پس از ارسال سیگنال از آردوینو مدار بسته خواهد شد.

 

ESP8266 RELAY
VCC ۵V
D4 SIGNAL
GND GND

 

استفاده از رله در کنترل وسایل برقی با Siri - دیجی اسپارک

 


کد آردوینو کنترل وسایل با Siri


برای اجرای برنامه در اولین قدم نیاز به نرم افزار آردوینو Arduino IDE داریم. در کدنویسی این برنامه از کدهای HTML و C++ استفاده شده است. برای ساخت یک صفحه در مرورگر به تگ های HTML نیاز داریم که بسیار ساده است. در ادامه مرحله به مرحله روش کدنویسی آموزش داده شده است.

 

جهت دسترسی به این بخش، اشتراک اسپارکر پلاس تهیه کنید.

 

 


روشن و خاموش شدن چراغ با فرمان به Siri


پس از آپلود کدها بر روی برد وای فای یک آی پی آدرس اختصاصی برای شبکه وای فای در دسترس شما قرار میگیرد. برای یافتن آی پی آدرس یکی از روش های ساده توسط مویابل استفاده از اپلیکیشن Fing است که تمامی دستگاه های متصل به شبکه ی وای فای شما را اسکن کرده و نمایش میدهد.

اپلیکیشن Fing

فینگ Fing یک اپلیکیشن توسعه یافته و فوق العاده برای یافتن تمامی دستگاه های هوشمند به شبکه وای فای است. از قابلیت های Fing دسترسی به تمامی دیوایس های تحت وای فای محیط و استفاده در Cloud API, multi-platform SDK and Database است.

اپلیکیشن فینگ Fing - دیجی اسپارک

در این پروژه از برد وای فای ESP8266 برای مدیریت کنترل وسایل برقی از جمله نور خانه از طریق شبکه وای فای استفاده شده است. پس از آپلود کد برنامه بر روی برد وای فای ESP8266، وارد اپلیکیشن Fing شده و بر روی Scan for devices کلیک کنید.

 

در صفحه ی بعدی پس از اسکن، لیست تمامی دیوایس های متصل به شبکه ی وای فای را نمایش میدهد.

کنترل وسایل برقی با دستیار صوتی Siri - دیجی اسپارک

 

در این بخش آی پی آدرس IP Address برد ESP8266 برای ما اهمیت دارد. آی پی آدرس را کپی و در مرورگر باز کنید. در این بخش از Safari استفاده شده است.

  • با کلیک بر روی LEDON آی پی آدرس در حالت a=1 قرار گرفته و چراغ روشن می‌شود.

 

  • با کلیک بر روی LEDOFF آی پی آدرس در حالت a=0 قرار گرفته و چراغ خاموش می‌شود.

در مرورگر یک بار تمامی این مراحل را اجرا کنید تا به عنوان برنامه های اجرا شده در لیست قرار گیرد.

 


استفاده از اپلیکیشن Shortcuts


تمامی کارهایی که در طول روز بر طبق عادت با موبایل آیفون خود انجام میدهید، در اپلیکیشن SHORTCUTS به صورت عادت ذخیره می‌شود و در لیست GALLERY نمایش داده می‌شود. در این بخش میخواهیم به سیری فرمان باز شدن مرورگرهایی که در بخش قبل ساخته ایم را اعمال کنیم.

  • از منو GALLERY بر روی SHORTCUTS FROM YOUR APPS کلیک کنید.
  • بر روی SEE ALL کلیک کنید.
  • آخرین برنامه هایی که باز کرده اید را به ترتیب به شما نمایش میدهد.
  • اگر از SAFARI استفاده کرده اید، بایستی دو لینک ساخته شده توسط مرورگر در این صفحه به شما نمایش داده شود.

 

فرمان روشن شدن لامپ با Siri

آی پی آدرس اختصاصی بنده برای روشن شدن ال ای دی به صورت زیر است که در تصویر بالا مشخص شده است. توجه داشته باشید برای شما آی پی متفاوت خواهد بود.

بر روی ۱۹۲٫۱۶۸٫۱…/?a=1  کلیک کنید تا صفحه ی SIRI برای شما باز شود.

در کادر When I Say متنی که میخواهید فرمان روشن شدن لامپ در سیری Siri ذخیره شود را تایپ کنید. سپس در بخش دوم عکس وظیفه ی Siri با دریافت این پیام مشخص شده است که همان روشن شدن لامپ است. در این پروژه بنده در کادر Turn LED On را نوشتم و سپس پس از دخیره با گفتن Hey Siri Turn LED ON، لامپ روشن می‌شود.

 

فرمان خاموش شدن لامپ با Siri

آی پی آدرس اختصاصی بنده برای خاموش شدن لامپ به صورت زیر است که در تصویر بالا مشخص شده است. توجه داشته باشید برای شما آی پی متفاوت خواهد بود.

بر روی ۱۹۲٫۱۶۸٫۱…/?a=0  کلیک کنید تا صفحه ی SIRI برای شما باز شود.

 

در کادر When I Say متنی که میخواهید فرمان خاموش شدن لامپ در سیری Siri ذخیره شود را تایپ کنید. سپس در بخش دوم عکس وظیفه ی Siri با دریافت این پیام مشخص شده است که همان روشن شدن لامپ است. در این پروژه بنده در کادر Turn LED OFF را نوشتم و سپس پس از دخیره با گفتن Hey Siri Turn LED OFF، لامپ خاموش می‌شود. در مرحله نهایی برای مشاهده ی SHORTCUT های ساخته شده در اپلیکیشن گزینه ی MY SHORTCUTS را انتخاب کنید.

اپلیکیشن Shortcuts در آیفون برای کنترل وسایل برقی با Siri - دیجی اسپارک

 

به همین سادگی میتوانید با فرمان به SIRI، هر تعداد چراغ هایی که دارید را کنترل کنید.

 


تحلیل کد آردوینو


در این برنامه جهت برقراری ارتباط با شبکه ی وای فای از کتابخانه های WIFI برای تراشه ESP8266 استفاده شده است.

 

نصب کتابخانه ESP8266WiFi

ESP8266 تراشه ای است که منحصرا برای ارتباط وای فای Wifi طراحی شده است و جهت دریافت و ارسال دیتا از شبکه وای فای می‌توان از آن استفاده کرد. در این خصوص کتابخانه های متعددی برای ارتباط با شبکه های وای فای توسعه داده شده است که در این بین کتابخانه های وای فای ESP8266 در پکیج کتابخانه ی آردوینو قرار داشته و در دسترس است. با استفاده از کتابخانه ESP8266WiFi به شبکه وای فای متصل شده و آی پی برای ورود به مرورگر و ساخت یک وب پیج برای نمایش و دریافت اطلاعات فراهم است. به عنوان مثال در کد زیر با فراخوانی کتابخانه و وارد کردن اطلاعات شبکه وای فای شخصی به اینترنت متصل شده و یک آی پی منحصر به فرد در اختیار ما قرار می‌دهد.

 

کتابخانه ESP8266WebServer

برای مدیریت درخواست های HTTP مانند POST و GET استفاده میشود و فقط همزمان از یک کلاینت پشتیبانی می‌کند. از این کتابخانه برای ساختن کلاس از ESP8266webserver استفاده می‌شود که شامل IP Address هاست و پورت هاست Host port است که به صورت پیش فرض پورت عدد ۸۰ است.

 

کتابخانه WiFiClient

این کتابخانه یک کلاینت برای ارتباط با یک آی پی آدرس خاص و پورت برای ما در کد برنامه فراهم می‌کند.

 

تعریف Voidsetup

در حلقه ی اصلی برنامه لامپ را تعربف شده و سپس دستورات فرمان به سرور نوشته می‌شود.

 

حلقه ی برنامه Void Loop

دستوراتی که هر بار با ارسال فرمان بایستی در برنامه انجام شود، در حلقه ی تکرار نوشته می‌شود. دستوراتی از قبیل ارتباط با شبکه ی وای فای در بخش اول نوشته شده است.

 

کد HTML برای ساخت صفحه ی وب

کدهای html بسیار ساده است.HTML مخفف Hyper Test Markup language می‌باشد. در HTML بر خلاف دیگر زبان ها که از اسکریپت برای اجرای عملکردها استفاده می‌کنند، HTML با استفاده از تگ و برچسب ها برای شناسایی محتوا استفاده می‌کند. در واقع شما با یادگیری HTML می‌توانید وب سایت خود را راه اندازی کنید. دنیای HTML بسیار پیچیده و مفصل است و از آموزش کامل آن معذوریم.در این آموزش تنها به تحلیل بخشی از کدهای HTML خواهیم پرداخت و Result آن را بررسی خواهیم کرد.

  • <!DOCTYPE html> : این دستور در واقع در شروع هر کد برای اعلان و تعریف نوع ducument است و تنها یک بار در بالای صفحه قبل از هر تگ ظاهر می‌شود.
  • <html> : این دستور برای معرفی اساس ساختار HTML می‌باشد.
  • <head> : تگ Head در واقع برای نمایش محتوای وب سایت استفاده خواهد شد و به صورت کلی شامل اطلاعات متا تگ ها در هر Document است.
  •  <body> : تگ Body همانند head شامل محتوای وب سایت است که در این قسمت تعریف می‌شود.
  • <h1> : از تگ h برای نمایش تیتر و سربرگ استفاده می‌کنیم که میتواند مقادیر بین h1 تا h6 را در برگیرد.
  • <h2> : از تگ h برای نمایش تیتر و سربرگ استفاده می‌کنیم که میتواند مقادیر بین h1 تا h6 را در برگیرد.
  • <p> : تگ p برای معرفی پاراگراف استفاده می‌شود.

در این بخش به سه تیتر و عنوان نیاز داریم که انتخاب اسم برای هر تیتر دلخواه است. به دلخواه یک اسم با تگ h1 برای عنوان صفحه انتخاب کنید که در اینجا از Relay Remote استفاده شده است.

برای تیتر دوم یعنی فرمان روشن شدن لامپ از عنوان LEDon با تگ h2 استفاده شده است.

برای تیتر سوم یعنی فرمان خاموش شدن لامپ از عنوان LEDoff با تگ h2 استفاده شده است.

از String msg برای دریافت مقادیر ارسال شده است.

 

 


وسایل مورد نیاز


برد وای فای ESP8266

لامپ

 

 


جمع بندی لیدی پای


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

 

 

درباره نویسنده

پریسا پوربلورچیان

تولید کننده محتوا / کارشناس IOT

زندگی یعنی پژوهش و فهمیدن چیزی جدید

تلاشم بر این است تجربیاتم در زمینه IOT‌ را به بهترین شکل با شما در میان بگذارم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۱۴ دیدگاه

    • ممنون برای مقاله خوب و کاربردیتون، اینکه بشه با ترکیب ابزارها اجرای کارهای روزمره رو اتوماتیک کرد هم واقعا جالب و هیجان انگیزه و هم اینکه زندگی رو از حالت تکرار و یکنواختی درمیاره.

      چند تا سوال داشتم، یکی اینکه میشه جوری دستور داد که مثلا نور لامپ رو برای ما کمتر یا بیشتر کنه ینی فقط خاموش و روشن نباشه یا مثلا بگیم بگیم غمگین، شاد، روز یا شب که حالت های نور متفاوت بده؟

      و سوال دیگه اینکه اگه مثلا ۱۰ تا لامپ داشته باشم باید به همون تعداد جمله متفاوت به siri اضافه کنم؟

      سپاس از شما

      • با سلام
        از توجه شما ممنونم. امیداوارم مفید واقع شده باشد.

        در خصوص سوال اول، تمامی تسک هایی که توسط Siri قابل انجام است، بایستی در کد آردوینو برنامه به عنوان یک فرمان دهنده تعریف شود. به عنوان مثال میتوانیم با انتخاب ۳ عدد که به ترتیب عدد ۱ = نور زیاد، عدد ۲ = نور متوسط و عدد ۳ = نور کم در برنامه شدت نور را توسط تایع برنامه نویسی MAP تعریف و در صفحه ی وب با فرمت Textو انتخاب متغیر منحصر به فرد برای هریک جداگانه تعریف کرد. پس عملا امکان پذیر است و نیاز به توسعه کد دارد.

        در خصوص سوال دوم، برای هر DO در اپلیکشن Siri باید یک اسم منحصر به فرد نوشته شود تا تداخلی در تسک های ساخته شده ایجاد نشود.

  • سلام خانم بلورچیان واقعا ازتون ممنونم خیلی به این پروژه نیاز داشتم برای روشن و خاموش کردن کولر عالی بود دستتون درد نکنه ☺

  • سلام خانم پوربلورچیان
    خداقوت، واقعا آموزش عالی و درجه یکی هست، از همه مهم‌تر کاربردی بودنشه میخواستم بدونم که رله را وقتی به برد esp8266 متصل کردیم، باید خود برد همیشه تو برق باشه

    • با سلام
      سپاس از همراهی شما
      بله برای تغذیه برد esp8266 از باتری هم میتوانید استفاده کنید.

  • سلام
    آموزشتون عالی بود، میخواستم بدونم که بجز برد nodemcu دیگه از چه بردهایی میشه استفاده کرد؟ توی متن به چیزی اشاره نشده بود.

    • با سلام
      سپاس از همراهی شما
      در این پروژه با توجه به کتابخانه های مورد استفاده از تمامی بردهای خانواده esp می‌توانید استفاده کنید.