چگونه مشکل پروگرم نشدن ESP 8266 آردینو را حل کنیم؟

چگونه مشکل پروگرم نشدن ESP 8266 آردینو را حل کنیم؟
باسلام
به صورت کلی در مرحله اول سریال مانیتور را باز میکنیم و بر روی 74880 قرار میدهیم و دکمه ریست را یکبار میزنیم
باید متنی مشابه زیر دریافت کنید.
ets Jan 8 2013,rst cause:1, boot mode:(3,6)
load 0x4010f000, len 3460, room 16
tail 4
chksum 0xcc
load 0x3fff20b8, len 40, room 4
tail 4
chksum 0xc9
csum 0xc9
v0004b6a0
در این شرایط یعنی میکرو سالم می باشد. در صورتی که دیتایی دریافت نشد پایه EN و RST به درستی کار نمیکنند (پین های 1و3 سمت چپ بالا روی کلاهک باید بهم وصل بشوند) و پس از این کار باز وصل کردن و سریال مانیتور را باز کرده و ریست میکنید. در صورتی که باز هم دیتایی یافت نشد احتمال دارد میکرو خراب باشد (در این شرایط به چراغ روی ESP باید توجه کنید و در صورتی که پس از ریست چشمک ریزی بزند یعنی میکرو سالم هست و لاین های سریال بین پروگرامر و ESP را باید بررسی کنید)
زمانی که این دیتا دریافت شد وارد مود بررسی میکرو میشویم.
در این شرایط powerShell ویندوز را باز میکنیم (توجه داشته باشید برای این مرحله پایتون باید بر روی سیستم نصب شده باشد)
دستور esptool را میزنیم (در صورتی که از قبل نصب نداشته باشید می توانید با دستور pip install esptool آن را نصب کنید)
و باید همچین متنی را به شما نمایش بدهد.
esptool.py v4.7.0
usage: esptool [-h] [--chip {auto,esp8266,esp32,esp32s2,esp32s3beta2,esp32s3,esp32c3,esp32c6beta,esp32h2beta1,esp32h2beta2,esp32c2,esp32c6,esp32h2,esp32p4}]
[--port PORT] [--baud BAUD] [--before {default_reset,usb_reset,no_reset,no_reset_no_sync}]
[--after {hard_reset,soft_reset,no_reset,no_reset_stub}] [--no-stub] [--trace] [--override-vddsdio [{1.8V,1.9V,OFF}]]
[--connect-attempts CONNECT_ATTEMPTS]
{load_ram,dump_mem,read_mem,write_mem,write_flash,run,image_info,make_image,elf2image,read_mac,chip_id,flash_id,read_flash_status,write_flash_status,read_flash,verify_flash,erase_flash,erase_region,merge_bin,get_security_info,version}
...
esptool.py v4.7.0 - Espressif chips ROM Bootloader Utility
positional arguments:
{load_ram,dump_mem,read_mem,write_mem,write_flash,run,image_info,make_image,elf2image,read_mac,chip_id,flash_id,read_flash_status,write_flash_status,read_flash,verify_flash,erase_flash,erase_region,merge_bin,get_security_info,version}
Run esptool.py {command} -h for additional help
load_ram Download an image to RAM and execute
dump_mem Dump arbitrary memory to disk
read_mem Read arbitrary memory location
write_mem Read-modify-write to arbitrary memory location
write_flash Write a binary blob to flash
run Run application code in flash
image_info Dump headers from a binary file (bootloader or application)
make_image Create an application image from binary files
elf2image Create an application image from ELF file
read_mac Read MAC address from OTP ROM
chip_id Read Chip ID from OTP ROM
flash_id Read SPI flash manufacturer and device ID
read_flash_status Read SPI flash status register
write_flash_status Write SPI flash status register
read_flash Read SPI flash content
verify_flash Verify a binary blob against flash
erase_flash Perform Chip Erase on SPI flash
erase_region Erase a region of the flash
merge_bin Merge multiple raw binary files into a single file for later flashing
get_security_info Get some security-related data
version Print esptool version
options:
-h, --help show this help message and exit
--chip {auto,esp8266,esp32,esp32s2,esp32s3beta2,esp32s3,esp32c3,esp32c6beta,esp32h2beta1,esp32h2beta2,esp32c2,esp32c6,esp32h2,esp32p4}, -c {auto,esp8266,esp32,esp32s2,esp32s3beta2,esp32s3,esp32c3,esp32c6beta,esp32h2beta1,esp32h2beta2,esp32c2,esp32c6,esp32h2,esp32p4}
Target chip type
--port PORT, -p PORT Serial port device
--baud BAUD, -b BAUD Serial port baud rate used when flashing/reading
--before {default_reset,usb_reset,no_reset,no_reset_no_sync}
What to do before connecting to the chip
--after {hard_reset,soft_reset,no_reset,no_reset_stub}, -a {hard_reset,soft_reset,no_reset,no_reset_stub}
What to do after esptool.py is finished
--no-stub Disable launching the flasher stub, only talk to ROM bootloader. Some features will not be available.
--trace, -t Enable trace-level output of esptool.py interactions.
--override-vddsdio [{1.8V,1.9V,OFF}]
Override ESP32 VDDSDIO internal voltage regulator (use with care)
--connect-attempts CONNECT_ATTEMPTS
Number of attempts to connect, negative or 0 for infinite. Default: 7.
در این شرایط دستور را به صورت
esptool -p COM23 chip_id
تغییر میدهیم (فقط شماره پورت دستگاه خود را از دیوایس منیجر پیدا کنید و جایگزین کنید)
اگر در Connecting گیر کرد دکمه Flash را نگه دارید یا پایه D3 رو به GND با سیم وصل کنید. در این شرایط این جواب را بگیرید.
esptool.py v4.7.0
Serial port COM23
Connecting....
Detecting chip type... Unsupported detection protocol, switching and trying again...
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 3c:61:05:d0:d9:2a
Uploading stub...
Running stub...
Stub running...
Chip ID: 0x00d0d92a
Hard resetting via RTS pin...
این جواب یعنی میکرو سالم می باشد و دارد به شما جواب میدهد.
اگر این جواب رو نگرفتید می توانید با سریال مانیتور بررسی کنید که وارد مود پروگرام میشوید یا خیر. برای این کار سریال مانیتور را باید نگه دارید و ریست رو بزنید. در این حالت جواب به صورت زیر تغییر بکند (این کد هایی که بعد از boot mode میاد بهتون میگه میکرو توی چه حالتی هست می توانید از طریق این لینک بررسی کنید که مشکل کجا هست)
ets Jan 8 2013,rst cause:1, boot mode:(1,6)
حالا که دیتا بالا رو گرفتیم و مطئن شیدیم میکرو سالم هست. وقتش هست حافظه میکرو رو هم بررسی کنیم که سالم هست یا نه
برای این موضوع دستور
esptool -p COM23 flash_id
رو میزنیم و باید جواب
esptool.py v4.7.0
Serial port COM23
Connecting....
Detecting chip type... Unsupported detection protocol, switching and trying again...
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 3c:61:05:d0:d9:2a
Uploading stub...
Running stub...
Stub running...
Manufacturer: d8
Device: 4016
Detected flash size: 4MB
Hard resetting via RTS pin...
رو بگیریم که جلو مقدار Detected flash size باید میزان حافظه باشه (بعضی از برد ها اینو خالی یا مقدار Manufacturer رو با FF برمیگردونن) این یعنی یا حافظه خراب شده یا روی لاین های ارتباطی بین میکرو و حافظه مشکلی هست.
پایه های 9 الی 14 مربوط به ارتباط حافظه هست این پایه ها نباید به جایی وصل باشن و مشکلی داشته باشن (بررسی کنید که اتصالی یا تیکه قلع بینشون نیوفته باشه همچنین توی لینک های ارور میتونید بررسی کنید که پایه ای اشتباهی HIGH یا LOW نباشه.
تمامی این موارد برای بررسی ESP8266 هست که البته با مقداری تغییر برای ESP32 هم میتونید استفاده کنید.
این مورد رو هم اضافه کنم اکثر مشکل ها مربوط به همین کلید Flash هست. یعنی کافی هست دکمه رو موقعی که نوشته Connecting می آید نگه دارید تا شروع پروگرام استارت بخورد و بعدش میتوانید رها کنید. (گاهی وقت ها این کلید هم دچار مشکل میشود و میتوانید با سیم پایه D3 رو به زمین وصل کنید و مطمئن باشید که پروگرام میشود.
از این 2 کامند که در powerShell میزنید میتوانید مشخص کنید که میکرو سالم می باشد یا خیر. اگر سری پروگرام میکنید و زمان زیادی برای پروگرام صرف میکنید میتوانید از دستور های esptool برای این موضوع استفاده کنید. قابلیت سری پروگرام کردن نیز دارند.