見出し画像

Arduino UNO R4の互換性について

はじめに

Arduino UNO R4は、シリアルインターフェースに関連するライブラリやシールドが、R3以前のArduino UNOと互換性が無い可能性があります。

シリアルインターフェース

R3以前のArduino UNOは、コネクタに出ている" TX(D1)"、" RX(D0)"とIDEのシリアルモニタ(USB)は共用でした。
R4は、コネクタに出ている" TX(D1)"、" RX(D0)"とIDEのシリアルモニタ(USB)は、別のハードウエアが用意されています。
この為、関数が異なります。
コネクタにバイナリデータを送信する関数の、R3以前とR4の違いは以下の通りです。
R3:Serial.write(BYTE);
R4:Serial1.write(BYTE);
コネクタを介してシリアル通信を行う前提のシールドはプログラムの変更が必要になります。(そのままでは動作しません)
この記事(https://note.com/electric_mecha60/n/n394cd595ea4b)で  KRS-3301(シリアルサーボ)はハードウエアシリアル版はコンパイル完了 " と報告しましたが、シリアルモニタにのみデータ送信されて、コネクタには送信されないので、シリアルサーボは動きません。
つまり、購入前の事前確認としては ” コンパイルの正常終了 " + " シリアルインターフェースを使わないシールド・センサ "  が使用可否判断の目安となります。

近藤科学シリアルサーボ ICSポジション指定関数

近藤科学さんが、ICS関連の関数をR4用にリニューアルするには少々時間を要しそうです(リニューアルしない可能性も・・・)。
この記事(Arduinoでロボット用サーボモーター KRS-3301 ICS をシリアルインターフェース(I/O 1本)で動かす方法|あるちざんラボ (note.com))で紹介した通り、使い勝手が良く、講習会でも推奨しているのでR4でも動かせるようにしました。
シリアル通信は受信側を作るのは大変です。
何時データが来るのか分からないので、それなりの対応が必要です。
送信側は自分の好きなタイミングで送り付けるだけですので簡単です。
前出の記事は、本来双方向のICSをTXのみで動かす試みですので、この思想のまま、R4のTXからICSフォーマットのデータを送信する関数のみを作ります。

下図の様に"二股コードⅡ"(ケーブル・コネクタ | 近藤科学 - Part 4 (kondo-robot.com))を用いてKRS-3301と電源(6V)を接続して、R4とはTX(D1):信号線(白線)、GNDにGND(黒線)を接続します。

KRS-3301接続例

”ICS_TX.txt”はこの状態にて動作確認済みです。

前の記事にて紹介したXHコネクタ仕様の自作R4の場合はTX(D1)がサーボモータへの電源供給を想定したパターンになっていますのでKRS-3301をTXに接続するだけで動作します。

XHコネクタ仕様の自作R4基板 部品配置図

※基板をJLCPCBなどに外注される方は以下の記事にて外注を前提にした自作記事があります。(2023/12/31追記)
https://note.com/electric_mecha60/n/nc51aece649c4

こちらもサーボモータへの電源供給を想定したパターンになっていますのでKRS-3301を下図赤丸のTRXに接続するだけで動作します。

ArduinoUNO R4 互換マイコンボード 

いつもサポートありがとうございます!いただいたサポートは新しい記事の糧となります。 製作記事は部品購入が必要ですので大変助かります!