
ESP8266-01S 是一塊很小的 WiFi 模塊卻經常讓新手卡在第一步想用 Arduino IDE 給它編譯燒錄程序結果打開 IDE 才發現里面根本沒有 ESP8266 這個開發板選項。你寫好了代碼找不到板卡接上了 USB 轉串口找不到 COM 口哪怕好不容易選好了開發板上傳時也可能一直卡在連接等待。這不是模塊壞了多半是軟件環境、驅動和啟動模式沒有準備好。這篇教程就圍繞 ESP8266-01S 在 Arduino IDE 下的編譯燒錄環境搭建展開從 Arduino IDE 安裝、開發板支持包添加、串口驅動、板卡參數選擇到最小樣例燒錄和常見報錯排查完整走一遍。適合第一次接觸 ESP-01S、手頭只有模塊和 USB 轉串口、想先把環境跑通再去做物聯網小項目的讀者。先把這一步走穩后面連 WiFi、MQTT 上云、遠程控制才有基礎。1. 先認清 ESP-01S 的硬件角色它不能直接插 USB 燒錄很多新手默認模塊和開發板一樣插上 USB 線就能燒錄。ESP-01S 不是這樣。它是一塊“模塊”不是“開發板”沒有板載 USB 轉串口沒有穩壓芯片也沒有自動下載電路。你要做的是先從硬件上把燒錄環境補齊否則后面所有軟件設置都是白搭。1.1 模塊和開發板差在哪里常見的 NodeMCU、D1 Mini 這類開發板把 USB 接口、電源管理、串口芯片、按鍵、LED 都集成到一起了。插上 USB 線電腦能識別Arduino IDE 直接選對端口就能燒錄因為板子上已經做好了自動復位和下載控制。ESP-01S 只有 8 個引腳核心器件就是 ESP8266 芯片、Flash 存儲、一個板載藍色 LED、天線和少量電阻電容。它沒有 USB 口所以你想燒錄必須自己提供3.3V 電源USB 轉 TTL 串口模塊讓模塊進入“燒錄模式”的引腳控制這也是為什么很多人第一次用 ESP-01S 時明明代碼沒問題卻始終連接不上。問題不是代碼是模塊壓根沒有進入接收固件的狀態。1.2 準備一份最基礎的硬件清單在開始裝軟件之前先把手上的硬件理清楚。按推薦程度排序ESP-01S 模塊一塊最好帶排針焊接版調試起來不方便。USB 轉串口模塊芯片常見的是 CH340、CP2102、FT232。CH340 最常見也最便宜CP2102 穩定性通常更好。買的時候注意最好有 3.3V 輸出引腳并且有跳線能切到 3.3V。杜邦線母對母為主用來連接串口模塊和 ESP-01S。面包板不是必須但調試時很實用。模塊引腳間距小直接在桌面上接線容易松動。獨立 3.3V 電源或帶 3.3V 輸出的模塊用來給 ESP-01S 供電。USB 轉串口板上的 3.3V 輸出也能用但有些電流不大后面會遇到供電不足的問題。如果你不想自己慢慢接 GPIO0、復位這些信號線可以考慮買一個 ESP-01S 專用下載底座。這種底座類似一個轉接板把模塊插上去USB 轉串口模塊連到底座的 TX、RX、3.3V、GND 上就行有的底座還帶 DTR/RTS 自動復位能直接控制 GPIO0燒錄體驗會好很多。1.3 關于 3.3V 和 5VESP8266 的 GPIO 不會輸出 5V搜索記錄里會看到“ESP8266 怎么輸出 5V”這類問題這里先說明白。ESP8266 是 3.3V 邏輯器件VCC 要接 3.3V不能直接接 5V。它的 GPIO 輸出高電平是 3.3V 左右不是 5V。如果你想讓 ESP-01S 去控制一個 5V 繼電器或者 5V 邏輯的外設不能直接把 GPIO 接到對方模塊上一般要用三極管、MOS 管、光耦或者電平轉換電路。反過來也一樣如果某個傳感器輸出 5V 信號要接 ESP8266 的 GPIO也需要做電平轉換不能硬接。這類問題不是軟件能解決的屬于硬件設計邊界先有這個概念后面燒錄和接外設時會少踩很多坑。2. 安裝 Arduino IDE下載、首選項、添加 ESP8266 支持包硬件搞清楚了接下來裝軟件。ESP-01S 的編譯燒錄主要流程是用 Arduino IDE 寫代碼通過 ESP8266 開發板支持包編譯成固件再通過串口燒錄到模塊里。所以 Arduino IDE 只是殼真正干活的是后面的 ESP8266 支持包。2.1 IDE 安裝時不要踩的幾個小坑去 Arduino 官網下載安裝包新手不要用來路不明的“一鍵整合包”也不建議一上來就裝 Beta 測試版。穩定版就行2.x 或 1.8.x 都可以。如果你以后要裝很多擴展庫2.x 的界面現代一些如果電腦配置一般1.8.x 更輕量。安裝時注意幾點安裝路徑不要帶中文以后會少很多莫名其妙的路徑報錯。安裝過程中殺毒軟件如果有提示先確認來源是官網再放行。打開后如果界面是英文可以在 File - Preferences 里把語言調成中文或其他你熟悉的語言但菜單關鍵詞要能對應上。安裝完成后先打開一次 Arduino IDE。第一次啟動會花一點點時間因為要初始化本機配置目錄。這個目錄后面會存開發板支持包和庫文件所以要保證用戶目錄有寫入權限。2.2 在開發板管理器里添加 ESP8266 索引Arduino IDE 新安裝時自帶的開發板列表里沒有 ESP8266。你需要手動添加一個“開發板管理器網址”讓 IDE 知道去哪里拉取 ESP8266 支持包。打開 Arduino IDE 后點擊菜單 File - Preferences如果已經是中文界面就是 文件 - 首選項。找到 Additional boards manager URLs中文界面叫“附加開發板管理器網址”。填入下面的地址http://arduino.esp8266.com/stable/package_esp8266com_index.json然后點擊確認再打開 Tools - Board - Boards Manager中文界面是 工具 - 開發板 - 開發板管理器。在搜索框里輸入 esp8266應該會出現 esp8266 by ESP8266 Community。點擊 Install等待安裝完成。這一步是整個環境搭建的核心。ESP8266 支持包不裝后面你在開發板列表里永遠找不到 Generic ESP8266 Module也編譯不了任何 ESP8266 代碼。支持包體積不小安裝過程會下載工具鏈、編譯器、燒錄工具等可能需要幾分鐘耐心等待不要中途關 IDE 或斷電。2.3 常見 Linux 和國產系統下的安裝方式Windows 用得最多macOS 也類似。如果用的是銀河麒麟這類國產 Linux 系統安裝思路和 Ubuntu/Debian 系比較接近??梢缘?Arduino 官網下載 Linux 版本壓縮包解壓后進入目錄運行 install.sh或者直接雙擊可執行文件啟動。串口設備如果沒權限當前用戶一般需要加入 dialout 組sudo usermod -a -G dialout $USER改完用戶組后要重新登錄串口才會生效。不過第一次學 ESP-01S我更建議先用 Windows 跑通整套流程。Windows 下驅動、端口、開發板管理相對直觀等熟悉一遍后再換到 Linux 上折騰驅動和權限會輕松很多。如果在國產系統上同時處理驅動、支持包安裝、編譯權限問題疊加在一起很容易分不清是哪個環節出錯。3. 把 USB 轉串口驅動裝好確認 COM 口支持包裝好后下一個卡點通常是串口。因為你用 Arduino IDE 燒錄時要通過 USB 轉串口模塊和電腦通信。如果電腦識別不到這個模塊IDE 的端口列表里就是空的。3.1 先判斷你手里是哪顆轉串口芯片市面上的 USB 轉串口模塊常見這幾類芯片型號常見特征驅動情況CH340價格便宜最常見Windows 一般手動裝部分系統自動識別CP2102Silicon Labs 芯片穩定性不錯需要裝官方驅動FT232老牌芯片兼容性好驅動成熟價格稍貴判斷方法很簡單看板子上的主控芯片絲印。如果絲印被貼紙擋住可以接上電腦后打開設備管理器看它提示什么。如果是 CH340Windows 10/11 有時候能自動識別有時候需要手動裝驅動。CP2102 則基本要裝 Silicon Labs 的 CP210x 驅動。驅動的來源優先選芯片廠商官網或可信的開發板商家提供的版本不要從陌生網站下載“萬能驅動”。裝完驅動后重新插拔一次 USB 線。模塊板載的 LED 如果通電會亮說明供電正常。注意有些 USB 轉串口板上有 3.3V/5V 跳線使用 ESP-01S 時一定要確認輸出是 3.3V。插到 5V 檔位ESPT-01S 大概率會燒。3.2 Windows 下確認端口和驅動狀態接好 USB 轉串口模塊后在 Windows 上按 Win X選擇設備管理器展開“端口(COM 和 LPT)”正常情況下會看到一個 COM 口例如 COM3、COM5、COM7。如果看到的設備帶黃色感嘆號說明驅動有問題右鍵選擇更新驅動然后手動選擇驅動目錄或重新安裝對應芯片驅動。如果設備管理器里完全沒有任何新設備先換一根 USB 數據線很多線只支持充電不支持數據通信。再看一下插的是不是電腦直連的 USB 口機箱前面板或 USB Hub 有時候供電不穩定也會導致識別異常。記下這個 COM 口編號后面 Arduino IDE 里要選。3.3 串口權限和端口沖突Windows 下同一個 COM 口不能同時被兩個程序占用。燒錄時先關掉串口監視器、串口調試助手等工具否則會提示端口被占用或連接失敗。Linux 下比較常見的是設備節點存在但沒有權限比如 /dev/ttyUSB0 存在Arduino IDE 里也能看到但一上傳就返回權限錯誤。解決辦法就是前面說的加入 dialout 組然后重新登錄。更保險的做法是臨時用 chmod 命令給設備節點加讀寫權限但那只對當前啟動的會話有效重啟后大概率要重新設置。4. 第一次編譯燒錄接線、選板、點燈軟件環境準備到這里先不要急著寫復雜功能。第一次燒錄的目標只有一個讓 ESP-01S 的板載 LED 亮起來。這個目標足夠短能最快驗證你的接線、驅動、開發板參數、燒錄模式是不是都正確。4.1 最小燒錄接線圖把 USB 轉串口模塊和 ESP-01S 按下面對應關系接線USB 轉串口模塊ESP-01S3.3VVCCGNDGNDTXRXGPIO3RXTXGPIO13.3V或單獨電源CH_PD / ENGNDGPIO0注意 TX 和 RX 要交叉。串口模塊的 TX 接 ESP-01S 的 RX串口模塊的 RX 接 ESP-01S 的 TX。很多新手把 TX 接 TX、RX 接 RX燒錄當然失敗。CH_PD 也叫 EN是芯片使能腳必須接高電平通常接 3.3V。GPIO0 在燒錄時必須接 GND讓模塊進入 UART 下載模式。燒錄完成后要把 GPIO0 從 GND 斷開再手動復位模塊程序才會正常啟動運行。如果用的是帶 DTR/RTS 控制的專用 ESP-01S 下載底座GPIO0 和 RST 通常會被自動控制燒錄體驗和普通開發板差不多這里主要說不帶自動下載的接線方式因為這種方式最容易理解模塊原理。注意GPIO0 在燒錄時接地不是運行程序時接地。燒錄完不復位、不把 GPIO0 拉高模塊只會停在下載狀態不會跑你的代碼。4.2 在 Arduino IDE 里選對開發板和參數打開 Arduino IDE先把開發板選成 Generic ESP8266 Module路徑一般是Tools - Board - ESP8266 Boards - Generic ESP8266 Module中文界面就是 工具 - 開發板 - ESP8266 開發板 - Generic ESP8266 Module。然后修改幾個關鍵參數參數推薦值說明Flash Size1M (512K SPIFFS)ESP-01S 常見 1MB FlashFlash ModeQIO失敗再改 DIO和 Flash 顆粒有關Upload Speed115200失敗再降 57600 或 9600降低速度能提高穩定性Port選你設備管理器里看到的 COM 口不選端口無法上傳CPU Frequency 先保持默認不需要為了點燈去調整。Flash Size 為什么不能隨手設置因為 ESP8266 會根據 Flash 大小把一部分空間劃分給程序另一部分給 SPIFFS 文件系統。如果你選的 Flash 大小比模塊實際容量大燒錄時可能檢測失敗選太小雖然能燒但以后寫復雜項目時空間不夠??梢韵冗x 1M遇到編譯提示空間不足再根據模塊上的 Flash 型號來調整。4.3 寫一個最簡單的點燈程序ESP-01S 板載的 LED 通常接在 GPIO1也就是 TX 引腳上而且低電平點亮。不同批次模塊可能略有差異有的模塊絲印會標 GPIO1 或 GPIO2。先用 GPIO1 試#define LED_PIN 1 void setup() { pinMode(LED_PIN, OUTPUT); } void loop() { digitalWrite(LED_PIN, LOW); delay(500); digitalWrite(LED_PIN, HIGH); delay(500); }如果燒錄后 LED 沒有閃爍再改成 GPIO2 試試也可以直接觀察模塊上的絲印說明。這個程序不涉及串口打印所以先把 TX 引腳當普通 IO 用問題不大但你要知道 GPIO1 本身也是串口 TX之后如果用 Serial 打印可能會和這個 LED 引腳功能沖突。4.4 怎么判斷燒錄成功點擊 Upload 按鈕后Arduino IDE 底部狀態欄會出現編譯信息然后開始上傳。正常過程大致是編譯耗時十幾秒到幾十秒。出現 Connecting........_____ 之類的提示。日志中出現上傳進度條或 esptool 輸出。最后出現 Hard resetting via RTS pin...??吹?Hard resetting基本說明燒錄流程已經走完。這時把 GPIO0 和 GND 斷開按一下 RST 復位板載 LED 應該開始以 0.5 秒間隔閃爍。如果 LED 不閃優先檢查兩件事GPIO0 是不是還接著 GND。程序里的引腳是不是和你的模塊板載 LED 實際引腳一致。5. 燒錄失敗的排查從日志倒推問題不要盲目改參數第一次燒錄很少一次成功。這里把最常見的失敗現象和排查順序整理出來。遇到問題先從日志看再按硬件、參數、環境逐層定位不要上來就亂改 Flash Size 或波特率。5.1 最典型的連接失敗日志上傳時最常看到的是這類提示warning: serial console is disabled A fatal error occurred: Failed to connect to ESP8266: Timed out waiting for packet header看到 Timed out waiting for packet header說明 esptool 已經打開串口但是始終收不到模塊的正確響應??赡艿脑蛴泻芏嗖灰欢⒅安ㄌ芈什粔虻汀边@一項。按出現概率排通常是這幾類故障方向優先檢查內容常見原因硬件接線TX/RX 是否交叉、GPIO0 是否接地、CH_PD 是否接 3.3V接線錯誤占大多數供電模塊是否用 3.3V電流是否足夠用 5V 或電流不夠導致芯片不啟動驅動和端口設備管理器是否識別 COM 口端口是否被占用驅動沒裝好或串口被其他程序占用燒錄時序手動復位時 GPIO0 是否保持低電平上電時序不對導致沒進入下載模式參數設置Flash Mode、Upload Speed部分模塊對 QIO 或高波特率不兼容5.2 按這個順序排查硬件和接線如果一直連接不上我一般會按下面順序做而不是先改參數斷開模塊所有連線重新按最小接線接一遍重點確認 TX/RX 交叉。用萬用表確認 VCC 和 CH_PD 都是 3.3VGND 和串口模塊是同一個地。把 GPIO0 明確接到 GND然后再給串口模塊通電或者給模塊 RST 引腳碰一下 GND 手動復位。檢查設備管理器里 COM 口還在不在端口有沒有被串口監視器占用。如果還是失敗再考慮把上傳波特率降到 57600 或 9600Flash Mode 從 QIO 改成 DIO。不要一上來就瘋狂點 Upload失敗一次就重新插拔一次 USB這樣很難定位問題。建議每次改一個變量改完再試別同時改接線、改參數、換電腦否則你根本不知道是哪一步生效的。5.3 參數層面常改的只有這幾項如果你已經確認硬件接線沒問題上報錯依然存在再動這些參數Flash ModeQIO 改 DIO。有些 ESP-01S 的 Flash 顆粒對 QIO 模式支持不完整DIO 更保險。Upload Speed115200 改 57600再不行改 9600。速度越低對線路質量要求越低如果杜邦線太長高速率很容易失敗。Flash Size確認模塊實際 Flash 容量。ESP-01S 常見 1MB但返修板、二手板、不同批次可能不一樣。如果燒錄時提示 Flash 型號或容量不匹配需要根據顆粒型號調整。這幾項都試過還是失敗先把串口轉接板單獨用一根線短接它的 TX 和 RX用串口調試助手發數據看看能不能收到回顯。如果連回顯都沒有說明串口模塊本身就有問題別讓 ESP-01S 背鍋。5.4 燒錄成功但程序沒跑怎么辦“燒錄成功”和“程序正確運行”是兩回事。如果日志顯示燒錄完成但模塊沒有任何反應排查順序是GPIO0 是否已經恢復為高電平也就是斷開與 GND 的連接。RST 引腳是否正常。ESP-01S 的 RST 應該接上拉到 3.3V不能懸空。CH_PD/EN 是否穩定為 3.3V如果這個腳被拉低芯片不會工作。供電電流是否夠。ESP8266 在射頻啟動瞬間電流會明顯升高如果只用 USB 轉串口板上很弱的 3.3V 輸出程序可能跑到一半就復位。程序里的引腳是否和板載 LED 一致。排查時可以接一個 USB 轉串口到串口監視器燒錄時如果想看打印輸出串口波特率要和你代碼里 Serial.begin 的值一致否則看到的全是亂碼。如果代碼里沒有用 Serial那就先不要接串口監視器把注意力放在硬件基礎狀態上。6. 下一步想清楚從點燈到 WiFi 聯網、MQTT 上云環境搭好、點燈跑通以后你的 ESP-01S 已經具備繼續學習的基礎能力。這時候不要急著寫復雜的智能家居項目先把 ESP8266 的 WiFi 功能驗證一下再逐步加協議和云端。6.1 先用 WiFi 掃描驗證模塊射頻寫一個最簡單的 WiFi 掃描程序確認射頻部分正常#include ESP8266WiFi.h void setup() { Serial.begin(115200); WiFi.mode(WIFI_STA); WiFi.disconnect(); delay(100); } void loop() { int n WiFi.scanNetworks(); Serial.println(scan done); for (int i 0; i n; i) { Serial.print(i 1); Serial.print(: ); Serial.println(WiFi.SSID(i)); } delay(3000); }燒錄完成后打開串口監視器波特率選 115200如果能看到附近 WiFi 列表說明模塊的射頻和天線都沒問題。接下來可以試連接路由器、做 HTTP 請求、用 MQTT 協議連接阿里云或其他平臺。這條路慢慢走一步一步來。每加一個功能都新建一個測試工程不要在一個例程里塞上十個庫否則出了問題很難定位。6.2 環境搭好后的幾個好習慣工具鏈一旦穩定最好固定下來不要頻繁換 IDE 版本或支持包版本。每次升級開發板支持包都可能導致原有工程的 Flash 參數或編譯結果發生變化。項目保存目錄不要用中文和空格尤其是 Windows 下Arduino IDE 對中文路徑偶爾會出問題。每次拿到一塊新模塊先記錄它的 COM 口、Flash Size、Flash Mode燒錄順利后就把這幾個參數抄下來下次遇到同型號模塊直接照用。還有個習慣建議寫完代碼先點 Verify 編譯一遍確認沒有編譯錯誤再接燒錄。編譯錯誤和燒錄錯誤是兩類問題混在一起排查會讓你很累。6.3 固件燒錄工具的另外選擇如果你只是想給 ESP-01S 刷現成固件比如 AT 固件、MicroPython 固件不一定要用完整的 Arduino IDE。這時用 esptool 命令行或圖形化的 flasher 工具更直接。esptool 本來也是 Arduino IDE 支持包底層使用的燒錄工具它能完成擦除 Flash、燒寫指定地址固件等操作。場景推薦方式說明自己寫代碼編譯Arduino IDE ESP8266 支持包上手快適合學習刷現成固件esptool / 圖形化 flasher無需編譯直接寫二進制大型工程開發PlatformIO VS Code工程管理更強適合多文件項目但不管用哪種方式GPIO0 接地進入下載模式、3.3V 供電、TX/RX 交叉接這幾個核心概念是一樣的?;A環境搭好后換工具只是換個使用習慣的問題。把這一套流程走通ESP-01S 就不再是你看不懂的黑盒子。之后再做遠程開關、傳感器上報、小屏顯示、MQTT 上云這些項目你會發現自己最大的阻力不是某個具體功能而是最初這套編譯燒錄環境有沒有被徹底梳理清楚。先跑穩最小樣例后面寫再大工程都踏實。