본문 바로가기
뻘소리

flysky ibus 아두이노로 수신

by mokhwasomssi 2021. 2. 20.

사용하는 RC 송신기는 FS-i6, RC 수신기는 FS-A8S이다.

flysky의 rx protocol인 ibus에 대한 정보를 찾다가

아두이노 라이브러리가 있길래 한 번 써봤다.

https://github.com/bmellink/IBusBM

 

bmellink/IBusBM

Arduino library for RC IBUS protocol - servo (receive) and sensors/telemetry (send) using hardware UART - bmellink/IBusBM

github.com

 

 

 

이 라이브러리에서 ibus uart rx를 serial0 rx로 고정해놨는데

이게 업로드에 쓰는 유아트 핀이라

업로드할 때는 수신기 ibus 핀을 빼놔야 한다.

송신기가 꺼져있을 때는 0값을 유지한다.

예제보고 쓴 테스트 코드

#include <IBusBM.h>

IBusBM IBus;    // IBus object

void setup() {
  IBus.begin(Serial);    // iBUS object connected to serial0 RX pin
}

void loop() {
  int val1, val2, val3, val4;
  val1 = IBus.readChannel(0); // get latest value for servo channel 1
  val2 = IBus.readChannel(1);
  val3 = IBus.readChannel(2);
  val4 = IBus.readChannel(3);
  
  Serial.print("channel 1 : ");
  Serial.print(val1);
  Serial.print(", ");
  
  Serial.print("channel 2 : ");
  Serial.print(val2);
  Serial.print(", ");
  
  Serial.print("channel 3 : ");
  Serial.print(val3);
  Serial.print(", ");
  
  Serial.print("channel 4 : ");
  Serial.println(val4);
  
  delay(50);
}

문제 없이 잘 받아온다.