【Scilab / Arduino】 ScilabをArduinoに接続する手順

1.はじめに

ネットを探すと、情報は出てきます。
しかし、あまり具体的な記述が見当たりません。

そのため妄想が膨らみ、XCOSでArduinoの常駐型プログラムが開発できると思っていました。
実際、Scilab/XCOSからArduinoを使えるようになると、そんなことはできないことが分かりました。

使ってみた感想です。
Scilab/Xcosで開発した制御アルゴリズムに対し、Arduino UNOに装備されているDIOやAIOを使って検証し改善する。
そのためのAtomsです。

当初の妄想のようなことを思い、使ってみると、期待外れ。
そんなことから、具体的な情報が見当たらないのだと思います。

使っているとしても、

  • 装置開発の初期でDIOの制御信号に対する処理の適切さ。
  • AIOのアナログ信号に対するしきい値設定の確認。

などに使われていると思われるため、ネット上に書き込まれることはないでしょう。
学会のブロック地区、学生発表で、前刷がアップされていましたが、成立する条件の記述がなく、内容としては不完全な前刷でした。

Scilab/XcosでArduinoを使えるようにする手順をまとめておきます。

2.Atomsのインストール (ソフトの準備)

まず、Scilab/Xcosを起動します。(2024年7月6日時点の最新版は2024.1.0です。)
Scilab/XcosのコンソールからATOMSのウィンドウを開いてみてください。

ATOMSが分からない方は、調べてください。
先に進みます。

ATOMS ウィンドウが開きます。

左のツリーの「計測機器制御」のフォルダーを開き、『Serial Communication 0.5』と『Arduino 1.9』をインストールしてください。
Windows11 を利用しています。
問題なくインストールできることは確認しています。

うまくScilab/Xcos 2024.1.0のAtomsでインストールできない場合、Scilab/Xcosのバージョンを落として利用してみてください。
Scilab/Xcos 2023.1.0でも問題はありません。

インストールが正常に終了し、Scilab/Xcosを再起動し、再びATOMSを開くと、開いたウィンドウは、以下のようになっています。
なお、『MinGw toolbox 10.3.1』と、『GUI BUilder 4.2.3』は、別でインストールしましたので、以下の画像に含まれています。

3. Arduino UNO 3の接続 (ハードの準備)

接続するArduinoのボードは『UNO 3』です。
『UNO 4』はScilab/Xcosにはつながりません。

最初、『UNO 4』で、接続しようとネットも含め、いろいろと情報を検索しました。
その結果、判ったことは、以下の事実です。

『UNO 3』を前提としてATOMSや関連するソフトが開発されており、それ以外のボードでは接続できない。

このことは暗黙のうちに了解されている条件となっていますが、そろそろ明記した方が良いと思います。
1か月ほど悩み、Scilabのサイトや、Scilabコミュニティ、Githubなど、関連しそうな情報を探しました。

苦労話はここまでにして、Arduino UNO 3 の準備を行います。

Arduino IDE 2.3.2 (2024年7月6日時点における最新版)を起動し、以下のフォルダーに保存されているファイルを開きます。
Windows だと、「サインイン」になりますが、その時のホームディレクトリに隠しフォルダとして『AppData』というフォルダがあります。

フォルダのプロパティ設定を変更して、隠しフォルダも表示するように設定すると、見ることができます。
隠しフォルダの表示設定が分からなければ、調べてください。

隠しフォルダは、システムやインストールしたアプリケーションに影響するファイルが保存されています。
調べられない場合、あるいは調べても意味が分からない場合、システムやアプリケーションに影響する可能性があるので、ここで一度、諦めてください。

(保存されているフォルダーまでのパス)
//C:ユーザー/<ホームディレクトリ>/AppData/Roaming/Scilab/scilab-2024.1.0/atoms/x64/arduino/1.9

(Arduino IDE 2.3.2で開くファイル)
toolbox_arduino_v5.ino

上図に示されているファイルを見つけることができたでしょうか。
このファイルをArduino IDE 2.3.2で開くと、次のようなメッセージウィンドウが開きます。

『OK』を選択してください。

そうすると、Arduino IDE 2.3.2 の画面が、以下の画面となります。

Arduinoを使える人達なら、当たり前に環境を整えていると思いますが、ボード情報とライブラリのアップデートは忘れずに。
書いて注意を促すことでもありませんが、UNO 3 のボード情報は組み込まれていますか?

また、UNO 3 とつながっているシリアルポート(COMポート)の番号と通信条件の設定は大丈夫ですか?

Arduinoを使っている人たちなら大丈夫だと思います。
そのまま開いたファイルをボード(UNO 3)に「書き込み」してください。

かみ砕いて書けば、開いたファイルをコンパイルして、UNO 3 に実装してください。

画面したの出力にはコンパイルが正常に終了したメッセージなどが表示されます。
また、実装後、ボードに確認できるような変化は現れません。

これで、ハードの準備は完了です。

4. Xcosでアルゴリズム開発

社内にある備品を使えるような例題を考えてみました。
簡単にできるのは、以下の動画にあるようなLEDをチカチカ、点灯させることです。

Xcosで以下のようなブロックでアルゴリズムを考えてみました。

単純です。パルスのような方形波をXcosで作成し、Arduino UNO 3 のD13(デジタルポート13番)に出力するアルゴリズムです。

ブロックができたら、シミュレーションの開始ボタンをクリックし、実行します。
その結果が、上記の動画になります。

Xcosで作成したアルゴリズムは、繰返し実行されるものではありません。
指定したシミュレーション時間の間、実行されます。

私自身が妄想したような、アルゴリズムを開発し、常駐するプログラムとして実装できる。

そんなようなことは、できませんでした。
むしろ、Scilab/Xcosを使って制御装置のアルゴリズム開発をする時、Arduinoボードを開発しているハードウエアのシミュレーションボードとして使うことができるように思います。
いわゆるHILS(Hardware In the Loop Simulator)として、利用できるかもしれません。

Scilab/Xcosでアルゴリズムを開発し、PythonやCに変換して常駐可能な実行ファイルを作成する。
そんな開発の流れになると思います。

趣味で取組むには手に余ると思いますし、『Scilab/XcosでArduinoを操作しました。』がゴールになってしまうと思います。

実際、ここを入口に、Scilab/Xcosを使って自動車のシステム開発などをしているような情報も耳にします。

Scilab/Xcosのようなソフトウエアの知識だけでなく、Arduinoのようなマイコンと電気回路のようなハードウエアの知識も必要となります。
多岐にわたる技術分野の知識を持ち合わせていないと、使いこなすのは意外に難しい。

この先の応用について、自分も考えあぐねてしまいました。
仕事として、できるようなことがあれば、連絡を頂きたいと思います。

 

PAGE TOP