2019.01.22

【Webマガジン Vol.29- Jan., 2019】Column: FLIR Lepton で、お手軽?サーマル (3)

WEBマガジン

  • TOP>
  • 特集>
  • 【Webマガジン Vol.29- Jan., 2019】Column: FLIR Lepton で、お手軽?サーマル (3)
コーンテクノロジー
この記事の監修者
コーンズテクノロジー編集部
コーンズテクノロジーでは先進的な製品・技術を日本産業界へ紹介する技術専門商社として、通信計測・自動車・防衛セキュリティ・電子機器装置・航空宇宙・産業機械といった技術分野のお役立ち情報を紹介しています。

Breakout Boardの場合

OSの準備

MicroSDでブートします。記事執筆時点では、Debian Stretchに相当するArmbian Stretchか、Ubuntu 16.04に相当するArmbian Xenialを利用できます。どちらでも本稿は実現できると思いますが、この作業過程ではカーネルモジュールのbuildがあるため、より多く経験しているほうを選んでください。私はStretchを選びました。

OSパッケージをインストール&アップデートしたら、デバイスツリーによってSPIとI2Cを有効にします。NanoPiの場合armbian-configを使って、SPI(spidev)とI2C(i2c0)が有効であることを確認し、/boot/armbianEnv.txtを編集して、spi0が有効になるようにしてください。次の行が必要です。

param_spidev_spi_bus=0

再起動後、spidevが作られたことを確認して下さい。デフォルトカーネルではちゃんとspidevが作られましたが、devモードのカーネル(デフォルトカーネルより少し新しいカーネル)ではspidevが作られず、使うことができませんでした。

root@nanopineo:~# dmesg | grep i2c
[ 4.536851] i2c /dev entries driver
root@nanopineo:~# dmesg | grep spi
[ 10.181788] spidev spi0.0: probing from DT

必要なソフトウエア

Lepton Makerサイトでは、Raspberry Piの場合はGPIO拡張ボードが含まれる、CanaKit社のセット(Pi2 Ultimate Starter Kit?)を利用しているようです。Beagle Bone Blackの場合は、そのままLepton + Breakout boardをブレッドボードを用いてSPIおよびI2Cへと配線していきますが、どちらの場合も、ソフトウエアとしては GitHub LeptonModule にある、それぞれのプラットホーム用に用意されたソフトウエアを使います。今回も、このGitHubにある情報・ソースの一部は利用しますので、Nano Pi上にcloneしておいてください。ここではv4l2leptonを使います。

このv4l2leptonでは、Leptonが出力する画像そのままではなく、いわゆる「サーマル画像」として、見て使うデータへと変換が行われています。Leptonがデフォルトで出力するraw14データの場合、画像をイメージとして表示しようとすると、14bitのモノクロ画像になります。通常のディスプレイはRGB各色8bitで表現されますので、この、raw14のまま表示しようとすると、階調が深い(細かい)分、赤外線放射状況が滑らかに表示されることとなり、結果、画像としてはコントラスト(メリハリ)が低下して見えます。(この辺りは Vol.24 をご覧ください)

このため、v4l2lepton内で8bit階調データへと、変換テーブルを用いて変換しています。デフォルトではironblackという階調(というか色調)が設定されており、このほかには、rainbow、grayscaleを、ソース書き換えで選択できるようになっています。繰り返しますが、これはLeptonが着色しているわけではなく、v4l2leptonが着色していますので、新たなカラーテーブルを自分で定義することも可能です。

Lepton Maker siteでは、Raspberry Pi、BeagleBone Blackともに、ディスプレイ接続を前提として構成された事例を紹介しています。NanoPi NEOでは、SPI等使ってLCDモジュールを接続することは可能ではありますが、標準ではディスプレイは搭載されていません。このため今回は、 WEBマガジンVol.24 と同様に、ネットワークカメラ的な仕立てをまずは考えます。Leptonは、VoSPIにより画像を送ります。つまり、ビデオカメラがSPIに繋がれる、という形になります。そういうデバイスをV4Lでサポートするために、 v4l2loopback を使いますので、同様cloneしてください。これで、VoSPIからキャプチャした画像を、V4L2を介してデバイスファイルへと流し込むことができます。

V4l2loopbackはLepton専用ではなく、他の画像処理プログラムで利用されたことがあるかもしれません。Buildについては、v4l2loopback、v4l2lepton、ともに、同時にダウンロードされるReadmeを参照ください。

 

 

 

 

 

 

 

 

 

 

図 3 全体像

なお、v4l2loopbackはカーネルモジュールの形態をとりますので、Linuxカーネルのbuild環境が必要です。Armbianの場合は、走行しているカーネル用のヘッダファイルを追加インストールして、buildします。Buildできたらinstallして、depmod –aしておきます。

以上問題なく実行できたらNanoPi NEOを一旦haltして電源を落とし、Breakout boardにLeptonを搭載し、Breakout Board記載の信号線名に合わせ、NanoPi NEOと結線します。右写真にて、右2本はI2C、左6本のうち右2本が電源とグランド、残りがSPIです。

結線後電源投入してarmbianが起動し、先に確認したようにI2C、SPIデバイスがboot時にチェックされ、デバイスファイルが作られていることを確認します。

 

図 4 NanoPi NEO + Lepton