無人飛行船地面站即時監控系統

Microchip 嵌入式 + GPRS + Flash:飛行船飛行參數即時監控 DEMO

無人飛行船地面站即時監控系統

專案簡介

這是一個飛行船地面站即時監控系統的 DEMO,用來監控飛行船的各種飛行參數與環境資料。

核心功能:

技術棧: Microchip(C語言)+ GPRS 通訊 + Flash/ActionScript 3.0 + Socket 通訊


🎯 系統架構

整體架構圖

┌─────────────────────────────────────────────────────────────┐
│  飛行船 (Microchip 嵌入式系統)                                    │
│  ├─ GPS 模組                                                   │
│  ├─ 氣壓計 / 溫度感測器                                          │
│  ├─ 三軸加速度計                                                │
│  ├─ 姿態感測器 (Heading, Pitching, Rolling)                    │
│  ├─ 自動導航演算法                                              │
│  └─ GPRS 模組                                                  │
│           ↓ GPRS 無線傳輸                                       │
└─────────────────────────────────────────────────────────────┘
                       ↓
┌─────────────────────────────────────────────────────────────┐
│  伺服器 (www.wtech.com.tw:19999)                               │
│  ├─ 接收飛行船 GPRS 資料                                        │
│  └─ 轉發給地面站                                               │
└─────────────────────────────────────────────────────────────┘
                       ↓ TCP Socket
┌─────────────────────────────────────────────────────────────┐
│  地面站 (Flash/ActionScript)                                   │
│  ├─ Socket 連線監控                                            │
│  ├─ 即時資料解析與顯示                                          │
│  ├─ 儀表板介面                                                 │
│  └─ 飛行計時功能                                               │
└─────────────────────────────────────────────────────────────┘

💡 技術實作

1. 通訊機制

通訊協定:TCP Socket

地面站每 500ms 發送請求 # 給伺服器,伺服器回傳飛行船的即時資料:

請求格式:#
回應格式:*資料1,資料2,資料3,...,資料39!

資料格式:

自動重連機制:


2. 飛行資料監控(39個欄位)

系統監控的資料分為 七大類

A. 控制模式 (3個欄位)

B. GPS 位置資訊 (8+8=16個欄位)

現在位置:

目標位置:

C. 姿態資訊 (3個欄位)

D. 環境感測 (4個欄位)

E. 導航判斷 (6個欄位)

飛行船自動導航演算法的判斷結果:

F. 馬達輸出 (4個欄位)

飛行船的控制面與動力輸出:

G. 高度與氣壓 (1個欄位)


3. Flash 地面站介面

多區域儀表板設計:

地面站介面分為多個顯示區域 (TL, TC, TR, TL_2, TC_2, TR_2, CL, CC, RMAP):

左側 (TL, CL):

中央 (TC, CC, RMAP):

右側 (TR, TR_2):

下方 (TL_2, TC_2):


4. 飛行計時功能

Start / Reset 按鈕:

計時邏輯:


5. 資料解析流程

從 Socket 接收到顯示的完整流程:

1. Socket 接收資料:
   "*0,1,2,1200,23,45,1234,N,121,30,5678,E,1020,23,45,1234,N,121,30,5678,E,1500,90,5,-3,45,10,1,1,300,120,150,180,25,120,15,20,80,25!"

2. 解析資料:
   - 移除前綴 "*" 和後綴 "!"
   - 用逗號 "," 分割成陣列
   - 得到 39 個欄位的數值

3. 資料轉換:
   - 加速度除以 100 (因為傳輸時放大了 100 倍)
   - 氣壓除以 100 (轉換為百帕單位)
   - 溫度除以 10 (轉換為度)

4. 更新介面:
   - 呼叫各區域的 update_text() 函式
   - 傳入對應的資料欄位
   - 即時刷新顯示

5. 記錄時間:
   - 更新「最後更新時間」欄位
   - 確認資料是否即時

6. ActionScript 技術重點

事件驅動架構:

// 自定義事件類別
StationEvent.STATION_CONNECT    // 伺服器連線完成
StationEvent.STATION_DISCONNECT // 伺服器斷線
StationEvent.STATION_DATA       // 接收到資料

Socket 通訊:

資料流程:

  1. Timer 觸發 → 發送 “#” 請求
  2. Socket 接收資料 → socketDataHandler()
  3. 解析資料格式 → updateInfomation()
  4. 更新各區域 UI → update_text()

🎬 技術亮點

1. 即時通訊系統

挑戰:

解決方案:


2. 多層次資料轉換

資料傳輸優化:

為了減少 GPRS 傳輸量,飛行船端會將資料放大整數倍再傳輸:

地面站接收後再除回原始精度,節省傳輸頻寬。


3. GPS 座標格式轉換

GPS 資料格式:度分秒 (DMS)

GPS 模組輸出的格式為:

傳輸時拆成 4 個欄位:

  1. 度 (D)
  2. 分 (M)
  3. 秒的萬分之一 (S×10000)
  4. 方向 (N/S 或 E/W)

地面站重組顯示:

var now_lon:String = dataArray[NOW_LON_D] + "°" +
                     dataArray[NOW_LON_M] + "." +
                     dataArray[NOW_LON_S] + "'";

顯示結果:121°30.5678'


4. 儀表板 UI 設計

視覺化設計考量:


5. Flash/ActionScript 3.0 技術

為什麼選擇 Flash?(2015年時期)

技術特點:


📹 影片展示

地面站即時監控示範

記錄地面站介面即時接收飛行資料的過程:

地面站監控系統展示影片


🎯 專案定位

專案背景

這是一個飛行船地面站監控系統的 DEMO 專案,用來即時監控飛行船的飛行狀態與環境資料。

專案目標:

專案範圍:

  1. 飛行船端(Microchip 嵌入式系統)
    • 溫度、濕度、氣壓感測
    • GPS 定位
    • 姿態感測(三軸加速度計、陀螺儀)
    • GPRS 資料傳輸
  2. 地面站端(Flash/ActionScript)
    • 即時資料接收與顯示
    • 儀表板介面設計
    • 飛行計時與記錄

系統整合挑戰

1. 嵌入式系統資源限制

2. GPRS 通訊不穩定

3. 即時性要求

4. 多種感測器整合


🏆 專案成果

技術成果

經驗收穫

嵌入式系統開發:

即時系統設計:

跨領域整合:


💡 專案總結

「無人飛行船地面站即時監控系統」是我的學士畢業論文專案,讓我學到:

技術層面

專案管理

經驗收穫

這個專案讓我體會到:即時監控系統的關鍵在於可靠性。再完美的功能,如果通訊不穩定、資料會遺失,系統就失去意義。因此在設計時就要考慮:

這些經驗也影響了我後續在工業自動化領域的開發,讓我更注重系統的穩定性與可靠性。


專案資訊


Happy Coding! 🚁