• 検索結果がありません。

超小型コンピュータを用いたアプリケーション開発 技術の修得

N/A
N/A
Protected

Academic year: 2021

シェア "超小型コンピュータを用いたアプリケーション開発 技術の修得"

Copied!
7
0
0

読み込み中.... (全文を見る)

全文

(1)

超小型コンピュータを用いたアプリケーション開発 技術の修得

著者 小澤 伸也, 白井 治彦, 水野 広治, 廣木 智栄

雑誌名 技術部活動報告集

巻 21 (2015年度)

ページ 13‑18

発行年 2016‑03

URL http://hdl.handle.net/10098/9978

(2)

福井大学 工学部技術部 活動報告集 Vol.21 平成283

超小型コンピュータを用いたアプリケーション開発技術の修得

小澤 伸也**** 白井 治彦* 水野 広治** 廣木 智栄***

1. はじめに

近年,コンピュータの小型化が進んでおり,

超小型かつ低価格ながら日常的に使用している パソコンと同様の用途で使用可能なシングルボ ードコンピュータと呼ばれるカテゴリがある.

これらは,一般に組み込みシステム等の様々な 用途に使用されており,学内においても日常業 務等に用いることで業務改善が図れることが期 待される.

本研修では,このシングルボードコンピュー タの使用方法や開発技術等の基礎技術を修得す ることを目的とした.研修ではシングルボード コンピュータとして Raspberry Pi を採用し,

Linux ベースである OS を実際にインストール

することにより構築方法および基本操作等の基 礎技術を修得した.その後,周辺機器との接続 方法やそれらを利用した開発技術等を修得し,

組み込みシステムとしてアプリケーションの開 発を試みた.

2. Raspberry Piを用いたアプリケーション開

発技術修得のための環境構築と学習

本研修では,最近,超小型の組込み型のコン ピ ュ ー タ の 中 で 比 較 的 よ く 利 用 さ れ て い る

Raspberry Pi を研修の題材にしてアプリケーシ

ョン開発を行なった.この章では,本体の構成 と開発環境の構築やプログラミングなどの技術 修得のための学習方法等を述べる.

2.1. Raspberry Piの構成とOSの構築

研 修 で は 第 2 世 代 と な る Raspberry Pi 2

MODEL B(図1)を対象にアプリケーション開

発の研修を行なった.そのハードウェア構成を 表1に示す.

Raspberry Piは超小型ではあるが一般のパソ * 第1技術室

** 第3技術室

*** 第3技術室 システム制御班

**** 第3技術室 システム設計班

図1RaspberryPi2Model-B

コン並みの機能を一通り備えているため,最近

ではそのOSにWindows10の選択も可能となっ

ているが,本研修では比較的よく利用されてい る Debianの一種のRaspbianを用いた.二次記 憶装置として Micro SD カードが用いられてい るためそこからOSが起動できる.OSのインス トールには,先ず SD カードを所定のフォーマ ットを行なった後,Raspberry Pi のサイトより SD カードにイメージをあらかじめダウンロー ドしておく.この時,簡単にインストールを行 なうため,NOOBS(Now Out of the Box Software)

を利用する.NOOBS をダウンロードした後,

Raspberry Pi本体にSDカードを挿入し,ディス プレイやキーボードを接続して電源を投入すれ ば,通常のDebianインストール時のように対話 的に OS 各種設定が始まる.設定が終了すれば 好みのデスクトップ環境システム構築できる.

加えて,有・無線LAN機能を備えており,

表1 Raspberry Pi 2 Model Bの構成 CPU 900MHz 4-core ARM Cortex-A7

RAM 1GB Peripheral

4 USB port,40 GPIO pins, Full HDMI port, Ethernet Port, Audio jack and comp. video, Camera interface, Display interface,

Micro SD card slot, VideoCore IV 3D graphics core

(3)

それを利用すれば他の計算機を含めたネットワ ークシステムも簡単に構築できる.

2.2. アプリケーション開発のための環境構築 研修では,Raspbianシステムをベースにアプ リケーション開発の使用言語として比較的よく 利用されているPython言語を採り上げ,その構 文や入出力のためのGPIOの制御法を学習した.

また,このシステムはWebサーバの構築も可 能で,Python を利用すれば比較的簡単に CGI プログラミングができ,ネットワークを介して 他の計算機等のブラウザからRaspberry Piの入 出力制御が可能となる.

具体的なアプリケーション開発については次 節以降で紹介する.

通常,アプリケーション開発を行なう場合,

本体にディスプレイやキーボードなどの入出力 装置を接続する必要があり,そのためだけに各 機器を準備するのは大変面倒である.その対策 としていつも使っているノート PC などをリモ ートで専用入出力装置に代わって利用できれば 大変便利である.この機能を実現するため,本 体にVNC(Virtual Network Computing)サーバ を,ノート PC 側にクライアント(Viewer)を インストールしておけば(MAC では標準で利 用できる)ノート PC 上でこのシステムのデス クトップ環境が操作できる.また本体に samba サーバをインストールすることでノート PC の ファイルシステムと共有でき,ノート PC のフ ァイル編集機能を通じてアプリケーション開発 が可能となる.VNC や Samba 等のインストー ル方法については,通常のDebian等に準じるた め,ここでは省略する.

3. Raspberry Piを用いた開発例

研修では,Raspberry Piと周辺機器を用いてい くつかのアプリケーションの開発をおこなった.

以下は研修でおこなった開発例となっている.

3.1. OpenCV ライブラリを用いた Raspberry Piのアプリケーション

Raspberry Piは小型であるため,設置場所に困

らないという利点がある.それはマイコンを用 いれば解決する問題ではあったが,マイコンの 開発にはマイコンの仕様をよく知る必要があり,

作りたいものによっては手軽に開発できないこ ともあった.Raspberry Piは超小型PCであるた

め,OSがLinuxの一般的なPCと同様の開発が 可能となる.そこで,一般的な PC での開発な らば容易となる開発の例として,画像処理が可

能となるOpenCVライブラリを用いたアプリケ

ーションの開発をおこなった.

OpenCVはC++言語上で画像処理を行えるパ

ッケージ化されたオープンソースのライブラリ である.そのためLinux PCへのインストールは 簡単におこなえる.また,OpenCV に用意され た関数を用いることで,複雑な画像処理でも関 数として手軽に使用することができる.

この他OpenCVではUSBカメラから入力され

る映像をリアルタイムで処理することも可能で ある.研修では,OpenCV を用いたアプリケー ションとして,USBカメラを用いた監視カメラ と,USBカメラで撮影しながらリアルタイムで 顔認識を行うアプリケーションの2つを開発し た.使用したUSBカメラの性能を表2に表す.

表2 USBカメラの性能

品名 DX-670

最大画像サイズ 640 x 480

最大fps 30fps

1 つ目の監視カメラでは,動体検知機能を加 え,撮影箇所内に動体が入ってきた場合のみ動 画を保存する機能を加えた.動体検知部分は Webサイトを参考にした3).このアプリケーシ ョンはカメラを使用する場所は固定されている と仮定し作成している.最初に撮影した1枚の 白黒画像にした背景画像と,新たにカメラから 送られてくる白黒画像(図 2)にした画像との 差の絶対値を計算する.差の絶対値を取った画 像を閾値で2値化する(図3).差が大きい箇所 は図3を見ると白色で表現されている.差が大 きい画素が画像上で一定の割合を超えた時,動 体を検知したとし,その画像を保存する.

図 2 白黒画像にしたUSBカメラ映像

(4)

図4 顔を認識されている状態

研修で使用した解像度160x120のUSBカメラか らの映像では,1秒間に5,6枚の画像を処理で きることを確認した.

2つ目は顔認識をUSBカメラで撮影しながら リアルタイムで行うアプリケーションを,Web ページを参考に開発した 4).顔と認識された箇 所は顔の範囲を丸で囲まれる(図4).

OpenCV では認識させたいものの特徴を機械

学習させたデータと,調べたい画像を渡すこと で,学習したものが画像上のどの位置にどのサ イズで存在するかを返す関数が用意されている.

今回はOpenCVをインストールした時点でサン

プルとして附属する人間の顔の学習データを使 用した.高速な処理となるよう,撮影した映像 はサイズを縦横4分の1に小さくした白黒画像 にする前処理もおこなっている.Raspberry Pi 上で動作させた時,解像度320x240のUSBカメ ラからの映像において,1秒間に4,5枚の処理 が可能であることを確認できた.

研修で開発したOpenCVを用いたアプリケー ションは一般のLinuxがインストールされたPC と同様に開発することができることを確認した.

また,小さめのデータサイズであればUSBカメ ラを使用したアプリケーション開発が十分可能 であることを知ることができた.

3.2. I2Cを用いた計測データの取得

Raspberry PiのI2C(Inter Integrated Circuit)を 用いて,センサから計測データの取得をおこな った.具体的には,I2C の通信方式で接続した センサモジュールキットから計測データを取り 込み,データベース化することで,指定日の環 境情報をグラフ描画する Web アプリケーショ ンを開発した.

3.2.1. BME280センサモジュールキット

使用したセンサモジュールは,BME280(ボ ッシュ社)を搭載した秋月電子通商のキットで,

温度,湿度,気圧の3つの情報を同時に計測す ることができる(表3,図5).また,マイコン 等との通信にはI2CまたはSPIを選択できる.

3.2.2. I2C接続

Raspberry Piには,センサ等を接続してプログ

ラムから直接制御できるGPIOの入出力端子を 標準で搭載している.今回のセンサモジュール キットとの接続に用いたI2Cは,デバイス同士 をクロック信号と双方向データ信号の2本の信 号線で接続してシリアルでデータ通信を行うイ ンターフェースである.通信にはデバイス固有 のアドレスを指定し,デバイスのレジスタに対 図3 2値画像

表3 BME280の主な仕様 電源電圧:DC1.71V ~ 3.6V

通信方式:I2C / SPI 測定レンジと測定精度 温度:-40 ~ +85℃,±1℃

湿度:0 ~ 100%,±3%

気圧:300 ~ 1100hPa,±1hPa 分解能

温度:0.01℃,湿度:0.008%,気圧:0.18Pa I2Cアドレス:0x76 / 0x77

図5 Raspberry Piとセンサモジュールキット

(5)

図8 ブラウザによるグラフ描画 図7 センサモジュールキットの計測データ取得

する読み書きにはレジスタアドレスを指定する.

Raspberry Pi からI2Cを利用するには,予め 用意されているモジュールを有効に設定する必 要がある.設定は,システム関連の設定ファイ ルにI2Cモジュール名(i2x_arm)を追加記述し,

起動時に指定モジュールがロードされるように 該当設定ファイルの内容を書き換える.設定処 理後は,システムを再起動させ,コマンドライ ン か ら I2C 接 続 デ バ イ ス を 調 べ る ツ ー ル

(i2c-tool)により,今回のセンサモジュールキ ット(アドレス0x76)の接続を確認した(図6).

3.2.3. 計測データの取得

Raspberry PiからI2C通信を介してセンサモジ ュールキットの計測データを取得するためのプ ログラムには Python を用いた.Python には豊 富なライブラリが用意されており,今回の I2C 通信の利用にはSMbus(Python-smbusインスト ール)ライブラリを使用した.尚,実際の取得 のためのプログラムは,スイッチサイエンス社

のBME280公開リポジトリから入手したPython

のサンプルプログラムを利用した(図7).

3.2.4. 取得データのグラフ化

取り込んだ計測データを活用するために,ブ ラウザから日付指定でグラフ描画できる Web アプリケーションをRaspberry Piにて開発した.

開発した Web アプリケーションは,HTML,

JavaScript,CSSを使用し,描画等の処理を行う

Pythonプログラムの実行にはCGIを利用した.

グラフ描画のための計測データは,時間設定 でコマンドを自動実行する cron 機能を用いて

定期的に Python プログラムを起動させること

でデータを取得した.また,取得情報は,Python の標準ライブライであるリレーショナルデータ

ベース SQLite3によりデータベース化した.デ

ータから Web を用いてブラウザにグラフを描 画するには,CGIが利用可能なWebサーバが必 要であるが,今回はPythonの簡易CGIWebサー バを利用することで動作を確認した.尚,実際 のグラフ描画には,googleのグラフ作成ツール Google Chartを利用している.これは,URLに パラメータを指定することでグラフ画像を取得 できるもので,PythonからはこのGoogle Chart のラッパーであるpygooglechartを利用すること でグラフを生成している.

最終的には,I2C 接続したセンサからのデー タを利用し,Raspberry Piの開発環境で作成した Webアプリケーションにより,指定した日の24 時間の変化(10分間隔)を折れ線グラフで描画す ることができた(図8).グラフは,温度と湿度に 加え,気圧は選択で表示可能である.更に,記 録されたデータからではなく,現在の情報を表 示することも可能で,参考として福井気象台の アメダスデータも表示する.その他,監視の機 能として,今日の計測データの変化を24時間表 示で自動描画できる.

図6 センサモジュールキットの接続確認

(6)

図9 RaspberryPi上での画面表示 3.3. 教育用計算機システムとの接続

Raspberry Pi と一般的なサーバシステムとの

接続として,教育用計算機システムへ接続をお こない,常時収集している学生ユーザーの計算 機端末利用状況と授業利用情報のデータを取得 し,Raspberry Pi上でデータを整理,画面表示を するようなシステムの開発をおこなった.

3.3.1. 取得するデータ

教育用計算機システム内では各ユーザーの 様々な情報を常時収集している.研修で開発し たシステムでは,その中の学生ユーザーの端末 利用状況と授業利用情報を取得した.学生ユー ザーの端末利用状況は学生が計算機端末を使用 しているかについて cron 機能を用いて一定時 間ごとに起動するC言語プログラムにより収集 されており,学生ユーザーが利用中の端末およ び,端末上で使用している OS の種類がデータ として上書き保存されている.このデータは数 字のみであり,そのままでは一目で利用状況を 確認することはできない.また,授業利用情報 は,その日に計算機端末を利用する授業の情報 がC言語プログラムによりデータを作成し上書 き保存されており,cron機能を用いて毎日更新 されている.なお,これらデータやその収集方 法の詳細についてはここでは省略する.

3.3.2. データの取得

Raspberry Pi から教育用計算機システムへは

ssh を用いて接続しデータを取得した.データ の取得はRaspberry Pi上の各データに合わせた C言語プログラムを起動すると自動的におこな うように開発した.

3.3.3. Raspberry Pi上での処理

Raspberry Pi上での処理はC言語プログラム によりおこなった.開発したプログラムは,取 得したデータを読み込み,一目で確認できる様 に描画する HTML ファイルに変換した.この HTMLファイルは端末利用状況と授業利用情報 の各データ毎に作成するようにし,それらを並 べて表示する別のHTMLファイルも作成した.

図9は作成したHTMLファイルによる表示例と なっている.並べて表示するHTMLファイルは 一定時間毎の再読み込みが設定されており,端 末利用状況および授業利用情報の HTML ファ イルが更新されたとしても自動で反映するもの

となっている.

また,端末利用状況のHTMLファイルはPC のアイコン画像を用いてそれを色分けすること で学生ユーザーがどの端末を利用しているかだ けでなく,どの OS を使用しているかもわかる ようにした.さらに,HTMLファイル作成時に 授業利用情報のデータを利用し,授業利用中の 端末を異なる色で色分けすることでその端末の 状態をより詳細に確認できるようにした.

3.3.4 データ取得の拡張

学生ユーザーの端末利用状況および授業利用 情報のデータは一定時間毎に取得しても良いが,

常にデータ取得をおこなうのは利用する上で無 駄が多い.これに対して研修ではデータを取得 する回数を減らす対策をおこなった.

まず,授業利用情報についてはその日の予定 はあらかじめわかっており,その予定が変更さ れることはほぼ無い.そのため,cron機能を用 いて教育用計算機システム上での授業利用情報 の更新が終わった後で一度だけ取得し,HTML ファイルを作成するようにした.

また,端末利用状況についても夜間や休日等,

Raspberry Pi上での表示を確認しない間はデー

タを取得する必要が無いため,研修では3.1. で 用いたUSBカメラを用いて動体検知をおこな い,検知された時にデータを取得しHTMLファ イルを作成するようにした.ここでの動体検知 は,3.1. で用いたOpenCVではなく動体検知用 パッケージであるmotionを用いておこなった.

さらに,動体検知時にRaspberry Piと接続して あるディスプレイがスリープ解除され,一定時 間検知されないとディスプレイがスリープされ るように設定した.

(7)

4. まとめ

本研修では,超小型コンピュータとして,

Raspberry Pi 2 Model-Bを用いて,その構築方法 や操作技術を修得した. また,周辺機器との接 続や開発方法についても修得し,実際にいくつ かのアプリケーションの開発を試みた.

研修は,まずRaspberry Pi にOSとしてDebian の一種であるRaspbianをインストールし,設定 をおこなうことを通じて構築方法および操作技 術を修得した.

次に,購入した関連書籍に基づいて,プログ ラミング言語である Python を用いた開発技術 をRaspberry Pi のGPIOを用いた制御プログラ ムを作成することを通じて修得した.また,開 発環境として各研修者の PC から Raspberry Pi へネットワークを用いてリモート接続できるよ うな設定もおこなった.

研修の成果として,研修によって修得した技 術と周辺機器との接続を用いて,Raspberry Pi を用いた組み込みシステムの開発をおこなった.

これにより,周辺機器との接続方法や,Python 以外のプログラミング言語,その他多様なパッ ケージ等を用いた開発技術を修得した.

表4 研修日程

本研修で取り扱った超小型コンピュータは,

通常の PC と同様の使い方,システム開発がで きる一方で,非常に小型かつ軽量であり,この 特性を活かすことにより日常業務において業務 改善が期待できると言える.今後は,本研修で 修得した技術を用いて継続してシステムの開発 をおこなっていきたいと考えている.

最後に,本研修の日程について表4に示す.

参考文献

[1]石井モレナ,江崎徳秀

「みんなのRaspberry Pi入門」リックテレコム [2]福田和宏

「これ一冊でできる!ラズベリー・パイ超入門」

ソーテック社

[3]「背景差分法で動体検知」

<http://opencv.blog.jp/python/背景差分法で動 体検知>

[4] http://opencv.jp/cookbook/opencv_img.html [5]「スイッチサイエンスのBME280公開リポジ

トリ」

<https://github.com/SWITCHSCIENCE/BME 280>

日付 時間 研修内容

5月28日 13:00-15:00 研修内容打ち合わせ

6月18日 9:30-11:00 購入物品打ち合わせ 7月3日 10:30-12:00 研修予定打ち合わせ

7月17日 10:30-12:00 Raspberry Pi へのRaspbian インストールおよび設定方法の学習(1)

7月23日 9:30-11:30 Raspberry Pi へのRaspbian インストールおよび設定方法の学習(2)

7月31日 10:00-12:00 Python を用いた開発技術の学習(1)

10月8日 9:00-11:00 Python を用いた開発技術の学習(2),今後の予定の打ち合わせ

10月8日~ Raspberry Pi を用いた組み込みシステムの開発

11月27日 9:00-11:00 進捗報告(1)

12月18日 9:00-11:00 進捗報告(2)

2月5日 9:30-11:00 研修報告について

図 4  顔を認識されている状態 研修で使用した解像度160x120のUSB カメラからの映像では,1秒間に5,6枚の画像を処理できることを確認した. 2つ目は顔認識をUSB カメラで撮影しながらリアルタイムで行うアプリケーションを,Webページを参考に開発した4).顔と認識された箇所は顔の範囲を丸で囲まれる(図4). OpenCVでは認識させたいものの特徴を機械学習させたデータと,調べたい画像を渡すことで,学習したものが画像上のどの位置にどのサ イズで存在するかを返す関数が用意されている.今回はOpenC
図 8  ブラウザによるグラフ描画 図7   センサモジュールキットの計測データ取得 する読み書きにはレジスタアドレスを指定する.Raspberry  Pi からI2Cを利用するには,予め用意されているモジュールを有効に設定する必要がある.設定は,システム関連の設定ファイルにI2Cモジュール名(i2x_arm)を追加記述し,起動時に指定モジュールがロードされるように該当設定ファイルの内容を書き換える.設定処理後は,システムを再起動させ,コマンドライン か らI2C接 続 デ バ イ ス を 調 べ る ツ
図 9    RaspberryPi 上での画面表示3.3.  教育用計算機システムとの接続 Raspberry  Piと一般的なサーバシステムとの接続として,教育用計算機システムへ接続をおこない,常時収集している学生ユーザーの計算機端末利用状況と授業利用情報のデータを取得し,Raspberry Pi上でデータを整理,画面表示をするようなシステムの開発をおこなった. 3.3.1

参照

関連したドキュメント

つまり、p 型の語が p 型の語を修飾するという関係になっている。しかし、p 型の語同士の Merge

欄は、具体的な書類の名称を記載する。この場合、自己が開発したプログラ

原則としてメール等にて,理由を明 記した上で返却いたします。内容を ご確認の上,再申込をお願いいた

人間は科学技術を発達させ、より大きな力を獲得してきました。しかし、現代の科学技術によっても、自然の世界は人間にとって未知なことが

自然言語というのは、生得 な文法 があるということです。 生まれつき に、人 に わっている 力を って乳幼児が獲得できる言語だという え です。 語の それ自 も、 から

(batter)又はパン粉でおおった魚の切身、加熱による調理をした魚)

 履修できる科目は、所属学部で開講する、教育職員免許状取得のために必要な『教科及び

 履修できる科目は、所属学部で開講する、教育職員免許状取得のために必要な『教科及び