IoTが話題になっています。HummingBoardは、IoTのような用途に向いています。さっそくセンサーのデータをクラウドにあげてみることを検証してみます。サーバー側のソフトで集計をして、Webからのアクセスでそのデータをグラフにして表示をみたり、ある温度を超えるとMyThingsからお知らせが届くということを検証してみます。
今回はMyThings-IDCFクラウドのサービスを使います。クラウドサービスを提供するIDCFのサイトでは、「標準」の開発環境となるボードを用意していますが、HummingBoardでも同じことができることを見ていきます。
以前のコラムで、温度センサーの値をHummingBoardのI2Cポートから読み出し、HummingBoard内にWebサーバーを組み込んで、温度データをWeb上でグラフを表示することを紹介しています。この時は、HummingBoardをプライベートクラウドのように扱い、クライアントであるWebサーバーから直接読みだすような仕組みとしていたわけですが、今回は、データをIDCFのサーバーに一旦あげて、そのサーバーへクライアントからアクセスするようになるわけです。何故クラウドにデータを上げるといいか、というところがIoTの一番大事なところです。データとしてあげておくと、以前のコラムで紹介したようにグラフ表示としてしか情報を提供できないのに対し、クラウドからデータとして取ってこれれば、違うアプリケーションからそのデータが利用できるということです。それが、統計データとしてや、同様のデータを全国レベルで集計することもあり得ることでしょう。
今回の例では、IDCFが始めたばかりのサービスでもあり、すぐにインタフェースを含めて変更が入ることでしょう。なので、この記事もすぐに時代遅れになってしまうことでしょう。ですが今はこのアイデアを感じていただければ幸いです。
[温度センサーモジュール]
今回使用した温度センサーは「ADT7410使用 高精度・高分解能 I2C・16Bit 温度センサモジュール」です。株式会社秋月電子通商から購入することができます。
◆主な仕様
・温度精度:±0.5℃@-40℃~+105℃(2.7V~3.6V)
±0.4℃@-40℃~+105℃(3.0V)
・温度分解能:0.0078℃(16ビット設定時)/0.0625℃(13ビット設定時)
・温度校正および温度補正、直線性補正等は不要
・動作/測定温度範囲: -55℃~+150℃
・電圧範囲:DC+2.7V~+5.5V
・I2C互換インターフェース
・消費電流(@VDD=3.3V、TA=+25℃)
ノーマル・モード:210μA(typ)
パワーセービング・モード(1サンプル/1秒):46μA(typ)
シャットダウン・モード:2μA(typ)
・基板サイズ:15×11ミリ
・基板上の入出力端子:4個(VDD,GND,SCL,SDA)
【インストール・検証手順】
ここから、インストール手順について説明します。
まずは母艦のLinux PCでの作業です。
1. SDカードにAndroidシステムを書き込む
(1) 2015/10/31現在で最新のAndroid 4.4.4のイメージファイル(cuboxi_AOSPBox-i_R1.6.img.xz)を、ここからダウンロードします。
(2) ダウンロードしたファイルを解凍します。
# xz -d cuboxi_AOSPBox-i_R1.6.img.xz |
(3) SDカードをPCにセットして次のようにしてAndroidシステム一式を書き込みます。
# dd if=file_name.img of=/dev/sdf |
/dev/sdfの部分は、実際にSDカードがアサインされているデバイス名を指定してください。
2. USB Wifiアダプタ対応のカーネルとモジュールを生成します
今回は、Android本体をソースからビルドし直す必要はないので、上記のように完成したイメージを用います。そのAndroid用にLinuxをビルドし直すので、以前に記載の記事の、ビルド環境の整備と、カーネルのソースを用意します。
(1) 「ソフトウェア TIPS (13) CuBox-i にKitKat を載せてみる(ソースからのビルドに挑戦)」に記述してあるツール類のインストールをして、前準備の部分
「最初に http://www.solid-run.com/community/topic1091.html
から 「Clone in Desktop」を使ってこれから作業しようとするディレクトリに入れます。もし、ZIPダウンロードで持ってきた場合は、ディレクトリ名の最後が.masterとなっているのでandroid-imx6-kitkat としておきます。
ここからビルドを行っていきます。原文のインストラクションの文中にコメントをいれてみます。」
と 9.および 10. の部分
「 9. git clone git://git.freescale.com/imx/linux-2.6-imx.git kernel_imx
Linuxカーネルをダウンロードしてきてkernel_imx 内に入れます
cd kernel_imx; git checkout kk4.4.2_1.0.0-ga
Alternative, until Freescale updates their tree tags, the kernel can be downloaded from –
http://git.freescale.com/git/cgit.cgi/imx/linux-2.6-imx.git/tag/?id=kk4.4.2_1.0.0-ga
このように書いてますが、「別途ダウンロードしてきたもの」を使うと次のステップで git am が使えるようにするのに苦労します。git clone を使いましょう
10. Manually patch kernel_imx –
cd kernel_imx
git am < git tree location >/android-imx6-kitkat/kernel_imx/3.0.35/*
kernel_imxは実際にはkernel_imx.gitでした。これでソースへのパッチをあてることができます。」
が既にできているものとします。ここからは、上で記述のある “kernel_imx” ディレクトリにcdしているものとして説明を進めていきます。
(2) 環境変数をセットしておきます。
$ export ARCH=arm $ export CROSS_COMPILE=arm-linux-gnueabi- |
(3) IntelのWIFI Mini PCI カード・モジュールをmake対象にします
$ make imx6_cubox-i_hummingboard_android_defconfig $ make menuconfig |
GUI画面でIntelのWIFIをモジュールとして取り込むように指定しましょう。
トップメニューから下のようにサブメニュー”Wireless LAN —>”までたどっていきます。
Device Drivers ---> [*] Network device support ---> [*] Wireless LAN ---> |
このサブメニュー内のIntel関連のものを選択してモジュールとして組み込むように指定します。
コメントをお書きください