7-3 Arduino Uno R4とR3の違い

Arduino UNO R4と、そのひとつ前のバージョンである、Arduino UNO R3には様々な違いがあり注意が必要です。
それらの違いについてまつはちさんが詳しくまとめてくださいましたので掲載します(感謝!!)
  

るためすたメモ

ちなみにですが、2024/6現在Arduino公式から出ているマイコンは…

  • R4系のArduino → Arduino Uno R4 Minima と Arduino Uno R4 WiFi の二機だけが該当します
  • R3系のArduino → それ以外のだいたいのArduino(Uno R3はもちろん、小型機のNanoやNano Every等、大半のArduino)

であることを頭の隅に置いておくといいかと思います。
(たぶんこれからR4系の小型Arduinoも出てくるのかな…)

  • ソフトウェアシリアルも通信速度の速いハードウェアシリアルですが、R4とR3では数が違います。
  • 非常にわかりづらいのですが、R4でもR3でも、UARTポートの位置は0番ソケットと1番ソケットです
  • R4は、USBポートがSerial、0番&1番ソケットはSerial1、という別のハードウェアシリアルポートになっています
  • UARTが増えることによって、PCでシリアルプリントしながら、もう1つ何らかのUART通信ができます。UART接続のセンサとか使うときに便利です。
  • R3は、USBポートと0番&1番ソケットのUARTがどちらもSerialで共用になっています。
    • プログラムの書き込み時に0番&1番ソケットに部品を繋いでいると、書き込みに失敗することもあります。

るためすたメモ

このシリアルポートの違いにより、6-2-2_DFPlayer_UART_SoftwareSerialではR3とR4では異なる対応を求められましたね…

  

  • I/Oソケットで流せる電流容量が、R3では、20mAでしたが、R4では8mAとかなり少なくなっています。
  • 2024/6現在、世の中に出回っているサンプルはR3想定のものが多いです。
  • LEDやトランジスタを介して電流を増幅するタイプの回路は特に注意が必要です。最悪焼けます。
    • モータードライバや、FET、トランジスタなどをいれましょう

るためすたメモ

5-1 LED球の点灯(digitalWrite)で出てきました

  

  • DCジャックやVinソケットへの入力電圧が異なります
  • R4では、6~24Vですが、R3では、7~12V とかなり小さくなります。
  • もしR4向けに電源を買って、R3にも使う場合は、電源の電圧をよく確認してから繋ぎましょう

  

  • 2024/6月現在、R4はまだ登場したばかりのマイコンです
  • R4向け対応が進んでいないライブラリも多くあります
  • R4でサンプルコードですらコンパイルが通らない場合は、ボードをR3に変えてみて、コンパイルが通るか試してみましょう

るためすたメモ

6-4 LCDディスプレイ(SPI)とか8-3 LEDテープを派手に光らせるで盛大に煮え湯を飲まされましたね……(しろめ)
2024/6現在、R4についてはとにかくまだまだネット上に情報がないことを念頭に置いて、ライブラリを使っていてエラーが出るようであれば、R4未対応である可能性を疑ってみていいと思います

  

  • R3よりR4のほうが安いです!
  • プログラム書き込み用のUSBポートが、R3ではType-Bだったのが、R4ではType-Cになっています
  • R3に比べて、書き込み容量や、スペックなどが、大幅に向上しています!

  

るためすたメモ

これは本当にそう。
講師も今回の資料作成で両方とも触りましたが、R4はR3から正当にアップグレードされていると感じました。
ただ繰り返しですが、現時点ではR4はまだネットに情報が少ない(R3が名機すぎてネット上に情報があふれかえっており、相対的にR4の情報にたどり着きにくいという事情もありそう…)ので、その辺りはちょっと頑張る必要があるかなと思います。

  

  • R3のMCUは、8bitマイコンのATMega328Pですが、R4では32bitマイコンのRA4M1が採用されています
  • これにより、R3のint型が2byteなのに対し、R4のint型では4byteとなっています
  • 2byteと4byteで何が違うの?というと、格納できる値の最大値・最小値が違います
    • 2byteだと-32768~32767
    • 4byteだと-2147483648~2147483647
    • めちゃくちゃ違います
    • このため、R4前提のint型で最大値最小値を扱うと、R3に移植した際に、上手く動かなくなります。
  • また、加速度センサのような、I2C通信でデータを読み出し、シフト演算で整形するようなプログラムの場合に、上手く動かなくなります。こちらの記事がわかりやすいです。

  https://note.com/electric_mecha60/n/nc5a69a06959e

るためすたメモ

変数のデータ型についてでちょっと書いていますが、これによりR4ではintで扱える数値の桁数が増大しています。
便利ではありますが、実際にきぐるみの実装に使うマイコンはNanoやNano Every等のR3系である可能性が高いです。
なので互換性の観点から、個人的には当面はR4でもR3と同じ基準でintを使った方が無難かな…と思います。

  

  • R3からR4では、様々な部分のスペックが向上しています
  • 動作周波数、PWMやADコンバータの解像度、メモリ容量の向上、消費電流の低下…などなど。

  

  • R4はR3に比べてできることがかなり増えています。

HID機能の追加

  • Arduinoをキーボードやマウスといった、USB接続のコントローラとして扱うことができる機能です
  • HIDはHuman Interface Deviceの略です
  • Keyboard.hをインクルードすれば使えるのでお手軽に試せます

  

SWD/JTAGデバッグが可能に

  • 高度な開発になってくると、1行ずつ挙動を見たり、プログラムの実行を止める箇所を作ったりして、どこでトラブルが起きているのかを調べる必要が出てきます。
  • これにはデバッガというものをつないで行うのですが、R4にはそのデバッガをつなぐためのピンが生えているのです。
  • 正直めちゃくちゃ待ってた機能です

  

DACの追加

  • R4のA0ソケットには、デジタルをアナログに変換する機能が入っています
  • DACはDigital-to-analog Converterの略です
  • それ以外のピンや、R3では、PWMで疑似的にアナログ電圧が出ています
  • 精密なアナログ出力ができるようになるので、サイン波のような滑らかで連続性のある波形を出せたり、音楽を鳴らせるようになったりします
  • こちらのサイトのサンプルを見てみると面白いと思います

  https://garretlab.web.fc2.com/arduino.cc/docs/tutorials/uno-r4-wifi/dac/
  https://docs.sunfounder.com/projects/elite-explorer-kit/ja/latest/new_feature_projects/07_dac.html

るためすたメモ

6-1-2_Servo_libraryで出現しました