顯示具有 NRF24L01 標籤的文章。 顯示所有文章
顯示具有 NRF24L01 標籤的文章。 顯示所有文章

2016年8月8日 星期一

自製四軸直升機飛控板

基本上這個架構是自己陸續看一些東西後整理出來的一個大致的架構
目前input 跟output 部分都有經驗了,會等姿態的部分研究差不多後,就可以全部都整合都起來...




考慮到成本與實際上飛行時的載重,應該會採用這台450來當作載具測試
用普通的2212馬達/電變加上紅白機架兩千塊即可打發,撞壞比較不傷荷包



2016年8月6日 星期六

四驅車GP晶片計畫

自從去年發現租屋處附近開了一家四驅車店家之後,就又重新燃燒起熱血
台灣不流行的期間基本上幾乎完全沒有消息,也沒有軌道可玩(日本好一點四驅車一直都存在,但也是沉寂多年官方沒有辦全國性的比賽)

回鍋後發現現在的玩家有很大的比例跟我一樣是二十多到三十多歲的大人,小時候有玩過,長大後又跳進來玩
可能因此導致現在軌道跟十多年前相比比較偏向技術軌,多了很多難度,所以不是單純比高速,而是變成在不飛車的前提下盡快跑完全程

之前看了很多四驅車相關的網站、論壇、玩家的部落格
基本上是都是以田宮 or 半田宮 的規則在玩,使用固定的機制去應付像是跳台或交換到這種難關
例如跳台落地為了穩定度,改成避震車或使用金球、吊鐘,為了過彎加裝單向輪/彈簧前後翼等...
為了因應不同場地而做調整,須累積大量的經驗,熟悉各種零件的特性,以整體賽道所有難關的"最大公約數" 的方向去做調整

在這個過程中,不斷的去發揮創意改裝與測試,真的有很多樂趣,這也是四驅車吸引人的地方

不過玩了一陣子後,就一直在想以這種玩法,就算玩到最極限,也是要配合賽道在各種方面(速度、重量、改裝方式等...)做取捨,所以漸漸地有了一個想法:
何不結合單晶片,讓車子自行適應軌道後做調整,這樣可以使用幾個基本車型(像是輕量高速型或是扭力型)來稱霸所有類型跑道

其實這就是卡通裡的GP 晶片啊!!!
在網路上有看到一些玩家使用單晶片改裝GP晶片,但是偏向語音或人工控制車子
https://www.youtube.com/watch?v=85913C7MjoQ
https://www.youtube.com/watch?v=C1x2Jdm_9eA


而我比較感興趣的部分則是讓車子自行學習,能夠自行適應各種跑到跑出不錯的成績

有了這個想法後,漸漸的想了一些可行的架構與做法,部分的功能也曾經做出可行的成品
(綠色部分是已經有做過有經驗的部分,藍色部分是已有方向正在研究中,紅色部分是還沒有想法或是需要重頭學習的領域)

目前先規劃一下架構,整理一下有能力與需要學習的部分,最後再全部整合起來




2016年8月3日 星期三

X9D+ 使用NRF24L01 (v2x2 protocol)控制jj1000





整體架構大致如下,架構還蠻簡單的

  1. X9D+ 遙控器輸出電源與PPM訊號
  2. Arduino 
    1. 負責選擇protocol
    2. 控制NRF24L01對頻
    3. 收PPM訊號,解析出來
      1. http://ddddiy.blogspot.tw/2016/08/arduino-ppm.html
    4. 透過NRF24L01傳送各通道訊號



目前可以動了,但有幾個問題
  1. jj1000 led 燈幾秒會閃一下
  2. 不動時,有時油門會突然稍微轉一下
    1. 目前懷疑控輸出的PPM 有問題,導致arduino 計算錯誤
  3. 上面兩個問題可以調整timing解決
    1. http://ddddiy.blogspot.tw/2016/08/arduino-ppm.html


jj1000 對頻方法
  1. jj1000 開機
  2. 遙控端切換protocol(PROTO_V2X2, 值為0, 我修改的code 可以印出debug message)
    1. 按著前傾
    2. ch12最大




X9D
Leonardo
NRF24L01
PPM(pin1)
pin2

Vout(battery voltage, pin3)
Vin

GND(pin4)
GND
GND

SPI-MISO(pin14)
MISO

SPI-MOSI(pin15)
MOSI

SPI-SCK(pin16)
SCK

pin9
CE

pin10
CS

3.3V
VCC




DBG(pin6 to 5V or 0V)









我的code(porting to Arduino Leonardo)
Use D:\work\arduino\arduino-1.6.8

porting to arduino leonardo
1. change pin define
2. add debug function and dynamic debug message
- set DBG_ON=1 in source code
- connect DBG_pin(enable debug) to VCC or GND(disable debug)
3. abstract PPM_INPUT_MIN/MAX
4. fix bu
g about PPM ISR setup
- use digitalPinToInterrupt(PPM_pin)
5. increase throttle safe check delay to 1s

來自 <https://github.com/cy-arduino/nrf24_multipro/commit/8c776f6ef0f2fd794154fa3c51ff08ce60b72803>


原始github source









nrf24l01 pin define








除了AETR前四個通道,其餘通道功能如下(依協定不同有些微差異)
Channel 5: led light, 3 pos. rate on CX-10, H7, inverted flight on H101
Channel 6: flip control
Channel 7: still camera
Channel 8: video camera
Channel 9: headless
Channel 10: calibrate Y (V2x2), pitch trim (H7), RTH (H8 mini/H20), 360deg flip mode (H8 mini 3D/H22)
Channel 11: calibrate X (V2x2), roll trim (H7)

Channel 12: Reset / Rebind













reference:
    遙控器輸出PPM格式 http://www.geek-workshop.com/thread-2408-1-1.html