本文旨在補充《超圖解物聯網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板的主要特色在於中間的「運作模式切換開關」(註:這種造型的開關元件,稱為DIP開關),透過此DIP開關可切換兩個微控器的UART介面的連接方式,如下圖所示;若DIP開關全設定成OFF,則ATmega328, ESP8266和CH340G序列通訊晶片都不相連。
美中不足之處是,原本位於Arduino Uno控制板右側的SPI排針,在UNO+WiFi R3板被挪到中間上方的位置,所以某些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:
使用Flash下載工具燒錄ESP8266韌體
Flash下載工具(Flash Download Tools)是晶片製造商樂鑫信息科技(上海)公司的官方燒錄工具(按此連結下載),可用於所有ESP8266系列控制板。另一款NodeMCU Flasher的性質跟它類似,但許多人都已改用官方工具。這裡講的「下載」,就是台灣人習慣說的「上傳到控制板」之意。
Flash下載工具無需安裝即可使用,但是它的所在路徑請不要包含中文,也就是不建議將Flash下載工具的應用程式資料夾(FLASH_DOWNLOAD_TOOLS)放在「桌面」或「下載」等位置,你可以將它存入隨身碟的根目錄。
Flash下載工具的操作畫面和燒錄步驟如下:
1. 直接雙按應用程式開啟它:
螢幕上將出現一個選單視窗和命令行視窗,燒錄完成之前,請勿關閉任一視窗。請按下ESP8266鈕,開啟ESP8266燒錄工具。
2. 按一下ESP8266 Download Tool:
燒錄工具上面的幾個欄位,用於指定韌體檔的位置,以及燒入ESP8266的位址。請在第一個欄位選擇.bin格式的韌體檔(如:Ai-Thinker_ESP8266_32Mbit_v1.5.4.1.bin),位址欄位請輸入0x00000,序列通訊速率(BAUD)可以選擇較快的速率,節省燒錄時間。其餘選項CrystalFreq(石英震盪頻率)、SPI SPEED(SPI介面速度)、SPI MODE(SPI模式)、FLASH SIZE(快閃記憶體大小)請依下圖設定:
測試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韌體溝通,本文使用Arduino IDE工具內建的「序列埠監控視窗」。
請先在Arduino IDE的主功能表「工具→序列埠」選單,選擇控制板所在的序列埠,再開啟「序列埠監控視窗」。把序列埠連接速率改成115200bps,再輸入AT+GMR命令(英文大寫),將能看到如下的韌體版本回應訊息:
請問老師,如果想使用外接天線時,則底板的PCB天線要如何處理,使其不連結至ESP8266?Thanks in advanced.
我不了解「不讓天線連結至ESP8266」的意思…外接天線直接接在板子上面的插座即可。
thanks,
jeffrey
不好意思,我沒有說清楚,因為之前看過
https://escapequotes.net/esp8266-d1-mini-pro-extenal-antenna/
我想此板如果要外接天線時,板載PCB的天線是不是也要處理不跟ESP8266連接?Thanks in advances.
感謝告知!
請看一下UNO+WiFi R3 ATmega328P+ESP8266, 32Mb flash, USB-TTL CH340G, Micro-USB這塊板子的電路圖,第2腳連接電阻後與天線相連。
用電錶測量ESP8266晶片的第2腳,的確是跟外接天線插座相連(如底下照片中的黃色線條),所以直接插入外接天線即可。
thanks,
jeffrey
謝謝老師提供資料及說明,剛剛又看下面網頁,http://www.ickey.cc/e/ask/detail/16793.html
心中又有問題,想看看老師想法: 板載PCB天線和IPEX外接介面天線,可以同時使用?Thanks in advances。
UNO+WiFi R3板那樣的天線設計,應該是取巧的做法,而且文件也沒有提到天線的建議長度;請參閱「偵測ESP8266的Wi-Fi RSSI(接收信號強度)的Arduino和MicroPython程式」這篇貼文,測試外接天線後的信號強度。
thanks,
jeffrey
請問我用這塊板子接SHT31溫濕度感應器 腳位接A4, A5 正版Arduino 可以正常顯示 為何這塊板子無法, 程式碼跟接角都一樣
感謝
Neo
請問你有在A4, A5腳各接一個1.8K左右的上拉電阻嗎?
thanks,
jeffrey
老師請問燒入的AT檔案在哪裡呢? 能跟我說在官方網站內的哪一個嗎? TKS!!
如內文提到的Ai-Thinker_ESP8266_32Mbit,請搜尋關鍵字,或者在安信可科技的「ESP8266最新SDK发布」網頁下載.bin格式檔案即可燒錄。
thanks,
jeffrey
1.請問一下,照著書做序列埠監控視窗沒有收到ESP8266的訊息,是出廠時候ESP8266沒有寫入韌體嗎?
2.關於安信可科技的「ESP8266最新SDK发布」網頁的「出厂默认AT固件」單元,網站好像進不去了。不去這邊下載韌體還有其它地方嗎?
謝謝大大
有可能是AT韌體版本不同的原因,我已將「出厂默认AT固件」上傳到Google雲端空間,請在此下載ESP8266 AT韌體。
thanks,
jeffrey
您好
我使用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
還請指點 感謝
我的MEGA2560板在使用中,無法測試。如果你手邊沒有其他Arduino板,可搭配USB轉序列埠板,連接藍牙板,再搭配序列埠測試軟體試試,例如這個串口調試助手。
thanks,
jeffrey
老師您好,想要請問一下若想要透過 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次可用)
你的需求可以透過在ESP8266上直接執行Arduino程式達成,ESP8266的WiFi程式庫有現成的範例:
https://github.com/esp8266/Arduino/blob/master/libraries/ESP8266WiFi/examples/HTTPSRequest/HTTPSRequest.ino
thanks,
jeffrey
老師您好,感謝您的解法!那我跟ESP8266 傳輸資料的方式是透過 wire.h嗎?
是的,ESP8266的網路通訊都是透過Wi-Fi。
thanks,
jeffrey
“是的,ESP8266的網路通訊都是透過Wi-Fi。”
老師您好,我的意思是說透過在ESP8266上直接執行Arduino程式達成之後,要把Arduino其他 sensor 的資料透過 ESP8266上傳到網路上的話,這邊的溝通(Arduino與ESP8266) 是透過 wire.h 完成的函示完成嗎?
拍謝看錯了,如果採用上文這塊板子,就如同內文說明,ESP8266和MEGA328之間採UART連線。
thanks,
jeffrey
請問老師,我的板子和老師同廠牌同款,也照著您的步驟燒錄完成
燒錄結束訊息” is stub and send flash finish”
指撥改回5.6 ON,再開啟「序列埠監控視窗」。把序列埠連接速率改成115200bps
但下指令AT+GMR後沒反應
是因為我有燒WIFISCAN到8266有關嗎?
請先清除整個韌體再燒錄。
thanks,
jeffrey
謝謝老師
所以AT指令的韌體和arduino程式
只能擇一囉?
還有這板子是否只要將程式燒到328中
8266只能燒AT指令
然後用328的程式去下AT指令去控制8266嗎?
謝謝老師
1. 一次只能燒錄一個韌體。
2. 兩者可以獨立運作,或者一個為主,另一個為輔。
thanks,
jeffrey
請問一下我是燒錄官方韌體檔的NodeMcu 但燒錄完輸入AT指令沒反應是怎麼回事?
通常是連線速率或行結尾設定要改,韌體的下載頁面應該會有說明。
thanks,
jeffrey
你好,我有一塊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!
錯誤訊息中的”Python was not found;”代表「找不到Python」,上傳檔案到SPIFFS的功能是用Python程式寫的upload.py,請到python.org網站下載並安裝Python。
thanks,
jeffrey
你好,我使用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
從錯誤訊息看來:燒錄程式找不到ESP8266,請確認有切換到ESP8266,或者上傳時按一下Reset。
thanks,
jeffrey
你好,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!
可能是SPIFFS上傳工具的bug,請到ESP8266FS網站下載最新版本,然後依照《在ESP8266的SPIFFS檔案系統存放網頁檔案(一)》貼文的說明安裝。
thanks,
jeffrey
你好,更新完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
以上錯誤需如何解決? 謝謝
我改天試試。
thanks,
jeffrey
你好,請問有試了嗎? 謝謝
剛才在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
你好,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
看了你第一次的留言,你的操作是把外部資料上傳到ESP8266的快閃記憶體,因此我以為你是要用ESP8266當作主控制器。
看了上面的留言,才發現你只想把ESP8266當作Wi-Fi晶片來用,從ATmega328下AT命令操控ESP8266…
這兩個是完全不同的操作模式欸…
如果你要用AT模式控制ESP8266,就按照上文的說明操作就行了。
如果你要存取ESP8266的SPIFFS分區,那就要把Arduino程式燒錄在EP8266裡面,而且你就不能用AT模式來操控它。
thanks,
jeffrey
老師您好:
請教一下,原本使用固定ip的情況下,如果要改成DDNS的方式,需要準備哪些工程,才能正常交換抓取相關的資料呢?
你是指用AT命令連線嗎?很久沒用了,也不建議。
直接在ESP8266上執行Arduno程式或MicroPython就好了。
老師您好
我剛使用UNO+WiFi R3 ATmega328P+ESP8266這塊板子,我不太會使用這塊板子。我之前是使用WEMOS D1這塊板子,但是只有一個A0的腳位不夠用,所以才選擇使用UNO+WiFi R3 ATmega328P+ESP8266這塊板子。
我把原來在WEMOS的程式下載到新的板子(ESP)裡面,wifi的功能是正常的,但是我A0的接腳卻讀不到感測器的電壓(是要接上拉電阻嗎?)。
想詢問一下板子上A0~A6的接腳是由ATmega328p控制嗎? 所以我A0~A6讀到的值是要用什麼方式傳到ESP? 硬體線路該如何接?
感謝指導。
A0跟上拉電阻完全無關。
把UNO當作類比輸入介面的話,可以再讀取類比資料後,透過I2C, SPI或UART序列連線傳遞給ESP8266。
有無線連線和多個類比輸入腳的需求,建議直接購買ESP32系列微控器。
老師您好,
目前使用這塊板子想請問個系統交握的部分,
目前使用這個SoftwareSerial.h交握是正確的嗎?
那ESP PINS 的RX與TX需要接到ATmega328p的RX與TX嗎?
還是說只要把DIP的腳位1跟2設置ON其他OFF就可以呢?
因為試了很多方式都沒辦法讓兩個系統順利通訊,
請老師指導,謝謝~
把MCU+WiFi的開關切換到ON,其餘切到OFF,ATmega328板子的UART(預設的序列埠)就跟EP8266相連了。