2016年4月7日 星期四

DIY 精準控 - NRF24L01高頻頭+Arduino+PPM訊號

2016/6/4 更新 - JJ1000 飛行時卡頓問題

本文:
利用 Arduino 來處理遙控器 PPM訊號(一般接教飛線或模擬器那個接頭),再將訊號藉由 NRF24L01+(BK2423/XN297 應該也行) 模組發射訊號來控制部分的玩具四軸.

RCGroup 原文(DIY Multiprotocol TX Module)是應用在 Taranis X9D 系列遙控器上,多高頻頭(CYRF/CC2500/NRF24L01/A7105)的專案,後來法國高手 Goebish 把 NRF24L01 部分擷取出來進行簡化/修改後的版本(CX-10 JR Module (Green, Blue PCBs)),相關程式碼及成品資料可參考這裡(Github).

台灣 RCTW (DIY Futaba FF9 & X9D+ 遙控 JJ1000
)及Facebook非公開社團 "小四軸亂搞社團 (穿越機) - 勇哥" 也有相關討論.

基本上裝上之後可以完敗偉力精準控,遙控非常多玩具四軸及部分初階版四軸.

自己 DIY 一個之後發現,切換協定時,常常都會卡關,切不過去,切不回來,有時遙控會 Lag,遙控距離很短.................
建了一個測試平台:

誤殺許多高頻頭之後,最後發現竟然是 Arduino nano 在搞鬼~~~???
麵包板上的完全正常,右邊那顆一直出問題(若不切換協定就還好!)

等到另一顆 Arduino Nano到手 , 重新再測試一次:
價錢由左至右遞減..........最左邊最貴,使用 FT232 晶片,右邊2片都是用 CH340G 晶片,中間那片有焊針附USB線LED是2紅+2綠,最右邊最便宜沒焊針沒USB線LED是4紅,電路板看似都是副廠公版製造的!
將中間那片剛到的(from 史巴克)放上測試平台測試,一切正常!
再將最右邊那片放上來,還是無法切換協定.............
難道真的不同便宜的 Arduino Nano 差這麼多?那早應該災情慘重才對呀?

原本電源供應一直是使用 3.7V升壓到5V的升壓器供電(如最上方照片上方那片),想到抽屜裡有一個 5V/3.3V 電源供應電路板,死馬當活馬醫,拿出來試試吧! 把平台改成這樣: 
5V供電給 Arduino Nano , 高頻頭3.3V 也不用 Arduino Nano的 3.3V,而改用這個模組的 3.3V 供電.
Bingo 竟然OK了 ................. 最右邊那片原本不行的,改成這樣接法之後也可以了!!
原想就此打住,忍不住又把原本由供電模組提供  3.3V給高頻頭的部分,接回 Arduino Nano 的  3V3 port,結果 .......... 也OK!

所以,結論是: 
1, 電源供應應該是一個原因,供電品質?電流?......
2, 不同廠牌 Arduino Nano 對於供電狀況敏感度不同,供電狀況差的時候,品質差的 Arduino Nano 就會先出狀況
3, 我人品不佳,竟然給我碰上最差組合!
結束!
---------------------------------------------------------------------------------
補充:
Arduino UNO 的測試平台:

---------------------------------------------------------------------------------
筆記一個資訊,Goebish的電路板及討論文中有提到,Frsky Taranis X9D(+) 的 PPM 輸出部分盡量不要直接接到 Arduino 的D2 接腳,最好用兩顆 10K歐姆電阻分壓之後再給 D2(若能接上一顆 BSS138 nFET更好),請看這裡,因為 PPM 輸出電壓太高.
實際拿電表量了幾台遙控器的 PPM輸出跟接地間電壓,大部分都在 3.6V以下,只有 Frsky Taranis X9D+ 的 PPM 輸出部分電壓高達 6.67V,看來接上分壓電阻似乎是比較好的做法!
若是PPM輸出電壓比較低的遙控器,Goebish也建議至少接上一顆電阻,以防意外狀況發生,請看這裡!
有時間再來繼續研究 Goebish 的電路板了!


高頻頭:
除了 NRF24L01以外,玩具四軸上拆下的 BK2423 其實也能用(下圖中間那顆,還含 PA(功率放大IC),真是不錯!) XN297 晶片有時間再來測試了.
Goebish 有提醒,若是使用不含 PA 的高頻頭,要改程式裡面的輸出功率,原本是:
#define RF_POWER TX_POWER_80mW
改成
#define RF_POWER TX_POWER_158mW
加大功率,增加遙控距離,對於常在家飛的飛友來說,可能就夠了!
這個模組超便宜..............請自行上露天找吧!
請看這裡

2016/4/11 更新:
部分飛友反映在 X9D/Radio link AT10上面都遇到操控時會反應慢半拍的狀況(lag),有飛友反映換成史巴克的Arduino nano 後就OK了! 目前累計兩家 85元的 Arduino nano 都會出現異常狀況.

2016/4/21 更新:
1, 使用不含 PA 的高頻頭 power 由 80mW改成158mW的確會增加遙控距離,但幅度很小,所以無PA的高頻頭還是以室內使用為主吧!!
2, 託友人買了兩個 Arduino pro mini 5V/16M跟3.3V/8M , 結果只來一片慘的是沒標示規格! 上傳程式時用 5V/16M跟3.3V/8M 都可以正常上傳沒有問題,但 ............... 用 5V/16M 時,JJ1000 功能完全異常,有時可對頻,但油門無反應,H8 mini 完全無法對頻; 搞了半天改用 3.3V/8M 上傳,Bingo 正常了!! 不過操控起來有時會頓一下(不是Lag),好像瞬間沒訊號,不知道是不是 8MHz 處理速度太慢了???

2016/5/3 更新:
半路遇到岔路,直接改為  OLED顯示+按鍵選擇協定了......Orz
請看這篇

2016/6/4 更新:
先前小四軸FB陸續有飛友反映此模組搭配JJ1000 飛行時會出現卡頓(lag)的問題,經詢問原作者 Goebish 後,他表示可能是  TXID 搭配問題, 只要在遙控器/模組啟動時把方向舵(RUDD/CH4) 打到最左邊,系統會自動更換 TXID(自動亂數產生,無法指定)再試試看應該可以解決;昨天試了三顆電池,目前都沒有發生卡頓(lag)的問題,看起來似乎有效~~~


74 則留言:

  1. 我也想加"小四軸亂搞社團 (穿越機) - 勇哥"可惜都沒通過!!

    回覆刪除
  2. 是申請之後一直無下文還是通過之後被踢掉?那邊版規比較嚴格一些,通過申請之後要先發篇自我介紹,不定期點名.....若常會上去逛,問題應該不大才對~~~

    回覆刪除
  3. 申請之後一直無下文啊~之還能進首頁!!
    申請完之後變此內容目前無法顯示了!!
    因為我本身沒完FB所以拿我女朋友的帳號申請...

    回覆刪除
    回覆
    1. 會不會是FB版主誤認為是來打廣告的?(女生玩RC的真的很少!)所以擋掉了~~

      刪除
    2. 會不會是FB版主誤認為是來打廣告的?(女生玩RC的真的很少!)所以擋掉了~~

      刪除
    3. 感覺也是有這個可能...
      那群組聽說很多好文可以學習,沒機會加入真是殘念!!

      刪除
  4. 所以你要常常發分享文啊~
    你的文章都很有趣!!

    回覆刪除
    回覆
    1. 寫網誌,只是輔助自己記住一些東西,太愛搞東搞西,有時改了一半又分心去玩別的,再回頭已忘記當時的情形,所以只好抽空記錄下來,幫自己老化的腦袋記錄一些東西囉~~~

      刪除
  5. 昨天請我有用FB的同事申請社團看看結果就審核過了!!!
    看來真的覺得是來打廣告的被擋掉了!!!

    回覆刪除
    回覆
    1. 自行申請一個專屬帳號,名稱不要太奇怪應該就OK了!

      刪除
  6. 哈哈~我又來問問題了!!
    請問一下Goebish電路板插上x9d+之後有要做什麼設定呀?
    想去河堤邊找飛友幫我測試看看我這塊會不會也有延遲的問題!!
    沒問題的話在拜x9d+這隻控。

    回覆刪除
    回覆
    1. 基本上X9D+設定外部模組為 PPM 模式,通道順序要看你飛哪一台機子(大部分是 A.E.T.R)
      再確認對頻的搖桿打法應該就沒問題了!

      刪除
  7. Goebish的切換協定是Ch8嗎?

    回覆刪除
  8. 阿 我看他說明找到了是ch12

    回覆刪除
    回覆
    1. Yes CH12 是設定成 reset Arduino,所以可以重新對頻。

      刪除
  9. 對了你有把Goebish的板子刷小四軸勇哥發的code過嗎?
    不知道刷過之後能不能改善延遲問題!

    回覆刪除
    回覆
    1. 正常時沒有延遲現象,但有時候JJ1000會頓一下,燈也會閃一下,感覺會斷訊一下的樣子。

      刪除
  10. 嗯...我就是想問頓一下這問題能不能解決!

    回覆刪除
    回覆
    1. 最近在測試multiprotocol四合一模組,沒有卡頓的現象,有空我再回頭測看看Goebish的那片看看。

      刪除
    2. 剛剛特地把Goebish這片抓出來測,結果發現只有JJ1000會頓,另外兩個分別用Bayang及H8-3D協定的小四軸都很正常,看來似乎是Goebish的V2x2協定有點問題~~~

      刪除
    3. 那意思就是V2x2.ino檔裡面的code有Bug的意思囉??

      刪除
    4. 似乎是這樣,因為如果是模組有問題,應該全部都會頓才對,或是我的JJ1000跟它犯沖??

      刪除
    5. 那你有把Goebish電路板重刷code看看嗎?

      刪除
    6. 試過了,結果一樣.....Orz

      刪除
    7. 阿勒...那還有什麼可能的原因勒!?
      要是這個問題是常態的應該會有人回報給Goebish修正才是。

      刪除
    8. Goebish有回我說要更換 TXID 試看看,晚上回家是成功後再跟你說.

      刪除
  11. 回覆
    1. 測試三顆電池,沒有再發生卡頓狀況,似乎是有效改善了!!
      解決方式稍後補充更新在本帖下方,也會再找飛友幫忙驗證一下.

      刪除
    2. 這個意思是重新對頻讓遙控器換一個頻道的意思囉?

      刪除
    3. 這個意思是重新對頻讓遙控器換一個頻道的意思囉?

      刪除
    4. 意思不太一樣,通常 TXID 包含在通訊封包內,跟頻道無關! 我對協定程式細節不太熟,不過以前在 MJX 協定開發測試時,確實也遇過類似的狀況, TXID 不合適, 連動都不會動,無法對頻或嚴重 lag.

      刪除
    5. 你這樣把問題解決之後變成又有ㄧ個新問題了!
      這個問題就是讓我想拜X9D+的想法越來越強烈了。Orz...

      刪除
    6. 有些毒是沒解藥的,呵呵!

      刪除
    7. 沉默了很久...我拜下去了!!

      中毒中...這控挺傷腦的。

      刪除
    8. 該說恭喜嗎? 呵呵 XDD
      這控真的要花點時間研究,功能實在太多了! 又有 OpenTX/Ersky9x 不同開源韌體可選擇,功能真的蠻強大的,相對要搞懂也要花些時間,用習慣慢慢就進入狀況了!
      我手邊控太多,常常功能搞混......Orz
      這控的萬用模組準備大改版了,新版本MCU更強容量也較大,整理好資料會在分享出來.

      刪除
    9. 作者已經移除這則留言。

      刪除
    10. 作者已經移除這則留言。

      刪除
    11. 真的...昨天研究了三小時才弄到可以控JJ1000,
      但是發現我Ch1 Ch2 Ch3 Ch4跟AT9一樣設定130%飛起來馬達輸出比較有力耶!!
      但是遺憾的是還是搞不定Ch5 Ch6 Ch9這三個怎麼設定到我要的搖頭開關上.

      刪除
    12. 手機編輯怪怪的都會不小心連續回復... =_="

      刪除
    13. 我現在的做法是先到 "INPUTS" 頁面建立 "LED" 的項目在 "Rud" 後面(順序應該沒關係),在"Rud"下面05的地方按"ENT",會跳出設定畫面,此時只改"Input Name"="LED"以及"Source" 後面按一下"ENT",然後切換你要設定 LED 的對應開關,它會自動設進去,按"ENT"確認後跳出,按"PAGE"跳到"MIXER"頁面,在CH5後面按一下"ENT"ㄧ樣會跳到設定畫面,此時把"Mix Name"改成"LED"(非必要),再把"Source"選擇成 "I-LED" 這樣就可以用那個開關控制 LED 了! 其餘依此類推! 可能有更好的方式,目前我只會這樣~~

      刪除
    14. 謝謝啦~終於搞定了LED跟翻滾, 不過無頭模式用不出來.

      不知道問題在哪裡!?

      刪除
    15. 啊...找到問題了!!
      原來通道範圍也可以設定,
      把原本CH1-8改成9就好了!!
      這個控真得很好玩, 怪自己英文不好要比較費時的摸索.

      刪除
    16. 讚哦,多摸幾次就熟了~

      刪除
  12. 作者已經移除這則留言。

    回覆刪除
  13. 好奇怪不能在你其它網誌頁面留言...
    留完過一下就不見了!!

    回覆刪除
  14. 好像系統真的怪怪的,mail 有收到通知,可是進來看不到內容,真怪!
    不過 mail 通知的內容有你消失的留言,我有看到 "Range" 的使用說明 Youtube 了,感謝啦~~

    回覆刪除
    回覆
    1. 最近還發現可以設定S1.S2旋鈕來控制音量,
      買了X9D+之後光玩遙控器就玩不完了,
      這個坑跳得很值得!!

      刪除
    2. 這支要玩到精通真的要很久很久.....................XDD

      刪除
    3. 我又要問問題了...
      因為翻滾跟無頭沒辦法同時使用,
      要是我想要設定一個撥桿開關 "上" "中" "下" 來控制JJ1000的翻滾和無頭要怎麼設定呀?

      刪除
  15. 暑假帶小孩外出旅遊,這幾天都不在家……XD
    你是預計如何設?開關上=翻滾,下=無頭,中=無動作是嗎?

    回覆刪除
  16. 嗯...想用SA撥桿這樣設定但是效果都沒出來。

    回覆刪除
  17. 終於搞出來了...
    我把他想得太複雜了
    只要在INPUUTS頁面設定舵量-100(上 翻滾),舵量100(下 無頭) 就好了,
    之前一直執著在SPECIAL FUNCTIONS頁面上面設定,效果一直指有無頭模式
    這個控真得要精通得花很多時間...英文不好的話要花更多時間=.="

    回覆刪除
    回覆
    1. 讚喔! 最近工作有點忙,沒啥時間玩,日後有問題還要向您請教了~~~^^

      刪除
  18. 您好,我想知道您面包板上面的LED是如何接的,程序裡面並沒有對LED的引腳作定義,能告訴我要接在哪裡嗎。謝謝了

    回覆刪除
    回覆
    1. 原始程式中並沒有使用LED當作狀態指示燈,我是自己加入程式碼來做指示燈的用途,只要有空的接腳基本上都能用,不一定要用跟我一樣的接腳喔!

      刪除
    2. 好的,謝謝了。但是我還有個疑問,我用的是futaba的14SG,也想做這個模塊,現在做好了,燈也正常閃,但是我不知道futaba的PPM輸出通道順序,一直對不上手上的jjrc h36,請問有什麼辦法可以辨別PPM的輸出通道順序嗎?我現在好像ch5-12都對不上,ch12我設定了個會彈開關,但是撥了也沒有反應,並不能重新對頻。

      刪除
    3. 或者,大神您那個OLED版本的,程序可以共享一下不,我直接改用OLED可能會比較簡單

      刪除
    4. 很悲劇的是我的硬碟(SSD)在去年(2016)11月的時候整顆掛掉,所有資料都付諸流水.......Orz

      刪除
    5. 原來是這樣。那請問您知道futaba遙控的模擬器接口,輸出通道順序是什麼嗎?也是AETR嗎

      刪除
    6. 這裡有之前(2016年9月)備份的 OLED 程式碼,我不確定是不是最終版,你可以參考看看! http://www.mediafire.com/file/aa47p5f0fjm125g/nRF_OLED-12s.zip

      刪除
    7. 用 Arduino IDE開啟 nRF_OLED-12s.ino 這個程式!

      刪除
  19. 我現在不清楚futaba的模擬器接口輸出通道順序,所以不知道對應的切換協定有沒有錯,現在不知道為什麼,對不上JJRC H36,可能是輸出通道不對,協定切換到別的去了

    回覆刪除
    回覆
    1. 我沒有Futaba遙控器,不過查了網路資料,Futaba應該是AETR沒錯!

      刪除
    2. 好的,謝謝。那有沒有什麼要改的,通道有沒有要反向的,中立點,行程要不要調?

      刪除
    3. 印象中應該是不用調整才對! 需要調整的是,如果你玩進階一點的四軸,用 Cleanflight/Betaflight 這類飛控韌體才需要調整!

      刪除
    4. 好的,十分感謝!我自己再研究看看吧,可能是程序或者哪裡出了問題

      刪除
    5. 對了,還有個問題忘記問您了。您是用哪個版本的arduino IDE燒錄的,用1.6.5的可以嗎

      刪除
  20. 記得arduion刷韌體的版本沒差...只有arduion nano的板子有差。

    回覆刪除
  21. 方便留个联系方式吗,想发一台遥控器给你帮忙测试下

    回覆刪除
  22. 忘记留邮箱了,我的邮箱地址:tinyspot@126.com

    回覆刪除
  23. 作者已經移除這則留言。

    回覆刪除
  24. BK2423 有BANK0和BANK1如何处理?能否分享ARDUINO CODE?

    回覆刪除