燒錄與執行ESP8266 AT指令韌體/固件(一):使用UNO+WiFi R3 ATmega328P+ESP8266控制板

本文旨在補充《超圖解物聯網IoT實作入門》第十二章「使用AT指令操作通用型ESP模組(ESP-01)」單元,說明更新AT韌體的方法。

ESP8266系列控制板最初的功能是充當Wi-Fi介面卡,讓其他微控器(如:Arduino或Espruino)透過UART介面傳送AT指令控制ESP8266聯網。

有些ESP8266控制板(如:ESP-01、ESP8266串口WiFi擴展板)在出貨時,都會事先燒入解析AT指令的韌體,但是AT指令韌體有不同廠商和版本,指令也不完全相容。本文將採用深圳安信可科技(Ai Thinker)公司的1.5.4.1版AT指令韌體做說明。

認識UNO+WiFi R3 ATmega328P+ESP8266, 32Mb flash, USB-TTL CH340G控制板

最近買了一塊跟Arduino Uno相容,搭載ATmega328和ESP8266微控器,也就是具備Wi-FI無線聯網功能的Arduino Uno控制板。這塊板子沒有名字,商品標題是:WiFi R3 ATmega328P+ESP8266 (32Mb memory), USB-TTL CH340G,底下簡稱UNO+WiFi R3板。這個是位於中國珠海的RobotDyn原廠的商品說明英文網頁

讀者不一定要買這個UNO+WiFi R3板,因為無論哪個廠牌、型號和外觀的ESP8266系列控制板,都能燒錄AT指令韌體,包含NodeMCU, Wemos D1 mini, Makeblock Me WiFi模組…等板子,你可以使用現有的ESP8266板來做實驗。

UNO+WiFi R3 ATmega328P+ESP8266, 32Mb flash, USB-TTL CH340G控制板

UNO+WiFi R3板的主要特色在於中間的「運作模式切換開關」(註:這種造型的開關元件,稱為DIP開關),透過此DIP開關可切換兩個微控器的UART介面的連接方式,如下圖所示;若DIP開關全設定成OFF,則ATmega328, ESP8266和CH340G序列通訊晶片都不相連。

UNO+WiFi R3 ATmega328P+ESP8266, 32Mb flash, USB-TTL CH340G控制板的運作模式

美中不足之處是,原本位於Arduino Uno控制板右側的SPI排針,在UNO+WiFi R3板被挪到中間上方的位置,所以某些UNO相容擴展板不能直接插入使用,例如:乙太網路卡。

比較UNO+WiFi R3與Arduino Uno板

我不確定UNO+WiFi R3板上的ESP8266事先燒錄哪個版本的AT指令韌體,我買來之後就替它燒入安信可科技提供的韌體。

下載安信可科技(Ai Thinker)的AT指令韌體(固件)與說明文件

韌體(Firmware)在中國大陸稱為「固件」、台灣人說的「預設值」,大陸稱為「默認值」或「缺省值」。話說回來,現在兩岸交流頻繁,許多商品的中文文件用詞也大多採大陸的講法,以前台灣人說「最佳化」,現在講「優化」、「解析度」講成「分辨率」、「介面」變成「接口」、「序列埠」變成「串口」…很多人都習慣了。

十幾年前跟北京的編輯在MSN上閒聊時,她忽然冒出一句「蝦米?」,她知道那代表「什麼?」,在網上很紅,經我解釋才知道是出自台灣的閩南語。話題扯遠了…

在安信可科技的「ESP8266最新SDK发布」網頁的「出厂默认AT固件」單元,可下載最新版的AT韌體,適用於具備1Mb或32Mb快閃記憶體的ESP8266控制板,請先下載並解壓縮備用。

AT指令的說明文件位於「ESP8266文档中心」頁面的AT單元,有簡體中文與英文兩種語言版本。

讓ESP8266進入韌體燒錄模式

燒錄ESP-01板子韌體的方式和接線,請參閱「使用ESP-01模組開發Arduino物聯網」單元第13-10頁;若是用NodeMCU或Wemos D1 mini板,只須接上USB線,控制板上的USB序列通訊電路會在燒錄韌體時自動切換模式。

燒錄UNO+WiFi R3板的ESP8266韌體時,需要把3個開關切換到ON狀態,其餘切換到OFF:

燒錄UNO+WiFi R3板的ESP8266韌體

使用Flash下載工具燒錄ESP8266韌體

Flash下載工具(Flash Download Tools)是晶片製造商樂鑫信息科技(上海)公司的官方燒錄工具(按此連結下載),可用於所有ESP8266系列控制板。另一款NodeMCU Flasher的性質跟它類似,但許多人都已改用官方工具。這裡講的「下載」,就是台灣人習慣說的「上傳到控制板」之意。

Flash下載工具無需安裝即可使用,但是它的所在路徑請不要包含中文,也就是不建議將Flash下載工具的應用程式資料夾(FLASH_DOWNLOAD_TOOLS)放在「桌面」或「下載」等位置,你可以將它存入隨身碟的根目錄。

Flash下載工具的操作畫面和燒錄步驟如下:

1. 直接雙按應用程式開啟它:

Flash下載工具

螢幕上將出現一個選單視窗和命令行視窗,燒錄完成之前,請勿關閉任一視窗。請按下ESP8266鈕,開啟ESP8266燒錄工具。

2. 按一下ESP8266 Download Tool:

Flash下載工具

燒錄工具上面的幾個欄位,用於指定韌體檔的位置,以及燒入ESP8266的位址。請在第一個欄位選擇.bin格式的韌體檔(如:Ai-Thinker_ESP8266_32Mbit_v1.5.4.1.bin),位址欄位請輸入0x00000,序列通訊速率(BAUD)可以選擇較快的速率,節省燒錄時間。其餘選項CrystalFreq(石英震盪頻率)、SPI SPEED(SPI介面速度)、SPI MODE(SPI模式)、FLASH SIZE(快閃記憶體大小)請依下圖設定:

Flash下載工具

測試AT命令韌體

燒錄好AT韌體之後,如果是ESP-01模組,請參考「透過Arduino執行ESP8266的AT命令」第12-12頁的接線,連接ESP-01和Arduino Uno板,並且上傳底下的程式碼到Arduino Uno:

#include <SoftwareSerial.h>

SoftwareSerial ESP(3, 2); // 接收腳, 傳送腳

void setup() {
  Serial.begin(115200);
  ESP.begin(115200);
  Serial.println("Serial is ready!");
  Serial.println("");
}
 
void loop() {
  if (Serial.available()) {
    ESP.write(Serial.read());
  }
 
  if (ESP.available()) {
    Serial.write(ESP.read());
  }
}

如果是NodeMCU或Wemos D1 mini板,維持USB接線即可,不用上傳任何程式碼。若是UNO+WiFi R3板,請把底下兩個開關切換成ON,其餘維持OFF,也不用上傳任何程式碼

測試AT命令韌體

我們可以使用任何序列通訊軟體跟AT韌體溝通,本文使用Arduino IDE工具內建的「序列埠監控視窗」。

請先在Arduino IDE的主功能表「工具→序列埠」選單,選擇控制板所在的序列埠,再開啟「序列埠監控視窗」。把序列埠連接速率改成115200bps,再輸入AT+GMR命令(英文大寫),將能看到如下的韌體版本回應訊息:

序列埠監控視窗

Posts created 470

45 thoughts on “燒錄與執行ESP8266 AT指令韌體/固件(一):使用UNO+WiFi R3 ATmega328P+ESP8266控制板

  1. 請問老師,如果想使用外接天線時,則底板的PCB天線要如何處理,使其不連結至ESP8266?Thanks in advanced.

    1. 我不了解「不讓天線連結至ESP8266」的意思…外接天線直接接在板子上面的插座即可。

      thanks,
      jeffrey

    1. 感謝告知!

      請看一下UNO+WiFi R3 ATmega328P+ESP8266, 32Mb flash, USB-TTL CH340G, Micro-USB這塊板子的電路圖,第2腳連接電阻後與天線相連。

      ESP8266的電路圖

      用電錶測量ESP8266晶片的第2腳,的確是跟外接天線插座相連(如底下照片中的黃色線條),所以直接插入外接天線即可。

      控制板的外接天線插座

      thanks,
      jeffrey

  2. 謝謝老師提供資料及說明,剛剛又看下面網頁,http://www.ickey.cc/e/ask/detail/16793.html
    心中又有問題,想看看老師想法: 板載PCB天線和IPEX外接介面天線,可以同時使用?Thanks in advances。

  3. 請問我用這塊板子接SHT31溫濕度感應器 腳位接A4, A5 正版Arduino 可以正常顯示 為何這塊板子無法, 程式碼跟接角都一樣

    感謝
    Neo

  4. 老師請問燒入的AT檔案在哪裡呢? 能跟我說在官方網站內的哪一個嗎? TKS!!

    1. 如內文提到的Ai-Thinker_ESP8266_32Mbit,請搜尋關鍵字,或者在安信可科技的「ESP8266最新SDK发布」網頁下載.bin格式檔案即可燒錄。

      thanks,
      jeffrey

  5. 1.請問一下,照著書做序列埠監控視窗沒有收到ESP8266的訊息,是出廠時候ESP8266沒有寫入韌體嗎?
    2.關於安信可科技的「ESP8266最新SDK发布」網頁的「出厂默认AT固件」單元,網站好像進不去了。不去這邊下載韌體還有其它地方嗎?
    謝謝大大

  6. 您好
    我使用IDE1.8.4 +MEGA2560 +NODEMCU-ESP826612e
    也重燒了官方韌體
    因MEGA改成SoftwareSerial ESP(10, 11); // 接收腳, 傳送腳
    NODEMCU-ESP826612e(VIN接5V)
    改Serial.begin(115200);(NODEMCU-ESP826612e:原標示9600)
    串列視窗改成115200 (NL & CR)
    下AT+GMR
    串列視窗還是不會回ok
    還請指點 感謝

    1. 我的MEGA2560板在使用中,無法測試。如果你手邊沒有其他Arduino板,可搭配USB轉序列埠板,連接藍牙板,再搭配序列埠測試軟體試試,例如這個串口調試助手

      thanks,
      jeffrey

  7. 老師您好,想要請問一下若想要透過 Arduino+ESP8266 (透過 software serial)來建立 SSL連線 (例如 script.google.com),有什麼 library可用嗎? 之前有用過ITEADLIB_Arduino_WeeESP8266的,但他的沒有提供 SSL 連線建立的方式,我直接下 AT+CIPSTART SSL是可以建立成功但無法使用透傳也無法送出fingerprint,連線一下子就會斷線,加上有些網站會轉址,需要針對返回的網址再做一次GET 之類的。若有方法的話請不吝告知,謝謝!

    // p.s. 我是想要做一個線上打卡 Arduino + MFRC522 + ESP8266 直接送出資料到 google 試算表(不透過第三方, 因為pushingbox 目前只有100次可用)

  8. “是的,ESP8266的網路通訊都是透過Wi-Fi。”
    老師您好,我的意思是說透過在ESP8266上直接執行Arduino程式達成之後,要把Arduino其他 sensor 的資料透過 ESP8266上傳到網路上的話,這邊的溝通(Arduino與ESP8266) 是透過 wire.h 完成的函示完成嗎?

    1. 拍謝看錯了,如果採用上文這塊板子,就如同內文說明,ESP8266和MEGA328之間採UART連線。

      thanks,
      jeffrey

  9. 請問老師,我的板子和老師同廠牌同款,也照著您的步驟燒錄完成
    燒錄結束訊息” is stub and send flash finish”
    指撥改回5.6 ON,再開啟「序列埠監控視窗」。把序列埠連接速率改成115200bps
    但下指令AT+GMR後沒反應
    是因為我有燒WIFISCAN到8266有關嗎?

    1. 還有這板子是否只要將程式燒到328中
      8266只能燒AT指令
      然後用328的程式去下AT指令去控制8266嗎?
      謝謝老師

    2. 1. 一次只能燒錄一個韌體。
      2. 兩者可以獨立運作,或者一個為主,另一個為輔。

      thanks,
      jeffrey

  10. 請問一下我是燒錄官方韌體檔的NodeMcu 但燒錄完輸入AT指令沒反應是怎麼回事?

    1. 通常是連線速率或行結尾設定要改,韌體的下載頁面應該會有說明。

      thanks,
      jeffrey

  11. 你好,我有一塊WiFi R3 ATmega328P+ESP8266,有把3個開關(5~7)切換到ON狀態,其餘切換到OFF,做完ESP8266 Sketch Data Upload後,有以下錯誤,要怎麼解決? 謝謝。

    Arduino: 1.8.10 (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”

    [SPIFFS] data : C:\Users\posen\AppData\Local\Temp\untitled1983436308.tmp\sketch_feb07a\data
    [SPIFFS] size : 64
    [SPIFFS] page : 256
    [SPIFFS] block : 4096
    [SPIFFS] upload : C:\Users\posen\AppData\Local\Temp\arduino_build_408217/sketch_feb07a.spiffs.bin
    [SPIFFS] address : 0xEB000
    [SPIFFS] reset : –before default_reset –after hard_reset
    [SPIFFS] port : COM3
    [SPIFFS] speed : 115200
    [SPIFFS] python : python.exe
    [SPIFFS] uploader : C:\Users\posen\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\tools\upload.py

    Python was not found; run without arguments to install from the Microsoft Store, or disable this shortcut from Settings > Manage App Execution Aliases.

    SPIFFS Upload failed!

    1. 錯誤訊息中的”Python was not found;”代表「找不到Python」,上傳檔案到SPIFFS的功能是用Python程式寫的upload.py,請到python.org網站下載並安裝Python。

      thanks,
      jeffrey

  12. 你好,我使用UNO+WiFi R3 ATmega328P+ESP8266控制板燒錄程時,有以下錯誤訊息,該如何解決? 謝謝。

    esptool.py v2.8
    Serial port COM3
    Connecting…….._____….._____….._____….._____….._____….._____…..____Traceback (most recent call last):
    File “C:\Users\posen\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4/tools/upload.py”, line 65, in
    esptool.main(cmdline)
    File “C:/Users/posen/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/posen/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

    1. 從錯誤訊息看來:燒錄程式找不到ESP8266,請確認有切換到ESP8266,或者上傳時按一下Reset。

      thanks,
      jeffrey

  13. 你好,Python安裝好後,重新執行ESP8266 Sketch data upload,有以下錯誤,該如何解決? 謝謝。

    Arduino: 1.8.10 (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”

    [SPIFFS] data : C:\Users\posen\Downloads\ESP8266_Wifi_Connection_Template\data
    [SPIFFS] size : 64
    [SPIFFS] page : 256
    [SPIFFS] block : 4096
    [SPIFFS] upload : C:\Users\posen\AppData\Local\Temp\arduino_build_643479/ESP8266_Wifi_Connection_Template.spiffs.bin
    [SPIFFS] address : 0xEB000
    [SPIFFS] reset : –before default_reset –after hard_reset
    [SPIFFS] port : COM3
    [SPIFFS] speed : 115200
    [SPIFFS] python : python.exe
    [SPIFFS] uploader : C:\Users\posen\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\tools\upload.py

    usage: esptool [-h] [–chip {auto,esp8266,esp32}] [–port PORT] [–baud BAUD]

    [–before {default_reset,no_reset,no_reset_no_sync}]

    [–after {hard_reset,soft_reset,no_reset}] [–no-stub]

    [–trace] [–override-vddsdio [{1.8V,1.9V,OFF}]]

    {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,version}

    esptool: error: unrecognized arguments: –end

    SPIFFS Upload failed!

  14. 你好,更新完ESP8266FS後,以下結果應該ESP8266 Sketch data有成功uploaded,有顯示ESP8266 Sketch data uploaded

    [SPIFFS] data : C:\Users\posen\Downloads\ESP8266_Wifi_Connection_Template\data
    [SPIFFS] size : 64
    [SPIFFS] page : 256
    [SPIFFS] block : 4096
    [SPIFFS] upload : C:\Users\posen\AppData\Local\Temp\arduino_build_863846/ESP8266_Wifi_Connection_Template.spiffs.bin
    [SPIFFS] address : 0xEB000
    [SPIFFS] reset : –before default_reset –after hard_reset
    [SPIFFS] port : COM3
    [SPIFFS] speed : 115200
    [SPIFFS] python : C:\Users\posen\AppData\Local\Arduino15\packages\esp8266\tools\python3\3.7.2-post1\python3.exe
    [SPIFFS] uploader : C:\Users\posen\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\tools\upload.py

    esptool.py v2.8

    Serial port COM3

    Connecting…….._____….._____….._____….._____….._____….._

    Chip is ESP8266EX

    Features: WiFi

    Crystal is 26MHz

    MAC: 5c:cf:7f:43:be:22

    Uploading stub…

    Running stub…

    Stub running…

    Configuring flash size…

    Auto-detected Flash size: 4MB

    Compressed 65536 bytes to 114…

    Writing at 0x000eb000… (100 %)
    Wrote 65536 bytes (114 compressed) at 0x000eb000 in 0.0 seconds (effective 32862.0 kbit/s)…

    Hash of data verified.

    Leaving…

    Hard resetting via RTS pin…

    但燒錄程式時,依舊有錯如下,連線時,按reset也沒反應,reset是按MCU Reset還是FSP Reboot?
    (DIP開關5、6是on,其餘off)
    (輸入AT+GMR和AT+CIFSR指令都有反應)
    Executable segment sizes:

    IROM : 315896 – code in flash (default or ICACHE_FLASH_ATTR)

    IRAM : 27300 / 32768 – code in IRAM (ICACHE_RAM_ATTR, ISRs…)

    DATA : 1256 ) – initialized variables (global, static) in RAM/HEAP

    RODATA : 1020 ) / 81920 – constants (global, static) in RAM/HEAP

    BSS : 25536 ) – zeroed variables (global, static) in RAM/HEAP

    Multiple libraries were found for “ESP8266WiFi.h”
    Used: C:\Users\posen\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\libraries\ESP8266WiFi
    Multiple libraries were found for “ESP8266WebServer.h”
    Used: C:\Users\posen\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\libraries\ESP8266WebServer
    Multiple libraries were found for “ESP8266mDNS.h”
    Used: C:\Users\posen\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\libraries\ESP8266mDNS
    Using library ESP8266WiFi at version 1.0 in folder: C:\Users\posen\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\libraries\ESP8266WiFi
    Using library ESP8266WebServer at version 1.0 in folder: C:\Users\posen\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\libraries\ESP8266WebServer
    Using library ESP8266mDNS at version 1.2 in folder: C:\Users\posen\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\libraries\ESP8266mDNS
    “C:\\Users\\posen\\AppData\\Local\\Arduino15\\packages\\esp8266\\tools\\xtensa-lx106-elf-gcc\\2.5.0-4-b40a506/bin/xtensa-lx106-elf-size” -A “C:\\Users\\posen\\AppData\\Local\\Temp\\arduino_build_698674/Test.ino.elf”
    Sketch uses 345472 bytes (36%) of program storage space. Maximum is 958448 bytes.
    Global variables use 27812 bytes (33%) of dynamic memory, leaving 54108 bytes for local variables. Maximum is 81920 bytes.
    C:\Users\posen\AppData\Local\Arduino15\packages\esp8266\tools\python3\3.7.2-post1/python3 C:\Users\posen\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4/tools/upload.py –chip esp8266 –port COM3 –baud 115200 –before default_reset –after hard_reset write_flash 0x0 C:\Users\posen\AppData\Local\Temp\arduino_build_698674/Test.ino.bin
    esptool.py v2.8
    Serial port COM3
    Connecting…….._____….._____….._____….._____….._____….._____…..____Traceback (most recent call last):
    File “C:\Users\posen\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4/tools/upload.py”, line 65, in
    esptool.main(cmdline)
    File “C:/Users/posen/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/posen/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
    以上錯誤需如何解決? 謝謝

    1. 剛才在Arduino IDE中測試燒錄ESP8266程式,並沒有出現異狀。

      我的步驟:

      1. 開關5, 6, 7沒有切到ON(其餘OFF)
      2. 開發板選擇Generic ESP8266 Module
      3. Flash Size選擇4MB
      4. Erase Flash選項選擇All Flash Contents
      5. 開始燒錄時,按一下Reset鍵

      thanks,
      jeffrey

  15. 你好,UNO+WiFi R3 ATmega328P+ESP8266控制板 Flash 8MB已按照上述步驟執行,但仍有錯。

    以下是我的測試條件:
    ESP8266 Sketch data有成功uploaded,有顯示ESP8266 Sketch data uploaded。

    韌體有成功uploaded。
    測試AT+GMR、AT+CIFSR皆可依序讀回
    1. 韌體版本
    AT version:1.7.4.0(May 11 2020 19:13:04)
    SDK version:3.0.4(9532ceb)
    compile time:May 27 2020 10:12:17
    Bin version(Wroom 02):1.7.4
    2. 位址
    +CIFSR:APIP,”192.168.4.1″
    +CIFSR:APMAC,”5e:cf:7f:43:be:22″

    無線網路有偵測到ESP-43BE22訊號

    1. 開關5, 6 (ON), 7 (OFF), (其餘OFF)
    2. 開發板選擇Generic ESP8266 Module
    3. Flash Size選擇4MB
    4. Erase Flash選項選擇All Flash Contents
    5. 開始燒錄時,按一下Reset鍵

    其中步驟3的4MB選項有 以下四選項,請問要選哪一個?
    1. (FS: None, OTA: 1019KB)
    2. (FS: 1MB, OTA: 1019KB)
    3. (FS: 2MB, OTA: 1019KB)
    4. (FS: 3MB, OTA: 512KB)

    開始燒錄時,按一下Reset鍵,仍舊沒反應並一樣有以下的錯。
    esptool.py v2.8
    Serial port COM3
    Connecting…….._____….._____….._____….._____….._____….._____…..____Traceback (most recent call last):
    File “C:\Users\posen\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4/tools/upload.py”, line 65, in
    esptool.main(cmdline)
    File “C:/Users/posen/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/posen/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

    1. 看了你第一次的留言,你的操作是把外部資料上傳到ESP8266的快閃記憶體,因此我以為你是要用ESP8266當作主控制器。

      看了上面的留言,才發現你只想把ESP8266當作Wi-Fi晶片來用,從ATmega328下AT命令操控ESP8266…

      這兩個是完全不同的操作模式欸…

      如果你要用AT模式控制ESP8266,就按照上文的說明操作就行了。

      如果你要存取ESP8266的SPIFFS分區,那就要把Arduino程式燒錄在EP8266裡面,而且你就不能用AT模式來操控它。

      thanks,
      jeffrey

  16. 老師您好:
    請教一下,原本使用固定ip的情況下,如果要改成DDNS的方式,需要準備哪些工程,才能正常交換抓取相關的資料呢?

    1. 你是指用AT命令連線嗎?很久沒用了,也不建議。
      直接在ESP8266上執行Arduno程式或MicroPython就好了。

  17. 老師您好
    我剛使用UNO+WiFi R3 ATmega328P+ESP8266這塊板子,我不太會使用這塊板子。我之前是使用WEMOS D1這塊板子,但是只有一個A0的腳位不夠用,所以才選擇使用UNO+WiFi R3 ATmega328P+ESP8266這塊板子。
    我把原來在WEMOS的程式下載到新的板子(ESP)裡面,wifi的功能是正常的,但是我A0的接腳卻讀不到感測器的電壓(是要接上拉電阻嗎?)。
    想詢問一下板子上A0~A6的接腳是由ATmega328p控制嗎? 所以我A0~A6讀到的值是要用什麼方式傳到ESP? 硬體線路該如何接?
    感謝指導。

    1. A0跟上拉電阻完全無關。

      把UNO當作類比輸入介面的話,可以再讀取類比資料後,透過I2C, SPI或UART序列連線傳遞給ESP8266。

      有無線連線和多個類比輸入腳的需求,建議直接購買ESP32系列微控器。

  18. 老師您好,
    目前使用這塊板子想請問個系統交握的部分,
    目前使用這個SoftwareSerial.h交握是正確的嗎?
    那ESP PINS 的RX與TX需要接到ATmega328p的RX與TX嗎?
    還是說只要把DIP的腳位1跟2設置ON其他OFF就可以呢?
    因為試了很多方式都沒辦法讓兩個系統順利通訊,
    請老師指導,謝謝~

    1. 把MCU+WiFi的開關切換到ON,其餘切到OFF,ATmega328板子的UART(預設的序列埠)就跟EP8266相連了。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top