آردوینو اینترنت اشیا IOT برد ESP8266 برد Nodemcu برد ویموس Wemos

آموزش ساخت کلید وای فای همه کاره WifiButton با IFTTT و برد ESP8266

نوشته شده توسط CiferTech

در این آموزش قصد داریم به شما راهنمایی ساخت کلید وای فای همه کاره WifiButton را بدهیم، خب برای شروع به بررسی اینکه اصلا این WifiButton چی هست و چه کاری برای ما انجام می دهد می پردازیم در ضمن این پروژه بر پایه سرویس های سایت IFTTT هست که مخفف if this then that می باشد، خب از اسم مشخص هست که قراره جالب باشد. در ادامه این آموزش با مرجع تخصصی ESP8266 به زبان فارسی، دیجی اسپارک همراه باشید.

 


کلید وای فای WifiButton


فرض کنید یک کلید فیزیکی در اختیار دارید که با هر بار کلیک کردن وظیفه ای که برای آن تایین شده را انجام می دهد، از سفارش غذای مورد علاقه شما از نزدیک ترین رستوران تا خاموش و روشن کردن وسایل مختلف در خانه شما، خب این ایده اولین بار از طرف شرکت آمازون ارائه شد با اسم Amazon Dash Button اما به دو دلیل ما WifiButon خودمون رو میسازیم اول اینکه هزینه خرید بالایی داره و دوم اینکه میتونیم بسازیمش!! در ضمن برای توضیحات تکمیلی خوبه که بدونید WifiButton رویداد هایی که برای اون تعریف شده باشه رو اجرا میکنه که در این آموزش رویداد مد نظر ما ارسال یک ایمیل می باشد.

کلید وای فای WifiButton

 


برد ESP8266


ماژول های ESP32 و ESP8266 ساخت شرکت Espressif Systems از در دسترس ترین تراشه های اینترنت اشیا هستند. و همچنین قیمت پایین تری نسبت به دیگر تراشه های اینترنت اشیا دارند و برای توسعه کد های آن میتوانیم از نرم افزار Arduino استفاده کنیم که دسترسی آسان تری را برای کاربر فراهم میکند.

برخی از ویژگی های ESP8266

  • ماژول شبکه و میکروکنترولر ESP8266 یکی از معروفترین و ارزان ترین و دردسترس ترین تراشه های اینترنت اشیا میباشد.
  • این ماژول با دارا بودن میکروکنترولر قدرتمند بهمراه ارتباط شبکه WIFI داخلی،
  • پشتیبانی کامل فول استک TCP/IP
  • و همچنین با ارائه رابط های سخت افزاری کافی گزینه مناسبی برای کاربرد های کوچک و کم مصرف اینترنت اشیا میباشد.
  • این میکروکنترولر در سال ۲۰۱۴ به بازار عرضه گردید.

برد esp8266-12


سرویس IFTTT


همینطور که قبلا اشاره کردم قرار است که در آموزش از سرویس های سایت IFTTT استفاده کنیم که به ما امکان دسترسی به سرویس هایی مثل GMAIL و Webhooks را می دهد. که در این آموزش نیاز داریم. حالا چرا سرویس IFTTT ؟ در واقع این کلمه مخفف If this then that است. به این معنی که “اگر این پس آن” که در واقع اگر رویدادی که تایین کرده‌ایم اتفاق بیوفتد کاری که ما تایین کرده‌ایم اتفاق می‌افتد. در این آموزش به این صورت می باشد که با فشردن کلید وای فای بر روی ESP یک API از طرف ما Call می شود و در نتیجه ایمیلی برای ما ارسال می شود.

 


تنظیمات سایت و اپلیکیشن IFTTT


خب برای شروع ساخت کلید وای فای همه کاره WifiButton ابتدا به سایت IFTTT بروید. در بخش sign up در سایت ثبت نام کنید. سپس در بالای صفحه بر روی Create/Applets کلیک کنید.

ساخت WifiButton

در پنجره جدید با اسم اصلی سایت مواجه خواهید شد و بر روی کلمه “THIS” کلیک کنید.

ساخت WifiButton

در این قسمت کلمه Webhooks را سرچ کنید.

ساخت WifiButton

در این مرحله نوع trigger را انتخاب میکنیم، نوع مد نظر ما Receive a Web Request می باشد.

ساخت WifiButton

سپس نام trigger را انتخاب میکنیم که اسم مدنظر ما button_pressed می باشد.

ساخت WifiButton

سپس به این صفحه منتقل می شویم حالا با توجه به تصویر بر روی That کلید کنید.

ساخت WifiButton

در این بخش باید کلمه Gmail را در نوار جستجو سرچ کنید و سپس آن را انتخاب کنید.

ساخت WifiButton

 


نصب Action در IFTTT


حالا Action مورد نظر را انتخاب می کنیم که مورد مدنظر ما send a email می باشد.

تعریف action در ifttt برای ساخت کلید وای فای WifiButton

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

ساخت WifiButton

در پایین صفحه پس ایجاد تغییرات لازم بر روی Create action کلیک کنید.

ساخت WifiButton

خب تا اینجا تقریبا ۸۰ درصد کار رو جلو بردیم، از صحت اطلاعات مطمئن بشید و بر روی Finish کلیک کنید.

ساخت اپلت در ifttt

حالا بر روی Explore کلیک کنید.

ساخت WifiButton

دقیقا مانند دفعات قبل کلمه webhooks را سرچ کنید و بر روی آن کلیک کنید.

ساخت WifiButton

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

ساخت WifiButton

در پنجره باز ابتدا اسم رویداد را که از قبل button_pressed انتخب کردیم را وارد کنید. در پایین صفحه لینکی که اینجا می شود API شما می باشد. حالا سه راه برای تست کردن این API داریم که به شرح زیر می باشد:

  1. کپی کردن لینک و جستجوی آن در مرورگر.
  2. استفاده از محیط CMD و استفاده از دستور curl -X POST و سپس لینک.
  3. استفاده از گزینه Test it.

ساخت WifiButton

حالا فرض می کنیم از راه اول اقدام کردیم، اگر این پیام برای شما به نمایش درآمد، تبریک میگم همه چیز طبق برنامه پیش میرود و ایمیل برای شما ارسال شده. حالا زمان بررسی کد مورد نیاز می باشد.

ساخت WifiButton

در کد پروژه سه قسمت نیاز به ویرایش دارد، در قسمت ۱ و ۲ که در تصویر مشخص شده باید ssid و پسوورد وای فای خانه یا محل کارتان را وارد کنید همچنین می توانید از هات اسپات تلفن های همراه نیز استفاده کنید. در بخش ۳، API که قبل تر از سایت ذریافت و تست کردیم را وارد می کنیم. حالا زمان آپلود کد می باشد. می توانید کد را بر روی برد های nodeMCU 8266 و یا چیپ های ESP مانند esp 07 , esp 12  و غیره آپلود کنید. به این شکل که از منوی tools برد و پورت مد نظر را انتخاب و سپس اقدام به آپلود کد بکنید.

 


نحوه استفاده کلید وای فای


استفاده از این پروژه به این صورت می باشد که بار هر ریست کردن مدار، برای مثال در nodemcu با فرشدن کلید RST ماژول از حالت خواب “sleep mode” خارج می شود و API مورد نظر ما را call می‌کند.

 


تحلیل کد WifiButton


ابتدا ارتباط سریال با baud rate به مقدار ۱۱۵۲۰۰ شروع می شود، در ادامه تابع initWifi ارتباط وای فای بین ESP و روتر شما را ایجاد می کند، سپس تابع makeIFTTTRequest اجرا می شود که در خواستی به سرویس IFTTT ارسال می کند و در نهایت IFTTT به شما ایمیل را ارسال می کند.

 


کد پروژه کلید وای فای


کدهای زیر را روی برد ESP8266 آپلود کنید.

 

#include <ESP8266WiFi.h>

// Replace with your SSID and Password
const char* ssid     = "CiferTech";
const char* password = "123456789";

// Replace with your unique IFTTT URL resource
const char* resource = "https://maker.ifttt.com/trigger/button_pressed/with/key/dJQw8StSqmowG17lr3ZvEu";

// How your resource variable should look like, but with your own API KEY (that API KEY below is just an example):
//const char* resource = "/trigger/button_pressed/with/key/nAZjOphL3d-ZO4N3k64-1A7gTlNSrxMJdmqy";

// Maker Webhooks IFTTT
const char* server = "maker.ifttt.com";

void setup() {
  Serial.begin(115200); 

  initWifi();
  makeIFTTTRequest();

  // Deep sleep mode until RESET pin is connected to a LOW signal (pushbutton is pressed)
  ESP.deepSleep(0);
}

void loop() {
  // sleeping so wont get here
}

// Establish a Wi-Fi connection with your router
void initWifi() {
  Serial.print("Connecting to: "); 
  Serial.print(ssid);
  WiFi.begin(ssid, password);  

  int timeout = 10 * 4; // 10 seconds
  while(WiFi.status() != WL_CONNECTED  && (timeout-- > 0)) {
    delay(250);
    Serial.print(".");
  }
  Serial.println("");

  if(WiFi.status() != WL_CONNECTED) {
     Serial.println("Failed to connect, going back to sleep");
  }

  Serial.print("WiFi connected in: "); 
  Serial.print(millis());
  Serial.print(", IP address: "); 
  Serial.println(WiFi.localIP());
}

// Make an HTTP request to the IFTTT web service
void makeIFTTTRequest() {
  Serial.print("Connecting to "); 
  Serial.print(server);
  
  WiFiClient client;
  int retries = 5;
  while(!!!client.connect(server, 80) && (retries-- > 0)) {
    Serial.print(".");
  }
  Serial.println();
  if(!!!client.connected()) {
     Serial.println("Failed to connect, going back to sleep");
  }
  
  Serial.print("Request resource: "); 
  Serial.println(resource);
  client.print(String("GET ") + resource + 
                  " HTTP/1.1\r\n" +
                  "Host: " + server + "\r\n" + 
                  "Connection: close\r\n\r\n");
                  
  int timeout = 5 * 10; // 5 seconds             
  while(!!!client.available() && (timeout-- > 0)){
    delay(100);
  }
  if(!!!client.available()) {
     Serial.println("No response, going back to sleep");
  }
  while(client.available()){
    Serial.write(client.read());
  }
  
  Serial.println("\nclosing connection");
  client.stop();
}

 


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


ماژول ESP8266 V1.0 وای فای

ماژول ESP8266 وای فای با خروجی سریال ESP8266-12E

ماژول ESP8266 وای فای با خروجی سریال Esp8266-07

 

 

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

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

 

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

CiferTech

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

۱۶ دیدگاه

  • سلام
    جدیدا استفاده از سرویس IFTTT برای GMAIL تغییراتی کرده و بعضی سرویس هاش حذف شده.
    این |آموزشتون با اون منطبقه؟

  • سلام اول مرسی
    دوم من موبایلم ایفونه و اپدیت کردم همه چیز تغییر کرده
    برای شما هم این مشکل وجود داره؟

    • سلام، در حالت عادی مشکلی برای راه‌اندازی پروژه بر پابه firebase وجود ندارد، مگر اینکه فیلتر بودن سایت مشکل ساز بشه که اونم راه حل خودش رو داره.

  • سلام.
    چرا سایت IFTTT برای من فرق داره؟ بعضی از گزینه ها رو نداره.ممنون می شم راهنماییم کنید.با تشکر

    • سلام، ظاهر سایت IFTTT مدام در حال بروزرسانی است به همین دلیل این تفاوت مشاهده می‌شود، با توجه به فرآیند اصلی آموزش را اجرا کنید.

  • سلام
    من یه خط تولید دارم
    میخوام یه سنسور بزارم روی خط هر محصولی که رد شد مدار وصل وای فای باشه و یک آدرس سایت رو لود کنه که اونطرف بتونم محصولات رو شمارش کنم و ببینم آمار رو
    در کل نیاز دارم یه برد وصل شبکه وای فای بشه و از طریق سنسوری که بهش وصله به ازای هر بار وصل شدن رله باز سنسور یک آدرس url رو فراخوانی کنه

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

    • با سلام
      جناب کاهه از همراهی شما سپاسگزاریم. ما صرفا تجربه آموزشی داریم و این تجربه برای پیاده سازی و اجرای پروژه‌ها مناسب نیست. همچنین باتوجه به اینکه زمانبندی درخصوص آموزش‌ها داریم، این مورد امکان پذیر نیست.