Help us understand the problem. What is going on with this article?

LabVIEW+LINX+BeagleBoneBlackを試してみた

More than 3 years have passed since last update.

はじめに

LINXはDigilent社のオープンソースプロジェクトで、LabVIEWで組込み開発をするためのツールキットです。
ターゲットに専用のファームウェアを書き込むことで、LabVIEWからリモート(シリアル通信やTCP通信)でI/Oを制御することが出来ます。
ArduinoやDigilent社のChipKit、Raspberry Pi、BeagleBoneBlack等に対応しており、ハードウェアの違いをそれほど意識することなくプログラミングすることが出来ます。

Raspberry PiとBeagleBoneBlackについては今年リリースされたLINX3.0から対応するようになりました。
他のターゲットとは異なり、cRIOのようにターゲット側でLabVIEWのコードが実行されるようになっており、スタンドアローン動作が可能になっています。

LINXがどのような仕組みで動作しているかは下記で分かりやすく説明されています。予め目を通しておくと記事の内容を理解しやすいと思います。
How LINX Works

以前からLabVIEWを使った組込み開発には興味があったのですが、スタンドアローン動作まで出来るターゲットとなるとcRIOやmyRIOくらいしかなく、開発環境のことも考えるとスルーせざるを得ませんでした。(高いので…)
そんな中、つい最近になってLINXでスタンドアローン動作出来るターゲットが追加されたと知り、アドベントカレンダーを機に試してみることにしました。

注意事項

ライセンスについて

BeagleBoneBlackとRaspberry Pi用に提供されているLabVIEWランタイムは商用利用不可のライセンスになっていますので注意して下さい。

開発環境について

BeagleBoneBlackやRaspberry Pi等をターゲットとする場合、開発機で使用するLabVIEWは2014 32bitの英語版のみをサポートしています。
( ボード側にインストールするLabVIEWランタイムの仕様による制約と思われます。現時点では日本語版や2014以外の開発環境では動作しませんでした。)
Arduino等のRemoteI/Oとして動作するタイプのターゲットについては開発環境が日本語版や新しいバージョンでも問題ありません。

使用するもの

ハードウェア

・BeagleBoneBlack
・microSDカード 4GB以上

※今まで存在を知らなかったボードで興味があったのでBeagleBoneBlackを選んでみました。

ソフトウェア

・LabVIEW 2014 Home Bundle (英語版)
・VI Package Manager 2016
・LINX
・7-Zip
・W32 Diskimager

開発環境の準備

以下の手順で環境を準備します。
・LabVIEW2014 Home Bundleのインストール
・NI-VISAのインストール
・VI Package Managerのインストール
・LINXのインストール
・BeagleBoneBlackの初期セットアップ
・BeagleBoneBlackにLabVIEWランタイムをインストール
・動作確認

LabVIEW2014 Home Bundleのインストール

LabVIEW Home Bundleを購入するとダウンロード先やチュートリアル等のURLと、シリアルNoの書かれた紙が付いてきます。

_B210782.jpg

記載のURLのページにあるDownload Nowのリンクを開くとNIのページにジャンプしてLabVIEW本体をダウンロードすることが出来ます。
※シリアルNo無しでインストールすると体験版として使用可能です。

https://www.labviewmakerhub.com/labview

image

冒頭に書いた通りRaspberry PiやBeagleBoneBlackをターゲットにする場合は互換性の理由から、英語版をダウンロードします。

image

ダウンロードしたインストーラを実行して進めていくと、シリアルNoを入力する画面が表示されます。
Home Bundleの場合は一番上の欄にだけシリアルNoを入力すればOKです。

2016-11-21 22_23_05-LabVIEW 2014 SP1.png

さらに進めていくと、インストールするパッケージの選択画面が表示されます。

NI Device DriversはNI製のハードウェアを使う場合に必要になる主要なドライバを一式含んだパッケージです。
結構容量を食うのと常駐タスクが増えるので必要になるまで入れなくて良いです。インストールから外します。

2016-11-21 22_24_49-LabVIEW 2014 SP1.png

さらに進めるとアクティベーションを求められるので、それを済ませて再起動すればLabVIEW本体のインストールは完了です。

NI-VISAのインストール

VISAは計測器の様々な物理的なインタフェース(GPIB,シリアル,Ethernet,USB等)を抽象化して、統一されたインタフェースでプログラミング出来るようにしてくれるAPIです。
LabVIEWでシリアル通信をする時はVISAが必要になるので入れておきます。

NIのドライバのダウンロードページからNI-VISAを選択します。
http://www.ni.com/downloads/drivers/ja/
image

リリース日でソートすることで最新版を簡単に見つけることが出来ます。
image

※インストール作業は迷うポイントは無いと思うので説明を省略します。

VI Package Managerのインストール

VI Package Managerはアドオンの入手や管理によく使われているツールです。
LabVIEW 2014をインストールするとVI Package Managerも自動でインストールされますが、バージョンが古いので、手動で最新版をインストールしておきます。

下記のURLからFree版をダウンロードしてインストールします。
https://vipm.jki.net/

※特にインストールで迷うようなところは無いので説明は省略します。

LINXのインストール

VI Package Managerを起動します。
対象とするLabVIEWのバージョンに2014を選択し、検索バーにLINXと入力します。

2016-11-21 22_44_12-JKI VI Package Manager.png

Digilent LINX を選択してコンテキストメニューからInstallを選択します。

2016-11-21 22_44_42-JKI VI Package Manager.png

LINXと依存関係のあるMakerHub Toolboxが入っていない場合は自動的にリストアップされるのでそのままContinueでインストールを進めます。

2016-11-21 22_45_17-JKI VIPM - Package Action Confirmation.png

続いてライセンスの文章等が表示されるので、内容を確認して進めていけばインストールが完了します。

BeagleBoneBlackの初期セットアップ

BeagleBoneBlackとPCをUSBケーブルで繋ぐと、ストレージデバイスとして認識されます。
中にあるSTART.htmを開くと、Getting Startedというページが開きます。

2016-11-21 02_00_57-BeagleBone Getting Started (F_).png

少しスクロールするとドライバのリンクがあるので、環境に合ったものをインストールします。
image

ドライバをインストールすると、Linux USB Ethernetというネットワークアダプタが追加され、USB接続だけでBeagleBoneBlackにアクセス出来るようになります。

続いてUpdate board with latest softwareの項にあるリンクから最新版のイメージを入手します。
(古いバージョンの場合、LabVIEWランタイムのインストールでエラーが発生する可能性があります。)

image

Jessie for BeagleBone をダウンロードします。( 簡単にしか試していないですが、GUI無し版のJessie IoTでも良いようです。)

2016-11-21 02_21_08-スタート.png

7-Zipで入手したイメージファイルを展開します。

2016-11-21 02_32_43-91% 展開中  6-11-06-4gb.img.xz.png

Win32 Disk Imagerで展開したイメージファイル選択してをMicroSDカードに書込みます。
この時書込み先のドライブを間違うとイメージファイルでドライブの内容が上書きされてしまうので、十分に確認した上でWriteを押します。

2016-11-21 02_33_19-Win32 Disk Imager.png

書き込んだSDカードをボードにセットしたら、SDカードから起動させます。
SDカードスロット側のスイッチを押しながら電源ボタンを押し続け、LEDが同時に4つ点灯したらボタンを放します。

_1015939.jpg

BeagleBoneBlackにLabVIEWのランタイムをインストールする

LabVIEWランタイムのインストールには予めBeagleBoneBlackがインターネットへ繋がるようにしておく必要があります。
DHCPで自動的にIPを取得するので、通常は有線LANで接続しておけばOKです。
 

LabVIEWを起動してTools → MakerHub → LINX → LINXTargetConfiguration を開きます。
2016-11-21 22_49_31-Program Manager.png

ConnectTargetの画面でBeagleBoneBlackと接続します。
BBBの文字をクリックするとIPとユーザ名のデフォルト値が入力されるので、そのままConnectを押します。
2016-11-21 21_47_45-LINX Target Configuration.png

Install Software のページに移動してLabVIEW Runtimeをインストールします。

Installボタンをクリックすると自動的にボード側にLabVIEWのインストールが実行されます。
2016-11-21 07_33_19-LINX Target Configuration.png

インストールが完了後、LaunchExampleをクリックするとサンプルプロジェクトが開きます。
2016-11-21 21_57_17-LINX Target Configuration.png

サンプルプロジェクトで動作確認

BeagleBoneBlackの下の階層にBBB Main.viというのがあるので開きます。
image

VIの実行ボタンをクリックするとVIがターゲット側にデプロイされます。
2016-11-21 22_55_14-BBB Main.vi Front Panel on BeagleBone Black.lvproj_BeagleBone Black.png
image

デプロイ完了後に閉じると動作がスタートします。
2016-11-21 22_51_35-Deployment Progress.png

VIのフロントパネルにある通りにLEDを接続して Click Me! と書かれているLEDの制御器をクリックするとそれに連動してLEDを点けたり消したり出来ます。
_B210787.jpg

ただLEDを光らせても面白くないのでアナログ入力も試してみました。
サンプルVIのループ内のVIを1個置き換えるだけでアナログ電圧を取り込めました。PCでの開発同様、波形チャートで可視化も出来ます。

ただ、DAQのようにハードウェアタイミングで取り込みが出来るわけではないので、DCや低周波でしか使えなさそうです。
(リモートでデバッグをしているのも影響していると思いますが、ある程度のウェイトを入れないとループの周期がばらつきます。)
タイミングストラクチャもなぜかエラーになって使えないようなので、正確なタイミング管理は出来ないと割り切る必要がありそうです。

image
image

時間があまり無かったので今回はここまでです。
実は色々と試す前はネットワークに繋がる学習リモコンを作ろうと思っていたのですが、デジタルI/Oでもタイミングが問題になりそうだったのでやめました。(学習リモコンのネタはArduino Compatible Compiler for LabVIEWでやるかも?)

次はタイミングが問題にならないDC計測系のネタでI2CやSPIを使って何かやってみたいと思います。

ktyubeshi
計測(電気)中心に手広くやってるエンジニア。プログラミングはLabVIEWメイン。 基本Windows & GUI育ち。Linuxは使いながら勉強中。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした