Python 語言初級與創客實驗

程式語言 Python 作為主要學習內容,並結合 micro:bit 實作

#生活科技 #Python #micro:bit #實作導向

單元簡介

本單元以 Python 作為主要程式語言,結合 micro:bit 感測與控制,透過設計思考流程從需求發掘、構想發展、原型製作到測試改良,完成可解決生活問題的互動小裝置。 內容涵蓋感測(光線、溫度、加速度、磁力)、傳動(伺服馬達、蜂鳴器)、控制(條件、迴圈、函式、事件)等核心能力,培養跨域整合與問題解決素養。

核心概念與技能

Concepts
  • 設計思考:同理 → 定義 → 構想 → 原型 → 測試 → 迭代
  • 材料選用:紙板、壓克力、3D 列印件、導線、黏著件
  • 工具操作:剪裁工具、螺絲起子、熱熔膠、簡易手工具
  • 程式基礎:變數、資料型態、條件、迴圈、函式、事件驅動
  • 資料擷取:感測器讀值、去雜訊、門檻值/平均值判斷
  • 控制策略:PWM 控制、非同步事件、狀態機思維
  • 專題協作:分工、版本管理(命名規範)、簡報與展示

重要元件與原理(感測/傳動/控制)

Hardware
感測(Sensors)
  • 光感測:micro:bit 光線值判斷環境明暗(自動夜燈)。
  • 溫度感測:板上溫度近似環境溫度(需校正與平均)。
  • 加速度計:偵測搖晃、姿態與步數(閾值觸發事件)。
  • 磁力計:羅盤方向(需校正,受金屬干擾)。
  • 外接數位/類比:土壤濕度、超音波測距等。
傳動(Actuators)
  • 伺服馬達:角度控制(PWM),適合門閂、指針。
  • 直流馬達:連接馬達驅動模組,注意供電與反電動勢。
  • 蜂鳴器/喇叭:產生提示音或旋律。
  • LED 陣列:5×5 畫面輸出、圖示與即時回饋。
控制(Control)
  • 事件驅動:按鍵 A/B、搖晃、朝向、計時器。
  • 決策邏輯:if/elif/else 與多重條件。
  • 迴圈:while/for 形成持續監測與更新。
  • 函式封裝:提升重用性與可維護性。
  • 狀態設計:以狀態機切換系統模式。

實作範例:智慧花盆監測 × 夜間補光

Project

功能:偵測土壤濕度與環境光,顯示圖示並在夜間開啟微光 LED,提醒澆水。

  1. 需求與構想:定義指標(濕度門檻、夜間判定值)。
  2. 電路連接:土壤濕度模組接類比腳、LED 接 P0(加限流電阻)。
  3. 程式撰寫:讀取類比值 → 平滑處理 → 判斷 → 輸出。
  4. 外觀製作:3D 列印支架或紙板固定,確保可維修性。
  5. 測試調校:於日/夜、乾/濕情境下微調門檻。
流程參考(偽碼)
# 初始化
門檻_濕度 = 450
門檻_光線 = 100
while True:
    濕度 = 類比讀取(P1)  # 土壤濕度
    光線 = 讀取光線()     # 0~255
    濕度_avg = 移動平均(濕度)

    if 濕度_avg < 門檻_濕度:
        顯示圖示("需要澆水")
    else:
        顯示圖示("OK")

    if 光線 < 門檻_光線:
        LED(P0, 開)  # 夜間補光
    else:
        LED(P0, 關)

    延遲(200ms)

延伸應用(跨域整合與日常解決方案)

Extension
  • 安全提醒:瓦斯偵測(外接氣體感測)+ 蜂鳴器警報。
  • 節能管理:日照監測與窗邊小風扇自動啟閉。
  • 健康促進:久坐偵測(加速度)+ 定時伸展提醒。
  • 校園應用:教室環境指標儀(溫度/光線/噪音)。
  • 資料視覺化:序列埠傳回電腦,以 Python 產生圖表。

跨科連結

STEAM
  • 數學:門檻值、移動平均、比例與標準化。
  • 自然:能量(馬達功率)、材料強度與熱影響。
  • 資訊:資料結構(陣列/串列)、事件與中斷概念。
  • 設計:人體工學、界面圖示設計、材質選擇。
  • 公民/社會:智慧城市、節能減碳與永續議題。

常見迷思

Myths
迷思 1:micro:bit 功能單一、只能玩玩

實際可外接多種模組(超音波、氣體、RFID),並與 Python 生態(資料分析/視覺化)整合,具延展性。

迷思 2:感測數據一定精準,不需處理

感測值受環境與雜訊影響,需透過平均、校正與門檻回授調校。

迷思 3:程式越長越厲害

良好結構(函式化、模組化、註解清楚)與穩定度才是重點。

迷思 4:馬達直接接在板子上即可

需驅動模組與獨立電源,並注意地線共參考與保護措施。

實作範例:姿態偵測 × 防摔提醒小幫手

Project

功能:偵測背包或箱體傾倒時發出聲光提醒,培養事件驅動與狀態設計。

  1. 讀取加速度向量,計算 Pitch/Roll。
  2. 設定傾斜門檻與延遲去抖動。
  3. 觸發蜂鳴器與 LED 陣列圖示。
  4. 按鍵 A 解除警報,B 進入靜音模式。
步驟提示
  • 以函式 is_tilted() 封裝傾倒判斷。
  • last_trigger 變數與時間比較避免重複觸發。
  • 將「警報中 / 待機 / 靜音」以狀態枚舉管理。

學習提醒 & 安全倫理

Badge
  • 電源安全:馬達外接電源與地線共參考。
  • 資料倫理:不蒐集不必要的個資,告知使用目的。
  • 可維修性:用螺絲與插接式連接,降低維修成本。
  • 記錄檔:以序列埠回傳資料,利於除錯與驗證。
教師提示
  • 以「小任務 → 微專題 → 整合專題」漸進式設計學習路徑。
  • 門檻調校請以實測資料為準,鼓勵學生蒐集並視覺化。
  • 評量建議:過程檔案(設計圖、程式版本)、成果展示與反思。