در این نوشته به آموزش راه اندازی ESP8266 با استفاده از آردوینو میپردازیم. ESP8266 یک ماژول وایفای ارزان قیمت است که به آسانی میتوان آن را با دستگاههای اینترنت اشیا (IoT) یکپارچه سازی کرد. این مقاله راه اندازی ماژول وایفای ESP8266 با استفاده از آردوینو را به شما آموزش خواهد داد. ESP8266 در مدلهای مختلف و با عملکردهای متفاوتی عرضه میشود. تمرکز ما روی متداولترین و ابتداییترین مدل آن، یعنی ماژول ESP8266 ESP-01 خواهد بود.
ESP8266 چیست؟
ESP8266 یک ماژول وایفای کوچک میباشد که قابلیت اتصال بی سیم به اینترنت را برای میکروکنترلر شما با کمترین هزینه فراهم میکند. این گزینه میتواند یک انتخاب عالی برای پروژههای اینترنت اشیا باشد، با این حال کار کردن با آن برای مبتدیانی که تجربهی استفاده از ماژول را ندارند میتواند دشوار باشد. در این آموزش، امیدوار هستیم که بتوانیم نحوهی ایجاد ارتباط بین ESP8266 با آردوینو را نشان داده و چند عملیات ابتدایی مانند اتصال به شبکه وایفای را انجام دهیم.
ویژگیهای ESP-01 – Sparkfun
- نسخه وایفای 11 b/g/n
- وایفای مستقیم (P2P)، soft-AP
- پشته پروتکلی TCP/IP مجتمع
- سوئیچ TR مجتمع، balun ،LNA، تقویتکننده توان و شبکه تطبیق
- حلقه قفل فاز (PLL)های مجتمع، تنظیم کنندهها regulators)، DCXO و واحد مدیریت توان)
- خروجی توان +19.5dB در حالت 11b
- جریان نشتی کمتر از 10uA
- حافظه فلش 1MB
- پردازنده مرکزی مجمتع کم مصرف ۳۲ بیتی که میتواند به عنوان پردازنده اپلیکیشن استفاده شود.
- SDIO 1.1/2.0, SPI, UART
- STBC, 1×1 MIMO, 2×1 MIMO
- A-MPDU & A-MSDU aggregation& 0.4ms interval
- بیدارباش و انتقال داده در کمتر از ۲ میلیثانیه
- توان مصرفی در حالت آماده باش کمتر از ۱ میلیوات (DTIM3)
اولین ویژگی قابل توجه ESP8266 پین هدرهای فاصلهدار و ناهنجار آن است. ماژول دارای ۸ پین بوده که عملکرهای مختلفی را برعهده دارند، اما در یک آرایش ۴*۲ به گونهای سامان یافتهاند که قرار دادن آن روی برد بورد را غیر ممکن ساخته است. این بدین معناست که برای ایجاد یک نمونهی برد بوردی و اتصال پینها به سطرهای برد بود، به سیمهای جامپر ماده نیاز است. اگر علاقه دارید که کار نمونه خود را جمع و جورتر کنید، میتوانید یک برد بورد breakout برای ESP8266 خریداری کنید. برای این پروژه، از سیمهای جامپری استفاده کردهایم. نقشه اتصال پینها برای ESP8266 مطابق دیاگرام زیر است.
- RX: پین دریافت در ارتباط سریال UART
- GPIO0: پین ورودی خروجی ۰ ( در این پروژه کاربرد ندارد)
- GPIO1: پین ورودی خروجی ۱ ( در این پروژه کاربرد ندارد)
- GND: پین اتصال زمین
- VCC: اتصال به منبع تغذیه ۳.۳ ولت (منبع تغذیه نباید از ۳.۳ ولت تجاوز کند)
- RESET: پین ریست (به reset پایین کش (pull down) میشود)
- CH_PD: پین فعالسازی چیپ و پین قطع توان
- TX: پین ارسال در ارتباط سریال UART
دقت کنید که ولتاژ ورودی بیشینه برای ESP8266 ۳.۳ ولت میباشد. هر ولتاژ ورودی که از ۳.۳ بالاتر برود به ماژول آسیب وارد خواهد کرد. برای برنامهریزی ESP8266، ابتدا باید آن را به ترمینال سریال کامپیوتر وصل کنیم تا از طریق آن قادر به ارسال فرمانهای خاص باشیم. تنظیماتی که باید در برنامهی خود لحاظ کنیم، برای مثال، شامل SSID و رمز عبور شبکه وایفایی است که قرار است ماژول به آن متصل گردد. برای اتصال ESP8266 به کامپیوتر و پیکربندی تنظیمات آن، به یک آداپتور سریال USB با منطق ۳.۳ ولت و یک برنامه ترمینال سریال نیاز داریم. خوشبختانه، نمایشگر سریال IDE آردوینو و آردوینو همراه ما هستند. بدین ترتیب، تنها باید ماژول ESP8266 را به آردوینو وصل کرده و یک اسکچ (sketch) معمولی را در آردوینو آپلود کنیم. با استفاده از دیاگرام زیر ماژول ESP8266 را به آردوینو وصل کنید.
برای انجام این پروژه به بخشهای زیر نیاز داریم.
- Arduino Uno یا ماژول مشابه آن
- ماژول ESP8266-01
- ۲ عدد مقاومت ۱ کیلواهمی برای CH_PD بالاکش RESET
- ۳ عدد مقاومت ۲۲۰ اهمی برای مقسم ولتاژ خط سریال
- منبع تغذیه تنظیم شده روی ۳.۳ ولت (نمیتوان خط تغذیه را به پین خروجی ۳.۳ ولت آردوینو متصل کرد زیرا ESP8266 جریان زیادی از مدار میکشد)
- برد بورد و سیم جامپری
برخی ویژگیهای این مدار به سرعت جلب توجه میکنند.
اول از همه، ماژول ESP8266 با یک منبع تغذیه تنظیم شده در ۳.۳ ولت کار میکند. همان طور که قبلا ذکر کردیم، ولتاژ ورودی ESP8266 حداکثر ۳.۳ ولتی است. استفاده از یک منبع ولتاژ بالاتر از این مقدار ممکن است باعث سوختگی ماژول شود. هنگام اتصال ESP8266 به این منبع تغذیه، باید تنها پینهای VCC و زمین را به خطوط منبع متصل کنید، میتوان زمین منبع را به زمین آردوینو نیز متصل کرد. از آنجایی که آردوینو از طریق اتصال USB لپتاپ تغذیه میشود، ایجاد یک زمین مشترک ضرورتاً منجر به ایجاد یک مرجع مشترک (میتوان به آن مانند یک خط پایه (baseline) نگاه کرد) برای مقایسهی ولتاژها و درنتیجه تشخیص سیگنالهای high و low میگردد.
دوم، خط دریافت (RX) برای ماژول ESP8266 به خروجی یک مقسم ولتاژ مقاومتی متصل میشود. این کار را برای شیفت دادن سطح منطق (سطوح دیجیتالی high و low که ارتباط سریال را فراهم میکنند) ارتباط سریال از سطح high ۵ ولتی روی آردوینو به سطح high ۳.۳ ولتی روی ESP8266 انجام دادهایم. مجدداً ذکر میکنیم که ESP8266 با منطق ۳.۳ ولتی کار میکند، بنابراین اتصال مستقیم خط ارسال آردوینو ممکن است به دستگاه آسیب بزند. نیازی به انتقال سطح خط ارسال ۳.۳ ولتی ESP8266 نداریم، زیرا این ولتاژ برای شناسایی به عنوان منطق high برای آردوینو، به اندازه کافی بزرگ است.
در نهایت، دو مقاومت بالاکش روی پینهای CH_PD و RESET وجود دارد. مقدار این مقاومتها توسط سازندگان ماژول مشخص شده تا از صحت عملکرد دستگاه هنگام استفاده اطمینان حاصل گردد. برای ریست کردن و یا غیرفعال کردن ESP8266، این پینهای باید پایینکش شوند، اما از آنجایی که ما نمیخواهیم که این اتفاق رخ دهد، به جای آنها دو مقاومت بالاکش بزرگ ۱۰ کیلواهمی قرار میدهیم.
پس از تکمیل اتصالات سختافزاری، اسکچ زیر را در آردوینو آپلود کنید. این اسکچ فرمانهای تایپ شده در مانیتور سریال را کپی کرده و آنها را به ESP8266 ارسال میکند، و پاسخهای ESP8266 را در پنجرهی مانیتور سریال نمایش میدهد. هم برای ارسال دستورات به ماژول و هم برای دریافت پاسخها و نمایش آنها، از مانیتور سریال آردوینو استفاده میکنیم. برای اجرای اولیه اسکچ، میتوان بلوکی که نوشته است «you may need to uncomment this block for the first run» را از حالت کامنت خارج کنید. ماژولهای ESP8266 بسته به کارخانه سازنده، با نرخ BUADهای متقاوتی از کارخانه بیرون میآیند. ماژول ما با نرخ 115200 BUAD از جعبه بیرون آمده است. از آنجایی که میخواهیم از نرمافزار SofwareSerial یا TeraTerm برای ارتباط با ماژول استفاده کنیم، باید BUAD rate را تا ۹۶۰۰ کاهش دهیم تا از پایداری ارتباط اطمینان حاصل کنیم. این تنظیم را با ارسال دستور AT+IPR=9600 به دستگاه اعمال میکنیم (برای درک بهتر این جمله به خواندن مطلب ادامه دهید).
#include <SoftwareSerial.h> const byte rxPin = 2; // Wire this to Tx Pin of ESP8266 const byte txPin = 3; // Wire this to Rx Pin of ESP8266 // We'll use a software serial interface to connect to ESP8266 SoftwareSerial ESP8266 (rxPin, txPin); void setup() { Serial.begin(9600); // You may need to uncomment this block for the first run: // ESP8266.begin(115200); // Change this to the factory baudrate used by ESP8266 // delay(1000); // // Serial.println("Setting BAUDRATE to 9600"); // ESP8266.println("AT+IPR=9600"); // ESP8266.begin(9600); } bool okReceived = false; void loop() { if (Serial.available() > 0) { String command = Serial.readStringUntil('\n'); Serial.println("Command Sent: " + command); Serial.println(); ESP8266.println(command); } int responseCounter = 0; if (ESP8266.available() > 0) { while (ESP8266.available() > 0) { if (responseCounter == 0) { Serial.println("Response Received:"); } String response = ESP8266.readStringUntil('\n'); Serial.println(response); responseCounter++; } Serial.println(); Serial.println("============"); Serial.println(); } }
حال، ماژول ESP8266 را به آردوینو متصل کردهایم. اکنون میتوانیم تنظیمات ESP8266 را مشاهده کرده و به دلخواه آنها را پیکربندی کنیم. برای انجام این کار، باید یک دستور رشتهای ویژه ارسال کنیم تا ماژول آن را درک کرده و به آن پاسخ دهد. دستورات رشتهای که ارسال میکنیم «دستورات AT» خوانده میشوند زیرا همه آنها با عبارت AT آغاز میگردند و از دستگاه تقاضای توجه (ATtention) دارند. لیست کاملی از دستورات AT که میتوان به ESP8266 ارسال کرد در لینک زیر آمده است.
در این آموزش روی چند مثال تمرکز خواهیم کرد. میتوانید بقیه تنظیمات ESP8266 خود را با مراجعه به داکیومنتهای مرجع انجام دهید.
اولین دستور برای اجرا «AT+CWLAP» میباشد، این دستور برای جستجو و لیست کردن شبکههای وایفای موجود اجرا میشود. رشته را در مانیتور سریال تایپ کرده و کلید اینتر را فشار دهید تا نتیجه ظاهر شود.
آدرسهای IP را برای شبکههای لیست شده توسط ESP8266 محو کردهایم، اما همان طور که میبینید، دستگاه چندین شبکه را همراه با اطلاعات آنها در سطرهای مختلف لیست کرده است. این اطلاعات برای وصل شدن به یک شبکه مشخص مفید هستند. میتوان با دستور «AT+CWJAP_CUR» این کار را انجام داد.
در مانیتور سریال، AT+CWJAP_CUR و به دنبال آن SSID شبکهای که قصد اتصال به آن را دارید را درون دابل کوتیشن تایپ کنید. تصویر زیر یک تلاش ناموفق و به دنبال آن یک تلاش موفق برای اتصال را نشان میدهد.
کارتان عالی بود. حال که توانستهاید ماژول ESP8266 را با موفقیت راه اندازی کرده و با شبکههای وایفای و آردینو ارتباط برقرار کنید، میتوانید دستورات دیگری نیز به آن ارسال کنید. داکیومنتها لیست دقیقی از همه دستوراتی که میتوان به ماژول ارسال کرد را فراهم آوردهاند. در آموزش بعدی، نحوه استفاده از ماژول ESP8266 را خواهیم دید و دستوراتی که به تازگی آموختید را برای تکمیل یک پروژه آردوینو به کار میبندیم.
منبع: ترجمه از سایت deviceplus.com
منبع: عکس شاخص از سایت duino4projects.com
اگر آموزش راه اندازی ESP8266 با استفاده از آردوینو براتون مفید واقع شده ما را نیز دعا کنید و اگر خواستین میتوانید از محتوای رایگان آموزشی حمایت مالی کنید. همچنین توصیه میکنیم دیگر پروژههای آردوینو را هم ببینید.
اگر این نوشته برایتان مفید بود لطفا کامنت بنویسید.
ممنونم از آموزشتون. من قبلا هیچ چیز از این آموزش نمیفهمدیم ولی با بالارفتن سن و درک و یادگیری معانی و مفاهیم یک سری از اصطلاحات مثل شیف رجیستر، فلیپ ففلاپ، مقاومت های بالاکس و پایین کش و… به خوبی این مقاله رو درک کردم و واقعا از شما ممنونم😍
طبق همین آموزش و با کمک دستورات AT ماژول را تبدیل به هات اسپات کردم
اما دیگه هیچ کدوم از دستورات AT را پاسخ نمیدهد.
چکار باید کنم؟
درود بر شما. سپاسگزارم از اطلاع رسانی و آموزشتون. خدا برکت بده به زندگیتون
سلام میشه یکمی دقیق تر بگین سیم هارو به کدوم باید وصل کنیم؟
سلام مرسی از اموزشت ی سوال داشتم خدمتتون ایا میشه با وای فای هک هک کرد به وسیله اردوینو ؟؟
سلام منبع تغذیه باید چه باتری ای باشه
A fatal esptool.py error occurred: Failed to connect to ESP8266: Timed out waiting for packet header
برای وقتی میخوام اپلود کنم این برا چیه
با درود
دو پین GPIO 0 و RESET را به GND آردوینو وصل کرده و وقتی دارد پیام (………__) می دهد، RESET را قطع کنید.
سلام من برای ساخت دانگل با esp8266 وکابل و usb بهserial ودسکتاپ برای این پروژه به کمک نیاز دارم چون اموزش خوبی پیدانمیکنم؟