嵌入式系統入門

樹莓派開發筆記

從 UART 終端機連線、Wi-Fi 排除到 MPU6050 感測器實作

適用硬體版本

Raspberry Pi 3 / 4 / 5

1. USB-to-TTL 6色線接線定義

標準的 6 芯 FTDI (或 PL2303) 線路中,每一根杜邦線頭均帶有特定顏色代表對應訊號。在與樹莓派通訊時,僅需要接 3 條線即可運作:

黑色線 (GND)

接 Pin 6 (GND)

白色線 (RXD)

接 Pin 8 (TXD / GPIO 14)

綠色線 (TXD)

接 Pin 10 (RXD / GPIO 15)

黃色線 (RTS)藍色線 (CTS) 請直接保持懸空不接。如果是紅色線 (5V),通常是懸空,僅在樹莓派沒有任何外接電源,且您打算透過筆電取電時才接到 Pin 2 (5V)

2. 解決 Windows 驅動程式錯誤

若系統顯示「USB-Serial Controller D 驅動程式錯誤」或「裝置無法啟動 (代碼 10)」,請依照以下方法排解:

步驟 1

下載正確驅動程式

前往 Prolific 官網下載適用於 Windows 的 PL23XX-M_LogoDriver 驅動壓縮檔(切勿下載純 SDK 包)。

步驟 2

完整解壓縮後再執行

若遇到「系統找不到指定的檔案 (0x2)」錯誤,請務必先將下載的 .zip 檔全部解壓縮 為普通資料夾,再在 .exe 檔上按右鍵選擇「以系統管理員身分執行」。

步驟 3

終極手動降版(適合舊版晶片)

開啟「裝置管理員」 ➡️ 在問題裝置按右鍵「更新驅動程式」 ➡️ 「瀏覽我的電腦以尋找驅動程式」 ➡️ 「讓我從可用清單挑選」 ➡️ 選擇 2014 年或更早的舊版驅動版本 即可一秒排解代碼 10 的錯誤。

3. MobaXterm 序列埠設定

驅動程式正常載入後,系統會分配一個類似 COM4 的通訊埠。在 MobaXterm 的 Session ➡️ Serial 選單中,設定數值如下:

  • Serial port: 選擇對應的 COM(例: COM4)
  • Speed (bps): 115200
  • Flow Control: None
💡 提示: 剛連線進去如果是一片漆黑,請直接敲擊鍵盤 Enter 鍵 幾下,就會帶出樹莓派的帳號登入提示!
// 登入終端機畫面參考範例

Debian GNU/Linux 13 raspberry1 ttyS0

raspberry1 login: sysop

Password: **********

sysop@raspberry1:~ $

4. 排除掉壓警告 (Undervoltage)

警告訊息:hwmon hwmon1: Undervoltage detected!

當系統不間斷提示該訊息時,代表輸入電壓已跌破 4.63V 安全底線。這容易造成作業系統死機、記憶卡毀損或系統嚴重降頻。

可能的原因
  • 不小心把 USB 6 色線的紅線 (5V) 接上了,並嘗試透過電腦 USB 供電。
  • 使用的 Type-C 電源線內阻過大、線身太長導致嚴重壓降。
  • 變壓器本身額定輸出功率不足(未達 5V/3A 或 5V/5A)。
正確對策
  • 拔掉 UART 上的紅線,僅保留 GND、RX、TX。
  • 採用樹莓派官方推薦的專用變壓器進行主體供電。
  • 使用高品質、帶有加粗純銅導體的短接 Type-C 充電線。

5. 終端機 Wi-Fi 管理設定

在沒有顯示器時,可透過以下三種方式快速排查並連上 Wi-Fi:

nmtui 工具

最適合新版系統 (Bookworm+)。具備視覺化文字選單,不易打錯密碼。

sudo nmtui

raspi-config

傳統經典選單。可用於定義國家(如 TW),避免 5GHz 連線問題。

sudo raspi-config

nmcli 指令

直接對底層進行調試。適用於連線至無密碼(Open)之公共網路。

sudo nmcli device wifi

連線提示:避免 "key-mgmt: property is missing" 報錯

當連線如 "CWA-FREE" 這類不需輸入密碼的公開網路時,不要在 `nmcli` 指令中夾帶 password "..." 參數。正確指令如下:

sudo nmcli device wifi connect "CWA-FREE"

6. MPU6050 加速度計與陀螺儀實作

硬體 I2C 接線對照表

MPU6050 針腳 樹莓派實體腳位 (Physical Pin) 訊號定義 備註
VCC Pin 1 3.3V Power 穩定低雜訊電源輸入
GND Pin 6 Ground 共地(必須連接)
SCL Pin 5 I2C SCL (GPIO 3) I2C 串列時脈訊號
SDA Pin 3 I2C SDA (GPIO 2) I2C 雙向串列資料線

完整 Python 讀取程式碼

import time
from mpu6050 import mpu6050

# 初始化 MPU6050,預設 I2C 位址為 0x68
try:
    sensor = mpu6050(0x68)
    print("成功初始化 MPU6050 加速度計與陀螺儀!")
except Exception as e:
    print(f"無法初始化感測器,請檢查接線或 I2C 位址。錯誤訊息: {e}")
    exit()

print("開始讀取資料,請按 Ctrl+C 結束程式...\n")

try:
    while True:
        # 1. 讀取三軸加速度計資料 (單位: m/s²)
        accelerometer_data = sensor.get_accel_data()
        
        # 2. 讀取三軸陀螺儀資料 (單位: deg/s)
        gyro_data = sensor.get_gyro_data()
        
        # 3. 讀取晶片內部溫度計 (單位: 攝氏)
        temp = sensor.get_temp()

        # 輸出漂亮的對齊結果
        print("=" * 50)
        print(f"加速度 (m/s²) -> X: {accelerometer_data['x']:.2f}, Y: {accelerometer_data['y']:.2f}, Z: {accelerometer_data['z']:.2f}")
        print(f"角速度 (deg/s) -> X: {gyro_data['x']:.2f}, Y: {gyro_data['y']:.2f}, Z: {gyro_data['z']:.2f}")
        print(f"感測器溫度     -> {temp:.1f} °C")
        
        # 每一秒更新 2 次
        time.sleep(0.5)

except KeyboardInterrupt:
    print("\n程式已由使用者手動停止。")

執行前必要核心步驟:

1. 啟用 I2C: sudo raspi-config (選 Interface Options ➡️ I2C)
2. 檢查裝置位址: sudo i2cdetect -y 1
3. 安裝函式庫: pip install mpu6050-raspberrypi