1. はじめに
実はプライベートでHondaエコマイレッジチャレンジ(通称:エコラン。1L相当のガソリンで航続距離を競う競技)に参加しており、Honda製の50cc魔改造エンジンを制御するためのECUをArduinoUnoR4 MINIMAで自作しています。
自分が参加する前の2022年までは既に離脱したメンバーによるPICを用いた自作ECUを使用していたのですが、電子回路・制御プログラムを触れるメンバーがおらずマイナートラブルの解消にも目途が立っていない状態でした。
同じ社内のメンバーから誘われて自分が参加した2023年からは当時販売開始になったばかりのArduinoUnoR4を用いた自作のECUの開発にチャレンジし、2024年には実際に鈴鹿大会@鈴鹿サーキットと全国大会@モビリティリゾートもてぎにて実走しています。
残念ながら2024年はマシントラブルで完走には至っていないのですが、ECU起因のトラブルはなくなったので着手した甲斐はありました。
ただ、2023年に開発を開始した当初から追加した機能が多く、早晩UnoR4ではI/Oやフットプリントが厳しくなりそうなので、2025年からはUnoR4互換ボードのRMC-RA4M1の使用を予定しています。
2. RMC-RA4M1について
RMC-RA4M1については下記ブログを参照ください。
このRMC-RA4M1、もともとはマイコンカーラリーという高校・工業高校を対象にしたミニ四駆のようなモデルカーを自動制御してゴールするまでの時間を競う競技用に販売されているマイコンボードのようです。
MCUはルネサスの純正RA4M1の100ピン仕様なので品質や供給能力は問題ないと思いますし、フットプリントや端子はArduinoUnoR4 Minima/WiFiに準拠しているのでShield基板もUno用のものが使用できる可能性が高いです。
所謂互換ボードというやつですね。
ただ、開発にあたっての最大の問題は
ArduinoIDEには対応しているのにVSCode+PlatformIOには未対応(2025.1.2現在)
ということです。
厳密にいうとArduinoUnoR4 Minimaにも存在するI/O・機能を使用する分には問題ないのですが、追加のI/OやRMC-RA4M1に搭載されたmicroSDコネクタなどを使用しようとするとC/C++のコンパイル時にエラーが発生します。
Arduinoのライブラリのバージョン互換問題を解消できるVSCode+PlatformIOの組み合わせからは離れたくないので、なんとかしてRMC-RA4M1をVSCode+PlatformIOで使えるようにします。
今後、公式にRMC-RA4M1もVSCode+PlatformIOで使用できるようになるかもしれませんが、現時点では公式から対応方法のアナウンスはないので自己責任でお願いします。
3. 環境構築とコンパイル・書き込みまで
VSCodeとPlatformIOのセットアップは完了しており、ArduinoUnoR4 MINIMAで開発ができるようプロジェクトも作成できている前提で話を進めます。
また、RMC-R4M1(rev.2.0)基板 実習マニュアル.pdfのP.14 3.6.ArduinoIDEでプログラムを書き込むまでは 実施してファームウェアの書き込みと最低限の動作確認までは済ませておいてください。
3.1. パッケージファイルの入手
PlatformIOで使用するパッケージファイルは、特に変更していなければC:\Users\{ユーザー名}\.platformio\packages
になっていると思いますので、このディレクトリで下記のgit
コマンドを実行します。
C:\Users\{ユーザー名}\.platformio\packages>
git clone https://github.com/todateman/framework-arduinorenesas-uno-mcr_rev20.git -b 1.1.1
これは公式で用意されているRMC-RA4M1のArduinoIDE用ボードマネージャーファイル arduinocore-renesas_uno_mcr_rev20-1.1.1.tar.bz21 をplatformio用のArduinoUnoR4ライブラリ platformio/framework-arduinorenesas-uno を参考にframework-arduinorenesas-uno
のフォーマットで修正したものです。
一応、公式のライブラリはバージョンが1.1.1扱いになっているようなので、gitにも同じファイルで上書きしてタグをつけておきました。
https://github.com/todateman/framework-arduinorenesas-uno-mcr_rev20/commit/a094156af5aa9487aafb31c893a1da3cfc6dd1a9 を見てもらえればどこが変わったのかわかりますが、内容は吟味せずarduinocore-renesas_uno_mcr_rev20-1.1.1.tar.bz2
側のファイルで一律上書きしているので、RMC-RA4M1専用として扱った方が無難だと思います。
3.2. platformio.iniの書き換え
git clone
ができたら、プロジェクトのディレクトリ内にあるplatformio.ini
ファイルをこのように書き換えます。
※ArduinoUnoR4 MINIMAとボードを切り替えて併用したい場合は書き換えではなく追記してください。
- [env:uno_r4_minima]
- platform = renesas-ra
- board = uno_r4_minima
- monitor_speed = 115200
- framework = arduino
+ [env:rmc_ra4m1_20]
+ platform = https://github.com/todateman/platform-renesas-ra.git
+ platform_packages = framework-arduinorenesas-uno@symlink://C:\Users\{ユーザー名}\.platformio\packages\framework-arduinorenesas-uno-mcr_rev20
+ board = rmc_ra4m1_20
+ monitor_speed = 115200
+ framework = arduino
platform = https://github.com/todateman/platform-renesas-ra.git
は公式のプラットフォームhttps://github.com/platformio/platform-renesas-ra.git
をベースに、RMC-RA4M1でもコンパイルできるよう
-
boards/rmc_ra4m1_20.json
を新規に作成 -
builder/frameworks/fsp.py
に追記 -
builder/platform.py
に追記
したものを自分のアカウントでフォークしたものです。
プルリクエストを出しているのでいずれは本家に反映されるかもしれませんが、それまではこのリポジトリを使用してください。
なお、boards/rmc_ra4m1_20.json
の作成にあたっては下記を参考にしました。
platform_packages = framework-arduinorenesas-uno@symlink://C:\Users\{ユーザー名}\.platformio\packages\framework-arduinorenesas-uno-mcr_rev20
は3.1.でgit cloneしたパッケージファイルを無理やりframework-arduinorenesas-uno
として使用できるように、リンクを張っています。
この方法は下記を参考にしました。
なお、 https://docs.platformio.org/en/stable/projectconf/sections/env/options/platform/platform_packages.html#projectconf-env-platform-packages に倣ってplatformio.ini
に直接
platform_packages = framework-arduinorenesas-uno-mcr_rev20 @ https://github.com/todateman/framework-arduinorenesas-uno-mcr_rev20.git
と記述しないのは、シンボリックリンクを使用していないためArduinoUnoR4 MINIMA/WiFi用のframework-arduinorenesas-uno
の方を使用しようとしてしまい、コンパイルに失敗してしまうからです。
正直、3.1.のgit clone
は個別に実施するのは面倒なので、どなたかいい方法があれば教えてください。
3.3. コンパイル・書き込み
ここまでできればVSCode+PlatformIOでenv:rmc_ra4m1_20
を選択すればRMC-RA4M1に対してコンパイル・書き込みができるはずです。
最初にenv:rmc_ra4m1_20
を選択した時には環境構築に時間がかかるかもしれませんが、2回目以降は早く終わると思います。
以上です。
4. おまけ(framework-arduinorenesas-unoライブラリへの統合
3.1. パッケージファイルの入手で触れたplatformio用のArduinoUnoR4ライブラリ platformio/framework-arduinorenesas-uno はgithubのリポジトリArduinoCore-renesasが2025.1.2時点で1.3.2まで進んでいるので、今回のRMC-R4M1対応も本家の1.3.2に準拠することで考えています。
既にプルリクエストは出していますが、もし同様の環境で使用されたい方は
C:\Users\{ユーザー名}\.platformio\packages>
git clone -c core.symlinks=true --recursive https://github.com/todateman/framework-arduinorenesas-uno-mcr_rev20.git -b useSymlink
で試してください。
ライブラリなどは本家1.3.2のまま触っていないので、RMC-RA4M1以外のボードとも互換性があるはずです。
注意点として、このライブラリではシンボリックリンクを使用しているのでcore.symlinks=true
のオプションを使用すること、他のgithubリポジトリを入れ子で使用しているので、--recursive
のオプションを有効にして入れ子のgitリポジトリも同時に取得するようにしてください。
また、ブランチ名指定のため -b useSymlink
のオプションもお忘れなく。
もしこのブランチでエラーが出る場合は、ArduinoCore-APIやシンボリックリンクの有効化が必要なあります。
ArduinoCore-APIのgithubは https://github.com/arduino/ArduinoCore-API です。
C:\Users\{ユーザー名}\.platformio\packages
のディレクトリでgit clone
してください。
シンボリックリンクの有効化に関して、windowsならば下記の記事を参考にしてください。
-
RMC-R4M1(rev.2.0)基板 実習マニュアル.pdfのP.10にArduinoIDEに追記するボードマネージャーのURL: https://j-mcr.net/arduino_mcr/rmc_ra4m1_rev20_install.json の記載があります。
このjsonファイルを開くと、arduinocore-renesas_uno_mcr_rev20-1.1.1.tar.bz2のダウンロードURLが分かります。 ↩