آموزش راه اندازی ESP8266 با آردوینو – {بخش دوم – تست اولین کد}
مقدمه
در بخش اول این جلسه میخوایم یاد بگیریم که چگونه آردوینو رو به esp8266 متصل کنیم. سپس در بخش دوم تنظیمات نرم افزاری مربوطه رو هم انجام میدیم و اولین کد خودمون رو روی برد آردوینو میریزیم. در واقع در این جلسه دیگه به طور رسمی راه اندازی esp8266 رو یاد میگیریم. مپیشنهاد میکنم برای بهتر متوجه شدن این جلسه، جلسه قبل رو از لینک زیر بخونید:
بخش سخت افزاری
ما برای این که بتونیم کدهامون رو روی برد ESP8266 بریزیم نیاز به یک مبدل USB به سریال داریم. حالا چرا؟ ببینید دوستان، استاندارد برد ESP که باهاش عمل پروگرم انجام میشه ارتباط سریال هست در حالی که ما داریم روی یک کامپیوتر یا لپتاپ کدهامون رو مینویسیم که این کامپیوتر استانداردش از نوع USB هست. خوب حالا این دو تا استاندارد مختلف چگونه باید با هم ارتباط برقرار کنن؟ اینجاست که به یک مبدل USB به سریال نیاز پیدا میکنیم.
مبدل های USB به سریال مختلفی توی بازار وجود داره. از CP2102 گرفته تا PL2303 . اما ما در اینجا نمیخوایم از این مبدل ها استفاده کنیم. ما میخوایم با استفاد از همین برد آردوینو این کار رو انجام بدیم. چون برد آردوینو روی خودش یک مبدل USB به سریال داره و ما میتونیم از اون مبدل برای پروگرم کردن استفاده کنیم. ولی نکته مهم اینه که باید حتما میکروکنترلر رو از روی برد برداریم تا داده ها بر روی برد ESP ریخته ( البته راه هایی هم هست که بدون این که میکروکنترلر رو برداریم بشه پروگرم کرد که چون ما در ابتدای کار هستیم اون راه ها رو پیشنهاد نمیکنیم)
مهمترین کار در این قسمت این هست که چگونه سیم ها رو وصل کنیم. یعنی چه سیم هایی رو از آردوینو به برد ESP وصل کنیم. در شکل زیر ابتدا پایه های این برد آورده شده و سپس جدولی رو آوردیم که در اون جدول نشون دادیم باید سیم های چطوری به هم دیگه وصل بشن.
در شکل زیر هم نحوه سیم بندی رو به صورت کاملا عملی میبینید:
دوستان حتما توجه داشته باشید که باید پایه GPIO_0 به زمین وصل باشه وگرنه عمل پروگرم کردن به درستی انجام نخواهد شد. حالا بریم وارد بخش نرم افزاری قضیه بشیم.
بخش نرم افزاری
محیط های مختلفی وجود داره که میشه با استفاده از اون ها میشه برای ماژول ESP8266 رو برنامه نوشت. از Notepad گرفته تا Eclipse . اما ما در اینجا میخوایم از نرم افزار Arduino استفاده کنیم و پیشنهاد ما هم برای کسانی که تازه کار با این ماژول رو شروع کرده اند همینه.
برای این که بتونیم برای این ماژول در محیط آردوینو کدنویسی کنیم باید یک افزونه رو نصب کنیم. در ادامه آموزش قصد داریم یاد بگیریم که چگونه این افزونه رو در آردوینو نصب کنیم. مثل همیشه مستقیم میریم سر اصل مطلب:
آموزش نصب افزونه:
از نسخه 1.6.4 نرم افزار آردوینو ، یه بخشی برای اضافه کردن بردهای دیگه به نرم افزار اضافه شد. بدیهی هست که اگه از نسخه های قبل از این نسخه استفاده میکنید باید نسخه جدیدتری رو دانلود کنید. جدیدترین نسخه این نرم افزار رو میتونید از این لینک دانلود کنید.
برای شروع نیاز هست که ما قسمت board manager در نرم افزار arduino رو با یک URL مشخص آپدیت کنیم. برای این کار ابتدا نرم افزار arduino را باز کنید. سپس از منوی File گزینه Preferences رو انتخاب کنید. سپس مطابق شکل از قسمت Additional Board Manager URLs آدرس زیر رو وارد کنید: ( میتونید هم بر روی گزینه مشخص شده در شکل زیر کلیک کنید و در پنجره باز شده آدرس رو وارد کنید( مطابق شکل زیر))
http://arduino.esp8266.com/stable/package_esp8266com_index.json
اگه شما در اینجا یک URL داشتید قبلا و دوست دارید که اون URL باقی بمونه تنها کافیه که URL ها رو با یک کاما از همدیگه جدا کنید. ( در arduino 1.6.5 یک گزینه ای اضافه شد در همین بخش که وقتی روش کلیک میکنید یه پنجره کوچیک برای شما باز میشه و در این پنجره برای وارد کردن چند URL تنها کافی است هر بار که URL خود را وارد میکنید به خط بعد بروید و پس از وارد کردن URL های خود روی OK کلیک کنید. در این صورت نرم افزار به صورت اتوماتیک URL ها را یک علامت کاما برای شما جدا خواهد کرد. )
بعد از وارد کردن آدرس بر روی گزینه OK کلیک کنید تا پنجره Preferences برای شما بسته بشه. سپس از منوی Tools وارد بخش Boards و سپس Board manager بشید. در این صورت برای شما پنجره ای مطابق شکل زیر باز خواهد شد. در این پنجره دنبال بخش esp8266 بگردید و سپس روی گزینه Install کلیک کنید.
حالا این برد هم برای شما تعریف میشه و یک سری ابزارها مثل GCC و فایل های باینری کامپایل شده و … شروع به دانلود شدن میکنند. به همین خاطر این فرایند چندین دقیقه طول میکشه ( حجم فایل دانلودی حدود 110 مگابایت هست). وقتی که نصب تموم شد جلوی پنجره مربوطه عبارت INSTALLED نوشته میشه.
انتخاب برد:
بعد از تکمیل عملیات بالا حالا باید برای استفاده از این کتابخانه برد ESP8266 رو انتخاب کنید که این کار از منوی Tools و بخش Boards قابل انجام هست.
در آخرین مرحله از منوی Tools در بخش Port ، پورتی که از طریق اون با ماژول ارتباط برقرار کردید رو انتخاب کنید.
آپلود اولین کد
برای این که چک کنید ببینید همه چیز درست هست. اون کد معروف LED چشمک زن که جزو مثال های آردوینو است رو باز کنید ( از منوی File ، بخش Example ، قسمت Basic و سپس گزینه Blink ) ولی به جای 13 باید یکی از دو عدد 0 یا2 رو قرار بدید. چون برد ESP8266-01 فقط دو پایه GPIO داره که یکی از اون ها GPIO 0 و دیگری GPIO 2 هست.
void setup() { pinMode(2, OUTPUT); } void loop() { digitalWrite(2, HIGH); delay(500); digitalWrite(2, LOW); delay(500); }
سپس کد رو بر روی برد آپلود کنید. اگه آپلود با ارور مواجه شد قبل از همه چیز مطمین باشید که تغذیه برد ESP8266وصل هست و LED قرمز رنگ روی برد روشنه.
در شکل زیر مدار مورد نظر برای این کد و پروگرم کردنش آورده شده ولی حتما بعد از آپلود کردن کد حتما اتصال پایه GPIO_0 از زمین رو قطع کنید تا این مدار به درستی کار کنه. ( در این شکل این پایه قطع نشده است چون میخواستیم همزمان مدار پروگرم کردن و LED با هم نشان داده شود. )
سوال: چگونه کد خود را سریعتر آپلود کنیم؟
سرعت ارتباط سریال در این روش پروگرم به طور پیش فرض 115200 هست (که خیلی هم قابل اطمینان هست) و اگه عمل پروگرم رو انجام داده باشید خواهید دید که مدت زمانی طول خواهد کشید تا پروگرم کامل انجام بشه. اما میشه این سرعت رو افزایش داد و زمان کمتری برای پروگرم کردن منتظر بمونید. این کار از منوی Tools بخش Upload Speeds قابل انجام هست. شکل زیر گویای همه چیز هست:
البته دوستان توجه داشته باشید که پروگرم کردن این برد هنوز هم با یک سری باگ ها مواجه هست که این اشکالات در برد ESP-01 برطرف نشده. مثلا این که اگه دوبار روی upload کلیک کنید و بخواید کد رو روی برد ESP بریزید احتمالا با یک خطایی مواجه خواهید شد که این اشکال مربوط به خود برد ESP هست.
خوب این جلسه هم به پایان رسید. مثل همیشه میتونید ما رو در تلگرام و یا اینستاگرام دنبال کنید:
52 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
سلام
خسته نباشید
من این مدارو مثل تصاویر و متن های گفته شده بستم وبا این ارور مواجع شدم
esptool.FatalEror : failed to connectto ESP8266 Timed out waiting for packet header
Arduino: 1.8.13 (Windows 10), Board: “Generic ESP8266 Module, 80 MHz, Flash, Legacy (new can return nullptr), All SSL ciphers (most compatible), dtr (aka nodemcu), 26 MHz, 40MHz, DOUT (compatible), 1MB (FS:64KB OTA:~470KB), 2, nonos-sdk 2.2.1+100 (190703), v2 Lower Memory, Disabled, None, Only Sketch, 115200”
Executable segment sizes:
IROM : 228624 – code in flash (default or ICACHE_FLASH_ATTR)
IRAM : 26756 / 32768 – code in IRAM (ICACHE_RAM_ATTR, ISRs…)
DATA : 1248 ) – initialized variables (global, static) in RAM/HEAP
RODATA : 688 ) / 81920 – constants (global, static) in RAM/HEAP
BSS : 24880 ) – zeroed variables (global, static) in RAM/HEAP
Sketch uses 257316 bytes (26%) of program storage space. Maximum is 958448 bytes.
Global variables use 26816 bytes (32%) of dynamic memory, leaving 55104 bytes for local variables. Maximum is 81920 bytes.
esptool.py v2.8
Serial port COM5
Connecting…….._____….._____….._____….._____….._____….._____…..____Traceback (most recent call last):
_
File “C:\Users\Shahriyar\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4/tools/upload.py”, line 65, in
esptool.main(cmdline)
File “C:/Users/Shahriyar/AppData/Local/Arduino15/packages/esp8266/hardware/esp8266/2.7.4/tools/esptool\esptool.py”, line 2890, in main
esp.connect(args.before)
File “C:/Users/Shahriyar/AppData/Local/Arduino15/packages/esp8266/hardware/esp8266/2.7.4/tools/esptool\esptool.py”, line 483, in connect
raise FatalError(‘Failed to connect to %s: %s’ % (self.CHIP_NAME, last_error))
esptool.FatalError: Failed to connect to ESP8266: Timed out waiting for packet header
esptool.FatalError: Failed to connect to ESP8266: Timed out waiting for packet header
This report would have more information with
“Show verbose output during compilation”
option enabled in File -> Preferences.
سلام . من میخوام برنامه ای نوشتم که میخوام بریزم روی اردوینو esp32 اما ارور esp8266wifi .h میگیره . لطفا راهنمایی کنید.
با سلام.
لطفا تصویری از خطای خود ارسال بفرمایید.
با تشکر.
سلام. موقع آپلود یک ارور میده:
An error occurred while uploading the sketch
esptool.py v2.8
Serial port COM3
Connecting…..
مشکل چیه؟
gpio . تو موقع آپلود روی زمین هست.
ببا سلام.
آیا برد شما توانسته ارتباط صحیح سخت افزاری برقرار کند ؟ لطفا تصویری از device manager لپتاپ خود ارسال بفرمایید.
با تشکر.
سلام این کارو با اردوینو نانو نمیشه انجام داد ؟
ممنون بخاطر سایت خوبتون
با سلام.
بله از این بابت مشکلی ندارد و میتوانید این ماژول را با Arduino NANO نیز راه اندازی کنید.