最終更新日:2017/3/14
ググっていたら『Arduino Compatible Compiler for LabVIEW』(以降ACC4LV)なるものが存在することが判りました。
https://sine.ni.com/nips/cds/view/p/lang/ja/nid/213121サードパーティのAledyne社/TSXperts社の商品のようです。ライセンスフィーはさほど高くないです。が、LIFAやLINXがフリーと云うことからすると考えるところがあります。
Aledyne社:https://www.aledyne.com/
TSXperts社:https://www.tsxperts.com/どちらもNIのアライアンスパートナーですね。
https://www.aledyne.com/product/arduino-compatible-compiler-for-labview/
https://www.tsxperts.com/arduino-compatible-compiler-for-labview/
に商品紹介がされています。Aledyne社のサイトからは商品ライセンスの購入も出来るようです。7日間の評価期間がありますので早速調査しました。
https://forums.ni.com/t5/Example-Program-Drafts/LabVIEW から Arduinoを使う-製品まとめ/ta-p/3516622
に紹介がありますが、ArduinoIDEコンパイラを利用して、LabVIEWのコードを何らかなの中間言語を介してArduinoIDEでコンパイルし、ターゲットマシンにダウンロードし、単体実行可能するという仕組みです。求めていたものです。
Exampleも相当数用意されていますが、そのまま使えるものは限られます。
【ACC4LV環境整備】
ACC4LVを使用するには、まずVIPM を利用してLabVIEW開発環境にダウンロードする必要があります。
ACC4LV StandardとHome/Studentという2つのバージョンがあります。
この違いを確認する必要があるのですが、ライセンスフィーの違い($99/$499)以外に何があるのか比較表のようなものが見つかりません。使用目的の制限だけで内容は同じなのかも知れません。となるとHomeでとりあえず使用して、リリース段階でStandardにするという方法もありかと思います。環境整備はYouTubeで紹介されているVideoで雰囲気をつかんでおくと良さそうです。https://www.youtube.com/watch?v=DE2we6o7erI
- LabVIEWをインストールする
- VIPMを介してACC4LVをインストールする
- ArduinoIDEをインストールする
- PCにArduinoを接続し、デバイスドライバをインストールする
- LabVIEW>>ツールからACC4LVを起動する
- Tool>>BoardメニューからArduinoデバイスを選択します
- Tool>>Portメニュー接続しているCOMポートを選びます
- File>>LoadVI..メニューからExampleなり、新規VIを選びます。
- File>>OpenFronyPanel..メニューからVIを開き、PIN番号等を設定します。
- Compiler>>Compile&Downloadを実行し、hexファイルをArduinoに書き込みます。
- 書込完了すると勝手にリセットが掛かりアプリケーションが動き出します。
【LabVIEWをインストールする】
LabVIEWのバージョンについては2014以降という条件があるようです。LINXの場合英語版でないと使えないデバイスがあるようですが、ACCFLは2016日本語版でも使えています。
条件は https://www.geverywhere.com/arduino-compatible-compiler/ に記載されています。
LabVIEW 2014 or higher with NI-VISA 14.0 or higher【VIPMを介してACC4LVをインストールする】
VIPMはLabVIEWのバージョンに限らず最新版が良さそうです。
Arduino Compatible Compiler for LabVIEWは現時点で1.0.0.21でした。リリースノートを見ると2016年2月10日Updateされたもののようです。ほぼ1年Updateがなくなったみたいですね。
https://www.geverywhere.com/arduino-compatible-compiler/release-notes/【ArduinoIDEをインストールする】
https://www.geverywhere.com/arduino-compatible-compiler/ によると 1.5.7以降である必要があります。
現時点の最新バージョンは1.8.1でした。
https://www.arduino.cc/en/Main/Software
ArduinoIDEのパスを設定する場所がありません。従って、インストーラが用意しているデフォルトパスを意識しておく必要がありそうです。※ZIPタイプで落とすと、フォルダ名から意識しなくてはなりません。
C:\Program Files (x86)\Arduino
【PCにArduinoを接続し、デバイスドライバをインストールする】
Arduinoは互換機はもちろん正規版であってもバージョンによって必要なドライバが異なります。
このドライバとはUSB-UARTのデバイスドライバです。
正規版はIDEのインストール時に難なく処理してくれるはずですが、互換機の場合FIDIなのかCP210xなのか或いはもっとマイナなデバイスか、いずれにしても自分でボードの仕様を把握しデバイスドライバをインストールしてPCから通信できるようにする必要があります。
【LabVIEW>>ツールからACC4LVを起動する】
【Tool>>BoardメニューからArduinoデバイスを選択します】
ACC4LVがサポートするデバイスは
https://www.geverywhere.com/arduino-compatible-compiler/
に書かれている、
- Arduino Yun
- Arduino Uno
- Arduino Due
- Arduino Mega
- Arduino Leonardo
- Arduino Nano
となっています。
【Tool>>Portメニュー接続しているCOMポートを選びます】
デバイスドライバにて、どのCOMポートにArduinoが接続されているか確認済みのはずですので、間違えずに選択します。
NI-MAXでも有効なデバイスとなっている必要があります。
【File>>LoadVI..メニューからExampleなり、新規VIを選びます。】
Serial - Monitoring GUI.lvproj というのを選んでみました。
【File>>OpenFronyPanel..メニューからVIを開き、PIN番号等を設定します。】
Serial - Monitoring GUIはUART通信をして自走するArduinoからPCにデータを吸い上げてグラフ表示するというExampleです。
この形態がLIFAのベースになっているはずです。
ボーレートが9600bpsになっていましたが、この点は115200bpsに変更し、タイマ変数を変更してみました【Compiler>>Compile&Downloadを実行し、実行データをArduinoに書き込みます。】
このExampleで18%程度使うようです。
Arduinoのプログラム書き換え制限が1000回程度だったと思います。このような確認を行っているとあっという間に使えなくなってしまいそうです。
※書き換え回数の情報がどこかに書かれていないか調査中です。【書込完了すると勝手にリセットが掛かりアプリケーションが動き出します。】
このExampleはPC側のモニタソフトを実行すると、まずIDEでCompile&Downloadを実行し、通信を始めてグラフ表示します。このため、書き換え回数の情報が気になるわけです。通信による書き込みを実現することでCNCのような仕組みを構築できることは読めてきました。
【ACC4LVのExample紹介】
Exampleの一覧がHelpファイルにて確認できます。
30近い数のExampleが用意されています。
Arduino以外のデバイスが必要だったりするため、すべてのExampleを確認することは困難ですし、I2CやSPIなどは手持ちのデバイスをアクセスすべくそれなりのレタッチが必要になります。
【実際に使ってみて】
実際に使ってみた感想ですが、やっぱり自走するデバイスを構築できるという意味で『Arduino Compatible Compiler for LabVIEW』は意味があります。
手元ではUNO互換機(\1400)で動作確認しているのですが、普通に使えています。限界まで使いこなしてみたいという気にさせる環境になっていると思います。2017年3月中旬:新たな環境にacc4lvをインストールしました。新たに7日間の評価期間を得ました。もっと深入りしています。
- I2Cの関数やSPIの関数がありますが、この関数の使い方をマスタするにはExampleが十分ではないためマスタするのは可成り困難と思われます。
- I2Cのデバイスをアクセスするためのコードを書く為のサンプルは『DS1307 Real Time Clock.vi』ぐらいしかないです。
LCDの書込用のExampleは有るのですが、中身がパスワードが掛かってしまって参照できないのでどうしようもありません。- SPIのサンプルとしてはSDカードの読み書きに関するサンプルがありますが、ちょっと偏っていますね。
- とりあえず、少しでも先に進めたいので、@Serial - Monitoring GUI ADS1307 Real Time Clock BSD Card - Read Data を
参考にして、Arduino内でタイムスタンプを定期的にSDカードに書き込みながら、シリアル標準出力にも書き出すというコードを書いてみることにしました。
このコードを書いた履歴を紹介します。acc4lvの制限も判ってきます。NI-FPGAの初期の頃のように手探り感が強いです。結局の結論として、AAC4LVを使うのはちょっと困難ですね。幾つか理由を挙げておきます。
- 提供されているExampleを修正してアプリケーションを組もうとした際、デバイスの組み合わせで動かなくなる。この対応がうまく出来ません。ArduinoIDEならpinアサインを変更するだけで対処可能なケースでも、AAC4LVではうまくゆきません。ダイアログがパスワードで隠蔽されているからです。
- RTCモジュールのDS1307のサンプルが用意されています。基本DS3231とソース互換があると云われているのですが、動きません。実行時エラーになってしまいます。
これは厄介です。中身を追えないですどうしようも無いですね。- I2Cデバイスドライバを構築したいと思ったのですが、デバッグが大変だという事をひしひし感じました。
ソースコードを公開したものが用意されていれば、それを元にデバッグコードを追加してゆけばいいのですが、この手法がとれません。- HostUIをLabVIEWで構築し、UART通信でArduinoと遣り取りするという、LIFAやLINXのやり方は正しいですね。
Arduino側のファームウエアをArduinoIDEで作成するのですが、その際にLabVIEWとの通信が出来るように構築する。そのサンプルとしてLIFAのコードは参考にしたいですね。一応参照できますから。
【関連書籍紹介】
【余談】
『ACC4LV』のライセンスは個人Useで$99です。
一方、『Raspberry Pi Compatible Compiler for LabVIEW』というのもあり、こちらのライセンスは個人Useで$49なんです。
この差が気になりました。LINXで『Raspberry Pi Compatible Compiler for LabVIEW』相当の事が実現できるからなんでしょうか?
ただ、ちょっと仕組みが違うようにも思いました。LINXはLinux版LVRTE上で実行コードが動いているような印象を持っています。一方『Raspberry Pi Compatible Compiler for LabVIEW』はNativeCodeに落ちてから実行しているのではないかという印象を持ちました。
免責事項
本ソフトウエアは、あなたに対して何も保証しません。本ソフトウエアの関係者(他の利用者も含む)は、あなたに対して一切責任を負いません。
あなたが、本ソフトウエアを利用(コンパイル後の再利用など全てを含む)する場合は、自己責任で行う必要があります。本ソフトウエアの著作権はToolsBoxに帰属します。
本ソフトウエアをご利用の結果生じた損害について、ToolsBoxは一切責任を負いません。
ToolsBoxはコンテンツとして提供する全ての文章、画像等について、内容の合法性・正確性・安全性等、において最善の注意をし、作成していますが、保証するものではありません。
ToolsBoxはリンクをしている外部サイトについては、何ら保証しません。
ToolsBoxは事前の予告無く、本ソフトウエアの開発・提供を中止する可能性があります。
商標・登録商標
Microsoft、Windows、WindowsNTは米国Microsoft Corporationの米国およびその他の国における登録商標です。
Windows Vista、Windows XPは、米国Microsoft Corporation.の商品名称です。
LabVIEW、National Instruments、NI、ni.comはNational Instrumentsの登録商標です。
I2Cは、NXP Semiconductors社の登録商標です。
その他の企業名ならびに製品名は、それぞれの会社の商標もしくは登録商標です。
すべての商標および登録商標は、それぞれの所有者に帰属します。