eminus hatena lab

技術系のメモと解説

LabVIEWで電卓を作る(1): イントロ

ブログで何かを継続的に書くネタがないかと考えてみた結果、LabVIEWチュートリアル的な日本語の個人ブログってあまりないなぁ(需要がないか...?)と思ったので、電卓を作るというシリーズを始めてみようと思う。こういう解説系の記事は案外自分の勉強にもなるものなので前のブログでもよくやっていた。

ちなみに筆者はどういう立場かというと、実験系の研究室にいる大学院生で、実験装置の制御・データ解析にLabVIEWをつかっている。LabVIEW歴はかれこれ5年くらい。プログラミングとしてそれなりに経験がある(実験系の人間にしては、という意味。情報系の人には歯が立ちませぬ)のはJavaScript, C, Python, Matlabあたりで、ゴリゴリにはかけないが、まあ人並みだと思っている。

はじめに断っておくと、筆者はLabVIEWをほぼ独学でやっているので、一般的でない使い方や、こうやった方が楽だという点が多々あると思うのでもしご存じだったら指摘していただけると嬉しい。

LabVIEW*1とは

LabVIEWというのを知らない人のために解説すると、LabVIEW「ブロックダイアグラム」でプログラミングしていくプログラミング言語で、データの流れを「配線」で表現するため、文字ベースのプログラミングになじみがない人もとっつきやすい、ということになっている。また、グラフをリアルタイムで表示したりするGUIを作るのも他の言語と比べ、異常と言っても良いほど簡単なので、計測や簡単な解析プログラムを作るのにも便利。

もちろん値段もそこそこするのだが、学生や個人向けにはリーズナブルなものが発売されているので、趣味の電子工作等でもいつかのトランジスタ技術に紹介されるなど注目されている

以下ではLabVIEW 2017 Home and Student editionの英語版を例に紹介するが、もちろん日本語版もある。ただ、筆者は英語版に慣れているので日本語版での用語(制御器・表示器)などは結構適当になっている。英語表記もするので適宜読み替えてもらえると助かる

フロントパネル(front panel)とブロックダイアグラム(block diagram)

まずLabVIEWを起動するとスタート画面が表示される。LabVIEWのプログラムは通常、.viという拡張子で、これはvirtual instrument(仮想「装置」みたいな訳だろうか)と呼ばれる。まずはこのviを新規作成する。これはFileメニューから作成できる

VIを新規作成すると2つのウィンドウが立ち上がる(右下の透かしは学生版に表示されるが、大学などで契約する通常版には表示されない)

f:id:eminus:20190108225622p:plain

空のVIのフロントパネル

f:id:eminus:20190108225728p:plain

空のVIのブロックダイアグラム

フロントパネルは読んでそのまま、「見た目」を決める部分。ブロックダイアグラムもそのまま、ロジックを記述するのがこのウィンドウ。

また、LabVIEWの特徴的なのは「入出力」がすべてフロントパネル経由で行われるという点で、例えば次の例に示すように2つの数値を入力とし、1つの数値を出力するような場合、2つの入力の部品(コントロール=制御器:control)と1つの表示する部品(表示器: indicator)が必要になる。

Hello world

まず簡単な例として2つの入力の足し算をやってみよう。Controlを作るにはフロントパネルのウィンドウ上で右クリックをすると...

f:id:eminus:20190108230946p:plain

Control

こんなメニューが出てくる。さっきも言ったようにフロントパネル上の部品は基本的に普通のプログラミング言語でいう「変数」だと思えば良いので、変数の「型」に応じて部品がいくつかある。今回はNumeric(数値)の中にあるNumeric Control(日本語で何という訳か分からないが数値制御器?みたいな名前であろうと思う)を使う。Numeric Controlをクリックし、フロントパネルのウィンドウ上に貼り付ければOK。同じことを繰り返して2つの入力を作る。

f:id:eminus:20190108231654p:plain

2つの入力

ちなみに... 隣にNumeric Indicator(数値表示器)というのもあるが、これは基本的に出力専用だと思っておけば良い。逆になんちゃらcontrolの場合は基本的に入力専用。(基本的に、といったのは例外もあるという意味なのだがこの電卓を作る過程でそれを何度も使うことになると思う)

今回は出力が1つ必要なのでついでにNumeric Indicatorも配置してしまう*2

f:id:eminus:20190108231856p:plain

2入力1出力

ここで、左側2つは入力だが、右側のやつは出力なので背景がグレーになっている。また、部品の名前がNumeric, Numeric 2, Numeric 3 などとなっているがわかりにくいので名前の文字列をダブルクリックしてa, b, a+bなどに名前を変更しておこう。

文字ベースのプログラミングに慣れている人なら、これは変数宣言だと思ってもらえば、そう大きく間違った認識ではないと思う

ブロックダイアグラムの記述

もう一つのウィンドウ、ブロックダイアグラムに足し算を行ってindicatorに表示するという記述を行う。ブロックダイアグラムのウィンドウを開く(Ctrl+E)と、

f:id:eminus:20190108232456p:plain

入出力のblock diagram上での表示

このような部品がすでに配置されているはず。これらは直接front panelの部品と対応しており、アイコンの小さい三角の向きを見てもらえば直感的に分かるようにa,bは入力(数字がそのハコから出てくる)でa+bには数字を放り込めば画面に表示される。

さて、aとbを足してa+bに出力する、という作業をするには足し算をするという部品が必要だが、それも右クリックメニューから呼び出せる。メニューを表示すると様々なカテゴリーがあるが、四則演算等はNumericの中にある。その中から「Add」(加算)を選び、ブロックダイアグラムに貼る。

これも直感的だと思うが、三角の左側に入力端子が2つあり、右側には出力端子がある。端子をつなぐには、つなぎたい元の端子をクリックし(黒い点線が伸びるようになる)、次につなぐ先の端子をクリックすると接続される。配線の向きが違ったり、配線の型が端子と違ったりすると上手く動かない。(そう、配線には向きと変数の型がある)

f:id:eminus:20190108233444p:plain

足し算

この辺は文字で説明するよりやってみた方が早いと思うのでこの辺で説明はやめておく。極めて直感的なので問題なかろう

プログラムの実行

これでプログラムは完成したので後は実行すれば良い。Front panelでもBlock diagramでもよいが

f:id:eminus:20190108233908p:plain

実行のツールバーボタン

ツールバーにある右矢印アイコンを押せば良い。アイコンがこれとは違っている場合、実行できないエラーがあることを示している。アイコンを押すと何が問題か教えてくれるが、まぁ今回の例では間違いはあまり考えにくい

デフォルトでは入力a, bがどちらも0で出力もデフォルトで0が表示されているので、そのまま実行しても何も起きていないように見えるだろうが、例えば実行前に

f:id:eminus:20190108234256p:plain

Hello worldの初期値の例

と設定したあと(普通にキーボード入力すればよい)実行すれば

f:id:eminus:20190108234426p:plain

Hello worldの実行後

上記のように正しく計算結果が表示されていることがわかる

 

第二回はこちら:

eminus.hatenablog.com

更新履歴

  • 表記揺れ(LabViewLabVIEW、ブロック図→ブロックダイアグラム)修正
  • イントロ部分で独学でやったという言い訳を追加した

*1:VIEWは大文字が正式と教えてくれた方、ありがとうございます

*2:右クリックメニューからもっと簡単にindicatorやcontrolを作ることもできる。便利なテクニックも後でまとめたい

MacBook Pro 2016の画面の変色

興味がある人も居ると思うので、記録しておく

故障1

まず最初に、2017年の夏ぐらいに故障した。これは完全にメカニカルな故障で、灰色系のコントラストが低くなり、グラデーションが正常に出ないような症状になってしまった。ディスプレイの色補正などをしても改善せず、ちらつく様な症状もあったのでメカニカルな故障と個人的に断定して修理に出したところあちこち交換されて帰ってきた。保証期間内につき、無料で終了

ちょっとこれには心当たりがあって、この時期は保護フィルムを貼っていて、微妙に画面に圧力がかかっていたのではないかと思っている。もちろん対応しているやつを使っていたのだが...

修理の後は反省して(?)保護フィルムをつけていないが全然問題ない。数ヶ月に一度くらい掃除をするのだが、個人的なおすすめはキムワイプエタノールかIPAと純水(水道水でも良かろう、クリーンルームに持って行くという体で純水で拭いているが、素手で使うので実際意味ないと思う)。アセトンはやめた方が良い気がする。

最近の変色

最近もディスプレイの変色が「たまに」起きる。たまに、というのは、しばらく使っていると直り、かつカバンに長時間入れていた後に起きやすいので、変な圧力がかかったか、置いてある向きが良くないとかそういうことだと思っている。

変色は画面の左下だったり右下だったり、はたまた右上だったりするが、いずれにせよ角で起きやすいみたい。変色は茶色っぽい感じになるのだが、普通の状態にして1時間も作業をすれば元に戻る

 

ということで今日は、MacBookで画面の隅が変色したと思ったら本体を水平なところにおいてしばらく置いていると直るケースもある、という話

iPhone6からiPhone XRに乗り換えた感想

iPhoneを4年ぶりくらいに買い換えたのでその感想を

何を買ったか

iPhone 6 (64GB, docomo)からiPhone XR (64GB, SIMフリー)に買い換え。画面は今まで7年以上使ってきて割ったこともないし、故障したこともないのでApple careはなしにした。

容量

一番容量を使っているのは音楽だが、最近はApple Musicに入ってライブラリをクラウド上に置いてあるのでローカルにはあまり容量が必要ない。そういう事情なので64GB一択。128GBとか何に使っているんだろうか... 同じ理由で、iPad (2017の安価モデル)も32GBで生きて行けている

XRかXSか

ここは結構悩むポイントだったが、価格の差は3万円くらい。この差額で失うのは有機ELディスプレイと背面のデュアルカメラ

細かい話で言うと、RAMが少なく、本体も厚くなっている。ベゼルもまずまず太いので、気になる人は減点ポイントだろう

とはいえ、前がiPhone 6なので正直気になったのは重くなったことくらいであとは順当にスペックアップしているので、それ以外で特に不満に感じることはなかった

ネット上では各種メディアで「XRが本命」等と書かれながら蓋を開けてみるとXRは不人気説がでているが、個人的には各種メディアの評価に同意できる(だからXRにした)

というのもデュアルカメラをそんなに使うだろうか。自分の場合ちゃんとした写真を撮るなら持っている一眼レフで撮影するし、ちょっとした撮影だったらiPhone 6のカメラでも十分なわけで、それを考えるとXRのカメラでも十分すぎるスペックというわけだ

有機ELは絶対必要だろうか。多分いらない。iPadMac有機ELモデルが出たらほしいかもしれないが、iPhoneではあったらいいな、くらいに思っている

上記の2点と少々ごつい本体を許容できれば、手元に3万円(くらい)余計に残る。(4年使うなら月625円じゃないか、という話ももちろん一理ある。自分の場合はどうせその金額を使うなら別な使い道をした方が幸せになれる、という話。)

iPhoneである必要があるか

そもそもAndroidでも良いのではという話もあるが、MaciPadも使っていてiMessageにも依存しているなど完全に囲い込まれているので、Androidの選択肢はない

iPhone 8で良いのでは

値段やスペックだけを見ればこっちが合理的かもしれない。実際iPhone 8を増産するなどという話もどこかで読んだ。ここは単純にFace ID便利そうとか、アニ文字が楽しそうとか、そもそもデザインが代わり映えしないと新しくした感があまりないとか、そういう直感的判断。

(4年使うことを考えると型落ちモデルというのはあまり合理的でない気もする。iPhone 8を今買うと4年後、5年型落ちモデルを使うことになるが、経験上これは結構ストレスがたまる。経験上、といったのはiPhone 4Sを5がでる直前に買って、4年半くらい使ったので最後の一年は、それはそれは苦行の日々だった)

iPhone 6ユーザーから見た感想

スペック

文句なしのスペック。

Face ID vs Touch ID

一長一短だが、Face IDの方が早い感じはする。クリーンルームとかでマスクをしなければならないとき面倒だ...などと書こうとしたが、そもそもクリーンルームは手袋もしているのでTouch IDもだめだったということを思い出した。

Touch IDは風呂上がりとかに上手くいかないこともあったので、Face IDのほうが便利といった感じか。夜暗いところでもOKなのは赤外線センサーのおかげらしい(波長知らないが赤外線なんか出されたら実験の邪魔)

Apple Pay

普段使う食堂がSuica決済しか受け付けないのでかなり便利。買い換えの目的の約半分はこれ。PASMO定期が入らないのが玉に瑕

ノッチディスプレイ

UIがちゃんとしているアプリは気にならない。あまりちゃんとメンテナンスされていない古いアプリとかだと気になってしまうかも

画面は黄色い?

画面が黄色いとの噂があるようだが、そんなことはないと思う。いや、確かにiPhone 6とかより少し黄色いかもしれないが、True Toneをオフにすれば青すぎるくらいになる。PCにEIZOのディスプレイをつかっているが、それと比べても色温度は同じ感じ。(ちなみにセカンドディスプレイの安いやつは若干青く、かつ明るすぎ)

イヤホンジャック

なぜなくした(いや、防水とかそういう事情は分からんでもないが...)

ホームボタン

なくても特段困ることはない

バッテリー

持ちはかなり良い。地下鉄移動があるとき(そのあいだ読み物をする)は一日で30-40%くらい使う感じで、二日くらい充電不要。移動がないときはスマートフォンをいじる時間はほとんどなく、待機状態(+自宅で使用)で二日経っても半分以上残っていることもあった。もちろんiPhone 6のバッテリーは消耗しているやつなので、大幅に増えた様に感じるが、多分実際新しいバッテリーのiPhone 6と比べても結構持ちが良くなっている感じがする。

iPhone 6

ところで古いiPhone 6WiFi専用機として使っている。キーボードの動作がもっさりしているのであまり込み入ったことはしないが動画専用機などとして使えている。

LabView Student Edition

気力があるうちに、他の人にも役に立ちそうなメモを。今日はLabVIEW Student Editionについて。

LabVIEWとは

最近CQ出版でも取り扱っていたり秋月電子でもHome Edition (Student Editionと似たようなもの)を販売していたりと、個人の電子工作界隈でも使われはじめている「グラフィカル」プログラミング言語。データの流れを「配線」として表す独特のスタイルで、配線同士で演算を行うなどのブロック(VI: virtual instruments)を組み合わせてプログラムしていく。慣れると楽しい。また、GUIの構築も楽なので簡単なCOM通信プログラムなどはこれで作ってしまうと非常に簡単

値段と入手方法

学割で5000円くらい。

オンラインでも発注できるが、今回(といっても数ヶ月前)は大学生協で取り寄せてもらった。というのも、オンラインで発注すると自宅に届くのだが、配送日時が指定できないっぽいのが嬉しくなかったので直接受け取れる大学生協を利用。東大の場合、第一購買部のPCとかを売っている側のサービスカウンターでこれがほしいと言えば手配してもらえる。普通は在庫がないので、届いたらメールで連絡をもらうようにすると良い。また、今回失敗してしまったが、購入のタイミングは新しいバージョンが発売された後が良さそう。通常の研究室などにあるようなサイトライセンスではなく、買い切りのライセンスなので、新しいバージョンにアップデートすることはできない。Service Packも同様。(自分の場合、2017のライセンスで買ったので、2018はもとより2017 SP1にもできない)

インストール方法

普通にDVDでインストールしても良いが、LabViewの日本語環境がどうも慣れない(研究室が英語版を使っているので)。残念ながら、DVDは日本語版しか含まれていないが、英語版を使うこともできる(はず。少なくともライセンス認証はできる。)

まず、National Instrumentsのアカウントを作成し、自分が持っているバージョンのLabViewをダウンロードする。(たとえば32bit, 日本語版なら

LabVIEW 2017 (32-bit) - Japanese - Windows 10, Windows 8.1, Windows 7, Windows Server 2012 R2, Windows Server 2008 R2 - National Instruments

から評価版、もしくはNIアカウントがあれば製品版のインストーラーがダウンロードできる。)

32bit, 64bit, 日本語, 英語など種類があるので必要なものを選ぶ。32bitと64bitは共存可能で。

インストーラーは素直に進めれば良い。途中でシリアル番号が聞かれるので、パッケージに書いてあるシリアル番号を入れる。

シリアル通信をする場合

NI-VISAというドライバを別途インストールする。

LabView 2017の場合NI-VISA 17.xが対応。18.xも対応している。

ただし、LabView 2018はNI-VISA 18.xが必須

ちなみに

  • 研究目的での使用は不可なので、純粋に自分で遊ぶためだけにしか使えない。
  • FrontpanelとBlock diagramの右下にStudent Editionという透かしが入る
  • 研究室などでNIのアカウントを持っていたらStudent Editionと紐付けるアカウントとは別にした方が良いかもしれない。自分は同じにしてしまって、ごっちゃになってしまった。

 

PC更新の話

やはり続かなかったが(本業で気力をすべて使い果たし)、気づけば2年(Dなのでまだ学生)。しかし前のブログみたいにログインすらできなくなるという悲惨な状態ではないので、最近工作を再開したというのもあって久々に更新しようと思う。

前なにを書いていたかというと専ら秋月電子で買ったものとPC環境について書いていた。PC環境はこの頃から大分変わっているので今日はそれを紹介する。

メインPC

  • CPU: Intel Core i7 7820X (8C/16T)
  • Memory: DDR4-2400 8GB x2
  • VGA: MSI GTX1050Ti
  • M/B: ASRock X299 Gaming K6
  • SSD: Sandisk SATA3 480GB
  • HDD: 1TB x2
  • ディスプレイ#1: EIZO EV2450
  • ディスプレイ#2: ASUS 21.5inch? FHD

CPU周りを一新している。メモリは4chにしたいところなのだが、値段が下がったらと思いつつ、未だに放置している(特に不便ではないし)。簡易水冷で普通に定格で動かしているが特に問題はない。LightroomやPremiereで書き出すときに16スレッドがほぼ全開でまわるが、温度も70℃台でおさまっている。

VirtualBoxLinuxを裏で(4コアで!)動かしてもなんともないのはよろしい。

Windows7専用PC

  • CPU: Intel Core i7 4770
  • Memory: DDR3-1600 8GB x2
  • VGA: GTX750Ti
  • ディスプレイ: メインPCのと切り替えて使用

前のメインがサブに下がってきた。まだまだ使えるが最近はほこりをかぶり気味。

Laptop

  • Apple MacBookPro Late 2016/13inch/Touchbar/16GB/i5

メモリだけ増やしたタッチバー付きモデル。タッチバーは正直あまり使わないのだが、指紋認証は必須。キーボードが薄すぎるとちまたでは話題のようだが、個人的には慣れるとこっちの方が打ちやすい気がする。トラックパッドは巨大で良い。タッチバーはあまり使わないと言ったが、かといって物理ファンクションキーじゃなくて困ったことがあるかというと、そんなことはあまりない。vimをたまに使うがESCキーっぽいところをタッチすれば押したことになるのでそんなに不便ではない、と言っておく。いずれにせよ慣れれば気にならない感じ。

CPUはi5だが、これも個人的には正解だと思っている。i7まで数万円追加してあげたところでデュアルコアのままで、若干周波数が上がるとかもしかしたらキャッシュが増えるとか、微々たるものでそこに意味はあまりなさそう。特にメインのデスクトップ(当時は4770)で十分に速いので、ノートPCは「そこそこ速くて」持ち運べればOKという認識。サイズ感はMacBook Air 13inchより小さく、薄くなっていて、スペックアップなので言うことはない。難点を言うなら少し重い。

Magsafeじゃなくなった件について。個人的にはこっちの方が良い。というのもAirを使っていたとき端子の接触が悪くなることが多々あったり、ACアダプタの根本で断線したりと元々あまり満足していなかった。そこへアダプターとケーブルが分離したというのは結構大きい。

USB-Cについて。USB-Cはまだそんなに普及していないので若干不便ではある。一方でどこに何をどんな向きで刺しても良いというのは楽。普段はネットワーク上にデータを置いておくので普段使いで困ると言うことはあまりない(USBマウスも使わないし)

SDカードスロットについて。あった方が良い。残念なポイントのひとつ

HDMI端子について。これもあれば便利。

総合すると賛否両論あるのはともかく、自分としては許容できる範囲だと思う。SDカードで取り込むのも年2,3回なのでそんなに大きな残念ポイントではない。

紫外線LEDライト

UVレジンの硬化用に紫外線光源がほしいと言われたので製作。本当はLEDライトではだめとか書いていたが試してみたら上手くいくらしいので、本格的に作る。

紫外線LEDは秋月電子で入手した405nmの3mm。ケースにはスイッチ付き単四電池ケースを流用して中の間仕切りを切り取り、側面にDCジャックの端子を出しておき、LEDは穴を開けて通した。5V安定化電源をつかって電源回路も手抜きをし適当に150Ωの抵抗をつないで完成。

2日目にして書くのが面倒になってきたが1週間は続けようと思う。

そのほか今日購入したもの

短冊型の極薄基板

ハサミで切れるタイプの極薄基板。切って使うのにちょうどいい

紫外線LED各種

波長が短いタイプも買ってみた

MCP4922-E/P

12bit 2ch DAC。SPIで制御するタイプ。

最近買ったもの

とりあえず1日目は最近買った電子部品について書こうとおもう。千石にて購入

ステレオイヤホンジャック 10個入り \300

安かったのでまとめ買い。このあとの部品と併せて使う予定

10kΩ Aカーブ

これも下の部品とあわせて使う予定。2連じゃないのに今気づいたが、どうせモノラルなのでまぁいいか

スーパーヘテロダイン用バーアンテナ \700, 2連ポリバリコン \310

AMラジオ用。SONYの壊れかけのラジオが完全に壊れたので。一緒に各種コイルも入手

LF353

マイコン制御のDACを作ろうと思って出力側に適当なオペアンプをデータシートも見ずに適当に選択

DAC08CP7

DAC IC。電流出力らしいので抵抗をつけてオペアンプ使えばいいか

LM1893N

安かったので。使い道ないかも