Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

附錄 E 故障排除總表

電路不動、程式不跑,是這門課最正常的事。先別急著拆掉重接,照這張表從上往下找你的症狀。每一列都是「先查最簡單的,再查難的」。

開始找問題前,先做這三件事(八成的問題在這裡就解決了):

  1. 拔掉電源,用眼睛看一遍。 杜邦線有沒有插在麵包板同一排(五個孔一組)?LED 長短腳對嗎?電解電容正負對嗎?
  2. 用三用電表量 GND 到電源的電壓。 沒電壓就不用往下查電路了,先查電池、USB 線。
  3. 把程式裡最簡單的 Blink 燒一次。 板上 LED 會閃就代表板子和上傳都沒問題,問題在你的程式或接線。

E.1 電源、LED、被動元件

症狀可能原因怎麼檢查/解決相關章節
LED 完全不亮LED 接反(長腳要接電阻/正極那邊)把 LED 拔起來轉 180° 再插。1、8
LED 完全不亮迴路沒有閉合:杜邦線沒插到同一排、電阻腳沒插進去、GND 沒接回去用三用電表通斷檔(蜂鳴)從電源正極一路量到負極,哪一段不響就是哪一段斷了。1
LED 完全不亮電阻太大(例如拿到 100 kΩ 當 220 Ω)讀色碼或用 Ω 檔量。紅紅棕才是 220 Ω。2
LED 完全不亮(ESP32、藍/白 LED)3.3 V 減掉 LED 的 3.2 V 順向電壓後幾乎沒剩,推不亮換紅色或綠色 LED,或限流電阻改 68–100 Ω。8、16
LED 完全不亮(Arduino)程式腳位寫錯,或 pinMode 沒設成 OUTPUT檢查程式裡的 ledPin 數字和實際插的腳一不一樣;setup() 裡要有 pinMode(ledPin, OUTPUT)。12
LED 一閃就暗掉、或變很暗、聞到焦味沒接限流電阻,或電阻太小,LED 燒掉了LED 燒了就換一顆(它不會自己好)。接之前確認有 220 Ω 串聯。2、8
LED 很暗電阻太大、電池快沒電、並聯了太多 LED 分電流量 LED 兩端電壓:低於 1.8 V 就是電流不夠。換小一點的電阻(最小 150 Ω)或換電池。2、3、4
電阻發燙、變色、冒煙功率超過 1/4 W:電阻太小或電壓太高(例如 9 V 直接接 100 Ω 以下)立刻拔電源。用 P = V² ÷ R 算一次,超過 0.25 W 就要換大一點的電阻。附錄 B 有算例。4
電解電容鼓起來、噴液、爆開接反極性,或電壓超過耐壓拔電源,丟掉這顆(戴手套、不要碰到液體)。長腳是正極、有白色條紋那一側是負極。耐壓要大於電路電壓。5
電池一下子就沒電、摸起來燙短路:正負極直接相碰,或麵包板電源軌被一條線接通了拔掉電池。用通斷檔量電池扣的兩條線,會響就是短路。9 V 電池扣的兩個金屬頭很容易互碰。1、4
電池沒電用太久,或存放太久用三用電表直流 V 檔量:9 V 電池低於 7 V、3 號電池低於 1.2 V 就該換。量的時候最好接著負載。4
三用電表量不到電流電表要「串聯」進電路,不是「並聯」;或電表的保險絲燒了把迴路拆開一個缺口,電表的兩支棒接在缺口兩端。紅棒要插在 mA 孔不是 V 孔。1、2
三用電表量電阻讀值亂跳電阻還接在電路上,或你的手指同時摸到兩支棒把電阻拔起來單獨量,手不要碰金屬腳。2
麵包板接觸不良(時好時壞、碰一下就變)麵包板孔鬆了、杜邦線針頭彎了、元件腳太細換一排孔插;把杜邦線針頭弄直;電阻腳可以稍微折一下再插。老舊麵包板直接換。全書

E.2 電晶體、馬達、感測器、顯示器

症狀可能原因怎麼檢查/解決相關章節
馬達不轉電流不夠:直接接 Arduino 腳位(最多 20 mA)當然推不動馬達一定要經電晶體或 MOSFET,電源用電池盒或 5V 腳。9、14
馬達不轉電晶體腳位接錯(E-B-C 弄反)對照附錄 C 的腳位圖。用三用電表二極體檔找 B 腳。9
馬達不轉基極沒有電阻,或電阻太大B 腳要經 330 Ω–1 kΩ 接 Arduino。10 kΩ 以上電流不夠讓電晶體飽和。9
馬達不轉(MOSFET)用了 IRFZ44N 而不是 IRLZ44N;或 G 腳沒接 10 kΩ 下拉看元件上的印字。ESP32 的 3.3 V 只推得動 IRLZ 系列。9
馬達一轉 Arduino 就重開機、序列埠斷線馬達啟動電流把 5 V 拉垮;或沒接飛輪二極體,反電動勢打到板子馬達用獨立電池盒,只有 GND 和 Arduino 共接。馬達兩端並聯 1N4007(色環接正極)。7、9
伺服馬達抖動、嗡嗡叫、轉不到位電流不足:SG90 瞬間可以吃 500 mA 以上,Arduino 的 5V 腳撐不住伺服的紅線接 4 顆電池盒(6 V)或獨立 USB 5 V,棕線 GND 和 Arduino GND 接在一起,橘線接 D9。14
伺服馬達亂轉或不動訊號線接錯腳;程式沒有 myServo.attach(9)訊號線(橘/黃)接程式裡 attach 的那一腳。用示波器看 D9 有沒有 50 Hz 脈波(附錄 D)。14
繼電器一直喀喀響線圈電流讓電源電壓抖動,Arduino 跟著不穩繼電器模組的 VCC 接獨立 5 V,GND 共接。7、9
DHT11 讀到 nan 或 -999接線錯(VCC/DATA/GND 順序每家模組不同);讀太快;沒上拉電阻看模組上的印字再接。兩次讀取間隔至少 2 秒。裸件要加 4.7 kΩ–10 kΩ 上拉(DATA 到 VCC)。13、16
DHT11 讀到的數值不變、或明顯錯函式庫選錯型號(DHT22 vs DHT11)程式裡 #define DHTTYPE DHT11。13
光敏電阻讀值一直是 0 或 1023分壓器沒接對,變成直接接電源或直接接 GND光敏電阻和 10 kΩ 串聯在 5 V 和 GND 之間,A0 接「中間那一點」。13
OLED 沒畫面(全黑)I2C 位址錯:程式寫 0x3D 但模組是 0x3C(或相反)先跑 I2C 掃描程式(第 15 章)看到位址幾號,再改程式。15、16
OLED 沒畫面(全黑)SDA、SCL 接反UNO:SDA = A4、SCL = A5。ESP32:SDA = 21、SCL = 22。對調一下。15、16
OLED 沒畫面,摸起來燙VCC 和 GND 接反(有些模組前兩腳順序相反)立刻拔掉。看模組印字重接。燒掉的 OLED 通常救不回來。15
OLED 有畫面但只亮一半、或字疊在一起程式裡的解析度設錯(128×32 vs 128×64)本書的模組是 128×64,display 初始化的參數要對。16
蜂鳴器只有「嗒」一聲,不會發出音調買到有源蜂鳴器(Active),它不吃頻率要用無源(Passive)蜂鳴器。有源的通電就只會叫固定一個音。10
蜂鳴器完全沒聲音tone() 用在 ESP32 上(ESP32 沒有 tone())ESP32 用 ledcWriteTone(),第 14 章有範例。10、14、16

E.3 Arduino 與 ESP32

症狀可能原因怎麼檢查/解決相關章節
Arduino IDE 的連接埠選單是灰的、找不到 COM 埠USB 線只有充電功能;相容板的 CH340 驅動沒裝;USB 孔沒電換一條確定能傳資料的線。Windows 到裝置管理員看有沒有「未知裝置」,去 CH340 驅動網站下載安裝。macOS 新版通常免裝。12
上傳失敗:avrdude: stk500_recv(): programmer is not responding選錯連接埠或選錯板子;D0/D1 腳上有接東西工具 → 板子選 Arduino UNO,連接埠選有 Arduino 字樣的那個。把 D0、D1 上的線拔掉再上傳。12
上傳失敗:Access is denied / 連接埠被占用序列埠監控視窗、PulseView 或另一個 IDE 視窗還開著關掉其他正在用這個埠的程式,再上傳。12
程式編譯錯誤:‘xxx’ was not declared in this scope打錯字、大小寫錯、沒有 #include 函式庫、變數在用之前沒宣告看錯誤訊息的行號,去那一行。Arduino 分大小寫:digitalwrite 不等於 digitalWrite。12
序列埠監控視窗出現亂碼(方塊、問號、奇怪符號)監控視窗右下角的鮑率和程式 Serial.begin() 的數字不一樣兩邊都設 9600(或都設 115200)。ESP32 開機時會先用 115200 印一段開機訊息,那段是正常的亂碼。12、15
序列埠監控視窗什麼都沒印程式沒有 Serial.begin();選錯連接埠;板子一直在重開加 Serial.begin(9600)。看板上的 TX LED 有沒有閃,有閃就是有在送。12
ESP32 上傳卡在 Connecting…….._____…..板子沒進入燒錄模式看到 Connecting 時按住 BOOT 鍵不放,等開始上傳(出現 Writing at…)再放開。還是不行就按住 BOOT、按一下 EN、再放開 BOOT。16
ESP32 上傳失敗:A fatal error occurred: Failed to connect同上;或 USB 線不良;或 CP2102/CH340 驅動沒裝先換線,再裝驅動,再試 BOOT 鍵。16
ESP32 一直重開機,序列埠印 Brownout detector was triggered電壓不夠:USB 線太細、USB 孔供電弱、Wi-Fi 開啟瞬間電流拉太高換短一點粗一點的 USB 線;插電腦後面的 USB 孔;3V3 和 GND 之間並一顆 470 µF–1000 µF 電解電容;馬達、伺服改用獨立電源。16
ESP32 一直重開機,印 Guru Meditation Error程式當掉:通常是陣列越界、用到空指標、或 Wi-Fi 還沒連上就去用看錯誤訊息下面的 Backtrace;用 Serial.println 一步一步找是哪一行。16
ESP32 開機後完全沒反應、不印任何東西GPIO 12 開機時被拉 HIGH,或 GPIO 0 被拉 LOW把 GPIO 0、2、12、15 上的線拔掉再開機。16
ESP32 analogRead 一直回傳 0用到 ADC2 的腳位(0、2、4、12–15、25–27),Wi-Fi 開啟後它們不能用類比輸入改接 GPIO 32–39(本書用 34)。13、16
ESP32 腳位燒壞、讀值怪怪的給它輸入了 5 VESP32 腳位只能 3.3 V。5 V 感測器輸出要先用 10 kΩ + 20 kΩ 分壓再接。16
Wi-Fi 連不上(WiFi.status() 一直不是 WL_CONNECTED)SSID 或密碼打錯(大小寫、空格);Wi-Fi 是 5 GHz(ESP32 只支援 2.4 GHz);訊號太弱用手機熱點測試(記得開 2.4 GHz 相容模式)。SSID 和密碼用複製貼上。靠近路由器。16
Wi-Fi 連上了,但手機打不開網頁手機和 ESP32 不在同一個 Wi-Fi;IP 位址打錯;學校網路把裝置互相隔離序列埠印出的 IP 要和手機的網段一樣(例如都是 192.168.1.x)。用手機熱點最保險。16
按鈕按一下,Arduino 卻數成好幾次按鈕彈跳加 50 ms 延遲去抖動,或在按鈕兩端並 100 nF 電容。用示波器看彈跳(第 11 章)。11
按鈕沒按也亂觸發腳位浮接,沒有上拉或下拉電阻用 pinMode(buttonPin, INPUT_PULLUP),按鈕另一端接 GND。ESP32 的 34–39 沒有內建上拉,要外接 10 kΩ。11

E.4 示波器與邏輯分析儀

症狀可能原因怎麼檢查/解決相關章節
示波器畫面沒有波形、一條直線在 0 V通道沒打開;探棒沒接好;鱷魚夾沒夾 GND;電路本來就沒訊號按 CH1 鈕讓它亮;把探棒勾到 Probe Comp 看有沒有方波(有就是電路問題,沒有就是示波器或探棒問題)。6
示波器波形超出畫面、或壓成一條線V/div 太小或太大轉 Vertical Scale 讓波形占 3–6 格。按 Auto Set 重來。6
示波器波形左右亂跑、重疊、閃爍觸發準位在訊號範圍外;觸發來源選錯通道;模式在 Auto 卻沒抓到轉 Trigger Level 到訊號中間(5 V 訊號設 2.5 V);來源改成有訊號的那個通道;穩了之後改 Normal。6
示波器讀值剛好差 10 倍(5 V 顯示 0.5 V 或 50 V)探棒撥在 10× 但示波器通道設 1×,或相反探棒上的開關和 CH 選單裡的 Probe 設定要一致。本書統一用 10×。6
示波器量電池看到 0 V耦合設成 AC,直流被濾掉了CH 選單裡 Coupling 改 DC。6
示波器量 1 Hz Blink 看不到東西s/div 太小,一格才幾 ms,畫面裡只有一小段 HIGH 或 LOWs/div 轉到 200–500 ms;模式用 Auto。12
示波器抓不到尖波、彈跳這類一次性事件用 Auto 或 Normal 模式,畫面一直被後面的訊號蓋掉用 Single:設好準位和斜率,按 Single,再去觸發事件。7、11
示波器波形有一層毛毛的雜訊鱷魚夾接的 GND 離訊號太遠;探棒線繞到馬達旁邊;電路沒有去耦電容GND 夾離訊號點越近越好;電源腳旁邊並 100 nF 電容。6、10
示波器一接上去,電路就壞了或不動鱷魚夾夾到不是 GND 的地方,把那一點短路到地了鱷魚夾只能夾 GND。先接 GND 再勾訊號。6
邏輯分析儀每個通道都是全高或全低GND 沒接(最常見);通道接錯腳;取樣率太低先接 GND 再接訊號;取樣率至少是訊號的 4 倍。15
PulseView 找不到裝置Windows 驅動沒換成 WinUSB;USB 線只能充電用 Zadig 裝 WinUSB(附錄 D)。換線。15
UART 解碼出亂碼或一堆 Frame error鮑率設錯;取樣率不到鮑率的 4 倍;通道選到 RX 而不是 TX解碼器鮑率設和程式一樣(9600);取樣率 1 MHz;Arduino 的 TX 腳接到解碼器的 RX 欄位。15
I2C 解不到,或只有 Start 沒有位址取樣率不夠(100 kHz 的 I2C 要 1–2 MHz);SDA/SCL 選反取樣率改 2 MHz;解碼器設定裡 SCL/SDA 對調。15
邏輯分析儀擷取時間太短,看不到想看的事件取樣數太少取樣數加大到 1 M 以上,或取樣率降低(錄得比較久)。15
邏輯分析儀接上去之後電路變怪通道接到超過 5 V 的點,或接到反電動勢尖波邏輯分析儀只能接 0–5 V 的數位訊號。看尖波請用示波器。7、15

E.5 都查過了還是不行?

  1. 整個拆掉,從最簡單的開始重建。 先只接電源 + 電阻 + LED,亮了再加下一個元件。每加一個就測一次。
  2. 換一個元件試。 杜邦線、LED、電晶體都可能壞。用三用電表通斷檔量杜邦線兩頭。
  3. 換一塊麵包板、換一塊板子。 排除掉硬體本身的問題。
  4. 把接線畫成 ASCII 圖,程式印出來,拿給同學或老師看。 很多錯自己看十遍看不到,別人一眼就看到。
  5. 寫下來。 「我做了什麼 → 看到什麼 → 預期是什麼」。這就是除錯,也是專題報告裡最有價值的一段(第 17 章)。