1
讓 micro:bit 飛起來
虎尾科技大學 資訊工程系
陳國益
【MicroFly 雙馬達自平衡飛機】
2
大綱
 飛行器的種類
 飛機如何控制
 推力控制飛機(Propulsion-Controlled Aircraft,PCA)
 micro:bit 程式撰寫
 硬體組裝
 地面調整
 實際飛行
3
飛行器的種類
航空器
輕於空氣的航空器 重於空氣的航空器
氣球 飛船 固定翼 旋翼 撲翼 傾轉旋翼
飛機
滑翔機
直昇機
彷生學
振翼機
V-22 魚鷹
4
讓飛機飛行的的四個力
升力
重力
推力
阻力
飛機在空中的控制方式
 控制面(舵面)
 方向舵、升降舵、副翼
 動力(馬達的轉速)
5
飛機的控制面
 Control Surfaces
 副翼 Aileron
 升降舵 Elevator
 方向舵 Rudder
6
以升降舵為例
7
升降舵往下,機頭下降 升降舵往上,機頭上升
*實際角度不需如此大,僅為示意圖
8
控制舵面的拉桿機構
 安裝複雜、重量較重、容易故障、易損毀
9
目前進度
 飛行器的種類
 飛機如何控制
 推力控制飛機(Propulsion-Controlled Aircraft,PCA)
 micro:bit 程式撰寫
 硬體組裝
 地面調整
 實際飛行
10
有可能只用動力控制飛機嗎?
 1989年7月19日,聯合航空 DC-10 全部液壓系統故障,
造成所有控制舵面均失效。透過調整左右兩個引擎的
推力差,讓飛機平穩朝著愛荷華州蘇城緊急迫降,這
是第一次以推力差控制真實飛機,並成功降落的紀錄。
11
有可能只用動力控制飛機嗎?
 2003年, DHL貨機在巴格達被防空飛彈擊中,
失去控制舵面,機長使用控制引擎的出力大
小以達到調整飛行姿態的方式,安然降落。
12
推力控制飛機(PCA)
 PCA
 Propulsion
Controlled
Aircraft
 以左右引擎動力差
控制飛機的方式
PCA in MicroFly
 左右馬達推力可個別調整,以推力差距作左
右方向控制
 具有感測器感知飛機目前姿態,並動態調整
左右馬達推力維持飛機平衡
 升降舵需調整為飛機略微抬頭的姿態,即可
透過總推力大小不同控制飛機的升降
13
14
未來,在空中飛的AI
 《科學人》2004年9月第31期 『搖搖不墜!
』(撰文/Mike Corder|譯者/鍾樹人)
 ….若能將類神經網路引入PCA,更進一步結
合 AI 人工智慧的可能。證明了此種控制方法
的潛力與可變化性
 在未來,也許能夠將目前的程式改寫成簡易
的類神經網路並達到更精確的控制,讓
MicroFly 變身成『在空中飛的 AI』….
15
目前進度
 飛行器的種類
 飛機如何控制
 推力控制飛機(Propulsion-Controlled Aircraft,PCA)
 micro:bit 程式撰寫
 硬體組裝
 地面調整
 實際飛行
預先準備,查詢自己的micro:bit名稱
 請以瀏覽器開啟 https://reurl.cc/k1RyYK
 查詢並記錄自己的裝置名稱(五碼英文
16
17
micro:bit 控制軟體撰寫
藍牙接收控制字串
parseCtrlMsg
函式解析控制字串
油門數值 方向舵數值
動力控制與平衡
姿態感測
micro:bit
【油門數值】 【方向舵數值】
18
micro:bit 控制軟體撰寫
 在瀏覽器上輸入 https://reurl.cc/ARVrEY
 請從此藍芽基礎範例開始,按下 Edit Code
19
micro:bit 控制軟體撰寫
 燒錄程式並測試連線
20
micro:bit 控制軟體撰寫
 燒錄(以存檔形式或連線形式均可)
21
micro:bit 控制軟體撰寫
 以存檔形式燒錄(此時LED上應該出現笑臉
micro:bit 控制軟體撰寫
 請於手機上下載 V7RC App
 請注意手機需支援 Bluetooth 5.0 以上
22
micro:bit 控制軟體撰寫
 調整V7RC參數
23
micro:bit 控制軟體撰寫
 調整V7RC參數
24
micro:bit 控制軟體撰寫
 調整V7RC參數
25
micro:bit 控制軟體撰寫
 調整V7RC參數完成
26
按下此處開始連線
micro:bit 控制軟體撰寫
 調整V7RC參數(第一次連線)
27
28
連線測試
29
micro:bit 控制軟體撰寫
 藍芽接收字串模組
30
micro:bit 控制軟體撰寫
 建立變數,命名為 ctrlMsg
31
micro:bit 控制軟體撰寫
32
micro:bit 控制軟體撰寫
 變數初始化
33
micro:bit 控制軟體撰寫
 V7RC 通訊格式
SRV通道1數值通道2數值通道3數值通道4數值#
SRV1500100015001500#
最高值為2000、最低值為1000
油門為零時,其(通道2)數值為1000
34
micro:bit 控制軟體撰寫
35
micro:bit 控制軟體撰寫
36
micro:bit 控制軟體撰寫
37
micro:bit 控制軟體撰寫
38
micro:bit 控制軟體撰寫
39
micro:bit 控制軟體撰寫
40
micro:bit 控制軟體撰寫
41
micro:bit 控制軟體撰寫
42
micro:bit 控制軟體撰寫
43
micro:bit 控制軟體撰寫
44
micro:bit 控制軟體撰寫
45
micro:bit 控制軟體撰寫
SRV1500100015001500#
46
micro:bit 控制軟體撰寫
將2000 ~ 1000 轉換為 100 ~ -100
47
micro:bit 控制軟體撰寫
SRV1500100015001500#
48
micro:bit 控制軟體撰寫
將2000 ~ 1000 轉換為 100 ~ 0
micro:bit 控制軟體撰寫
 完成藍牙接收/解析控制字串
49
藍牙接收控制字串
parseCtrlMsg
函式解析控制字串
油門數值 方向舵數值
動力控制與平衡
姿態感測
micro:bit
【油門數值】 【方向舵數值】
micro:bit 控制軟體撰寫
 完成藍牙接收/解析控制字串
 若進度較慢,可直接取用至此的程式
50
https://reurl.cc/g2Vg2R
51
micro:bit 控制軟體撰寫(參數)
 rudder:方向舵數值,初始值為0,範圍為-100 ~ 100
 thro:油門數值,初始值為0,範圍為0 ~ 100
 power:經由thro與para_thro2PWM值換算得到的實際油門控制PWM值
 power_L:左馬達的PWM動力值,初始值為0
 power_R:右馬達的PWM動力值,初始值為0
 target_roll:希望保持或轉動到的roll目標值,初始值為0
 para_thro2PWM:油門數值與實際油門控制馬達PWM(Pulse-width
modulation)值的轉換參數,初始值為10
 para_rudder2angle:方向舵值與roll目標值的轉換參數,初始值為2
 Pw_multiple:用於機體平衡函式之roll角度與馬達PWM值的轉換參數,
初始值為3
 power_Max:馬達PWM值的最大值(初始值設為1023)
 roll_adjust:若飛機水平飛行時,roll角度並非零度時的角度修正參數,
初始值為0
52
micro:bit 控制軟體撰寫
https://reurl.cc/ZAKRMQ
若參數設定較繁瑣,可直接取用至此頁的進度
53
micro:bit 控制軟體撰寫
 檢測藍牙是否斷線
micro:bit 控制軟體撰寫
 設定偏移值 roll_adjust
54
micro:bit 控制軟體撰寫
 調整 轉換參數大小(roll與馬達PWM)
55
https://reurl.cc/zZvyya 至此頁的進度
56
micro:bit 控制軟體撰寫
 開始撰寫自動平衡部分
micro:bit 控制軟體撰寫
 飛機轉彎和腳踏車轉彎類似
 有一滾轉(側傾)角度
 滾轉角越大,轉彎越快
 平飛時,滾轉角為零
57
58
micro:bit 控制軟體撰寫
 透過滾轉值來判斷飛機姿態
59
micro:bit 控制軟體撰寫
飛行前提:
藍牙是否斷線?
飛機姿態是否翻覆?
油門動力數值是否大於零?
60
micro:bit 控制軟體撰寫
micro:bit 控制軟體撰寫
61
delta_roll = (target_roll + roll_adjust) - current_roll
本專案使用y=ax函式以計算動力補償。在此一函式中,
y為馬達PWM差異數值,a為指定的動力參數(即參數
Pw_multiple,初始設定為3),而x便是delta_roll角度
62
micro:bit 控制軟體撰寫
power=800,current_roll=20,target_roll=0,
平衡公式為:y=3x
說明:飛機目前右傾20度,要轉回0度,平衡公式計算
如下:
delta_roll=0-20=-20
power_L=800+(-20*3)=740
power_R=800-(-20*3)=860
由運算結果,可知右馬達動力大於左馬達,
故飛機將向左傾修正
63
micro:bit 控制軟體撰寫
micro:bit 安 裝 偏 差 角 度 為 -3(roll_adjust) , power=800 ,
current_roll=20,target_roll=0,平衡公式為:y=3x
飛機目前右傾 20 度,要轉到 20+(-3) 度,
使用者方向舵指令為0
delta_roll=0+(-3)-20=-23
power_L=800+(-23*3)=731
power_R=800-(-23*3)=869
由運算結果,可知右馬達動力大於左馬達,
右邊大左邊小,會向左傾修正
64
micro:bit 控制軟體撰寫
micro:bit 安 裝 偏 差 角 度 為 -2(roll_adjust) , power=600 ,
current_roll=10,target_roll=25,平衡公式為:y=3x
飛機目前右傾 10 度,要轉到 25+(-2) 度,
使用者下了右轉 25 的指令
delta_roll=25+(-2)-(10)=13
power_L=600+(13*3)=639
power_R=600-(13*3)=561
由運算結果,可知左馬達動力大於右馬達,左邊大右邊小
,會向右傾修正
65
軟體撰寫
 超過最大值
修正
66
軟體撰寫
 動力值
寫入馬達
67
micro:bit 控制軟體
 完整程式碼
https://reurl.cc/X49mgE
micro:bit 控制軟體撰寫
 完成藍牙接收/解析控制字串/動力控制平衡
68
藍牙接收控制字串
parseCtrlMsg
函式解析控制字串
油門數值 方向舵數值
動力控制與平衡
姿態感測
micro:bit
【油門數值】 【方向舵數值】
https://reurl.cc/X49mgE
69
目前進度
 飛行器的種類
 飛機如何控制
 推力控制飛機(Propulsion-Controlled Aircraft,PCA)
 micro:bit 程式撰寫
 硬體組裝
 地面調整
 實際飛行
MicroFly 飛機硬體製作
70
71
MicroFly 飛機硬體製作
 插入主翼與尾翼
72
MicroFly 飛機硬體製作
 尾翼需插入機身尾部下方孔洞中
73
MicroFly 飛機硬體製作
 彎折尾翼升降舵,提供抬頭力量
 黃線部分以美工刀切斷
 綠色虛線部分只切割出約一公釐深的割痕不切斷
74
MicroFly 飛機硬體製作
 將升降舵微微往上彎折2至3度
 兩側角度需相同,以膠帶固定升舵
75
MicroFly 飛機硬體製作
 升降舵微微上翹狀態
76
MicroFly 飛機硬體製作
 尾翼安裝位置與升降舵狀態
 升降舵背面也可以膠帶補強固定
77
MicroFly 飛機硬體製作
 移除黑色泡棉座艙照
78
MicroFly 飛機硬體製作
 移除鋼珠配重
79
MicroFly 飛機硬體製作
 組裝micro:bit與 microfly控制板
 螺絲務必要轉緊,否則馬達供電會不順暢
80
MicroFly 飛機硬體製作
 以膠帶固定micro:bit電路板總成於機身上
81
MicroFly 飛機硬體製作
 裁切座艙罩,使其與 micro:bit 密合
82
MicroFly 飛機硬體製作
 運用膠帶將座艙罩固定於機身
83
MicroFly 飛機硬體製作
 將空心杯馬達安裝至馬達座中
 馬達底座頂住桌面,不可對軸心施力
MicroFly 飛機硬體製作
 安裝馬達至馬達座的方法
84
85
MicroFly 飛機硬體製作
 安裝螺旋槳時,馬達底部需有支撐
 可用手指頂住馬達後蓋
 或以馬達底部抵住桌面的方式安裝
86
MicroFly 飛機硬體製作
 螺旋槳槳葉的方向與安裝
紅藍線馬達 黑白線馬達
馬達安裝於機身方式
 每個馬達座需要兩條透明膠帶
87
88
MicroFly 飛機硬體製作
 翻轉飛機,黑白線馬達在右,紅藍線馬達在左
 馬達座邊緣距離機身七公分,兩邊距離需相等
 馬達座前緣切齊翼面,馬達軸心盡量突出翼面
89
MicroFly 飛機硬體製作
 馬達安裝於主翼示意圖
90
MicroFly 飛機硬體製作
 安裝完畢螺旋槳之飛機樣貌
91
目前進度
 飛行器的種類
 飛機如何控制
 推力控制飛機(Propulsion-Controlled Aircraft,PCA)
 micro:bit 程式撰寫
 硬體組裝
 地面調整
 實際飛行
92
地面調整
 著重於兩個關鍵,『重心』與『直線飛行』。
透過調整,我們希望這架飛機在水平方向與
垂直方向都能夠平衡飛行。
 重心(center of gravity、CG)
93
地面調整/尋找重心
 雙手頂住機翼下方尋找重心
94
以電池位置調整重心(以膠帶固定)
95
電池初始
位置建議
地面調整/抬頭失速下墜
 無動力擲出路徑判斷
 重心靠後導致過於抬頭後下墜
96
地面調整/抬頭失速下墜
 重心過於靠後,導致機頭翹起
 改善方式:電池往前固定,重心往前挪
 升降舵角度太大,導致機頭抬頭過高
 改善方式:減低升降舵翹起角度
97
地面調整/快速低頭下墜
 無動力擲出路徑判斷
 重心太前導致快速低頭無滑翔下墜
98
地面調整/快速低頭下墜
 重心過於靠前,導致機頭太重
 改善方式:電池往後固定,重心往後挪
 升降舵角度太小,導致機頭無抬起力矩
 改善方式:加大升降舵翹起角度
99
地面調整/左偏
100
地面調整/左偏
 右邊主翼升力大於左翼升力
 將機翼稍稍向左拉出,增大左翼升力
101
2~3公釐即可
地面調整/左偏
 飛機垂直尾翼偏向
 泡棉機身壓擠造成變形
 反向扭轉後半段機身改善變形問題
102
地面調整/左偏
 機體右側較輕
 泡棉(EPP)材質有可能密度不均
 將電池固定在機身右側,使機身右側較重
103
地面調整/左偏
 升降舵左右翹起角度不同
 升降舵提供下壓力,左邊翹起較多,則左側
下壓力大,造成飛機左傾
104
地面調整/左偏
 整理:
 右邊主翼升力大於左翼升力(拉大左翼面積
 飛機垂直尾翼偏左(扭轉垂直尾翼回中
 右側重量較輕(電池固定於右側配重
 飛機升降舵左邊上翹角度大於右邊(升降舵調整
為同角度
105
地面調整/右偏
 拉大右翼面積
 扭轉垂直尾翼回中
 電池固定於機身左側作為配重
 升降舵調整為相同角度
106
107
目前進度
 飛行器的種類
 飛機如何控制
 推力控制飛機(Propulsion-Controlled Aircraft,PCA)
 micro:bit 程式撰寫
 硬體組裝
 地面調整
 實際飛行
飛行環境
 200x200公尺平方的寬闊場地
 四周盡可能沒有障礙物
 飛行時也需避開樓房、樹木、竹林、人群
 飛行時風速不宜大10km/h (UAV Forecast App)
 建議一開始以50公尺半徑飛行
108
啟動步驟
 確定V7RC App連線方式為藍牙連線
 確定設定V7RC App 通道二的『保持原位』為『ON』、『起點
位置』為『低』,避免連線後螺旋槳暴衝
 關閉電源開關,避免若程式錯誤,上電時可能造成的螺旋槳暴
衝
 將電池連接至系統,並固定在機身下方適當重心位置
 打開電源開關,此時micro:bit應呈現笑臉圖示(右側馬達會轉動
一會兒後停止)
 啟動V7RC App,並連線至micro:bit,連線完成會出現打勾圖示
 輕柔移動左側油門桿,觀察馬達是否正常產生向後推力。
 油門推至最大,逆風往前水平擲出飛機,即完成起飛步驟。
109
飛行前步驟
 啟動電源開關
110
飛行前步驟
 以膠帶固定電池至重心位置
111
飛行前步驟
 連線過程與顯示變化
112
飛行前步驟
 試推油門檢查馬達是否產生推力
113
拋擲飛機動作
 右手拿取飛機的機身,左手拿著行動裝置,
左手拇指放在油門滑桿位置,並以左手拇指
推動油門至100%,
 同時右手將飛機水平投出(可以帶一點點向
上的角度,但不要太多,容易失速
114
飛行前步驟
 油門推至最大並水平微向上逆風擲出
115
平衡調整
 左偏
116
拉大左翼面積
扭轉垂直尾翼回中
電池固定於機身右側作
為配重
升降舵調整為相同角度
平衡調整
 右偏
117
拉大右翼面積
扭轉垂直尾翼回中
電池固定於機身左側作
為配重
升降舵調整為相同角度
飛行路徑規劃(室內場地)
 在禮堂空間長邊邊緣底部
拋出並直飛,在長邊的一
半時開始左轉(或右轉),
以測試直飛與轉向性能
 因旋轉半徑較大,可能來
不及轉完一個彎便撞牆。
但沒關係,MicroFly很耐
撞,在安全環境中先瞭解
性能,在室外空間飛行時
才不會手忙腳亂。
118
飛行路徑規劃(室外場地)
 由操場長邊底部開始,十公尺穩定後後開始左轉,並
持續保持向左小半徑盤旋,盤旋數圈後關動力降落
119
飛行路徑規劃(室外場地)
 由操場長邊底部開始,擲出十公尺穩定後左轉,再保
持直飛十公尺,再進行左轉,回到控制者上方,繼續
此一跑馬航線可持續飛行數圈
120
飛行路徑規劃(室外場地)
 左轉後,切過操場直接飛向控制者,於控制者前方開
始右轉,旋轉完畢後,再做一次切過操場,進行下一
個左轉彎,此航線呈現橫躺的8字形,可以同時測試
飛機的左右轉性能。
121
操作技巧
122
 以一個跑馬航線的飛行路徑為例
 飛機手擲起飛後直飛一段
 然後以方向舵控制左轉,再直飛一段
 再左轉,便完成一個像操場跑道的跑馬航線
 但是飛機是在三度空間中運動的物體,因此
高度便是關鍵,因此我們使用立體視圖的方
式,說明整個跑馬航線的過程,並分階段說
明。
操作技巧
 跑馬航線立體視圖
123
操作技巧 step 1
 第一階段,是手擲起飛,在這一階段中,操控最為簡單,便是
油門全開,朝前與略略朝上方手擲出去
 如果室內空間有限,電池又是充飽狀態,可以80%油門就好
124
操作技巧 step 1 Cont.
 在這段直飛過程中,micro:bit 會有平衡效果,但飛機機體本身
誤差也需調整好。若是在這一段沒辦法大致直飛,則需關油門
平飄降落,依照書中說明調整重心、左右偏航等問題,再行起
飛。
 可以觀察到,因為升降舵為微昇(上翹)狀態,油門又開滿,
因此飛機會不斷上升取得高度。這一段是靠電能轉換為位能。
125
操作技巧 step 2
 第二階段,是跑馬航線的左轉,在左轉彎時,會減小左馬達的
推力,以較大的右馬達推力達到向左轉的效果,
 整體推力下降。同時因轉彎時的機身傾側狀態,造成機翼的投
影面積變小,連帶影響整體升力下降。因此在轉彎時,一定會
掉高度,代表需有相當的高度才能夠順利轉彎,否則容易撞地
126
位能轉換為動能
操作技巧 step 2 Cont.
 若機身過份傾側向左,可以向右打一些右舵,讓飛機不至於太
過左傾而翻覆。雖然程式中有把機身的目標傾側角限定在 50 度
。但是外界的許多物理因素(風力、慣性力、重力等),都有
可能讓實際的機身傾側角超過 50 度。因此需要手動打反舵平衡
。
127
操作技巧 step 3
 第三階段,在轉彎完成後打右舵讓飛機回正,當飛機已經回正
並俯衝直飛時,此時油門不用太大,方向舵歸零即可,讓飛機
直飛到較低處,準備下一次的拉昇。這一階段是用位能換動能
,讓飛機有足夠下一次拉起的速度。
128
操作技巧 step 4
 第四階段,爬升。有如第一階段的手擲起飛,這段爬升過程只
需加滿油門,讓飛機獲得下一次左轉所需的高度。若無法直飛
,則需微調飛機的左右偏航問題。這一段會運用前一階段的動
能,以及油門指令釋放出的電能,轉換為飛機的位能。
129
操作技巧 step 5
 第五階段,再次左轉。如同上一次左轉一樣,方向舵左打。
130
操作技巧 step 5 cont.
 但是若傾側過度,請以方向舵右舵(打反舵)微調,使其不要過
度側傾翻覆即可
131
操作技巧
 體航線觀察下來,就會發現,這個跑馬航線兩邊較高,中間較
低,這是因為動力縮減和升力縮減造成的高度降低。
132
運用跑馬航線室內飛行
133
能量管理
 可觀察出固定翼飛機與自走車的最大不同,便是需要
瞭解高度與能量是可以互相對換的
 高度其實就是位能,可以轉換成速度(動能),整個
飛行過程其實就是一個『能量管理』的過程(EM、
Energy Management)
 藉由我們的控制,飛機不斷將電能轉成動能(速度)
、動能換成位能(高度),轉彎時損失高度但增加速
度,爬升時換得高度但速度減少,進而在空中達到理
想的操控。 134
操作技巧
 這個跑馬航線其實很像飛機要降落前的五邊航線(請
參見 https://www.fttw.com.tw/news/html/?501.html),
透過跑馬航線瞭解 MicroFly 的操作使用後,便能開
發出更多種類的飛行航線(pattern)
135
操作技巧
 以 MicroFly 這種
爬高後轉彎降低
的特性,很容易
做出 hammer turn
這樣的特技動作
136
137
享受凌空飛行樂趣
不同的飛機架構
 瓦楞紙板飛機
138
不同的飛機架構
 珍珠板飛機(可變翼 F-14)
139
140
不同的飛機架構
 巴爾沙木手擲機
MicroFly 粉絲專頁
 https://www.facebook.com/MicroFly-
112385551371761
141

MicroFly