2012/11/16

121116 玩轉萬用遙控器 - Deviation-10



這一天我等了很久!
一直以來都在華科爾的陰影下玩 RC,即使機子性能差也只能摸摸鼻子自認倒楣掉進華坑兒,想跳槽都沒機會,只因被控綁死了。
尤其是近年來流行的微型機,接收機都和陀螺儀綁在一起,加上各廠牌都刻意使用不相容的通訊協定,因此選好什麼牌子的接收就只能乖乖用他的發射機,這已是行之多年的慣例!

今年3月,幾位精通軟硬體的 RC 玩家開始蠢蠢欲動,因為華科爾新出的 Devo 系列遙控器既便宜又精良,用料不輸美日大廠,卻只賣一半不到的價格。
最重要的是 Devo 使用時下主流的單晶片核心 ARM® ,而且是義法半導體 ST 出產的 STM32F103 ,效能和穩定性絕無問題,工具和使用人數也多,因此在 DEVO 上開發新韌體越來越可行,簡單來說,就是借用 DEVO 便宜的身體,幫他換個聰明的腦袋!
http://www.rcgroups.com/forums/showthread.php?t=1611471

一開始像是駭客在破解,解開滑科爾加密的 CRC 檢查碼後故事就開始了,因為華科爾在這顆 MPU 內寫死基本的連線升級及檢查機制,雖然這個硬體保護讓破解有點麻煩,但這個機制的好處是不怕損壞,不管程式碼怎麼錯亂死當變磚,升級韌體的程序永遠不會消失而且優先執行,這讓他更適合當作開發平台。

最早的成績是 100mW 的破解,雖然硬體是 10mW 版本,只要把 100mW 韌體改個內碼就能不受限制使用 100mW 功能。
http://www.rcgroups.com/forums/showpost.php?p=21798462&postcount=548

經過許多玩家貢獻心力後,換腦的工程如火如荼的進行著,主要功能由 PhracturedBlue 主寫,並特別由 Devention 衍生了一個計畫名稱叫 Deviation (偏離), 藉以區隔並揶揄華科爾。
Deviation 原始版本只在 DEVO8 上開發,九月初開始釋出即迅速改版到較為穩定的 1.1.2,一般使用無大問題,發射機進入一機多用的時代。

無奈我手上只有 DEVO10,雖然和 DEVO8 共用同一顆 MPU,但螢幕小了一號,而 Deviation 主開發人 PhracturedBlue 手上也沒有 DEVO10,因此 Deviation-10 的計畫顯得遙遙無期。

雖然我對 Deviation 計畫很感興趣,因為沒有 DEVO8 而提不起勁深入研究,必竟已經有一台 DEVO10 放在那裏生灰了,無論如何都沒有理由再弄一隻更貴的 DEVO8 。更何況 DEVO8 那個漂亮的彩色觸控螢幕在大太陽下完全無用武之處,幾乎呈現黑屏看不清內容。



還好 PB 計畫縝密,程式架構預留最大擴充性,將來只要改寫顯示介面就能把核心程式移植到 DEVO10 或 DEVO12。
十月初,當幾位對開發 DEVO10 有興趣的人還在討論怎麼開始的時候,突然在討論區看到一個熟悉的名字,而且一出手就已經弄好幾個 DEVO10 的畫面,這正是 suvsuv 大大,過去在大陸 5iMX 就知道他,沒想到這麼低調的投入這個萬眾期盼的任務。



開發過程需要花時間,但看著慢慢成形的畫面,非常好奇網路上素昧平生不同國家的人,如何能夠共同開發一套軟體,而且分工細密緊密的合作呢?
看遍 Deviation 討論文章,最後才看到一條連結,那是 PhracturedBlue 在 Bitbucket 建立的 Repository,簡單說就是把整個計畫的原始程式碼放在 Bitbucket 上,其他人就能任意取用或改寫,這就是時下流行的開放原始碼 (Open Source) 的作業方法!
https://bitbucket.org/PhracturedBlue/deviation

對不熟 C 語言的我來說,成千上萬個變數在上百個檔案裡連來連去,看得眼都花了,完全沒有頭緒!
但是看到 Deviation 開發的人竟能神奇的跑著 DEV8、DEVO10 的模擬器,不禁讓我也想玩看看。

最早是在 Deviation 裡看到一篇 Development on Windows 的文章,後來才發現裡面記載完整的步驟,於是依樣畫葫蘆一步一步慢慢建立模擬器。
畢竟我沒摸過新一代的 C 語言和開發環境,建立的過程真是艱苦,對於不懂程式的人來說,這篇文章真是微言大義,每一個字都有他的用意,一步錯就步步錯,我歷經多次錯誤,直到某次頭腦開竅才終於弄對。
http://www.deviationtx.com/articles/7-development-on-windows

過程如下:
1. 安裝 MinGW:下載MinGW,安裝MinGW ,安裝過程要勾選加入 C++、MSYS、Developer Toolkit。

2. 安裝 fltk:下載 fltk,啟動 MinGW Shell 跑文字視窗,在裡面依序打入指令執行:
mkdir src (建立目錄)
cd src (變更目錄)
tar -xzf /c/fltk-1.3.0-source.tar.gz (解壓下載檔案,這個範例我把壓縮檔放在 C 磁碟根目錄)
cd fltk-1.3.0
make
make install

3. 安裝 portaudio:下載 portaudio,在 MinGW 裡面依序執行:
cd src
tar -xzf /c/pa_stable_v19_20111121.tgz (解壓下載檔案,這個範例我把壓縮檔放在 C 磁碟根目錄)
cd portaudio
./configure
make
make install

4. 安裝 Deviation:由 PhracturedBlue/deviation 下載最新的原始碼壓縮檔,在 MinGW 裡面依序執行:
cd ~/src
cd -pf<位置> deviation (每次我用 MinGW 解壓縮都會錯誤,因此這裡我跳過這個程序,自己用 Winrar 解壓縮,然後放到 src 目錄內,並把目錄名稱縮短以方便輸入。)
(Min/GW介面的根目錄位置在 C:\MinGW\msys\1.0\home\,解到裡面的 \src\ 內。)
cd 程式目錄/src
make TARGET=emu_devo8 WINDOWS=1 (編譯成模擬器執行檔,大小寫和底線不能寫錯,DEVO10 就改成 emu_devo10)
emu_devo8 (emu_devo10) (在 MinGW 下執行模擬器)

以後要執行模擬器要先開 MinGW Shell,然後 cd 進入目標錄下的 src 子目錄,沒編譯過或是程式碼更新時要重新 make,不然可直接執行 emu。
沒用過 DOS 的人可能比較難懂,至少要知道怎麼用 cd (Change Directory),cd ~ 就能回到根目錄。

建立模擬環境過程是麻煩了點,每次新的編譯都要跑很久,但辛苦過程絕對值回票價,因為在電腦上就能跑完整的畫面,模型資料也能設定和儲存,等於是 PC 端的使用者介面,將來把設好的資料放回發射機裡面就好了!
更棒的是不管 DEVO8 還是 DEVO10,模型資料都是互通的,將來可用 DEVO8 的漂亮介面規畫好再給 DEVO10 用,不用受限於小小的黑白螢幕了!
只是資料放在個別資料夾 src/devoXX/filesystem/model 內,取用時要看清楚。





開放原始碼的威力不只是看得到原始碼而已,最重要的是能讓其他人以基礎版本進行修改,就像一棵樹一樣,其他人都從主幹分支出去。
在這裡叫做分岔 Folks,在 PhracturedBlue/Deviation 這個知識庫內就可看到 8 個分支,其中 sunvsuv / deviationFor6810 就是由 suvsuv 大大建立的分支,主要做 DEVO10 的介面。

Bitbucket 的威力除了分支外,最棒的是記錄了版本編修歷程,每次改寫都會留下足跡,可以比對新舊程式碼的完整內容,差異也用顏色區分,觀看提交歷程就能清楚的追蹤進度與改版內容,這真是太方便了!
https://bitbucket.org/sunvsuv/deviationfor6810/changesets

既然自己就能編出模擬器,那麼直接做成執行檔不是更好!
在 PhracturedBlue/Deviation 計畫首頁就有完整說明怎麼編成 .dfu 韌體檔,同樣依樣畫葫蘆就能建立自己的韌體工廠,只是還要加裝一些軟體。
這裡以我在 Windows 平台為例,參考說明的 Building for ARM (on Windows) 段落:

1. 安裝 YAGARTO:
下載 YAGARTO,安裝到 C:/MinGW/stm32 資料夾內。
把 YAGARTO 加入 MinGW 的輸出路徑:在 ~/.profile 檔案裡面加一行輸出路徑
export PATH=/mingw/stm32/bin:$PATH。
( ~/ 是根目錄的意思,位於 C:\MinGW\msys\1.0\home\使用者名字\)

2. 下載 libopencm3,解壓縮到 ~/src/ 下把資料夾名稱改為 libopencm3。
到 libopencm3 資料夾打開 makefile 文件,把 DESTDIR=/usr/local 改成 DESTDIR=/mingw/stm32
進 MinGW,進入 libopencm3 資料夾,分別跑一次 make 和 make install

3. 安裝 python:下載 phthon 2.7.3 版 (太新的版本可能有問題),安裝到硬碟內,我直接裝在 C:\。
把 phthon 加入 MinGW 的路徑內:在 ~/.profile 檔案裡面加一行輸出路徑
export PATH="/c/Python27":$PATH。

呼呼,這樣就能建立 .dfu 韌體檔了!(簡單嗎?)
現在連不懂程式的老灰阿都能自己編譯韌體了,真是感謝這些無私奉獻的開源碼大師。



下次到 Bugpucket 下載最新版原始碼後後解壓到 ~/src/ ,開 MinGW,進去新目錄的 src 資料夾 (ie, cd src/sunvsuv1115/src ),就能編譯模擬器或執行檔。
早期執行檔內含除錯器 Debuger,因記憶體不足影響效能,現在已把除錯器移除,所以編譯韌體檔要這麼打:
make TYPE=prd TARGET=devo8 或 make TYPE=prd TARGET=devo10

看到這裡眼睛都花了吧,沒錯,當初完全沒有這方面經驗,要從頭到尾完全做對還真不容易,但仔細看看說明文件,裡面可是每一步驟都有寫喔,所以我說他是微言大義!

好了,編好 dfu 檔案後,DEVO 連接 USB,以華科爾的韌體更新程式 DfuSe 就能更新了,更新完在把剛編成的 DEVO8 或 DEVO10 裡面的 filesystem 資料夾內的檔案,全部複製到發射機內就好了。
韌體安裝參考 Zidane0623 大大在 RCTW 的文章,我就不多說了。
CP值瞬間衝破表的 DEVO 8S [刷Filesystem 詳細教學&說明]

至於 suvsuv 大大努力一個月就完成 DEVO10 的初步介面,我也趕上他的進度,恰巧在這時建立好編譯環境,於是比別人早一步試用這個萬能的遙控器。
操作畫面看 RCTW 就好了,不過後來又改良了一些畫面就是了。
打造CP值最高的跨廠牌發射機 Deviation - DEVO10




Deviation 的規畫非常有彈性,所有檔案都用文字檔儲存,檔案結構就如同隨身碟一樣,取用與備份都用 USB 線就能完成。
最重要的是他預留語言翻譯能力,只要做好文字對照檔存在 language 檔案夾裡,開機後就能自由選用哪一國語言顯示。

雖然小液晶顯示英文比較清爽,但 Deviation 的名稱定義實在有點難懂,於是著手翻譯繁體中文畫面。

  

例如上面我翻成三段式的原文是 Expo & DR,其實裡面最多就三段,但寫成曲線和DR就摸不著頭緒了。
不過操作介面只是個媒介,用來把編輯好的參數存到文字檔而已,自己用記事本改寫也可以,當然還是用模擬器最快了!

Deviation 最重要的功能就是控制不同系統的接收機,只要刷過韌體,我就能飛 DSM2 系統的機子了。



Deviation-10 成功之後,垂涎已久的 Blades NANO CPX 不再遙不可及,反而是測試發射機的最佳方案!



對了,Deviation 不只跨系統,華科爾故意搞出來的幾套老系統都能通吃,以後帶一支 DEVO10 出門就好,2801系統、DEVO系統、DSM2系統都能用,還能記憶30個模型,也能自由存放在電腦裡,或是上網分享交流!
這下我的 WK-2801 控真的要退休了,找不到繼續用下去的任何理由了!


回覆
  • 1樓
    前輩,
    Deviation 真的超讚的! 最近您忙著繁中語系修正 &
    debug,因為我還是習慣英語介面,所以沒能幫上忙~~只能幫忙抓抓小蟲!
    改天看您飛一下 Blade Nano CP X囉!我的nano CPX馬達好像操
    到衰退了,現在都沒啥力了,真的有點慘~
    看到那個模擬器介面的建立過程還真是不簡單呀,我只能在旁邊觀望
    了..Orz
    看了時刻表,本週看來無緣一起飆機啦!?
  • kakkoii12 於 November 15, 2012 05:50 PM 回應 | 來源:111.80.108.56 | 刪除 | 設為隱藏
  • 哈哈,原來差一個字就差很多是這個意思!
    還有,看慣中文介面後反而不習慣看英文!
  • 版主 於 November 16, 2012 01:39 PM 回覆 | 刪除 | 修改回覆
  • 2樓
    給ej大敬禮! 真是好學不倦。看到眼熟的幾個開放源碼通用程
    式,像畫圖的python,這個計畫真的是開放源碼開出的花朵!
    那麼理論上只要設定參數在電腦裡弄好,給DEVO 8或10都可
    囉? 那直接給DEVO7呢不知可不可行。 期待Blade的影片呀呀
    呀!
  • davidlitmanen 於 November 15, 2012 11:03 PM 回應 | 來源:114.34.216.62 | 刪除 | 設為隱藏
  • 唉,剛開始看到那麼多程序心就涼半截,所有的軟體連聽都沒聽過,前後弄了幾個星期吧,最後看到DEVO10即將成形,硬逼自己重頭跑一次,終於跑出來的。

    DEVO7比較麻煩喔,他只有音頻線,怕是升級後無法進隨身碟模式。
    聽PB說想拿他閒置的DEVO7機身大改,改主板+LCD,變成內建USB+彩色液晶(甚至觸控),USD$25左右,如果他改成了,你應該也沒問題!
  • 版主 於 November 16, 2012 01:48 PM 回覆 | 刪除 | 修改回覆
  • 3樓
    ej大大:
    我對您,真是越來越敬佩了!
    看了三次,還是沒有勇氣改我的DEVO-8
    (曾經在竹北體育場,向您請教Mini CP問題的新手 留)
  • P 於 November 17, 2012 09:14 PM 回應 | 來源:118.169.72.249 | 刪除 | 設為隱藏
  • 刷韌體不會傷機子,如果你已能更新原廠韌體,那DfuSe能正常使用就沒問題了。
  • 版主 於 November 19, 2012 10:08 AM 回覆 | 刪除 | 修改回覆
  • 4樓
    EJ大 你好
    我在目錄裡找不到 .profile 這個檔案
    不知道該如何設置 謝謝
  • 於 November 23, 2012 09:04 PM 回應 | 來源:220.132.194.156 | 刪除 | 設為隱藏 | 回覆
  • 5樓
    EJ大 你好
    問題已經解決 我直接指定PATH即可 謝謝
  • 於 November 23, 2012 11:08 PM 回應 | 來源:220.132.194.156 | 刪除 | 設為隱藏 | 回覆
  • 6樓
    還是je大文筆寫得最流暢 XD
    不過最後的儲存模型數量,已測試過不只可記30組模型呢
    ^_^
    可以自己增加模型文件[model31.ini],從31開始...小弟
    大概預估,模型參數存放量可塞到容量滿為止...真的很恐
    怖。
  • Zidane0623 於 November 29, 2012 02:10 AM 回應 | 來源:114.40.53.209 | 刪除 | 設為隱藏
  • 其實 Deviation 開宗明義就說可以存 255 個模型,只是一次放那麼多可能要找個檔案就要按很久。
  • 版主 於 November 30, 2012 07:34 AM 回覆 | 刪除 | 修改回覆
  • 7樓
    你好大大,我是上次的香港玩家,感謝你早前細心回覆^~^
    有個新消息,v120d02系列官方出了新的全金屬升級主wing套裝,
    有一共4組組件全是金屬,但盛惠¥人民幣280元。
    1)請教大大,如果真的升級,其實金屬和膠之間,有什麼功效分別
    (v120d02只是小機,功效明顯嗎?)
    2)請問 碳纖槳對我們這小機有功效嗎?
    3)最近看了gaui X2 (250等級機種)的特技表演,它的動作如450大機
    敏捷,快速正負pitch fly 時,真的和大機一樣好看,而且最 吸引之
    處,它可中空90度停頓(即機頭向天,尾向地),請教我們的機,可做
    到嗎?
    您早前的250 等級機可以做到嗎?(在你的舊網誌見到)

    感謝您上回回覆
  • newv120d02s新手 於 December 22, 2012 03:38 PM 回應 | 來源:203.145.92.166 | 刪除 | 設為隱藏
  • 如果塑膠件摔不壞,那合須更強硬的金屬件呢!
    當然我也斷過主槳夾和旋翼頭,但一顆才十幾RMB,280換成塑膠可以用好幾年吧!
    1. 金屬硬耐衝擊,但缺點是重擊後會扭曲;塑膠件剛性差,只要不超過材料極限是不會變形的。
    2.無效,塑膠槳摔不斷、風阻小,廠商只能賺一次錢,不像碳纖又貴又難做、風阻大又脆弱,摔幾次就開花了。
    3.越大台越容易,小台頂多能做個樣子,但技術好加上動力強可以接近一些,最近我的V120影片有點這種味道。
    4.我的200或250應該很少有這種動作,當時怕摔且技術還不夠,現在或許會好一點,但我很久沒飛了。
  • 版主 於 December 22, 2012 03:57 PM 回覆 | 刪除 | 修改回覆
  • 8樓
    多謝大大細心的回復^_^
    你的回復答案,這裡問你拿個copy right,
    放在香港一個小機壇,當然會寫出處於此網
    誌’。

    又想請教你一個奇怪的問題,
    我的v120在急升時,機尾是不走位以及無金
    魚尾的,急退 亦不走位,

    但如急速轉正負pitch(即 打idle時 油門上下急
    速交替)多次後,會突然機尾失控,多次機尾
    慢速逆時鐘轉,180°掉頭,迎面 衝向自己,
    多次因此而 墜機,
    請教大大在rainbow 時(快速鐘擺時,即正負
    pitch 急速交替)會否有此現象??

    是否負荷太大,調小點pitch ?
    我的idle1 參數:
    油門 85 ~ 80 ~ 85
    pitch 65 ~ 0 ~ 65

    idle 2
    油門 100 ~ 95 ~ 100
    pitch 65 ~ 0 ~ 65

    gyro 75% or 70%
    兩個idle都有此問題,而idle 2明顯點。

    謝謝。
  • new v120d02s新手 於 December 28, 2012 11:49 AM 回應 | 來源:124.217.186.178 | 刪除 | 設為隱藏
  • 華科爾陀螺儀只要超過他能自動修正的範圍,就會放棄修正然後重來,所以要自己想辦法不要讓它發生。
    螺距太大超過陀螺能修正的範圍就會突然甩尾,然後跑到一個新的位置。

    +65太大了,目前我的幾台都達不到50%,甚至調低到40%,(我的IDLE一律100%油門)。
    檢查方法很簡單,抓在手上IDLE UP,螺距慢慢增加,當發現推力不增反減時就是他的極限螺距,甚至還要再減低一點。
    另外全螺距弱轉速嚴重拖慢也不好,最後飛起來試試看,直到不甩為止。
    當然,正負螺距都要有相同出力、降轉幅度也要相近,這樣才算有調好螺距中點。
    同理,尾推也一樣要調好,左右對稱才不會讓某一方向重拖,造成系統負擔。
  • 版主 於 December 29, 2012 07:09 AM 回覆 | 刪除 | 修改回覆
  • 9樓
    ej大大果然有深究,這個快速控制後突然走位
    問題,早就存在,而且問了很多人,都沒有方
    法解決,而你的方法我一用就有效了。

    謝謝你的詳細答覆。^_^

    調降pitch 機動性低了,但失控就此消除。
    最後為追求大pitch 的快感(又不想失控),用盡
    方奇怪方法,
    巧合發現,如調高尾舵的向右吹風,就可解決
    失控問題,而又不用調降升降pitch .

    有2個問題想請教大大
    1)我的奇怪解決方法,加大右吹風至到,即使
    打盡左舵(順時鐘轉時),機尾是有輕微右吹風
    的,
    簡單說,因調太大右吹風,即機打什麼舵,都
    是出右吹風。但會否出現大大早前說要尾
    pitch要 中立為好,不然不好控?
    2) walkera舵機是否設計問題,為何尾舵用上
    400次左右後會振?(ccpm用上千多次後,都會
    振),我已換了差不多4次尾舵(4個月內)
    除了換舵,有方法嗎?

    感謝大大^_^
  • new v120d02s新手 於 January 3, 2013 07:21 PM 回應 | 來源:124.217.186.93 | 刪除 | 設為隱藏
  • 轉速不夠就不要想玩大PITCH遊戲,那尾槳轉速太慢出力是不夠用的。
    加大右吹風可以解決正飛大螺距,那後退怎麼辦,尤其機尾只要偏左一點就馬上吹走倒轉,完全鎖不住,這是我建議左右吹風量要夠大的原因,至於左右等量則是避免某一邊重拖讓主槳降低轉速,這也會嚴重影響鎖尾效能。

    尾舵機震動是老毛病了,不影響飛行,只是會和尾翼不平衡的震動混淆而已。我的每一台都抖到不行,幅度越來越大,還不是飛得好好的。
  • 版主 於 January 4, 2013 08:53 AM 回覆 | 刪除 | 修改回覆
  • 10樓
    小弟終於忍不住入手DEVO10了! 不過跟2801比起來,這個控的搖桿
    太長(2801最短可以調到24 mm,比DEVO短了快5 mm);而且搖桿彈
    簧調到最鬆還是太緊,比2801還緊很多。有點不習慣,希望能改造成
    習慣的樣子。
  • davidlitmanen 於 January 9, 2013 03:00 PM 回應 | 來源:140.114.94.153 | 刪除 | 設為隱藏
  • 恭喜新機入荷,加入Deviation的世界,以你的研究精神一定可以挖掘到新寶藏!
    以前曾經盡可能加長搖桿增加細膩度、縮短搖桿增加速度、極鬆的彈簧減少阻力與頓點,總之試過各種組合,彈簧也被拉長減少拉力。
    目前又回歸常軌,彈簧不鬆不緊,長度倒是越調越短,DEVO搖桿倒底剛好。
    要更短也可以,把上蓋鑽穿、下檔磨短些就可以了!
  • 版主 於 January 10, 2013 06:49 AM 回覆 | 刪除 | 修改回覆

沒有留言:

張貼留言