最も人気があり重要な開発ボードの4番目のリビジョンである、UNO R4 WiFiの設定方法を学習します。
AUTHOR: Jacob Hylén、LAST REVISION: 2024/01/05
Arduino UNOは、最も人気があり世界で認識されている開発ボードです。リリース以来、メーカーコミュニティや教育の場で定番になっています。Arduino UNO R4 WiFiボードは、UNOボードの4番目のリビジョンの一部で、32ビットMCU(ルネサスのRA4M1シリーズ)を初めて搭載しています。
このドキュメントはUNO R4 WiFiの技術概要を提供し、次のプロジェクトを始める際に役立つ情報やガイドへのリンク集です。
ESP32モジュールとルネサスRA4M1チップは、HID機能が利用できる非常に柔軟で適応性のある洗練されたUSBシリアルシステムの一部です。一方で、メインMCUとESP32の双方をプログラムできる機能も維持しています。ただし、これは、高度なオプションで、ハッキングが必要となります。
Arduino UNO R4 WiFi用のドキュメントプラットフォームを参照することもできます。
- データシート
- 電源
- ボードパッケージ
- インストール
- Arduinoクラウド
- ルネサスRA4M1
- LEDマトリックス
- DAC
- RTC
- EEPROM
- SPI
- QWIICコネクタ
- USBシリアルとUART
- USB HID
- CANモジュール
- ESP32-S3-MINI-1-N8
- オリジナルのページ
データシート
完全なデータシートは、以下のリンクからダウンロードできるPDFとして提供されています。
Download the Arduino UNO R4 WiFi Sense datasheet
電源
ボードには、VINピンから電源を供給することができます。この場合、6Vから24Vの範囲をサポートしています。VINピンはDCジャック(バレルコネクター)にも接続されています。
VINピンから電源を供給すると、電圧を5Vに下げるためにボード上のレギュレーターを利用します。このとき5Vピンは1.2Aまで供給することができます。この電圧レギュレータ―は、MCUやLEDを含む他の全ての部品に電源を供給することに注意してください。
USB-C®コネクタを使うときは、5Vを供給する必要があります。
USB経由で電源を供給すると、ボード上の電圧レギュレータ―は完全に迂回します。この場合、5Vピンはボードを壊すことなく2Aまで供給することができます。
ボードパッケージ
UNO R4 WiFiは、Arduino UNO R4 Board Packageを基にしています。
インストール
UNO R4 WiFiは、Arduino IDEやArduino Webエディタ、Arduino CLIを使ってプログラムすることができます。
Arduino IDE
Arduino IDEでボードを使うには、最新のArduino UNO R4ボードパッケージを、ボードマネージャーからインストールする必要があります。
詳細はUNO R4 WiFiを始めるを参照してください。
Arduino Webエディタ
Webエディタは、全ての公式ボードを含んだオンラインIDEです。コアパッケージをインストールする必要はありません。Webエディタを使うには、CreateプラグインをPCにインストールする必要があります。
詳細はhttps://docs.arduino.cc/arduino-cloud/getting-started/getting-started-web-editorを参照してください。
Arduinoクラウド
Arduino UNO WiFiは、Arduinoクラウドと互換性があります。Arduinoクラウドは、IoTアプリケーションを数分で作成できるクラウドサービスです。
ルネサスRA4M1
UNO R4 WiFiは、UNO R4 Minimaにも搭載されている、強力で強固なマイクロコントローラーを搭載しています。ルネサスのマイクロコントローラーは、内蔵周辺機器を含め、高性能で強固なことで有名です。
周辺機器には、アナログデジタル変換器やタイマー、パルス幅変調(PWM)ユニット、通信インターフェイス(UARTとSPI、I2C)などを含みます。
メモリー
ボードには以下のメモリーが搭載されています。
- 32kBのSRAM
- 256kBのフラッシュ
- 8kBのデータ(EEPROM)
ピン
UNO R4 WiFiは、多くの異なるピンが利用できます。それらの多くには特別な機能が備わっています。この後のセクションで、それらを説明します。何ができるかを学習するために、この記事を読んでください。
以下は、UNO R4 WiFiピンの機能の概要を示す、全てのI/Oピンの完全な表です。
ピン | タイプ | 機能 |
---|---|---|
D0 | デジタル | UART受信 |
D1 | デジタル | UART送信 |
D2 | デジタル | GPIOピン、割り込み |
D3 | デジタル | GPIOピン、割り込み、PWM |
D4 | デジタル | GPIOピン |
D5 | デジタル | GPIOピン、PWM |
D6 | デジタル | GPIOピン、PWM |
D7 | デジタル | GPIOピン |
D8 | デジタル | GPIOピン |
D9 | デジタル | GPIOピン、PWM |
D10 | デジタル | SPI(CS)、GPIOピン、PWM |
D11 | デジタル | SPI(COPI)、GPIOピン、PWM |
D12 | デジタル | SPI(CIPO)、GPIOピン |
D13 | デジタル | SPI(SCK)、GPIOピン、内蔵LED |
A0 | アナログ入力 | アナログ入力、DAC |
A1 | アナログ入力 | アナログ入力、OPAMP+ |
A2 | アナログ入力 | アナログ入力、OPAMP- |
A3 | アナログ入力 | アナログ入力、OPAMP出力 |
A4 | アナログ入力 | アナログ入力、SDA* |
A5 | アナログ入力 | アナログ入力、SCL* |
アナログピン
UNO R4 WiFiは、6本のアナログ入力ピン(A0-A5)を装備しています。analogRead()
関数で読み取ることができます。
ピン | タイプ | 機能 |
---|---|---|
A0 | アナログ入力 | アナログ入力、DAC |
A1 | アナログ入力 | アナログ入力、OPAMP+ |
A2 | アナログ入力 | アナログ入力、OPAMP- |
A3 | アナログ入力 | アナログ入力、OPAMP出力 |
A4 | アナログ入力 | アナログ入力、SDA* |
A5 | アナログ入力 | アナログ入力、SCL* |
|
|
これらのピンの参照電圧は5Vです。しかし、以下のようにすることで、変更可能です。
analogReference(AR_DEFAULT)
(5Vのデフォルト参照電圧)analogReference(AR_INTERNAL)
(1.5Vの内蔵参照電圧)
デフォルトの分解能は10ビットですが、12ビットや14ビットまで変更することができます。そのためには、以下のメソッドをスケッチのsetup()
で使ってください。
analogReadResolution(10)
(default)analogReadResolution(12)
analogReadResolution(14)
UNO R4 WiFiのADC機能についてもっと知りたければ、Arduino UNO R4 WiFiのADC分解能を参照してください。
OPAMPピン
RA4M1は、以下のように外部に接続された内蔵OPAMPを搭載しています。
ピン | OPAMP |
---|---|
A1 | OPAMP+ |
A2 | OPAMP- |
A3 | OPAMP OUT |
デジタルピン
UNO R4 WiFiには、合計14本のデジタルピtンがあります。何本かは他の目的に利用されるので、他のピンが使える場合は、GPIOとしては利用しないでください。
ピン | 機能 | 説明 |
---|---|---|
0 | RX | UART通信 |
1 | TX | UART通信 |
2 | GPIO | デジタルIOピン |
3 | PWM | デジタルIOピン、PWM |
4 | GPIO | デジタルIOピン |
5 | PWM | デジタルIOピン、PWM |
6 | PWM | デジタルIOピン、PWM |
7 | GPIO | デジタルIOピン |
8 | GPIO | デジタルIOピン |
9 | PWM | デジタルIOピン、PWM |
10 | PWM | デジタルIOピン、PWM |
11 | PWM | デジタルIOピン、PWM |
12 | GPIO | デジタルIOピン |
13 | GPIO | デジタルIOピン |
デジタルピンの参照電圧は5Vです。
PWM
PWM(Pulse Width Modulation: パルス幅変調)は、高速にオンとオフを切り替えることで、デジタルピンでアナログ出力をエミュレートすることができる機能です。デジタルピンに接続したLEDの明るさを調整したりすることができます。
UNO R4 WiFiは、ピンヘッダに「~」記号の付いたピンでPWMをサポートしています。公式にサポートされているピンは以下です。
ピン | RA4M1 | タイマー |
---|---|---|
D3 | P105 | GTIOC1A |
D5 | P107 | GTIOC0A |
D6 | P111 | GTIOC3A |
D9 | P303 | GTIOC7B |
D10 | P103 | GTIOC2A |
D11 | P411 | GTIOC6A |
以下の関数を使うことでアナログ出力を利用することができます。
|
|
デフォルトでは、分解能は8ビット(0-255)です。analogWriteResolution()
を使えば、12ビット(0-4095)まで利用することができます。
|
|
以下のピンがPWMをサポートしていますが、UNO R4 WiFiボードの他の機能も兼ねています。ライブラリ関数を書く際は、以下のピンは、公式にはPWMをサポートしていないので、使わないでください。
ピン | RA4M1 | タイマー |
---|---|---|
D0 | P301 | GTIOC4B |
D1 | P302 | GTIOC4A |
D2 | P104 | GTIOC1B |
D4 | P106 | GTIOC0B |
D7 | P112 | GTIOC3B |
D8 | P304 | GTIOC7A |
D12 | P410 | GTIOC6B |
D13 | P102 | GTIOC2B |
D18/SDA | P101 | GTIOC5A |
D19/SCL | P100 | GTIOC5B |
LEDマトリックス
UNO R4 WiFiに搭載されているLEDマトリックスがプログラムで利用できます。静止画やアニメーションの表示、ゲームなどで使えます。Renesas Coreは、マトリックス上にフレームを表示するための、Arduino_LED_Matrixライブラリを含みます。
LEDマトリックスの詳細を学ぶには、LEDマトリックスガイドを参照してください。
Arduino_LED_Matrix matrix
- LEDマトリックスを初期化する。Arduino_LED_Matrix.load()
- フレームをフレームバッファにロードする。
以下に基本的な例を示します。
|
|
DAC
UNO R4 WiFiは、12ビットまでの分解能があるDACを搭載しています。PWMピンより高性能な、本当のアナログ出力ピンとして動作します。
|
|
このDACピンは、デフォルトでは8ビットの分解能を持っています。ピンに書く値は、0-225であることを意味しています。
しかし、必要に応じて12ビットまで分解能を変更することができます。このとき、ピンに書き込む値は、0-4095です。
|
|
UNO R4 WiFiのDACに関してさらに学びたい場合は、DACガイドを参照してください。
RTC
リアルタイムクロック(RTC)は、時間を計るのに使われます。時刻を監理するアプリケーションに有用です。
以下は、RTCから日付と時刻を取得する最低限の例です。
|
|
UNO R4 WiFiのDACに関してさらに学びたい場合は、RTCガイドを参照してください。
EEPROM
データメモリとも呼ばれるEEPROMは、ボードの電源を切ってもデータを保持する形式のメモリです。
|
|
EEPROMの書き込みサイクルには上限があります。つまり、読み込み専用のアプリケーションと相性がいいです。void loop()
内でwrite()
を使わないようにしてください。でないと、チップの書き込みサイクルの上限を超えるかもしれません。
詳細はEEPROMガイドを参照してください。
UNO R4 WiFiのEEPROMについては、EEPROMガイドを参照してください。
SPI
UNO R4 WiFiは、Serial Peripheral Interface(SPI)を搭載しています。SPIでは以下のピンを使います。
- (COPI) - D11
- (CIPO) - D12
- (SCK) - D13
- (CS) - D10
以下の例は、SPIの使い方を示します。
|
|
I2C
I2Cを使うと、2本のピンだけを使い、I2Cデバイスを複数接続できます。コントローラーはI2Cバスを通して、7ビットのアドレス宛に情報を送信します。このため一つの信号線に接続できるI2Cデバイスの技術的な上限は128です。実際には、他の制約があるので、128デバイスに到達することはありません。
UNO R4 WiFiは、SCLとSDAとマークされたI2Cバスを一つ搭載しています。これらは、以前のUNOの所有者はよく知っているA4(SDA)とA5(SCL)と共有しています。プルアップは基盤に搭載されていませんが、実現するためのフットプリントは搭載されています。
UNO R4 WiFiで、I2Cに使われるピンは、以下の通りです。
- SDA - D14
- SCL - D15
I2Cデバイスを接続するには、スケッチの先頭で、Wireライブラリをインクルードする必要があります。
|
|
void setup()
で、ライブラリを初期化する必要があり、利用したいI2Cポートを初期化します。
|
|
I2Cに接続されているデバイスに何かを書き込むには、以下のコマンドを使います。
|
|
QWIICコネクタ
Wire
オブジェクトではなく、Wire1
オブジェクトを使います。Qwiicコネクタは3.3Vだけがサポートされていることに注意してください。UNO R4 WiFiは、モジュールを接続するのに利用可能なQwiic/STEMMAコネクタを搭載しています。複数のモジュールのデイジーチェーンが可能で、一つのコネクタで全てのデバイスを制御できます。
QwiicもしくはSTEMMAは、それぞれ、SparkFunとAdafruitが開発したコネクタの名前です。開発ボードやブレイクアウトモジュールにI2Cピンを備えています。例えば、Arduino UNO R4 WiFiのような開発ボードとブレイクアウトモジュールの双方がQwiicかSTEMMAコネクタを搭載していれば、それらを接続し、配線を最小にして、多様なプロジェクトを作成できます。
ブレイクアウトボードがこれらのコネクタを一つ以上搭載していれば(このような構成はたくさんあります)、2番目のものを別のQwiicモジュールにデイジーチェーンし、別のインタラクティブノードをプロジェクトに追加することができます。
UNO R4 WiFiは2つのI2Cバスを搭載していて、Qwiicコネクタは、2番目のバスに接続されています。このため、Wireライブラリを使う際は、Wire
オブジェクトではなく、Wire1
オブジェクトを使う必要があります。以下に例を示します。
|
|
USBシリアルとUART
UNO R4 WiFiボードは、2つの独立したハードウェアシリアルポートを搭載しています。
- 一つのポートはUSB-C®に接続されていて、
- もう一つはRX/TXピンに接続されています。
これは、UNO R3とUNO R4とで明確に違う、数少ないことの一つです。UNO R3では、一つのハードウェアシリアルポートが、USBポートとRX/TXピンの両方に接続されています。
UNO R4 WiFiのUARTに使われているピンは以下の通りです。
ピン | 機能 |
---|---|
D0 | RX(受信) |
D1 | TX(送信) |
ネイティブUSB
シリアルデータをPCに送るには、標準的のSerial
オブジェクトを使います。
|
|
UARTを通してデータを送受信するには、最初にsetup()
の中で、転送速度を設定する必要があります。
UART
UNO R4 WiFiのUARTに使われているピンは以下の通りです。
ピン | 機能 |
---|---|
D0 | RX0 |
D1 | TX0 |
UARTを通してデータを送受信するには、最初にsetup()
の中で、転送速度を設定する必要があります。UART(RX/TXピン)を使うときは、Serial1
オブジェクトを使います。
|
|
受信したデータを読むには、whileループの中で、個々の文字を受信し、文字列に追加していくことができます。
|
|
何かを送信する場合は、以下のコマンドを使います。
|
|
シリアルイベント
serialEvent()メソッドは古いリビジョンのUNOボードでサポートされています。しかし、UNO R4ボード(と他の新しいArduinoボード)では、サポートされていません。
しかし、このメソッドはシリアルデータを検出して関数を実行するのだけに使われる機能なので、新しいデータの到着をSerial.available()
をデータの検出に使うことができます。
|
|
タイマー
Arduino APIには、FspTimer
クラスが存在します。このクラスは、スケッチでタイマーを使うときに必要な機能を全て提供しています。
UNO R4 WiFiは2つのタイマー周辺機器があります。一つは、非同期汎用目的タイマー(Asynchronous General Purpose Timer: AGT)で、もう一つは、汎用PWMタイマー(General PWM Timer: GPT)です。ボードには2つのAGTがあり、一つは、millis()
とmicroseconds()
のような時刻測定メソッドで利用されています。
ボードには7つのGPTがあり、どのくらいの期間シグナルが有効だったのかを測定しデューティサイクルを計算するなどの、PWMタスクの実行を補助しています。前述したFspTimer
ライブラリを使うことで、これらのPWMタイマーを使うことができます。この関数は明示的にPWMタイマーを要求します。
|
|
ライブラリーのタイマー関数を使うときは、タイマー種別(AGTかGPT)を指定する必要があります。スケッチでは、以下のように宣言します。
|
|
シリアルUSB
UNO R4 WiFiは、HID.h
ライブラリをスケッチにインクルードすることで有効になる、拡張セットを搭載しています。
Serial.baud()
- 今使われているボーレート(int)を返すSerial.stopbits()
- 通信のストップビット数(int)を返すSerial.paritytype()
- 通信のパリティ(int)を返すSerial.numbits()
- 通信のデータビット数(int)を返すSerial.dtr()
- データ端末レディ(DTR)信号(bool)の状態を返し、DTR信号が使われていれば、ignore_dtrフラグをtrueに設定するSerial.rts()
- 送信要求(STR)信号(bool)の状態を返す。
<HID.h>
ライブラリは、Serial
オブジェクトをSerialUSB
にリマップし、これらの機能を有効にします。
サポートされているリンク
- SerialUSB.h(Github)
USB HID
このボードはHID(キーボード/マウス)として動作でき、キーストロークや座標をネイティブUSB経由でPCに送信することができます。
|
|
これは、keyboardとmouseライブラリで有効にでき、IDEのライブラリマネージャでインストールすることができます。
UNO R4 WiFiのHID機能についての詳細は、HIDガイドを参照してください。
Serialリマップ
スケッチで、<HID.h>
がインクルードされると、シリアルオブジェクトは、Serial
からSerialUSB
に変更され、HID機能がサポートされるようになります。これにより、多くの機能が有効になります。有効になる機能一覧はこちら
サポートされているリンク
- HID.h(Github)
CANモジュール
UNO R4 WiFiのRA4M1は、CAN 2.0A/CAN 2.0B標準に適合したCANモジュールを内蔵しています。
CANRXピンとCANTXピンを、MCP2551やTJA1050などのCANトランシーバーに接続します。
ピン | 機能 |
---|---|
D10 | CANRX |
D13 | CANTX |
Arduino_CANライブラリを使い、他のCANデバイスと通信します。
|
|
CANメッセージを作成し、送信します。
|
|
到着したCANメッセージを読みます。
|
|
UNO R4 WiFiのCAN機能については、CANガイドを参照してください。
ESP32-S3-MINI-1-N8
UNO R4 WiFiに搭載されているESP32-S3モジュールは、デフォルトでは、シリアルブリッジとして動作し、PCとの接続を処理します。また、例えば、新しいスケッチを受信しリセットするなど、必要に応じて、メインMCUのRenesas RA4M1のリブートも扱います。
UNO R3では、ATMEGA16U2が同様の目的で搭載されていました。ボード上のESP32モジュールは、より先進的なSoCで、WiFi®とBluetooth®接続もボードに提供しています。
ESP32は、ESP32のデータ線も露出しているので、ESP32を直接プログラムすることもできます。これらのデータ線は、ボード表面の3x2ヘッダと、背面のパッドに接続されています。
USBブリッジ
デフォルトでは、ESP32はPCとRA4M1 MCUとの間のシリアルブリッジとして動作します。USBデータ線は素一途を通してルーティングされ、デフォルトでは、これらのスイッチはESP32モジュールを経由して通信するよう設定されています。
この振る舞いを変更することもでき、ソフトウェアもしくはハードウェアにより、RA4M1 MCUのシリアルバスに直接アクセスすることも可能です。以下の指示を見てください。
- ソフトウェア - D21をHIGHにすると、どのMCUがUSBに接続する野かを制御する回路を閉じることができます。D21がHIGHの間、RA4M1はUSBシリアルポートに接続します。D21がLOWの間、デフォルト設定のように、ESP32が接続します。以下のコードを
void setup()
に含めることで、制御できます。
|
|
- UNO R4 WiFiの裏面に、「RA4M1 USB」というラベルがついた、はんだパッドがあります。これらのパッドを、例えばはんだブリッジでショートさせると、RA4M1は、ESP32ではなく、USBシリアルポートに接続します。
Wi-Fi®
UNO R4 WiFiに搭載されているESP32は、ボードにWiFi®機能を提供します。Wi-Fi®モジュールは、最大150MBpsのビットレートです。ESP32モジュールはトレースアンテナを内蔵しているので、ボード上の接続機能を利用するのに外部アンテナは必要ありません。しかし、このトレースアンテナは、Bluetooth®モジュールと共有しているので、Bluetooth®とWi-Fi®を同時に利用することはできません。
UNO R4 WiFiのWi-Fi®機能を使うには、UNO R4 Coreに付属のWiFiS3ライブラリを使います。
UNO R4 WiFIのWi-Fi®機能については、ネットワーク利用例を参照してください。
Bluetooth®
ESP32モジュールにより、UNO R4 WiFiは、2Mbpsの速度で、Bluetooth® LEとBluetooth® 5が利用可能です。ESP32モジュールはトレースアンテナを内蔵しているので、ボード上の接続機能を利用するのに外部アンテナは必要ありません。しかし、このトレースアンテナは、Wi-Fi®モジュールと共有しているので、Bluetooth®とWi-Fi®を同時に利用することはできません。
以下に、Bluetoothデバイスをスキャンするスケッチ例を示します。
|
|
Bluetooth LEについては、こちらを参照してください。
ESP32の高度なプログラミング
ESP32モジュールとルネサスRA4M1チップは、HID機能が利用できる非常に柔軟で適応性のある洗練されたUSBシリアルシステムの一部です。一方で、メインMCUとESP32の双方をプログラムできる機能も維持しています。
ESP32のファームウェアを上書きすると、2つのMCU間の通信が切断されますが、独立して動作させることができます。ボードを初期状態に復元するには、ヘルプセンターの記事のespflash向けの指示に従ってください。
ESP32ボードを再プログラムするには、以下の図に示すESP32の隣のUART-パッドか、
以下に示す、ESP32ヘッダに直接露出しているピンを使います。
オリジナルのページ
https://docs.arduino.cc/tutorials/uno-r4-wifi/cheat-sheet
最終更新日
April 27, 2024