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

blog
۱۳۹۶-۰۴-۰۴
5 دقیقه

در سه سوت و از طریق 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 را جستجو نمایید. چنانچه پکیج مربوط به آن نصب نشده است، آن را نصب نمایید.

تنظیم 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
0
لینک و اشتراک
profile

صاد میم

متخصص الکترونیک

کارشناس ارشد سخت افزار

مقالات بیشتر
slide

پالت | بازار خرید و فروش قطعات الکترونیک

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

آیسی | موتور جستجوی قطعات الکترونیک

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

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند. پرسش در سیسوگ فرم
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
خانواده سیسوگ

پالت | بازار خرید و فروش قطعات الکترونیک

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

آیسی | موتور جستجوی قطعات الکترونیک

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

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند.
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

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

دیدگاه ها

profile
محمد حسين گفت :
۱۳۹۹-۱۰-۰۲ ۱۲:۲۶

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

profile
زئوس 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/

profile
سروش گفت :
۱۳۹۷-۰۸-۱۳ ۱۱:۴۸

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

profile
سروش گفت :
۱۳۹۷-۰۸-۱۳ ۲۳:۲۷

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

profile
زئوس Zeus گفت :
۱۳۹۷-۰۸-۱۳ ۲۳:۰۴

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

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

profile
سروش گفت :
۱۳۹۷-۰۸-۱۷ ۱۹:۰۶

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

profile
زئوس Zeus گفت :
۱۳۹۷-۰۸-۱۹ ۱۹:۴۱

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

profile
Cozmo گفت :
۱۳۹۷-۰۵-۲۶ ۱۵:۵۵

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

profile
زئوس Zeus گفت :
۱۳۹۷-۰۵-۲۸ ۰۹:۱۴

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

profile
Cozmo گفت :
۱۳۹۷-۰۵-۳۰ ۱۹:۰۱

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

profile
زئوس Zeus گفت :
۱۳۹۷-۰۶-۰۵ ۱۰:۱۶

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

profile
Cozmo گفت :
۱۳۹۷-۰۵-۱۴ ۲۳:۱۵

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

profile
زئوس Zeus گفت :
۱۳۹۷-۰۵-۱۵ ۱۰:۵۲

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

profile
علی کریمی گفت :
۱۳۹۷-۰۳-۱۵ ۱۴:۱۶

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

profile
زئوس Zeus گفت :
۱۳۹۷-۰۳-۱۹ ۰۹:۰۵

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

profile
مجید گفت :
۱۳۹۶-۱۱-۱۰ ۱۱:۰۰

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

profile
زئوس Zeus گفت :
۱۳۹۶-۱۲-۲۶ ۱۳:۵۲

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

become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله