MATLAB/SimulinkとArduinoによるLED点滅制御(Lチカ)に挑戦する
Back to Top
はじめに:SimulinkとArduinoで始める「Lチカ」
#「Lチカ」(LEDの点滅) は、ハードウェア制御の入門として最も基本的な実験です。
本記事では、MATLAB/SimulinkとArduinoを連携させ、LEDを点滅させるプログラムの作成方法を解説します。
開発環境の準備
#- ソフトウェア
- MATLAB(バージョン:R2025a)
- Simulink(バージョン:25.1)
- アプリ(for Simulink)
- Simulink Support Package for Arduino Hardware(バージョン:25.1.0)
- ハードウェア
- Arduino Uno/Nano(または互換機)
- USBケーブル(PCとArduinoの通信用)
- (オプション)
- LED + 抵抗(330Ω程度)
- ブレッドボード、ジャンパワイヤ
環境構築の詳細手順:
#1. MATLAB と Simulink をインストール
- MathWorks の公式サイトからインストーラをダウンロードします
- ライセンス認証を行い、MATLAB と Simulink をインストールします
- インストール時に「Simulink」コンポーネントを忘れずにチェックします
2. Arduino Support Package を導入
-
MATLAB を起動 → メニューから 「アドオン」 → 「ハードウェアサポートパッケージの入手」 を選択します(アドオンエクスプローラーが起動します)
-
検索ボックスで 「Arduino」 と入力し、
Simulink Support Package for Arduino Hardware
を選択します
-
Install をクリックし、パッケージを導入します
-
導入完了後、Simulinkライブラリに「Simulink Support Package for Arduino Hardware」のブロックが追加されます
3. Arduino のシリアル通信確認
- ArduinoボードをUSBでPCに接続すると、自動的にドライバが認識されます
- 認識されない場合は、デバイスマネージャ(Windowsの場合)や
ls /dev/tty*
(Mac/Linuxの場合)でポートを確認します(※下図はCOM7に接続した例)
回路の接続
#Arduino の 13番ピン と GND に LED + 抵抗を接続します。
(内蔵LEDを使う場合は外部配線は不要です)
回路図イメージ:
(Arduino 13) ----[抵抗330Ω]----|>|(LED)---- (GND)
Simulinkモデルの作成
#新規モデルを作成
#-
ブロックライブラリから以下を配置します:
パラメータ設定
#先ほど配置したブロックのパラメータを設定します。
-
Pulse Generator
-
Digital Output
サンプル時間が「0.001」(秒)で、サンプル周期が「1000」なので、周期(時間)は「1(秒)」になります。
パルス幅を「500」にしているので、この設定では500ミリ秒毎にLEDがON/OFFを繰り返します。
モデル設定
#ハードウェア実行を以下のように設定します。
(今回、Arduino Nano互換機を使用しました。互換機のブートローダーが旧版だったため、アプリケーションダウンロードのボーレートが低くなっています)
パルスジェネレータの出力確認
#Arduinoにアプリケーションをアップロードする前に、パルスが正しく出力されているか確認します。
監視と調整(USBポート経由での実行確認)
#USB経由でArduino Nanoにプログラムを転送し、正しくプログラムが動くか確認します。
Arduinoへの書き込みと実行
#プログラムをArduinoにアップロードし、自動実行できるようにします。
実行結果と考察
#- わずか2つのブロックを接続するだけで、簡単にLED点滅プログラムを作成できました。
- 周期を短くすると「高速点滅」します(例えば、周期を100、パルス幅を50 など)。
- パルス幅(Duty比)を変更することで、明るさの制御(PWMの基本) にも応用できます。
まとめ
#- MATLAB/SimulinkとArduinoを組み合わせることで、ブロック線図ベースで直感的に制御プログラムを開発できる ことがわかりました。
- LED点滅は単純な例ですが、PWM制御・センサ入力・モータ制御などへ拡張可能です。
ただLEDを点滅させるだけだったら、Arduino IDEやPlatformIOなどの開発環境でプログラミングした方が早いと思いますが、今後複雑なプログラミングをしていく上で、MATLAB/SimulinkはMBD開発の強力なツールになると感じました。
今後は、自作ライブラリを作ったり、高度な周辺機器をつないで細かいプログラミングに挑戦していきたいと思います。