mBlock / Arduino IDE com port 的問題

有 朋 友 問 ,在 上 傳 Arduino 程 式 時 遇 到 com port 的 問 題 ,問 我 怎 麼 解 決 ?

通 常 在 mBlock / Arduino IDE 見 到 的 錯 誤 訊 息 有 以 下 幾 種 :

1
2
3
avrdude: ser_open(): can't open device "COM1" : No such file or directory.
avrdude: ser_open(): can't open device "\\.\COM3": Access is denied.
avrdude: ser_open(): can't open device "\\.\COM3": The semaphore timeout period has expired

其 實 mBlock / Arduino IDE 在 上 傳 程 式 時 都 有 幾 個 步 驟 ,依 次 序 是 :
1. 在 電 腦 上 compile program,變 成 一 個 bin 檔 。
2. 將 bin 檔 上 傳 到 Arduino 的 flash memory ( 經 USB 線 )。
3. Arduino 會 reboot,新 程 式 開 始 執 行 。

上 面 那 些 com port 的 問 題 ,都 是 在 第 2 步 時 出 現 的 。好 多 時 朋 友 都 在 問 ,係 唔 係 我 個 乜 乜 sensor 唔 得 ?係 唔 係 sensor 壞 左 ?其 實 程 式 都 未 上 傳 到 去 你 個 Arduino 度 ,所 以 實 在 談 不 上 究 竟 你 的 sensor 有 壞 定 無 壞 。

遇 到 com port 的 error,可 以 嘗 試 以 下 方 法 去 解 決 ( 接 常 見 度 來 排 序 ):

1. 安 裝 Arduino 的 USB driver:
Arduino 主 板 上 面 ,都 會 有 一 粒 USB to Serial port 的 晶 片 ,去 模 擬 一 個 com port 出 來 。如 果 未 安 裝 好 driver,電 腦 上 就 會 見 不 到 正 確 的 com port,於 是 上 傳 時 就 會 發 生 問 題 。

2. 選 擇 正 確 的 com port:
不 管 是 mBlock 還 是 Arduino IDE,你 都 要 自 己 去 選 擇 Arduino 所 連 接 的 com port 的 。如 果 你 的 Arduino 明 明 插 了 在 COM4,你 自 己 卻 選 錯 了 COM1,那 上 傳 時 就 自 然 出 錯 。

3. 選 擇 正 確 的 Arduino 主 板 型 號 :
不 同 的 Arduino 主 板 ,所 使 用 的 通 訊 方 式 並 不 一 樣 ( bootloader 不 一 樣 )。所 以 如 果 你 在 mBlock 或 者 Arduino IDE 選 錯 了 Arduino 主 板 型 號 ,在 上 傳 時 便 會 出 錯 。個 別 型 號 的 主 板 ,例 如 Arduino NANO,更 有 新 舊 不 同 的 bootloader,選 錯 了 亦 會 不 能 上 傳 。

4. com port 被 其 他 程 式 佔 用 :
一 個 com port 同 一 時 間 只 能 被 一 個 程 式 獨 佔 ,所 以 如 果 你 的 com port 被 其 他 程 式 佔 用 時 ,mBlock / Arduino IDE 想 使 用 時 就 會 發 生 錯 誤 。這 很 常 見 於 我 們 打 開 了 Arduino IDE 的 serial monitor 去 除 錯 時 卻 又 忘 記 關 上 ,在 再 次 上 傳 程 式 時 就 會 發 生 錯 誤 。另 外 ,一 些 3D Printer 的 控 制 程 式 或 者 切 片 軟 件 ,也 會 佔 用 com port ( 例 如 CURA )。遇 到 這 種 情 況 一 般 只 要 關 上 佔 用 com port 的 程 式 即 可 。

5. com port 被 其 他 硬 件 佔 用 / 共 用 :
這 常 見 於 使 用 外 置 USB hub 來 連 接 Arduino 的 情 況 。一 般 我 們 都 不 建 設 使 用 外 置 USB hub 來 接 駁 Arduino。如 果 你 的 Arduino 已 經 直 接 插 在 電 腦 上 ,也 可 以 嘗 試 換 另 一 個 USB port 來 試 試 。可 以 的 話 ,最 好 將 Arduino 直 接 插 到 電 腦 主 板 上 的 USB port。

6. 重 啟 電 腦 :
有 時 USB port 會 被 不 明 的 程 式 佔 用 ,也 許 是 某 個 當 掉 了 的 程 式 也 說 不 定 。這 時 重 啟 電 腦 就 可 以 把 被 佔 用 的 USB port 釋 放 出 來 。

7. 沒 有 bootloader 程 式 :
Arduino 的 flash memory 上 有 一 段 小 程 式 ,叫 bootloader,就 是 專 門 用 來 做 USB 上 傳 的 。但 有 極 少 數 的 應 用 ,會 把 bootloader 刪 除 掉 以 增 加 儲 存 空 間 ( 例 如 某 些 3D printer 的 firmware )。缺 失 bootloader 的 Arduino 主 板 ,上 傳 程 式 時 就 會 發 生 錯 誤 。bootloader 可 以 通 過 一 些 特 殊 的 方 法 ( 不 經 USB ) 燒 錄 到 Arduino 主 板 。

8. Digital Pin 0 和 1:
Arduino 的 serial communication 用 的 就 是 Pin 0 和 Pin 1,所 以 它 們 又 叫 RX, TX。所 以 如 果 我 們 把 感 應 器 接 駁 在 Pin 0 和 Pin 1,就 有 機 會 影 響 到 com port 通 訊 ,造 成 不 能 上 傳 的 結 果 。所 以 在 全 世 界 的 Arduino 教 學 ,都 甚 少 有 人 教 你 把 sensor 接 駁 到 Pin 0 和 Pin 1 的 。

ctleung張 先 生 ,男 性 ,肖 龍 。
職 業 :I.T. Consultant
簡 介 :不 好 好 讀 書 ;七 尺 差 五 寸 ,手 長 過 膝 ,雙 耳 垂 肩 ;性 寬 和 ,寡 言 語 ,喜 怒 不 形 於 色 。據 說 少 時 曾 斬 白 蛇 於 鳳 凰 山 下 ……

我 的 STEM Project 系 列

我 的 Stem Project (一 ) Raspberry Pi 3 vs Arduino UNO
我 的 Stem Project (二 ) 使 用 Scratch 來 控 制 Arduino UNO
我 的 Stem Project (三 ) 使 用 Push Button 來 做 Input
我 的 Stem Project (四 ) Push Button 進 階 一 點 的 用 法
如 何 購 買 Arduino ?( STEM project )
我 的 Stem Project (五 ) 考 反 應 小 遊 戲
我 的 Stem Project (六 ) 用 Arduino 控 制 7 segment display (基 礎 篇 )
我 的 Stem Project (七 ) 用 Arduino 控 制 7 segment display ( 進 階 篇 )
我 的 Stem Project (八 ) 用 Arduino 控 制 7 segment display ( 簡 化 篇 )
我 的 Stem Project (九 ) 用 Arduino 控 制 Buzzer 唱 歌
我 的 Stem Project (十 ) Arduino Multi-function Shield using Scratch (1)
自 己 動 手 做 一 個 Arduino Shield ( STEM project )
我 的 Stem Project (十 一 ) Arduino Multi-function Shield using Scratch (2)
我 的 Stem Project (十 二 ) Arduino Music Light Show
Arduino 的 電 池 ( STEM project )
我 的 Stem Project (十 三 ) Arduino Multi-function Shield using Scratch (3)
自 己 寫 個 mBlock extension (一 ) TM1637 4-digit-display
自 己 寫 個 mBlock extension (二 ) 1602 I2C LCD Module
自 己 寫 個 mBlock extension (三 ) 2-digit-display using 74HC595
[STEM] 如 何 選 購 LED
為 什 麼 安 裝 新 版 本 的 mBlock 程 式 之 後 要 重 新 安 裝 mBlock extension?
[STEM] 使 用 sensor module 和 電 子 零 件 的 分 別
mBlock / Arduino IDE com port 的 問 題
STEM - 自 己 造 個 Arduino 教 學 / 展 示 平 台
This entry was posted in STEM and tagged , , , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *