【Arduino】 Arduino とラジコンのコントローラー(プロポ)を接続する
この記事では、Arduino とラジコンコントローラー(プロポともいう)を接続する方法を紹介します。
1.この記事の内容
この記事で使っているプロポはこちらです。
10J (10ch-2.4GHz T-FHSS AIRモデル)
(引用元サイト:双葉電子工業 ホビーサイト ホームページ | プロポセット(空用) | 10J)
このプロポとArduinoを無線通信を行い、ジョイスティックのデータを取得します。
プロポのレシーバーには R3008SB を使用します。
(説明書:https://rc.futaba.co.jp/dl_manual/data/reciever/r3008sb.pdf)
全体像としてはこうなります。
2.配線
今からは、1チャンネル(右側のジョイスティックの左右の傾き)を受信してみます。そのためには、次のように配線してください。
プロポ受信機(R3008SB)の電源は、「7/8」と書かれたピンから供給します。また、「1」~「6」には、それぞれ次のようなジョイスティックの値が送信されています。
チャンネル名 | 送信内容 |
---|---|
1ch | 右スティック左右 |
2ch | 左スティック上下 |
3ch | 右スティック上下 |
4ch | 左スティック左右 |
(5、6チャンネルはよくわかりませんでした...進展があれば追記します)
3.スケッチ
以下のコードをコピペしてください。1チャンネルの値を受信して、シリアルモニタに表示するプログラムです。
#define RECV_PULSE_LENGTH_MIN 1000 #define RECV_PULSE_LENGTH_MAX 2000 #define CH1_PIN A0 int CH1_value = 0; void setup() { pinMode(CH1_PIN, INPUT); Serial.begin(38400); } void loop() { CH1_value = pulseIn(CH1_PIN,HIGH); Serial.print("CH1 value = "); Serial.print(CH1_value); int Ch1_percent = map(CH1_value, RECV_PULSE_LENGTH_MIN, RECV_PULSE_LENGTH_MAX, 0, 100); Serial.print(" ( "); Serial.print(Ch1_percent); Serial.println(" %)"); delay(100); }
4.実行
Arduinoに上のスケッチを書き込んだら、早速実験してみてください。
STEP1. Arduinoを電源ON
上のプログラムの場合、ArduinoはPCとシリアル通信をするので、ArduinoはPCと接続して、電源はUSBから供給してください。
この時、受信機(R3008SB)のLEDが赤色に点灯していればOKです。
STEP2. プロポ(送信機)を電源ON
中央にある横長のスイッチがプロポの電源スイッチです。
プロポの電源をONにしてから2~3秒後に、受信機のLEDが赤から緑の点灯に変わったら無線通信が行われています。
STEP3. シリアルモニタで確認
シリアルモニタを開いて、右側のジョイスティックを左右に傾けてみてください。
その傾きに応じてシリアルモニタに表示される数字がリアルタイムで変化するはずです。