یکی از معروفترین وارزانترین آی سی های دارای پروتکل TCP/IP (شبکه بیسیم Wifi تحت استاندارد IEEE802.11b/g/n ),چیپ ESP8266 ساخت شرکت چینی Espressif system میباشد که قابلیت ارتباط سریال توسط میکرو کنترلر را دارد,این چیپ در ساخت ماژولهای خانواده ESPتوسط تولید کننده دیگری به نام AL-THINKER به کار رفته است.
ESP-01 برای اولین بار در سال 2014 طراحی وساخته شد و بعد ازآن بیش از 13 سری دیگر نیز طراحی و ساخته شد که داری بهبودها وقابلیتهای پیشرفته تری نسبت به سری قبلی خود میباشند در شکل زیر انواع مختلف این خانواده را میبینید
در ساخت تمامی این ماژولها از آی سی ESP8266 استفاده شده است.در این مدلها ESP-01 (بدون شیلد,با آنتن روی برد) ESP-07 ( دارای شیلد و سوکت آنتن)-ESP-12E (داری شیلد و آنتن روی برد) وجود دارد.
ولتاژ تغذیه و پایه های این ماژولها 3.3 ولت است. فرکانس کاری آن 2.4GHZ و پروتکل مورد استفاده برای ارسال و دریافت دیتا در آن TCP/IP با استفاده از تکنولوژی Wifi میباشد. امکان ارتباط با وسایل جانبی تحت پروتکل سریال UART درتمامی ماژولها وجود دارد.بنابراین دوپایه RXو TX به ترتیب برای دریافت وارسال دیتا به کار میرود که تحت عنوان AT commandاین کار صورت میگیرد.
معرفی ماژول ESP-01
پایه های این ماژول را درشکل زیر مشاهده میکنید.همانطور که در شکل مشاهده میکنید,پروتکل مورد استفاده برای راه اندازی ماژول UART میباشد.
پایه های RX و TXبه ترتیب برای دریافت و ارسال داده به کار میرود.
ماژول ESP-12E
پایه های این ماژول را در شکل زیر مشاهده مکنید.این ماژول قابلیت های بیشتری نسبت به ESP-01 دارد.به طوری که می تواند علاوه بر پروتکل UARTیا SPIنیز راه اندازی شود.همچنین در کنار این ماژول پایه های GPIO بیشتری وجود دارد که میتواند مستقیما مورد استفاده قرار گیرد.
نکته: ماژول ESP-07 و ESP-12E به تنهایی نمیتواند روی برد بورد قرار گیرد و برای اینکار بهتره از یه برد مبدل مانند شکل زیر استفاده کنید.
با استفاده از یک ماژول USB به سریال FT232 و مقداری سیم به راحتی و بدون هیچ قطعه اضافی میتوان این ماژول را راه اندازی کرد.در این حالت تغذبه ماژول از 3.3v موجود روی بورد FT232 تامین میشود . شکل زیر مدار تکمیل شده را نشان میدهد.
معرفی دستورات AT+ Command
ماژول های خانواده ESP دستوراتی را به صورت کاراکتری دریافت میکنند و به همان صورت نیز به آنها پاسخ میدهند.در ابتدای همه دستورات دو ککاراکتر AT ارسال میشود لذا به مجموعه آن دستورات AT Command گویند. در انتهای هر دستور نیز کاراکترEnter باید ارسال شود تا ماژول دستور مورد نظر را انجام داده و پاسخ آن ارسال نماید.برای مثال دستور AT را درنظر بگیرید.
این دستور برای تست سلامت ارتباط ماژول میباشد.این دستور به صورت زیر میباشد. این دتور به صورت زیر به ماژول ارسال شده و درصورت صحیح بودن ارتباط ,ماژول در پاسخ به آن OK میدهد.
نکته : کد اسکی کاراکتر Enter در مبنای Hex برابر 13 میباشد.اگر در برنامه ای دیدید بدانید این همان Enter است که در مبنای Hex نوشته شده است.
دستورات AT+COMMAND
عملیاتی که انجام میشه | دستوری که به ماژول ارسال میشود | پاسخی که از ماژول دریافت میشود |
تست سلامت اتصال ماژول | AT | OK |
ریستارت کردن ماژول | AT+RST | OK[SYSTEM READY,VENDOR:WWW.AI-THINKER.COM] |
مشاهده ورژن نرم افزاری ماژول | AT+GMR | 00160901 |
لیست تمامدستگاههای Wifi فعال در اطراف ماژول را نشان میدهد | AT+CWLAP | CWLAP:+(4,”rochefortSurlac”,38,”70:62:b8:6f:6d:58”,1) |
اتصال به یک دستگاه wifi با داشتن نام وپسورد آن | “AT+CWJp=”ssid”,”password” | Cwjap:ssid+ok |
قطع اتصال wifi | AT+CWQAP | OK |
به دست آوردن آدرس آی پی دستگاه | AT+CIFSR | AT+CIFSR 192.168.01.105
OK |
به دست آوردن پارامترهای اتصال ماژول دستگاه | AT+CWSAP? | SSID,PWD,CHL=CHANNEL,ENC=ENCRYPTIONNH |
دادن پارامترهای دلخواه اتصال به ماژول | AT+CWSAP=<ssid>,<pwd>,<chl>,<enc> | SSID,PWD,CHL=CHANNEL,ENC=ENCRYPTIONNH |
دریافت مد wifi ماژول | AT+CWMODE? | QUERY |
تنظیم ماژول روی مدstation (کلاینت) | AT+CWMODE=1 | CWMOD:1+
OK |
تنظیم ماژول روی مدAccess point (سرور) | AT+CWMODE=2 | CWMODE:2+
OK |
تنظیم ماژول روی هر دو مد قبلی به طور همزمان | AT+CWMODE=3 | CWMODE:3+
OK |
دریافت نوع اتصال | AT+CIPSTART=? | |
دریافت نوع اتصالTCPیاUDP | AT+CIPMUX? | QUERY |
تعیین تعداد خطوط اتصال درحالت تنها | AT+CIPMUX=0 | OK |
تعیین تعداد خطوط اتصال در حالت چندتا | AT+CIPMUX=1 | OK |
دریافت IP آدرس دستگاههای متصل | AT+CWLIF | |
وضعیت اتصال TCPیاIP | AT+CIPSTATUS | |
قطع اتصال TCP/UPD | AT+CIPCLOSE=<ID>
یا AT+CIPCLOSE |
|
تنظیم به عنوان سرور | AT+CIPSERVER=<mode>[,<port>] | |
تنظیم زمان خروج ازحالت سرور | AT+CIOPSTO?
AT+CIPSTO=<time> |
|
بررسی نرخهای ارسال دیتا که ماژول پشتیبانی میکند | AT+CIOBAUD? | |
تذکر: بعد ازتمامی این دستورات باید کاراکتر Enter به مازول ارسال شود.
نکته: ارسال هر بسته دیتا در پروتکل TCP/IP تقریبا 20 میلی ثانیه طول میکشد و حداکثر تعداد بایتهایی که میتواند در یک بسته ارسال شود 2048 بایت میباشد.
انجام تنظیمات اولیه ماژول
جهت ارتباط با ماژول از نرم افزارهای ترمینال استفاده میشود. نرم افزارهای ترمینال متفاوتی وجود دارند که ما در اینجا از نرم افزارSerial_port_Terminal.exe استفاده میکنیم.درون این نرم افزار به محض اتصال کابل USB به کامپیوتر با زدن Refresh شماره پورت COM شناسایی شده در بخشAvailable Port نمایان میشود.سپس باتنظیم باودریت نرم افزار روی115200 و ارسال AT به ماژول میتوان OK رادریافت کرد . مراحل کار راروی تصاویر شکل زیر مشاهده میکنید.
در مرحله بعد قسمت Send data را پاک کرده و دستور AT+CWMODE=3 را وارد میکنیم.
این ماژول در 3 مد زیر کار میکند:
1-STATION : ماژول میتواند به دستگاههای Wifi اطراف خود متصل میشود.
2-Acces Point : ماژول در این حالت به عنوان یک سرویس دهنده Wifi عمل میکند و دستگاههای دیگر میتوانند به آن متصل شوند.
3-both : در این مد ماژول به طور همزمان در دوحالت بالیی قرار میگیرد.
بهتر است ماژول را در مد 3 ببریم.
بادستور AT+CWSAP? میتوان اطلاعات کنونی ENC,SSID,PASSWORD,CHL ماژول را از خود ماژول به دست آورد.
SSID نامی است که ماژول Wifi به همگان نشان میدهد.Password رمز عبور برای اتصال به آن است.chl آی دی کانال متصل شده به دستگاه را نشان میدهد وenc نوع پروتکل رمز شده Encryption را مشخص میکند.در زیر انواع پروتکل های رمز برای اتصال به Wifi را مشاهده میکنید.عدد chl معمولا 0 و عدد ENC بهتر است روی 4 باشد.
همانطور که مشاهده میکنید در پاسخ به دستور AT+CWSAP? مازول SSID و PASSWORD رابه همراه اطلاعات CH,ENC,Other ارسال کرده است.بنابر این در اولین راه اندازی نام ماژول Al-THINKER_82B46D بدون پسورد,کانال 1 و بدون رمزنگاری میباشد.
حال می خواهیم با استفاده از دستور AT+CWSAP=”esp8266”,”1234”,1,4 مشخصات ماژول را به دلخواه خود تغییر دهیم.
نکته: در رمز نگاری های پیشرفته تر (شماره 3 و 4) برای پسورد کوتاه و ساده Error میگرد.
اگربار دیگر دستور AT+CWSAP?[Entter] را وارد کنیم مشاهده میکنیم که مشخصات ماژول تغییر کرده است.
راه اندازی ماژول ESP8266 به صورت سرور
در این مرحله ماژول را به صورت Server(سرویس دهنده Wifi ) راه اندازی خواهیم کرد و توسط موبایل و لپ تاپ به آن وصل میشویم و به ارسال و دریافت دیتا میپردازیم . برای ارتباط با ماژول در دستگاههای اندرویدی نیاز به نرم افزار Socket protocol ودر کامپیوتر نیاز به نرم افزار Server Clinet داریم.
برای راه اندازی سک سرور در ماژول ESP8266 کافی است دستورات زیر را به ترتیب به ماژول ارسال میکنیم:
که در آن mode=1 و port بسته به نوع اتصال میتواند یکی از اعداد زیر باشد :
1-80 : پورت http برای اتصال به اینترنت
2-8080 : پورت http در شبکه هایی که پورت 80 بلاک است.
3-23 :پورت Telnet
4-8888 : یک پورت خالی
سپس در صورتی که بخواهیم توسط موبایل به ماژول متصل میشویم ابتدا باید با وارد کردن پسورد 123456789 به ماژول متصل شویم . شکل زیر این اتصال را نشان میدهد.
سپس نرم افزار Socket Protocol را باز کرده و در قسمت Client آی پی ماژول (192.168.4.1) و پورتی 888 که سرور روی آن ساختیم را وارد میکنیم سپس Connect را لمس میکنیم. در صورت متصل شدن عبارت Socket Connected نمایش داده میشود شکل زیر این اتصال رانشان میدهد.
در همین زمان که گوشی متصل به ماژول متصل میشود اگر به نرم افزار Serial_Port_Terminal مراجعه کنیم, مشاهده میشود که عبارت CONNECT,0 توسط ماژول پاسخ داده شده است.
همچنین زمانی که درون نرم افزار سوکت پروتکل چیزی بنویسیم و بفرستیم در طرف ماژول با ساختار زیر به نمایش در می آید :
که در آن id , شماره اتصال و length طول دیتا دریافت شده باشد.
برای مثال در شکل زیر یک عبارت از گوشی برای ماژول ارسال کردیم.
دیتایی که در سمت ماژول دریافت میشود به صورت زیر است :
برعکس حالت فوق نیز میتوانیم عمل کنیم یعنی ماژول به عنوان فرستنده و کامپیوتر به عنوان گیرنده در شبکه عمل میکند بدین منظور از دستور AT+CIPSEND به صورت زیر استفاده میشود.
برای مثال اگر بخواهیم یک جمله 5 کاراکتری را ارسال نماییم مینویسیم
AT+CIPSEND=0,5
>HELLO
و ارسال میکنیم که اگر در همین زمان به نرم افزارSocketprotocol روی موبایل نیز نگاه کنیم دیتای دریافت شده را در قسمت Answer From Server مشاهده میکنیم.
حال میخواهیم مراحل ارتباطی فوق را در کامپیوتر دیگر انجام دهیم و بدینوسیله به انتقال دیتا میان کامپیوتری که به ماژول وصل است و یک لپ تاپ یا PC دیگر و نرم افزار ServerClient درآن میپردازیم . که در شکل زیر آن را مشاهده میکنید.این نرم افزار دقیقا کار SocketProrocol را درون لپ تاپ انجام میدهد.
ابتدا میبایست به ماژول ESP-01 با پسورد 123456789 توسط لپ تاپ متصل شد . سپس بعد از وارد کردن IP وPORT به صورت کل زیر و با کلیک بر روی Connected to Server نمایش داده میشود.
در همین زمانی که لپ تاپ به ماژول متصل میشود اگر در نرم افزار Serial_Port_Terminal مراجعه کنیم مشاهده میشود که عبارت CONNECT,0 توسط ماژول پاسخ دارده شده است.سپس یک عبارت دلخواه به ماژول ارسال کردیم .
راه اندازی ماژول ESP8266 به صورت کلاینت
در این بخش با فرض اینکه سرور در محل دیگری راه اندازی شده است و ماژول به عنوان کلاینت (Client ) به آن متصل شده باشد, به ارسال / دریافت دیتا خواهیم پرداخت.در مرحله اول میبایست یک سرور ایجاد کرد. برای ایجاد سرور در تلفن همراه نرم افزار SocketProtocol و ایجاد سرور در رایانه های شخصی از نرم افزار ServeerClientاستفاده میشود.ابتدا به ماژول دستورات زیر را ارسال میکنیم.
بعد از اتصال Wifi گوشی به ماژول به سراغ نرم افزار SocketProtocol و بخش Server مراجعه میکنیم.در این مرحله یک سرور روی پورت دلخواه برای مثال 9999 ایجاد میکنیم ابتدا عدد پورت را واردکرده و سپس Listen را میزنیم. عبارت Socket in Listen نمایش داده میشود.
در مرحله بعدی باید آی پی تلفن همراه (سرور ) را بدانیم تا بتوانیم تئسط ماژول به سرور وصل شویم. نرم افزار SocketProtocol این قابلیت را دارد که با مراجعه به بخش Setting & help آدرس آی پی تلفن همراه را نشان میدهد.همانطور که در شکل زیر مشاهده میکنید آی پی دستگاه مورد استفاده 192.168.4.2 میباشد.
برای اتصال کلاینت به سرور از دستور CIPSTARTاستفاده میشود.نحوه استفاده از این دستور به صورت زیر است.
که در آن IDشماره ارتباطی type نوع ارتباط (TCP یا UPD) , ip آدرس آی پی سرور و port شماره پورت جهت اتصال را مشخص میکند. دستور فوق برای ارتباط ماژول (کلاینت)به تلفن همراه (سرور) به صورت زیر میشود:
بعد از ارسال دستور فوق عبارتCONNECT,0 به معنای اتصال صحیح, توسط ماژول برگشت داده میشود.بعد از اتصال صحیح سرور و کلاینت میتوانند دیتا مبادله نمایند. اگر دیتایی ازطرف تلفن همراه (سرور) ارسال کنیم در طرف ماژول به صورت زیر دریافت میشود
که درآن id شماره اتصال و length طول دیتا دریافت شده میباشد.
برای ارسال دیتا از ماژول (کلاینت) به تلفن همراه (سرور) از دستور CIPSEND به صورت زیر استفادده میکنیم:
که درآن id شماره اتصال و length طول دیتا برای ارسال است.بعد از ارسال صحیح عبارت SEND OK توسط ماژول برگشت داده میشود.بعد از ارسال دیتا در سرور به نمایش در می آید.
برای خاتمه دادن به ارتباط و بستن آن از دستور CIPCLOSEبه صورت زیر استفاده میکنیم:
که در آن id همان آی دی است که در هنگام شروع ارتباط ساخته شده بود.
اتصال ماژول به یک روتر WiFi
در این بخش اصول اتصال به یک روتر WiFi توضیح داه میشود که این روتر میتواند به اینترنت نیز متصل باشد . با ارسال دستور CWLAP ماژول کلیه دستگاههای WiFi اطراف به همراه MAC آدرس و قدرت سیگنال آنها را نشان میدهد.
با استفاده از دستور AT+CWJAP=”SSID”,”PASSWORD” میتوان به هر یک از وسایل اطراف متصل شد .
نکته زمانی که ماژول به روتر مود نظر متصل شود ابتدا WIFI CONNECTED پاسخ میدهد و بهد از لحظاتی WIFI GIT IP و OK را به کامپیوتر میفرستد. این نشان میدهد که یک IP منحصر بفرد از طرف روتر برای ماژول ایجاد شده است این آدرس منحصر بفرد اهمیت زیادی دارد و در ارتباط میان دستگاههای متصل به روتر از آن استفاده میشود.
برای اینکه بفهمیم آی پی ماژول و Acces Point وصل شده در این اتصال چیست از دستور CIFSR استفاده میکنیم.
در این حالت ماژول به یک شبکه WiFi که یک روتر اینترنت است میباشد متصل است و مشخصاتی را برای ما ارسال کرده است که شامل آی پی ماژول و آی پی ماژول از نظر روتر میباشد.این مشخصات برای کارهای بعدی بسیار مهم است.
APIP:Access Point IP
APMAC : Access Point MAC
STAIP: Static IP
STAIMAC : Static MAC
تذکر : static ip آی پی اختصاص داده شده به ماژول زمانی که به روتر وصل میشود را نشان میدهد.
در حالی که ماژول به روتر wifi وصل است ,من لپ تاپ خود را نیز به همان روتر اینترنت وصل کردم.شکل زیر نحوه اتصال دستگاهها به یکدیگر را نشان میدهد.
1-دستگاههایی که در یک شبکه به هم متصل هستند میتوانند از طریق IP دیتا رد و بدل کنند.
2-در یک شبکه سرور دستگاه سرویس دهنده و کلاینت دستگاه گیرنده است.
3-بدست آوردن IP کامپیوتر در هنگام اتصال به wifi
ابتدا روی آیکون wifi روی taskbar صفحه در هنگام اتصال wifi کلیک راست کرده و به مانند شکلهای زیر ip دستگاه را به دست بیارید
نکته :در این ارتباط باید برای ارتباط بین کامپیوتر و ماژول ipهای هنگام اتصال به wifi یا همان ip از نظر wifi را استفاده کرد.
این حالتی که دستگاه ها به یکدیگر متصل هستند میتوان کارهی زیر را با ماژول esp8266 انجام داد:
1-ارتباط با ماژول با دیگر دستگاههای متصل به روتر
2-اتصال ماژول به اینترنت
در حالت ارتباط با دیگر دستگاههای متصل به روتر ,ابتدا ماژول به صورت سرور یا کلاینت راه اندازی میشود به جای آدرس آی پی مقصد , آدرس آی پی منحصربفردی که توسط روتر به دستگاه ها داده شده قرار داده میشود.
برای مثال ابتدا در طرف ماژول یک سرور روی پورت دلخواه ایجاد میکنیم سپس در طرف کامپیوتر درون نرم افزار ServerClient آدرس آی پی مقصد(ماژول) ذا آدرس شناسایی شده توسط روتر تایپ میکنیم یعنی در اینجا باید بنویسیم192.168.1.5 شکل زیر انجام این عملیات در طرف ماژول و در طرف کامپیوتر را نشان میدهد.
همچنین در صورتی که ماژول کلاینت باشد و در طرف کامپیوتر سرور روی پورت دلخواه راه اندازی شده باشد برای اتصال کلاینت به سرور از آی پی اختصاص دهده شده توسط روتر که در اینجا 192.168.1.3 استفاده میشود.
برای اتصال ماژول به اینترنت نیز از پورت 80 به جای پورت دلخواه استفاده میشود و آدرس آی پی مقصد (آدرس آی پی سایت یا وب سرویس مورد نظر )قرار میگیرد.
راه اندازی ماژول esp-01
برای راه اندازی این ماژول با استفاده از میکروکنترلر avr از مدار شکل زیر استفاده میکنیم.
همانطورکه در شکل مشاهده میکنید به علت اینکه ولتاژ ارسال از طرف میکرو یا کامپیوتر 5 ولت است نیاز به مدار تقسیم مقاومتی برای کاهش ولتاژ به 3.3 ئلت هستیم
ماژول esp-01 را نمیتوان مستقیما روی برد بورد نصب نمود برای نصب این ماژول روی برد بورد سه روش وجود دارد:
1-ساخت مبدل با پین هدر و برد بورد هزار سوراخ :
2-استفاده از کابل برد بورد:
3-لحیم کاری مستقیم روی ماژول:
راه اندازی ماژول esp-01 با avr
در این مرحله برنامه ای مینویسیم که کارهای انجام گرفته در مراحل قبلی را توسط میکروکنترلر انجام دهد بنابراین به جای استفاده از USB to TTL در سمت ماژول یک میکروکنترلر ATMEGA32 قرار خواهد گرفت که دستورات AT را به ماژول ارسال میکند .
برای ارتباط مازول با میکروکنترلر نیاز است تا باودریت روی 9600 تنظیم شده باشد.زیرا در این فرکانس خطای ارتباط کمتر میباشد.بنابر این قبل از اتصال به میکرو این کار را انجام میدهیم.
جهت دریافت توضیحات کامل تر و همچنین راه اندازی برنامه با atmega 32 به زبان c و شبیه سازی برنامه به همراه توضیحات کامل کلیک کنید