STEM – 自己造個 Arduino 教學 / 展示平台

自 從 有 了 3D  Printer 之 後 ,我 們 做 DIY project 都 鍾 意 自 己 整 個 case,把 所 有 電 子 零 件 都 裝 在 裡 面 ,成 個 project 的 專 業 程 度 即 時 提 升 10 倍 ( 至 少 睇 起 黎 )。

不 過 ,在 教 學 環 境 又 唔 一 樣 。我 自 己 覺 得 在 學 校 、班 房 ,還 是 應 該 要 畫 公 仔 畫 出 腸 才 最 是 有 實 效 。所 以 收 收 埋 埋 、遮 遮 掩 掩 、將 D 電 子 零 件 收 入 個 外 殼 裡 面 ,係 唔 Work 既 。

其 實 最 開 放 、最 畫 公 仔 畫 出 腸 的 展 示 ,當 然 就 係 使 用 麵 包 板 啦 ( breadboard )。不 過 麵 包 板 就 只 適 合 插 一 些 簡 單 的 電 子 零 件 ,到 了 使 用 感 應 器 模 組 ( sensor module ) 之 後 ,麵 包 板 其 實 就 無 乜 用 了 。

感 應 器 模 組 ,一 般 都 會 搭 配 感 應 器 擴 展 板 ( sensor shield,或 者 I/O expansion shield ) 一 齊 用 。用 感 應 器 擴 展 板 來 接 駁 感 應 器 模 組 ,當 然 就 比 用 麵 包 板 好 用 得 多 。

Arduino + Sensor Module

不 過 ,就 算 接 駁 方 便 ,但 接 完 之 後 都 係 吊 吊 揈 。有 時 電 線 比 較 硬 ( 相 對 於 極 為 輕 巧 的 感 應 器 而 言 ),你 就 只 是 想 感 應 器 好 好 的 在 桌 子 上 朝 上 放 ,都 有 一 定 難 度 。

DIY showcase platform

這 時 候 我 就 喜 歡 自 己 做 一 個 非 常 簡 單 的 展 示 平 台 。平 台 最 主 要 的 就 是 一 塊 板 ,然 後 自 己 在 上 面 鑽 幾 個 小 孔 ,用 以 安 裝 固 定 Arduino 和 感 應 器 模 組 。

平 台 可 以 用 阿 加 力 膠 板 ( 3mm )、MDF 纖 維 板 ( 3mm )、ABS 膠 板 模 型 飛 機 木 板 、甚 至 是 硬 紙 板 。這 些 東 西 在 很 多 較 大 的 文 具 店 、模 型 玩 具 店 都 找 得 到 。我 自 己 喜 歡 把 平 台 做 得 小 小 的 ,方 便 攜 帶 。所 以 我 都 會 買 定 一 堆 10 x 10 cm、10 x 20 cm、A4 size 等 等 的 阿 加 力 膠 板 和 MDF。

至 於 要 鑽 孔 的 位 置 ,如 果 是 自 己 量 度 的 話 ,最 好 就 有 把 好 一 點 的 卡 尺 。如 果 唔 想 自 己 量 度 ,也 可 以 google 一 下 感 應 器 的 尺 寸 圖 ,很 多 都 會 找 得 到 。例 如 我 會 google「1602 lcd dimensions」、「pir sensor dimensions」之 類 ,通 常 就 會 立 即 找 得 到 。不 過 要 留 意 的 是 ,很 多 sensor module 都 不 只 是 得 一 間 廠 出 的 ,不 同 廠 家 生 產 的 大 小 可 能 會 有 些 少 分 別 。

於 是 孔 徑 的 大 小 ,就 取 決 於 你 使 用 什 麼 螺 絲 。一 般 Arduino 和 感 應 器 模 組 ,絕 大 多 數 都 是 使 用 M3M2.5M2 螺 絲 孔 。我 自 己 都 會 買 定 不 同 長 度 的 螺 絲 ,加 上 墊 片 、螺 絲 母 、絕 緣 柱 等 等 放 在 一 起 ,方 便 取 用 ( 盒 子 是 在 執 笠 倉 買 的 ,唔 記 得 5 蚊 定 6 蚊 一 個 ,非 常 好 用 ,我 當 年 一 口 氣 買 了 10 幾 個 )。

決 定 好 了 要 鑽 孔 的 位 置 ,和 孔 徑 的 大 小 ,就 可 以 直 接 在 板 材 上 面 標 示 記 號 。但 如 果 你 同 我 一 樣 手 殘 ( 此 非 潮 語 ,是 精 神 性 手 部 殘 廢 的 意 思 ) 的 話 ,那 也 可 以 在 電 腦 畫 張 圖 ,然 後 print 出 來 ,貼 在 板 材 上 面 才 加 工 。

Word – Size

不 要 以 為 一 定 要 用 什 麼 CAD 軟 件 來 畫 圖 才 得 ,其 實 用 Word 的 繪 圖 功 能 就 很 不 錯 了 。在 Word 裡 面 insert shapes,基 本 上 只 要 用 最 簡 單 的 形 狀 就 夠 ,Word 可 以 輕 易 設 定 圖 形 的 實 際 尺 寸 。例 如 我 會 整 一 個 10 x 20cm 的 長 方 形 做 平 台 的 底 部 ,假 如 是 要 放 置 上 面 的 PIR sensor,我 就 會 insert 一 條 直 線 ,長 2.8cm ( 即 28mm )。為 了 強 調 那 個 要 鑽 孔 的 點 ,我 通 常 會 加 上 arrow effect ( Shape Outline -> Arrows,我 多 數 選 圓 點 )。

Word 四 方 形 和 線

1602 LCD 就 更 簡 單 ,孔 距 就 是 75 x 31mm,就 這 樣 畫 一 個 長 方 形 ,四 個 角 就 是 要 鑽 孔 的 位 置 。Word 還 好 一 個 好 處 ,因 為 它 是 文 字 處 理 器 ,所 以 你 可 以 直 接 在 四 方 形 輸 入 文 字 。

IO Shield for NANO

最 麻 煩 的 是 那 些 不 規 則 的 形 狀 ,例 如 萬 惡 的 UNO 和 Nano 的 I/O shield ( 不 過 還 好 ,兩 者 的 螺 絲 孔 是 一 樣 的 )。這 時 候 我 就 會 把 找 到 的 尺 寸 圖 裁 切 好 ,再 放 入 Word 裡 面 調 整 好 大 小 和 位 置 。

Word 完 成 圖

完 成 之 後 ,打 印 出 來 ,貼 在 板 材 上 面 ,照 著 鑽 孔 就 很 準 確 的 了 。你 可 以 買 一 盒 便 宜 的 小 鑽 頭 ( 2mm / 3mm ),用 那 些 小 型 的 12V 充 電 電 鑽 就 夠 力 的 了 。

不 過 鑽 完 孔 都 未 完 事 ,因 為 不 同 的 sensor module 有 不 同 的 安 裝 方 法 ,所 以 我 亦 備 有 不 同 長 度 的 M3 / M2.5 / M2 的 銅 柱 。例 如 上 面 提 到 的 1602 LCD ( 帶 I2C backpack ) 和 PIR sensor,兩 者 都 要 撐 起 離 地 十 幾 mm 來 安 裝 的 ( 因 為 兩 者 原 本 的 安 裝 方 法 是 直 接 安 裝 在 外 殼 裡 面 的 ,所 以 電 路 板 背 面 的 零 件 凸 出 得 比 較 多 )。

如 果 你 覺 得 要 用 螺 絲 穿 過 感 應 器 ,再 穿 過 展 示 板 ,再 在 後 面 安 裝 螺 絲 母 很 不 方 便 的 話 ( 之 間 還 很 可 能 有 墊 片 和 絕 緣 膠 柱 ),你 也 可 以 考 慮 使 用 嵌 入 式 的 螺 絲 母 。你 只 需 要 有 一 把 普 通 的 電 烙 鐵 就 可 以 ,不 需 要 太 過 特 殊 的 工 具 。唯 一 要 注 意 的 是 螺 母 最 好 和 板 材 的 厚 度 一 樣 。

當 然 ,後 來 我 買 了 CNC milling machine ( CNC 雕 刻 機 ),在 那 些 2.5D 的 CAM 軟 體 ,click 幾 下 就 可 以 完 成 以 上 的 操 作 ( 基 本 上 就 是 畫 幾 個 某 某 直 徑 的 圓 ,再 用 XY 座 標 標 明 位 置 。)。然 後 再 click 多 一 下 ,send G code 去 milling machine,幾 分 鐘 孔 就 都 鑽 好 了 。用 CNC 機 當 然 就 比 用 人 手 鑽 孔 精 準 幾 億 萬 倍 了 ( 我 是 指 我 的 人 手 )。

3D 打 印 Arduino 演 示 平 台

近 年 亦 甚 為 流 行 3D Printer,幾 乎 每 一 家 學 校 都 有 ,所 以 我 亦 漸 漸 從 板 材 鑽 孔 ,進 化 到 3D 打 印 。上 圖 的 平 台 就 是 用 免 費 而 又 直 觀 的 Tinkercad 所 畫 出 來 的 ,不 過 就 是 一 些 立 方 體 和 圓 柱 體 堆 砌 合 併 而 成 。

固 定 圓 柱

3D 打 印 最 大 的 問 題 是 所 需 時 間 甚 多 ,不 是 設 計 的 時 間 ,而 是 打 印 的 時 間 。一 個 平 台 等 閒 都 要 打 印 數 個 小 時 。例 如 你 做 一 個 project,設 計 展 示 平 台 用 了 15 分 鐘 ,打 印 3 小 時 。實 試 之 後 發 現 有 點 小 瑕 疵 要 修 改 ,修 改 model 用 了 1 分 鐘 ,打 印 又 是 3 小 時 。隨 著 project 進 行 ,又 有 點 東 西 要 加 ,修 改 設 計 改 了 1 分 鐘 ,打 印 又 是 另 一 個 3 小 時 。重 複 又 重 複 ,唉 。

在 設 計 3D 打 印 的 展 示 平 台 時 ,我 也 作 出 了 一 個 新 的 嘗 試 ,就 是 不 再 使 用 螺 絲 。我 希 望 安 裝 可 以 簡 單 和 快 捷 一 點 。我 按 照 每 一 個 sensor 的 螺 絲 孔 的 位 置 放 置 了 不 同 的 支 撐 圓 柱 ,圓 柱 的 高 度 是 按 照 Sensor 的 安 裝 方 式 而 有 所 不 同 。如 果 設 計 得 當 ,用 摩 擦 力 就 可 以 把 Sensor 固 定 ,即 所 謂 的 friction fit ( 圓 柱 凸 出 的 部 分 剛 好 是 螺 絲 孔 的 大 小 )。要 是 太 鬆 動 ,在 螺 絲 孔 的 位 置 點 一 滴 熱 熔 膠 也 就 很 穩 固 了 。

3D 打 印 平 台

上 圖 的 演 示 平 台 ,是 一 個 用 Arduino 示 範 smart home 原 理 的 project。有 LCD,光 敏 電 阻 感 應 器 ,電 子 溫 度 感 應 器 ,PIR motion sensor,再 由 一 個 2 路 繼 電 器 模 組 ,去 控 制 USB 風 扇 和 USB 燈 的 開 關 ( 用 USB 代 替 交 流 電 ,可 以 有 效 防 止 學 生 電 死 ,但 又 可 以 真 正 使 用 繼 電 器 )。

門 窗 警 報 器 Project

除 了 簡 單 的 把 感 應 器 都 排 列 出 來 演 示 ,其 實 3D Printer 還 可 以 打 印 一 些 功 能 性 的 組 件 。例 如 我 最 近 做 了 一 個 示 範 門 窗 警 報 器 原 理 的 project ( 用 reed switch sensor module ),就 連 道 門 都 可 以 3D 打 印 埋 出 來 ,都 唔 知 幾 方 便 。

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 教 學 / 展 示 平 台
Posted in STEM | Tagged , , , , , , , , , | Leave a comment

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 教 學 / 展 示 平 台
Posted in STEM | Tagged , , , , , | Leave a comment