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

沒有留言:

張貼留言