MATLAB&SimulinkでArduinoを使い始める (電子工作初心者のLED点滅まで)


はじめに

これは「ArduinoとMATLABで制御系設計をはじめよう」を参考にしながら, 電子工作をほとんどしたことがない大学生がArduinoに初めて触れて, LEDを点滅させた記録です.

平田光男, ArduinoとMATLABで制御系設計をはじめよう, TechShare株式会社

使っているマシンのOSはWindows10 Home, MATLABはR2021aです.

購入したもの

今回用意したのは, "Arduino Uno R3" を含むスターターキットです. (今後もArduinoと末永くお付き合いしたいと考えて, いっぱい遊べそうなものを選んじゃいました..)

https://www.elegoo.com/collections/uno-r3-starter-kits/products/elegoo-uno-most-complete-starter-kit

LEDの点滅のみを行いたい人は, キットではなく,

  • Arduino本体 (Arduino Uno R3 / Arduino Mega 2560 R3)
  • ブレッドボード
  • ジャンパワイヤ
  • LED
  • 220[$\Omega$]抵抗

があれば十分だと思います..

LED点滅実験

Support Packageによる連携 (今回行ったもの)

参考書では, ArduinoIOを使っている(後述)が, ここでは,

を用いる.

まず, MATLABを開いて[ホーム]->[アドオン]->[アドオンの入手]から上記二つをインストールする.
インストールの後, 両方とも「ハードウェアセットアップ」があり, [Arduino Uno]と[COM3]を選ぶ以外は[次へ]を押してセットアップを完了しました.

LED点滅実験

Simulinkからの実験

MathWorksサイトに書かれている例を用いて, SimulinkによるLED点滅実験を行った. 作成した回路は以下である. (今回用いているのはArduino Unoなので, ボードの形状が少し違うが, Pin9およびGNDにジャンパワイヤを刺すことは変わらない.)
(注) LEDの足が短いほうがGND(右)側です!!

そして, Simulinkで空のモデルを開き, [ライブラリブラウザー]から

  • Simulink/Sources/Pulse Generator
  • Simulink Support Package for Arduino Hardware/Common/Digital Output(Pin: 9)

を追加し, つなげる. ここでPulse Generatorをダブルクリックし, パルスタイプを[サンプルベース], サンプル時間を0.1とした.

この後の作業は,

  • [シミュレーション(左上)]->[準備下矢印]->[モデル設定]->[ハードウェア実行]にて[ハードウェアボード]で[Arduino Uno]を選択
  • [OK]をクリック
  • [ハードウェア]->[ハードウェアで実行]で点滅が開始される. (開始まで20秒ほどかかる場合もあった.)

MATLABコードからの実験

次にArduinoを使ったLED点滅をMATLABコードから行った. コードは参考書のプログラム3-1を参考に, 以下を作成した. そして, 通常のMATLABコードを実行するのと全く同じように[実行]をクリックした. (MATLABでいつも通り実行するだけで, Arduinoが動いてしまうので, とても楽チン.)

matlab
clear a
a = arduino();
for i=1:10
    writeDigitalPin(a,'D9',1);
    pause(1);
    writeDigitalPin(a,'D9',0);
    pause(1);
end

ここまででLEDの点滅をMATLABおよびSimulinkから行えることが確認できました.

ArduinoIOによる連携 (参考書に書かれていた方法)

結果的にうまくいきませんでした...

Arduino IDEのインストール

参考書に書かれていた通り, [Arduinoのホームページ]->[Softaware]から[Windows ZIP File]を選択し, ダウンロードを行いました.
私がダウンロードを行った際のVersionは1.8.15でした.

https://www.arduino.cc/en/software

ダウンロードしたZIPファイルを解凍し, 自分の好みの場所に移動して, Arduino IDEのインストールは完了です.

デバイスドライバのインストール

最初に, Arduino Uno R3をUSBによりパソコンとつなぎました.
そして[コントロールパネル]->[ハードウェアとサウンド]->[デバイスとプリンター/デバイスマネージャー]->[ほかのデバイス]と進んでいくと, パソコンがArduinoを認識していました.

ここで[USBシリアルデバイス(COM3)]上で, [右クリック]->[ドライバーの更新]->[コンピューターを参照してドライバーをい検索(R)]->[参照]から, 先ほどダウンロードしたArduino IDEの中にあるarduino-1.8.15/driversをインストールしました.

これで, Arduino デバイスドライバのインストールは終了!!

Arduinoの動作確認

参考書に倣い, Arduinoの動作確認のためのLED点滅実験を行った.
まず, arduino-1.8.15/arduino.exeを起動します.

そして, 設定を行いました.

  • [ツール]->[ボード]->[Arduino Uno]
  • [ツール]->[シリアルポート]->[COM3]

次に, サンプルコードを実行します. サンプルコードは[ファイル]->[スケッチ例]->[01.Basics]->[Blink]にありました. 新規ウィンドウで開かれたコードに対して, 右矢印マークの「マイコンボードに書き込む」を実行しました.

Arduino本体を見ると, オレンジ色のLEDが点滅していることが確認できました.

ArduinoIOのインストール

MATLABとArduinoを連携させるために, ArduinoIOが必要になる.
これは以下からダウンロードできる.

Legacy MATLAB and Simulink Support for Arduino

そして, 解凍したZIPファイルを移動し, その中で,

matlab-script
>> install_arduino

とコマンドラインに打つことで, 連携できるようになる.

ここで, SimulinkのライブライブラウザーにArduinoIO Libraryが現れるはずだったのですが, 現れずに断念してしまいました...

おわりに

ここまでが電子工作をやったことのない大学生が, 3時間かけてMATLABとSimulinkを使ってLEDを点滅させるまでの記録です. Qiitaを書きながら作業をしたり, ArduinoIOを断念したりしたので, Support PackageをインストールしてArduinoを動かすだけだったら1時間以内でできそうな気がします..

これから, いろいろなセンサやモーターを使い始めていければと思っています. その記録もQiitaに投稿していくつもりです.