آموزش, اینترنت اشیاء, پروژه آردوینو, توصیه شده

در سه سوت به وای فای متصل شویم – ESP8266

راه اندازی ESP8266 با آردوینو

در سه سوت و از طریق ESP8266 به وای فای متصل شویم.

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

شاید برای شما مفید باشد: پروژه های آردوینو

قبل از انتخاب وای فای به‌عنوان پروتکل ارتباطی سیستم موردنظرتان، به نکات زیر توجه بفرمایید:

وای فای برای سیستم‌های زیر نامناسب است:

  • سیستم با باتری کار می‌کند و توان مصرفی عامل مهمی است.
  • نیاز است تا زمان پاسخ‌دهی کوتاه و به عبارت دقیق‌تر Real Time باشد.
  • تعداد نودهای متصل بی‌سیم بسیار زیاد باشد.

اما در موارد زیر وای فای مناسب است:

  • حجم اطلاعات ارسالی تقریباً زیاد است و اگر کمی هم دیر برسد اشکالی ندارد.
  • استفاده از بسترهای موجود شبکه (مودم، روتر و سخت‌افزارهای موجود وای فای) در اولویت است.
  • می‌خواهیم به‌طور مستقیم به گوشی‌های هوشمند متصل شویم و از بلوتوث هم خوشتان نمی‌آید!

خوب برویم سراغ اصل مطلب. برای تجربه‌ی اتصال وای فای خودتان، باید گام‌های زیر را بردارید:

سوت اول: تهیه‌ی ماژول

ماژولی که در این پست معرفی خواهم کرد، NodeMCU نام دارد. یک ماژول ارزان‌قیمت که امکان راه‌اندازی ارتباط وای فای را به شما می‌دهد. این ماژول بر پایه‌ی ماژول وای فای ESP8266 ساخته شده است. خوشبختانه فروم‌های بسیاری در اینترنت برای راه‌اندازی NodeMCU در انواع کاربردها موجود است. برای اطلاعات بیشتر در مورد این ماژول می‌توانید به این لینک زیر مراجعه کنید:

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

اگر هم حرفه ای هستید میتوانید از این سایت برای کارهای خاص کمک بگیرید.

سوت دوم: آماده‌سازی محیط توسعه

برای کد نویسی این ماژول از محیط توسعه‌ی Arduino استفاده می‌کنیم. پس لازم است که با زبان C آشنا باشید. مراحلی که توضیح می‌دهم از اینجا برداشت شده است.

الف: دریافت Arduino IDE و نصب آن

دانلود و نصب آردوینو

ب. تنظیم Board Manager: به منوی File->Preferences رفته و در قسمت Additional Board Manager URLs عبارت http://arduino.esp8266.com/stable/package_esp8266com_index.json را وارد نمایید.

تنظیم esp8266 در آردوینو

تنظیم esp8266 در آردوینو سیسوگ

ج. نصب پکیج‌های مربوط به ESP8266: به قسمت Tools->Board->Board Manager بروید.

و در آنجا عبارت ESP8266 را جستجو نمایید. چنانچه پکیج مربوط به آن نصب نشده است، آن را نصب نمایید.

تنظیم esp8266 در آردوینو

د: حالا همه چیز آماده است. کافی است تا در قسمت Tools->Boards، بردی که در حال کار با آن هستید را انتخاب کنید.

راه اندازی ماژول esp8266 در آردوینو

سوت سوم: برنامه‌ی خودتان را بنویسید.

برنامه‌های از پیش نوشته‌شده‌ی بسیاری در اینترنت موجود هستند که می‌توانید با استفاده از آن‌ها برنامه‌ی خودتان را توسعه دهید. به‌عنوان‌مثال من به دنبال کاربردی بودم که بتوانم بسته‌های UDP را از گوشی برای یک برد سخت‌افزاری ارسال کنم. ماژول NodeMCU وظیفه‌ی دریافت این بسته‌ها و سپس ارسال آن‌ها بر روی پورت UART را بر عهده داشت. تصویر زیر نمایی کلی از برنامه را نمایش می‌دهد:

 

این برنامه فقط دارای سه جزء ساده است:

اول: includeها و تعریف متغیرها

هدر ESP8266WiFi برای کار با هسته‌ی وای فای و WiFiUdp برای ارسال و دریافت بسته‌های UDP اضافه شده است.

متغیر ssid و password برای اتصال به شبکه‌ی وای فای مورد استفاده قرار می‌گیرند. نام شبکه‌ی خودتان و رمز آن را در این قسمت از کد وارد نمایید.

متغیر Udp آبجکتی است که برای کار با UDP از آن استفاده می‌شود. مقدار localUdpPort در هنگام راه‌اندازی تنظیمات UDP، به‌عنوان پورتی که ماژول به آن گوش می‌دهد استفاده می‌شود؛ پس لازم است که مقدار آن را مطابق نیاز خودتان تنظیم کنید.

آرایه‌ی incomingPacket داده‌های دریافت شده از UDP را ذخیره می‌کند.

دوم: پیکربندی اولیه

روتین setup برای پیکربندی اولیه‌ی ماژول استفاده می‌شود و پس از هر بار روشن شدن (ریست شدن) سیستم، در ابتدای کار، یک بار اجرا می‌شود.

در ابتدا پورت UART با سرعت 19200 بیت در ثانیه تنظیم شده است. در خطوط بعدی، ماژول تا زمان وصل شدن به شبکه‌ی وای فای صبر می‌کند و به‌محض اتصال، پیغامی مبتنی بر اتصال را بر روی UART ارسال می‌کند.

در پایان این روتین نیز، ارتباط UDP فعال می‌شود و به‌طور مستمر، ماژول بر روی پورت تعیین‌شده، به داده‌های دریافتی گوشی می‌دهد.

سوم: برنامه‌ی ابدی

روتین loop تا ابد (تا زمانی که ماژول روشن است) همواره و به‌صورت چرخشی اجرا می‌گردد.

چنانچه بسته‌ی UDP بر روی پورت موردنظر دریافت شود، تابع parsePacket تعداد بایت‌های دریافتی را برمی‌گرداند. در صورت غیر صفر بودن، بسته‌ی دریافتی توسط تابع read بر روی آرایه‌ی incomingPacket کپی می‌شود و در نهایت تابع printf آن را بر روی UART قرار می‌دهد. این فرایند تا ابد ادامه پیدا می‌کند.

 

این پست، بازنشر از پست بلاگ نوبی است که توسط نویسنده‌ی همین مطلب و با همین نام در سیسوگ قرار داده شده است.

انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.   همکاری با سیسوگ

17 دیدگاه در “در سه سوت به وای فای متصل شویم – ESP8266

  1. Avatar for محمد حسين محمد حسين گفت:

    سلام وقت شما بخير ممنون از پروژه اي كه قرار داديد
    سوالي كه داشتم اين هست كه آيا اين برنامه در واقع ديتا اينترنت كه همان بسته هاي udp هست را از طريق پروتكل uart انتقال ميده؟

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      سلام دوست عزیز
      در واقع این برنامه ساده کارش اینه که دیتای دریافت شده رو روی پورت سریال نمایش میده و این فرایند یک طرفه است یعنی فقط پکت دریافت میشه
      البته به سادگی میتونید با اضافه کردن کد فرایند رو دوطرفه کنید.
      اگر دنبال ارسال و دریافت همزمان سریال روی شبکه هستید قبلا پروژه خوبی رو در سیسوگ معرفی کردیم. لینک زیر رو ببینید:
      https://sisoog.com/2018/12/19/%d8%b3%d8%a7%d8%ae%d8%aa-%d9%85%d8%a8%d8%af%d9%84-%d8%b3%d8%b1%db%8c%d8%a7%d9%84-%d8%a8%d9%87-%d9%88%d8%a7%db%8c-%d9%81%d8%a7%db%8c-%d8%aa%d9%88%d8%b3%d8%b7-esp8266/

  2. Avatar for سروش سروش گفت:

    با سلام و خسته نباشید
    من یه برنامه آردوینو ریختم برای MCU NODE و می خوام از ESP8266 استفاده کنم . اما وقتی میرم توی سریال مانیتورینگ به جای اطلاعات اتصال به من بی نهایت ……….. نشون می ده .
    ممنون می شم اگه بتونید راهنماییم کنید.
    ممنون از سایت عالیتون.

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      سلام – فکر میکنم برنامه طوری هست که اگر نتونه به wifi کانکت بشه نقطه نشون میده !
      قبل از پروگرام باید خط های زیر رو با نام و کلمه عبور وایفای خودتون جایگذین کنید.

      const char* ssid = "noobyir";
      const char* password = "noobynooby";

      1. Avatar for سروش سروش گفت:

        با سلام و احترام خدمت جناب زئوس کبیر
        خواستم تشکر کنم . حق با شما بود وقتی نمی تونست کانکت بشه …. می داد. البته نمی دونم چرا یه بار وصل شد.احتمالا یه کاری کرده بودم.
        https://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/udp-examples.html
        این سایت خیلی کمک کرد بفهمم قضیه چیه و البته یه نرم افزار هم داشت که می تونستم ارسال و اکنالیج رو ببینم تا بفهمم چطور کار می کنه . Packet Sender.گفتم بزارم شاید کسی مثل منم پیدا بشه. 🙂
        همواره موفق و موید باشید و دنیا بر وفق مرادتون باشه .

        1. Avatar for زئوس Zeus زئوس Zeus گفت:

          سلام و درود خدمت شما
          تشکر میکنم برای به اشتراک گذاری دانسته های خودتون ، قطعا بسیار ارزشمند هست

    2. Avatar for سروش سروش گفت:

      سلام
      ممنون از وقتی که گذاشتین . توی این برنامه مشکلی نداشتم . یه برنامه دیگه بود . راستش اصلا . در برنامه نقطه ای نبود . گفتم شاید baud rate باشه تو حالت های دیگه ؟ می داد و تنها در یک حالت …. می داد .
      خیلی ممنون.
      اگه ممکنه می تونید راهنمایی کنید چطور یه بسته udp ارسال کنم.
      ببخشید تازه دارم esp کار می کنم . می دونم سوالم خیلی سطح پایینه.
      موفق و تندرست باشید.

  3. Avatar for Cozmo Cozmo گفت:

    سلام
    من روی esp8266 با آردوینو و فلشر برنامه ریختم
    ولی تو سریال مانیتور نمیتونم جواب بگیرم
    وقتی at میزنم هیچی برنمیگردونه
    فقط در مورد یکی دو تا از example های خود آردوینو تونستم نتیجه رو تو سریال مانیتور ببینم مث scanwifi
    و گاهی هم چرت و پرت نشون میده
    مشکل از چیه؟

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      سلام دوست عزیز ، ببینید وقتی که با آردونو برنامه رو توی esp8266 آپلود می کنید برنامه شرکتی اون پاک میشه یعنی دیگه نمیتونه جواب AT رو بده چون اون برنامه پاک شده ؛ این که توی یه برنامه جواب گرفتید نشون میده که فرایند طی شده درسته یعنی پورت سریال و نحوه پروگرام کردن درسته ، پس تنها احتمالی که میتونم بدم ، اینه که باوود ریت برنامه رو درست تنظیم نکرده باشید ، به صورت پی فرض روی 9600 هست ، اگر برنامه شما از باوود ریت دیگه ای برای انتقال داده استفاده کنه باید اون باوود ریت رو توی نرم افزار مانیتور انتخاب کنید.

      1. Avatar for Cozmo Cozmo گفت:

        سلام
        باتشکر از راهنماییتون
        اون که گفتید فایل شرکتی پاک شده رو پیگیری کردم
        وقتی روش فایل باینری at firmware ریختم برای at بالاخره ok برگردوند
        فعلن همنیجا متوقف شدم برم جشن بگیرم که شیلدم راه افتاده ^_^
        دوباره با تشکر از راهنمایی هاتون

        1. Avatar for زئوس Zeus زئوس Zeus گفت:

          خواهش میکنم دوست عزیز
          خوشحالم که مساله رو رفع کردید ^_^

  4. Avatar for Cozmo Cozmo گفت:

    سلام
    من دو هفته اس گرفتار راه اندازی یه شیلد وای فای چینی هستم -_-
    شیلدش esp8266 wifi shiald versiono 1.0 ئه
    هر کاری میکنم نمیتونم راه بندازمش
    کمک میخام 🙁

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      سلام دوست عزیز ، من با این ماژول کار نکردم ولی توی سرچی که انجام دادم ، مشخصه که شما به چند روش میتونید از این شیلد استفاده کنید ، اول این که شیلد شما توسط AT کامنت توسط برد آردوینو زیری هندل بشه ، دوم این که خود برد شما پروگرام بشه و برنامه آردوینو روش ریخته بشه ، حالا ترکیبی هم میتونه باشه !
      اما برای این که بدونی چطور کلید ها رو تنظیم کنی که پروگرامر برد آردوینو رو پروگرام کنه یا شیلد رو میتونی به لینک زیر مراجعه کنی ، توضیحات خوبی در این رابطه داده
      ESP8266 WiFi Shield v1.0 WangTongze

  5. Avatar for علی کریمی علی کریمی گفت:

    سلام ممنون از مطالب خیلی عالیتون
    من درست متوجه نشدم
    بعد از همه ی اینکارها چطور سیستم را تست میکنید
    از طریق اینترنت یا شبکه
    چطور؟؟

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      خیلی ساده است ، همانطور که میبیند از طریق ssid و pass که درون برنامه تعریف شده به wifi متصل میشه
      و پکت های دریافتی از طریق پروتکل udp را بر روی پورت سریال مشاهده خواهید کرد.

  6. Avatar for مجید مجید گفت:

    چطوری فریمور رو به حالت دیفالت at command برگردونیم؟ من چندید فریمور و چندید برنامه فلشر دانلود و تست کردم به حالت دیفالت برنگشت

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      آخرین ورژن فریمور (از اینجا) رو دانلود کنید و روی ماژول پروگرام کنید.

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *