آردوینو اینترنت اشیا IOT

آموزش آپلود کدها روی ماژول وای فای با تراشه ESP8266 نسخه ۱۲X

programming-esp8266-12x-digispark
نوشته شده توسط راضیه دست غیب, معین صابری

اگر تابه حال درباره میکرو های ESP8266 نسخه ۱۲x نشنیده‌اید. لازم است بدانید، این میکروها، ارزان، پرقدرت و البته هسته اصلی پروژه‌های اینترنت اشیا و WiFi را می‌سازند. این میکروها معمولا در ماژول‌ها یا همان DEVELOPMENT BOARD هایی از جمله Nodemcu یا wemos D1 استفاده می‌شود. ولی در شرایطی که نیاز به اجرای پروژه با هزینه کمتر است. بایستی از تراشه ESP8266 نسخه‌های سری ۱۲ استفاده کرد. در این حالت پروژه با میکرو ESP8266 روی یک برد قابل پیاده سازی است. با توجه به ماهیت این میکرو، روش پروگرام کردن آن کمی متفاوت خواهد بود. در این پست دو روش ساده پروگرم کردن میکرو های ESP8266 12x را آموزش می‌دهم. در ادامه این آموزش با مرجع تخصصی ESP8266 به زبان فارسی، دیجی اسپارک همراه باشید.

پروگرام کردن ماژول ESP8266-12X - دیجی اسپارک

 


روش اول، استفاده از مبدل USB


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

 


مبدل USB به سریال


در این پروژه از هر نوع مبدل USB به سریال می‌توانید استفاده کنید. اما من از مدل PL2303hx محصول prolific استفاده کردم. این مبدل‌ها امکان برقراری ارتباط با کامپیوتر از طریق پورت usb را فراهم می‌کنند. در حقیقت با اتصال این مبدل به کامپیوتر و نصب برنامه درایور، یک پورت سریال مجازی به پورت‌های کامپیوتر افزوده می‌شود. این مبدل قابلیت کار با سیستم عامل‌های windows، MAC،android ،linux را دارد. در خروجی این مبدل علاوه بر پین‌های txd ،rxd و gnd ولتاژ خروجی ۵v و ۳٫۳v هم در نظر گرفته شده است.

شماتیک ماژول ESP8266 12X - دیجی اسپارک


اتصالات مبدل USB به ESP8266


پایه EN ،RST و GPIO0 با یک مقاومت ۱۰K پول آپ می‌شوند. GPIO15 با یک مقاومت ۱۰K به زمین متصل می‌کنیم. با این روش به حالت Pull Down تبدیل می‌کنیم. یک خازن ۱۰ میکرو فارادی بین پایه VCC و GND قرار می‌دهیم. پایه ۳٫۳ ولت مبدل USB به سریال را به VCC میکرو ESP8266 متصل می‌کنیم. برای فعال سازی حالت برنامه نویسی میکرو در زمانی که اقدام به آپلود کد روی میکروکنترلر می‌کنیم. وقتی ESP8266 می‌خواهد شروع کند پایه‌ی GPIO0 باید LOW شود راحت ترین راه برای این کار اضافه کردن دو تا کلید فشاری مانند تصویر پایین است. ابتدا کلید GPIO0 رو فشار می‌دهیم. سپس کلید RST را فشار می‌دهیم. حالا هردوتا کلید را رها می‌کنیم. لازم نیست این مراحل را چندین بار حین پروسه آپلود انجام بدهید. وقتی که میکروکنترلر به حالت پروگرمینگ وارد شد. در آن حالت باقی می‌ماند تا زمانی که دوباره کلیدها فشرده شوند. خب ورود به حالت پروگرمینگ فقط نیمی از راه است. اما در ادامه باید ESP را به مبدل متصل کنیم.

اتصالات مبدل USB به ESP8266 - دیجی اسپارک

RXD مبدل را به TX میکرو متصل می‎کنیم.

TXD مبدل را به RX میکرو متصل می‌کنیم.

GND مبدل را به GND میکرو متصل می‌کنیم.

نکته مهم: اکثر مبدل‌های USB به سریال توانایی فراهم کردن ولتاژ ۳٫۳ با جریان کشی ۲۵۰ میلی آمپر را ندارند. پس بهتر است ۳٫۳ را از یک منبع تغذیه تامین کنیم.

 


آپلود برنامه روی ESP8266 12X


برای اپلود کردن برنامه به برد مراحل زیر لازم است. در کامپایلر آردوینو IDE از قسمت EXAMPLE برنامه BLIKNK را باز می‌کنیم. سپس از قسمت TOOL>PORT پورتی که مبدل به آن متصل شده، را انتخاب می‌کنیم. پس از آن حالت پروگرمینگ را با کمک کلیدها که در بالاتر توضیح دادم، فعال می‌کنیم. اکنون برنامه را آپلود می‌کنیم. اگر نشد اتصالات را چک کنید سپس دوباره امتحان کنید. اگر باز هم نشد از طریق بخش نظرات همین آموزش سوالاتتان را مطرح بفرمایید. پس از آپلود کدها روی ESP8266 12X کلید ریست را دوباره تحریک کنید.

اتصالات به پایه ماژول ESP8266 12X - دیجی اسپارک

 


تنظیمات ESP8266 در آردوینو


BOARD SETTING این پروژه به شرح زیر می‌باشد.

Board: Generic ESP8266 Module
Flash Mode: DIO
Flash Size: 4M (3M Spiffs)
Reset Method: ck
Flash Frequency: 40MHz
Upload Speed: 115200

 

نکته: در بردهای ESP8266 یک عدد ال ای دی قرار دارد. این LED روی برد به پایه ۲ متصل است.

 


روش دوم، استفاده از Nodemcu


در روش دوم برای آپلود کدها روی ماژول ESP8266 به یک برد Nodemcu نیاز داریم. اگر تا به حال با هر یک از DEVELOPMENT BOARD های ESP8266 کار کرده باشید؛ حتما می‌دانید که هیچ کدام از آن‌ها اقدامات پیچیده‌ی مرحله قبلی را لازم ندارند. برد به صورت اتوماتیک در حالت Programming قرار دارد. در این روش از برد Nodemcu به عنوان پروگرمر ESP8266 استفاده می‌کنیم.

 


ویژگی برد Nodemcu در آپلود کدها


امکان تامین ولتاژ ۳٫۳ به صورت مستقیم از پین ۳٫۳ ولت برد Nodemcu

بدون دردسر اتصالات Pull up و pull Down ماژول ESP را پروگرام می‌کنیم.

هزینه برد Nodemcu ناچیز بوده و معمولا در جیب هر مهندس سخت افزارای پیدا می‌شود.

 

 


آپلود برنامه با استفاده از Nodemcu


درواقع ما میکرو ESP8266 قرار گرفته روی برد Nodemcu را غیر فعال می کنیم. با وصل کرن پایه EN برد NODE MCU به GND و سپس وصل کردن میکرو ESP8266 به NODE MCU مانند توضیحات زیر، اقدامات صورت می‌گیرد.

آپلود برنامه با استفاده از Nodemcu - دیجی اسپارک

ابتدا مانند مرحله قبلی اتصالات را برقرار می‌کنیم. و در ادامه:

پایه ۳٫۳ ولت NODE MCU را به ۳٫۳ ESP8266 متصل می‌کنیم.

پایه زمین NODE MCU را به زمین ESP8266 متصل می‌کنیم.

پایه TXبرد NODE MCU را به TX ماژول ESP8266 متصل می‌کنیم.

پایه RX برد NODE MCU را به RX ماژول ESP8266 متصل می‌کنیم.

پایه RST برد NODE MCU را بهRST ماژول ESP8266 متصل می‌کنیم.

پایه D3 برد NODE MCU را به GPIO0 ماژول ESP8266 متصل می‌کنیم.

پایه EN برد NODE MCU را به GND متصل می‌کنیم.

 


تنظیمات Arduino IDE


در برنامه آردوینو از قسمت TOOL> PORT پورتی که برد Nodemcu از آن به کامپیوتر متصل شده است، را انتخاب می‌کنیم. سپس نوع برد را “(NodeMCU 1.0 (ESP12-E Module” انتخاب می‌کنیم.  حالا گزینه UPLOAD را کلیک می‌کنیم. کدها روی ماژول ESP8266 12X ما آپلود خواهند شد.

 

 

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

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

 

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

راضیه دست غیب

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

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

معین صابری

کارشناسی ارشد رشته معماری سیستم های کامپیوتری

مالي که ز تو کس نستاند، علم است
حرزي که تو را به حق رساند، علم است
جز علم طلب مکن تو اندر عالم
چيزي که تو را ز غم رهاند، علم است
(شیخ بهایی)

تبادل نظر و رفع عیب با ثبت دیدگاه

۴۱ دیدگاه

  • سلام من تمام مراحل گفته شده رو انجام دادم ولی نمیتونم ماژولمو پروگرام کنم این ارور رو میده :
    Leaving…
    Hard resetting via RTS pin…
    ممنون میشم راهنماییم کنین

      • سلام مهندس
        برنامه رو با نرم افزار اردینو بالا میارم ولی در هنگام اپلود بااین کد مواجه میشم
        Traceback (most recent call last):
        File “C:\Users\ali\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.1/tools/mkbuildoptglobals.py”, line 846, in
        sys.exit(main())
        File “C:\Users\ali\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.1/tools/mkbuildoptglobals.py”, line 843, in main
        handle_error(0) # commit print buffer
        File “C:\Users\ali\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.1/tools/mkbuildoptglobals.py”, line 262, in handle_error
        print(msg_print_buf, file=fd, end=”, flush=True)
        File “D:\obj\Windows-Release\37win32_Release\msi_python\zip_win32\cp437.py”, line 19, in encode
        UnicodeEncodeError: ‘charmap’ codec can’t encode characters in position 57-61: character maps to

        exit status 1

        Compilation error: exit status 1

  • با سلام من می خوام توسط برد آردوینو نانو و ماژول esp01 که فکر کنم همون esp8266 بشه یک ال ای دی را با نرم افزار remotexy v روشن کنم ولی نرم افزار را وقتی از قسمت tools/board/esp8266رفتم و بعد از منوی file /example/esp8266/blink را زدم ولی بوردم را نمی شناسه و آپلود نمیشه. نمیدونم بعنی باید این بورد nodemcu را تهیه بکنم تا بشه؟؟اگر میشه لطفا راهنماییم کنید ممنون میشم.

  • با سلام ممنون از مطالب خوبتون.من می خوام توسط برد آردوینو نانو و ماژول وای فای (esp-01(esp8266 و می خوام از نرم افزار remotexy برای کنترل خاموش و روشن کردن ال ای دی ها استفاده کنم اما وقتی به صورت جداگانه یعنی برنامه blink را روی برد آردوینو نانو آپلود می کنم جواب میده ولی وقتی ماژول وای فای را وصل می کنم و در قسمت board /generic module esp8266 را انتخاب می کنم و از داخل منوی فایل گزینه example و بعد esp8266 را انتخاب و گزینه blink را می زنم ، ارور the selected serial port does not exist می دهد با وجود اینکه من پورتم را از device management چک کردم و از داخل برنامه پورت را انتخاب کردم.لطفا راهنمایی کنید.ممنون.

  • با سلام من تمام مراحل رو با NodeMcu انجام دادم … اما موقع پروگرم شدن … وصل نمیشه کلا …
    این پیام رو میده :
    Connecting…….._____….._____….._____….._____….._____….._____…..____Traceback (most recent call last):
    بهش وصل نمیشه و خطای Timed out میده …
    چطور باید چک کنم که ماژول سالمه یا نه ؟

    • سلام
      با nodemcu نیازی به مراحل بالا نیست، از طریق پورت usb برد رو به راینه متصل کنید و خیلی ساده برنامه را پروگرام نمایید.

    • سلام
      هیچ خازنی نیاز نیست، خیلی ساده کابل یو اس بی رو متصل کنید و به سادگی پروگرام کنید.

  • با سلام من میخوام با کابل مبدل usb به ttl مدل pl2303ta دستورات at رو روی esp8266 انجام دهم. درایور مبدل را هم نصب کردم و پورت مناسب را هم در اردوینو انتخاب کرده ام ولی در سریال مانیتور هرچه دستور at میفرسم پاسخی از ماژول دریافت نمیکنم… بادریت های مختلف رو هم تست کردم…ممنون میشم کمکم کنید.

  • سلام وقتتون بخیر، من برای تست یه برنامه چشمک زن با اردوینو نوشتم و با مبدل usb to ttl روی ماژول اپلود کردم و تا ۱۰۰ درصد هم پیش میره، اما وقتی led رو به پایه مربوطه وصل میکنم، چشمک نمیزنه و فقط روشنه(به نظر میرسه فقط پایه رو خروجی کرده و قسمت void loop رو اجرا نمیکنه
    ممنون میشم درصورت امکان راهنماییم کنید.

  • سلام
    من به کمک نود و مداری که توضیح دادین تونستم esp رو پرگرم کنم. بعد از جدا کردن esp پروگرم شده ، حالا برای راه اندازی اون بازهم نیاز به مدار مجزایی هست یا با وصل کردن پایه های ولتاژ و گراند esp باید روشن شود؟

    • نه نیاز به هیچ مدار مجزایی نیست و بعد از پروگرام، با اتصال تغذیه ماژول روشن خواهد شد

  • سلام ببخشید من تازه میخاهم NODEMCU را پروگرام کنم و اصلا نمیدونم که چرا این خطا رو میاره کتابخانه رو هم اضافه کردم ولی توی پورت یدونه COM3 میاره که اگر هم هیچی وصل نشه دوباره همونو میاره. فکر کنم مشکل از شناخن پورت باشه ولی وقتی اردوینو رو وصل میکنم فورا پیدا میکنه و مینویسه. آیا میتوان مشکل از نصب درایور باشد؟ ویندوز من ۱۰ هستش آیا درایور CP2109 نیاز نداره؟ چون یه جا خوندم گفته بود باید درایور نصب کنین. ولی من هیچی نصب نکردم.

    • سلام
      احتمالا تداخل درایور وجود دارد. البته گاهی اوقات باگ های نرم افزار آردوینو سبب چنین مشکلاتی می شود. شما برد را متصل کنید. سپس در منوی DEVICE MANAGER پورت تخصیص یافته را مشاهده کنید.

  • esptool.py v3.0
    Serial port COM3
    Connecting…….._____….._____….._____….._____….._____….._____….._____
    Traceback (most recent call last):
    File “C:\Users\Digi1anD\OneDrive\Documents\ArduinoData\packages\esp8266\hardware\esp8266\3.0.2/tools/upload.py”, line 66, in
    esptool.main(cmdline)
    File “C:/Users/Digi1anD/OneDrive/Documents/ArduinoData/packages/esp8266/hardware/esp8266/3.0.2/tools/esptool\esptool.py”, line 3552, in main
    esp.connect(args.before, args.connect_attempts)
    File “C:/Users/Digi1anD/OneDrive/Documents/ArduinoData/packages/esp8266/hardware/esp8266/3.0.2/tools/esptool\esptool.py”, line 529, 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

    Invalid library found in C:\Users\Digi1anD\OneDrive\Documents\Arduino\libraries\theme: no headers files (.h) found in C:\Users\Digi1anD\OneDrive\Documents\Arduino\libraries\theme

    • بسیار خب
      عبارات فوق نشان می دهد ارتباط با برد برقرار شده اما داده به برد ارسال نمی شود. برای این مورد لطفا ابتدا دکمه فلش روی برد را نگاه دارید. سپس دکمه ریست را یکبار فشار دهید. سپس دکمه فلش را رها کرده و کد را آپلود نمایید.

      • با سلام و عرض ادب من هم دقیقا همین مشکل رو دارم و روالی گه فرمودید رو انجام دادم ولی بازم اپلود نمیشه.

      • لطفا ابتدا از سلامت مبدل سریال مطمئن شوید، سپس در ادامه ابتدا پایه GPIO0 را به زمین متصل کنید، سپس تغذیه را وصل کنید، بعد از وصل تعذیه ماژول در مد پروکرام قرار می گیرد. در این حال کد را آپلود کنید.

      • لطفا ابتدا از سلامت مبدل سریال مطمئن شوید، سپس در ادامه ابتدا پایه GPIO0 را به زمین متصل کنید، سپس تغذیه را وصل کنید، بعد از وصل تعذیه ماژول در مد پروکرام قرار می گیرد. در این حال کد را آپلود نمایید کنید.

  • سلام شکلی که برای پروگرام کردن با nodemcu گذاشتین که با مقاومت و خازن پایه ها بهم وصل هستند ، باید طبق شماتیک پیش بریم و با طبق گفته ها به صورت ساده فقط پایه هارو وصل کنیم همه چی حله و نیازی به مقاومت و خازن نیست؟

  • سلام به تمامی دوستان
    توجه کنید پایه ۱۵ رو حتما مقاوت ۱ کیلو بزارید وگرنه پروگرام نمیشه

  • وقتی میخام ماژول رو پروگرم کنم…. به محض زدن دکمه آپلود این میاد پایین صفحه
    Request getBoardDetails failed with message: 14 UNAVAILABLE: No connection established

  • برنامه IDE Arduino pro رو نصب کردم، وقتی با اون پروگرم میکنم همه کارا به ظاهر انجام میشه ولی در پایان کار نمیکنه این جواب ها درسته؟ یا به مشکل خورده تو اپلود ؟ (Leaving… Hard resetting via RTS pin…)
    ….
    Writing at 0x00028000… (91 %)
    Writing at 0x0002c000… (100 %)
    Wrote 265056 bytes (195053 compressed) at 0x00000000 in 17.5 seconds (effective 121.4 kbit/s)…
    Hash of data verified.

    Leaving…
    Hard resetting via RTS pin…

    ————————–
    upload complete.

    • سلام
      برنامه آپلود شده، فقط یکبار پس از آپلود برد را روشن و خاموش کنید تا مشکل برطرف شود.

    • سلام
      برنامه آپلود شده فقط پس از آپلود باید یکبار برد را ریست کنید. دقت کنید که هنگام ریست پایه GPIO0 از GND جدا شود.

  • سلام خسته نباشید . به چنین اروری برخورد میکنم . ممنون میشم راهنماییم کنید :
    . Variables and constants in RAM (global, static), used 28104 / 80192 bytes (35%)
    ║ SEGMENT BYTES DESCRIPTION
    ╠══ DATA 1496 initialized variables
    ╠══ RODATA 920 constants
    ╚══ BSS 25688 zeroed variables
    . Instruction RAM (IRAM_ATTR, ICACHE_RAM_ATTR), used 59667 / 65536 bytes (91%)
    ║ SEGMENT BYTES DESCRIPTION
    ╠══ ICACHE 32768 reserved space for flash instruction cache
    ╚══ IRAM 26899 code in IRAM
    . Code in flash (default, ICACHE_FLASH_ATTR), used 232148 / 1048576 bytes (22%)
    ║ SEGMENT BYTES DESCRIPTION
    ╚══ IROM 232148 code in flash
    esptool.py v3.0
    Serial port COM5
    Connecting…….._____….._____….._____….._____….._____….._

    Chip is ESP8266EX
    Features: WiFi
    Crystal is 26MHz
    MAC: 08:3a:8d:de:ff:64
    Uploading stub…
    Running stub…
    Stub running…
    Configuring flash size…
    A fatal esptool.py error occurred: Timed out waiting for packet header

  • سلام خشته نباسید . ایا می توان بعد از اپلود کد روی esp12e ، ولتاژ۳٫۳ ولت را به طور مستقیم و بدون برد راه انداز و مقاومت و خازن به esp12e وصل کرد ؟؟؟

  • سلام خشته نباسید . ایا می توان بعد از اپلود کد روی esp12e ، ولتاژ۳٫۳ ولت را به طور مستقیم و بدون برد راه انداز و مقاومت و خازن به esp12e وصل کرد ؟