2016年9月5日 星期一

DIY ATtiny85 版本的迷你 Frsky (D8) PPM 輸出接收機

最近迷上微型有刷四軸,需要微型Frsky PPM接收機,看了 RCGroup 這一篇 Midelic 的設計,先買了一片  ATtiny85 DIP型式(麵包板才能插)晶片,用麵包板是做了一片,電路很簡單,照著上述連結下方的電路圖(見下圖)接線即可,我把電路圖中右上方一個662K(6V降3.3V)降壓器改為 ASM1117-3.3v模組,方便做實驗,重點就是要降成3.3V就對了!

接完線是這樣,好亂........................

接下來,要把程式寫入/燒入/刷入(Flash)...名詞很多,其實都是同一件事.....................
這裡要先提醒,CC2500模組只能承受max 3.9V電壓(3.3V工作電壓),若使用的刷機用工具 USBISP/USBASP 只能提供5V,那麼一定要拆下 ATtiny85(2.7V~5.0V都可工作),另行刷完成是在裝回去原本電路才不會燒了 CC2500晶片!!我聽FB社團勇哥的建議買純3.3V USBISP/USBASP 較保險!
在這裡卡關卡了一陣子,明明程式用 AVRDUDE都正常刷進去了,也沒錯誤,可是就是不會動作!後來詢問之後才知道,新晶片要先設定Fuses 程式才能運作,作者有寫,但我有看沒有懂它的作用,也是問了勇哥才有解!後來改用跟勇哥相同的刷機程式 Progisp 1.72 以減少操作失敗率!

要刷 ATtiny85 需要一個 USBASP/USBISP,可以參考勇哥推薦的這支純3.3V USBISP(買的時候跟賣家指定,要加20元!),另外,刷機時接線圖如下:(接紅框的6條線到USBISP對應接腳)


接完後,USBISP接上電腦,開啟Progisp 1.72程式,左上方"Select Chip"設成 ATtiny85,再按右下方紅框處設定 Fuses.


進入 Fuses 設定畫面後,點擊"綠色1""紅色0"即可改變下方籃框處的數值,把數值改成下下圖指定的 Fuses 設定值,在後按下紅框的"Write"寫入,即完成 Fuses 設定! 設錯會無法執行喔!


設定值:


設定完 Fuses 後,準備刷入韌體程式(firmware),確認勾選藍框三個項目,按右上方 "Load Flash" 載入韌體程式(我刷目前2016/9/2最新版 "FrskyRx_Attiny85_PFS_PPM_240816.hex") 再按下綠框處的"Auto"確認寫入程序沒錯誤訊息後即完成!


注意: 對頻方式是將 PPM 接腳接地,再進行供電即進入對頻狀態,再把 X9D+ 按下對頻紐進行對頻,協定是 D8 協定喔!

最後,將ATtiny85裝回原本電路進行測試,因為是 PPM 訊號輸出,所以找一片 SP Racing F3 飛控來測試,測試結果成功!!

原本用綠色 LED 當作對頻指示燈,結果亮度好暗,換了一顆紅色LED就亮多了~~~


2016/9/5 Update

2016年5月30日 星期一

DEVO 7E 換腦升級計畫 & 中文支援 - Deviation Ultimate 7E

2016/6/1 更新 Ultimate 7E 加裝開關資訊在下方.

本文
DEVO 7E 這支迷你遙控器因為價格低,加上有 Deviction 加持, CP 值很高,一直是許多人的入門首選,但一直以來受限於原廠硬體程式碼空間不足(MCU : STM32F103RBT6 128kB Flash),所以無法像 DEVO 8/10.. 等其他遙控器有中文的支援.

5iMX 論壇兩位程式高手 Galee & Mckay 針對這個問題,分別改寫了程式碼,讓 7E 也能支援中文:
     Galee DEVO 7E
     Mckay DEVO 7E
可惜的是這兩個版本不是 Deviation 官方的版本,加上兩位大神可能因些因素,所以都沒有持續更新,加入新的協定.

2015年10月,在RCTW論壇上看到一篇 cctsao1008 大大 post 出來的 MCU 升級文章,一舉將 原廠STM32F103RBT6 128K 升級到 STM32F103RET6 512kB Flash ,真是令人驚艷! 不過,因為當時程式空間沒有這麼緊迫,加上Deviation官網也沒有正式支援,所以就有如曇花一現,無疾而終了!

隨著 Deviation 支援的協定越來越多,DEVO 7E 的程式碼空間愈來愈緊迫,終於在 Deviaion 官方 5.0版發佈前,被提出來討論要對 7E 的未來做出一個決定,是要花心力簡化程式碼,再榨出一些空間,讓 7E 能夠再延長一點壽命,還是拿掉一些功能(標準操作介面)來換取程式空間?更別說對中文的支援了!連語言選項都看不見!

後來新加坡飛友 silpstream , 提出了 Ultimate7e 方案及教學, 將 7E 的 MCU 進行升級, 基本上跟 2015年10月 cctsao1008 大的方式相同,並在官網發佈了英文版升級教學 Ultimate7e tutorial: Processor upgrade , 照著教學方式,小弟終於完成 2支 DEVO 7E 換腦工作.

升級過程說明如下,方便對英文有恐懼症的飛友們也進行升級.
整個程序基本上分三個部分:
     1, 升級 MCU
     2, 刷入 BootLoader
     3, 刷入新的 256K版本 韌體程式

需要先準備的東西有:
     1, 新的 MCU (露天搜尋 STM32F103RCT6 可找到很多,我是到新竹百年電子直接買的)
     2, ST-Link V2 USB 及ST-Link程式 (露天搜尋 ST-Link V2)
     3, 下載 PB 提供的 DEVO 7E 的 256K BootLoader 程式 下載 devo7ebootloader_256.bin
     4, 支援 256K 7E 的韌體程式 (我目前用 HappyHarry編譯的 5/25 Test Build)
     5, 焊接工具

1, 升級 MCU :
    MCU 可以選擇的版本有好幾個 256K / 384K / 512K ,都可以使用沒問題,只有價格的差異;最終我還是選了 256K 的版本,因為 DEVO 8/10 這些機種也都是 256K 的版本,如果有一天 256K 也不夠用了,就不單單是 7E 一台有問題,而是幾乎全部會有問題了!
    MCU STM32F103RCT6 256K 購買難度不高,最難的是怎麼更換這 64支接腳的 MCU, 沒有一定的功力及設備,千萬不要貿然進行;所以小弟上露天去尋找有無代工焊接的服務,雖然有人建議找手機維修行或許有機會可以找到可以執行這樣服務的商家,環顧小弟居住附近的通信行,號稱有維修服務的店家,幾乎都是要 "外送"處理,只是一個單純收發中心而已,根本沒有辦法做這項工作.
幸運的是在露天找到一個板橋蕭先生,有10年SMD焊接經驗,價格也很公道,聯絡之後把手邊2支7E的主板拆下連同 MCU STM32F103RCT6 256K 寄去請蕭兄協助更換,蕭兄焊接功力真不是蓋的,拿到之後看看接點真是漂亮.

2, 刷入 BootLoader (此過程 "不要" 開啟遙控器電源,切記)
    最大的MCU更換難關度過了,剩下的就容易多了,先將 DEVO 7E 的 TMS/TCK/GND/VDD 四根針腳焊上準備連接 ST-Link USB (你要直接焊線也是可以的),四隻腳分別對應 ST-Link 的 SWDIO/SWCLK/GND/3.3V 如下圖:

接線時千萬要注意,不要接到 5.0V , 不要接到 5.0V , 不要接到 5.0V , 不要正負極接反 , 不要正負極接反 , 不要正負極接反 .
並且把上方兩根 Boot 接腳短路在一起

線路都接好之後,ST-Link V2 USB 先不要接上電腦! 先將 ST-Link 程式開啟,畫面應該如下:

接下來將 ST-Link V2 USB 接上電腦, 再選擇 "Target -> Connect"

 連接正確會出現下圖:

 接著再選 "Target -> Erase Chip" 抹除晶片

出現確認抹除晶片畫面,按確定!

開始抹除.

接著要載入新的 BootLoader 256K 檔案,選擇 "File -> Open file"

選擇 "devo7ebootloader_256.bin" 千萬別選錯.

檔案選擇完成,準備刷入 Bootloader.

選擇 "Target -> Program & Verify" 進行刷錄及檢查

確認 Start address = 0x08000000 , 我把 Verification(檢查比對)方式改為 Verify after programming (程式刷入後再檢查),理論上選哪個都沒差,有進行檢查即可,其餘不動,按下 "Start" 開始刷入.

大約4秒多就刷完了,非常快!

接下來選擇 "Target -> Disconnect" 將設備斷開

順利斷開後會出現這個畫面, 此時可以拔除 USB 及所有連接線,及焊上去的所有針腳! Boot 那個短接線也記得移除.

3, 刷入新的 256K版本 韌體程式
    接下來將遙控器檢查一切 OK後,就直接開啟電源,因為裡面沒程式,所以會直接跳到升級程式畫面,跟平常更新韌體時按住EXT再開機時的畫面一樣.
後續刷機過程跟以前都一樣就直接跳過,將韌體刷入後,USB格式化後檔案也完全複製過去,再開機!

新的版本後面都會加註 devo7e-256-xxxxxxxxxxxxxxxxxxxx

有語言選單可以選了!





升級完的 Ultimate 7E 基本上跟 DEVO 8/10 算是同一級(256K Flash)的水準了!

2016/6/1 更新:
新增
silpstream大的4個三段開關加裝 - Deviation 討論
silpstream大的4個三段開關加裝 - silpstream Blog

silpstream大的2個旋鈕開關加裝 - Deviation 討論
silpstream大的2個旋鈕開關加裝 - silpstream Blog




2016年5月25日 星期三

Deviation+華科爾DEVO10+ " 新" 四合一高頻頭 (DEVO 專用 PNP)

2016/6/27 更新 - 見文章下方

本文:
又搞來一個4合1,跟飛友一起買了新版,但我只買底板而已,把上次這篇的跛腳4合1焊上去,再也不用呆呆的用手動切換天線了~~

右邊白色是我的4合1底板, 左邊是飛友的4合1成品

 焊上去之前比一比大小,由左至右,4合1模組,DEVO專用底板,原廠CYRF高頻頭,基本上底板跟原廠模組一樣大!



4合1模組焊上底板之後,基板上可直接插進原本模組位置使用 PNP (plug and play), 當然還需要焊上 NRF24L01/CC2500/A7105 三條 CS(chip select)訊號線,我使用跟上一篇相同的顏色及線序,這樣 hardware.ini 就不用改了~~~
B7                綠色 NRF24L01
TMS(A13)   紫色  A7105
TCK(A14)    藍色 CC2500



裝回原本天線及固定螺絲,收工!! 有沒有簡單?

一根天線搞定,美觀簡潔!!!

簡單測試了一下四個高頻頭動作皆正常,老闆說四個高頻頭 PA/LNA 線路接正常可控制.

2016/6/2 更新:
Deviation forum HappyHarry 將此高頻頭安裝到 DEVO 7E 的程序,請見此篇.

2016/6/27 更新:
HappyHarry 提供 DEVO 7E 焊接新四合一 for DEVO 高頻頭詳細接線方式照片,請看此篇.


2016年5月11日 星期三

Flysky FS-TH9X(Turnigy 9x) + OpenTX / ER9X

二手 FlySky FS-TH9X OpenTX 升級改裝之胡搞瞎搞~~~

1, 焊接接點


2, 使用 Arduino 替代 USBASP 下載器,OpenTX設定方式
    Arduino-ISP 要修改的地方

     a. 接線方式 Arduino 接線方式 , 電源 +/- 間最好接上一顆電容器,減少上傳失敗狀況.


接線方式: (網路資料來源)
    


b, 使用Arduino 內建範例 ArduinoISP 來上傳.
 c, 但依據網路上的資訊,需修改程式中兩個地方,將 "here * 2;" 中的 "* 2" 去除後再上傳才能正常運作.


3, 使用 mini USB 接頭當介面,連接  USBASP 接線方式


OpenTX內的設定.
    使用 ArduinoISP


Programmer 由 "usbasp"  改為 "avrisp" 
確認 Arduino 使用的 com port 修改正確 port 
Extra Arguments 加入 "-b 19200" (Arduino 速率要相同)


使用 USBASP 時,改為下圖即可 Programmer : usbasp / Port : usb


2016/5/11 更新:






USBASP 也到了~~~



上面 Programmer 設定改回 usbasp 即可.




RCGroup 相關討論(Turnigy 9X)

還是直接用 USBASP 比較方便!! ~~~

2016/5/17 更新:
試著把 DIY Multiprotocol TX Module (RCGroup討論  & Github資料庫) 的模組裝上測試,先用麵包板照著 Github 的電路圖接上 nRF24L01+模組來試看看:


再分別使用 Frsky Taranis X9D+ 配OpenTX(V2.1.8測試版) 及 Flysky FS-TH9X配ER9X(R820)最新版 進行測試


奇怪的是 ER9X 在切換協定時會自動重新對頻,可以自由切換!但 OpenTX 卻須自行重新 Reset Arduino pro mini 才行, 怪怪的!還需要多做一些測試才行.
另外,要注意的是目前程式已經超過 Arduino pro mini 程式空間,所以編譯時就會出現錯誤訊息,告訴你空間不足! 此時需要到 _config.h 程式中,將沒安裝的高頻頭或不使用到的協定取消(mark //) 程式縮小才能順利編譯及上傳.