M2MやIoTの実現に適したシンプルで軽量なプロトコルとしてMQTTというものがあります。MQTTはセンサー等のデバイスからデータを送受信する用途に使われることを想定しています。
Armadillo-IoTには、Rubyから簡単にMQTTが扱えますので、Armadillo-IoTの内部温度センサーの値を送信するサンプルプログラムを紹介します。
個人別ブログ
at_ito さんのブログ
-
at_ito
-
at_ito
Aramdilloの開発環境であるATDEを使用する場合には、VMware等の仮想マシンを動作させるためのソフトウェアが必要になります。VMwareは多数の製品があるため、ここではVMwareの選び方を簡単に説明します。
-
at_ito
Armadillo-IoTを使用する際に、簡単にWebアプリケーションを作成したい場合があると思います。HTTPサーバーとCGIを利用してWebアプリケーションを作成することもできますが、事前知識が必要であまりお手軽ではありません。
ここではArmadillo-IoTに標準で入っているRubyのWebアプリケーションフレームワークであるSinatraを使用して、簡単にWebアプリケーションを作成し、動かしてみます。 -
at_ito
Armadillo出荷時等にLinuxカーネルイメージ、ユーザーランドイメージを自動的に書き換える必要がある場合も多いかと思います。
ここではUSBメモリを使用して、Linuxカーネルイメージ、ユーザーランドイメージを書き換えるためのシェルスクリプトを紹介します。 -
at_ito
Armadillo出荷時等にLinuxカーネルイメージ、ユーザーランドイメージを自動的に書き換える必要がある場合も多いかと思います。
ここではTeraTermマクロを使用して、Linuxカーネルイメージ、ユーザーランドイメージを書き換えるためのTeraTermマクロを紹介します。 -
at_ito
Armadillo出荷時等にLinuxカーネルイメージ、ユーザーランドイメージを自動的に書き換える必要がある場合も多いかと思います。
ここではTeraTermマクロを使用して、Linuxカーネルイメージ、ユーザーランドイメージを書き換えるためのTeraTermマクロを紹介します。 -
at_ito
Armadillo-IoT: dnsmasqをインストールするでインストールしたdnsmasqを使ってArmadillo-IoTをDNSキャッシュサーバーとして利用する方法を紹介します。
-
at_ito
Armadillo-IoT: dnsmasqをインストールするでインストールしたdnsmasqを使ってArmadillo-IoTをDHCPサーバーとして利用する方法を紹介します。
-
at_ito
Armadillo-IoTには有線LAN、無線LANや3Gが搭載されており、ルーターとしても使用できます。ルーターにはIPマスカレード、DHCPサーバー、DNSサーバー等の機能が必要になります。 ここでは、DNSキャッシュサーバーとDHCPサーバーとして利用できるdnsmasqをインストールする方法を紹介します。
-
at_ito
ここでは、Linux上で.NET Framework互換の環境を実現するMonoを使用して、.NETアプリをArmadillo-440にて動かしてみます。
-
at_ito
Debianのデフォルトのエディタはnanoになっています。visudoコマンドや、gitコマンド等を使用した場合に、デフォルトのエディタが使われることがあります。nanoは単機能なコマンドなため、vimやemacs等の多機能なエディタに変更したい場合があるかと思います。 そのため、ここではATDE(Debian)のデフォルトのエディタを変更する方法を紹介します。
-
at_ito
テストを行う際に、自動的にコマンドを実行したり等、テストの自動化を行いたい場合があるかと思います。 今回は例として、シリアル通信ソフトウェアであるTera Termマクロを使って、起動テストを行う方法を紹介します。
-
at_ito
Atmark Distに標準で入っているPythonはバージョンが古いため、ここではDebianパッケージを使用してPythonをユーザーランドに追加する方法を紹介します。
-
at_ito
Atmark Dist等ダウンロードして展開しようとした場合に、エラーがでて正常に展開できない場合があるかと思います。その際に、ダウンロードしたファイルが壊れているかどうかを調べる方法について紹介します。
-
at_ito
Linuxカーネルのコンフィギュレーションを設定する場合に、 BACKLIGHT_LCD_SUPPORT等のシンボルはわかるものの、設定項目が どこにあるのかわからない時があるかと思います。 ここでは、「BACKLIGHT_LCD_SUPPORT」を元に設定項目が どこにあるのかを調べる方法を紹介します。
-
at_ito
Linuxにはteeというコマンドがあります。このコマンドは標準出力とファイルの両方へ出力することができます。ここではAtmark Distのmakeコマンド実行結果を例に、コマンド実行結果をファイルに保存しつつ、コンソールにも表示する方法を紹介します。
例えば、make.logファイルにコマンド結果を保存しつつ、コンソールにも表示するには、以下のようなコマンドになります。
[ATDE ~/atmark-dist]# make 2>&1 | tee make.log
ソースコードのビルド時にエラーを記録するときなどに便利ですので、ぜひ使用してみてください。
-
at_ito
製品化の際に、アプリケーションが動かなくなった場合などに再起動するためウォッチドッグタイマーを使用する場合があるかと思います。ここではウォッチドッグタイマーの使用方法について説明します。
ウォッチドッグタイマーにはハードウェアウォッチドッグタイマーと、ソフトウェアウォッチドッグタイマーがあります。
ハードウェアウォッチドッグタイマーはCPUのウォッチドッグタイマーの機能を使用しており、ブートローダー(Hermit-At)もしくは、Linuxカーネルで使用しています。そのため、ブートローダーやLinuxカーネルが正常に動作せず、ハードウェアウォッチドッグタイマーをキックできない場合にのみ自動的に再起動が行われます。そのため、アプリケーションが正常に動作しない場合等に使うことには向いていません。
ソフトウェアウォッチドッグタイマーは、Linuxカーネルが提供している機能です。アプリケーション等の死活監視を行う場合に使用することができます。製品化の際に、実装する場合はほぼソフトウェアウォッチドッグタイマーを使用する形になるかと思います。
そのため、ここではソフトウェアウォッチドッグタイマーを使用する方法を以下に紹介します。
-
at_ito
Atmark Distにはシリアル-イーサネット変換通信を行うためのseri2ethというアプリが入っています。ここではseri2ethの使用方法について説明します。
-
at_ito
netflashコマンドでイメージをフラッシュ書いた後、正しく書かれたかチェックしたい場合があるかと思います。
ここでは、netflashコマンドで、正しくイメージが書かれたかどうかをチェックする機能について紹介します。
1. チェック方法
netflashには-Cオプションがあり、このオプションを付けることによって、指定されたイメージと同じイメージが、フラッシュにかかれているかどうかをチェックすることができます。
コマンド例としては、以下のようになります。
netflash -knubC -r /dev/flash/kernel linux.bin.gz
2. ベリファイ実行例
2.1. kernel領域に、linux-a400-1.08.bin.gzイメージを書き込む
以下のコマンドを実行して、kernel領域にlinux-a400-1.08.bin.gzイメージを 書き込みます。この際オプションに"-b"を付けて自動的に再起動しないように しておきます。
-
at_ito
Heroku(Ruby+Sinatra)でHello Worldをやってみましたので、 その際の作業手順をまとめてみます。
1. Herokuの使用準備
以下のURLでHerokuのアカウントを作成してください。
- https://id.heroku.com/login
以下のURLを参考にしHeroku toolbeltをインストールします。
- https://toolbelt.heroku.com/
以下のコマンドを実行し、toolbeltをATDE5にインストールしてください。
[atde ~]$ wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh
2. Sinatraを使用したアプリを作成
以下のように適当なディレクトリを作成し、そこに移動します。
-
at_ito
Armadillo-IoTの標準のユーザーランドにruby-serialportが入っているので、 rubyでシリアルエコーサーバーを作ってみました。
以下、ソースコードです。
-
at_ito
Armadillo-IoTとHeroku(Node.js)でHello Worldをやってみましたので、 その際の作業手順をまとめてみます。
1. ATDE5にnode.jsをインストール
ここではATDE5でNode.jsを動かすために、Node.jsをインストールします。(ローカルで動作させる環境が不要な場合はこの章の手順は不要です)
Node.jsのパッケージ(nodejs, nodejs-legacy)は、ATDE5のベースであるDebian wheezyにはパッケージがありません。そのためbackportから取ってくる必要があります。
ここでは以下のURLを参考にATDE5にNode.jsをインストールします。
- http://kotak.hatenablog.com/entry/2014/06/18/190500
まずは/etc/apt/sources.list.d/backports.listファイルを以下の内容で作成してください。
-
at_ito
Armadilloの標準イメージには、viエディタが入っています。しかしviエディタは操作方法が特殊であり使いにくいという人もいます。 そのため、Debian GNU/Linuxでも標準のエディタになっているnanoをAtmark Distに追加してみました。
-
at_ito
Armadillo-IoTでIoTができるということで、データ分析を試してみたくなった。
簡単に試せる環境がないか探していると、どうもkibanaというモノでデータを可視化して分析できるらしい。
ということで、kibanaをATDEにインストールしてみたので、その時のメモを貼り付ける。
elasticsearchのインストール
どうもkibanaというのは、データを可視化するためだけのアプリケーションのようで、データはelasticsearchに入っているものを使うらしい。
ということで、まずはelasticsearchをインストールする。
elasiticsearchの公式ページのインストール方法を参考に、apt-getでelasticsearchが取れるようにしてみる。
-
at_ito
ATDEをVMware Player等(以降VMware)を使用していると、VMwareのウインドウにフォーカスが 移ってしまうとAlt+Tabでタスク切り替えをしようと思っても、ホストOSのタスクに切り替わらない。(ゲスト側でタスク切り替えすることになる) キーボードを使ってタスク切り替えをすることが多いので、これでは不便ということでVMwareのユニティモードを使い、ホストOSのウインドウとして、ATDEのアプリケーションを立ち上げる方法を紹介します。
-
at_ito
Armadillo-810/840のfirmwareパーティションは、SquashFSファイルシステムで作成されています。 firmwareパーティションは、Armadillo特有のAVコーデックミドルウェアや、OpenGL ES2 ライブラリが含まれます。
今回は、AVコーデックミドルウェアや、Qt(OpenGLが必要)等を使わない場合で、 firmwareパーティションを変更したい時に、SquashFSファイルシステムのイメージを作成する方法を紹介します。
SquashFSファイルシステムのイメージを作るためには、mksquashfsコマンドを使用します。
以下の様にコマンドを実行することで、SquashFSファイルシステムのイメージが作成されます。
[atde ~]$ mksquashfs イメージ化したいディレクトリ イメージファイル名 -comp xz
※: 「イメージ化したいディレクトリ」、「イメージファイル名」は適宜変更してください。
-
at_ito
プログラムを作成した際に、依存しているライブラリのライセンスを確認する必要があると思います。その際に、リンクしているライブラリのソースコードを取得する必要があるため、指定のバイナリが使用しているライブラリのDebianパッケージ名、Debianソースパッケージ名を調べるためのシェルスクリプトを作ってみました。
以下のシェルスクリプトを作成し、ATDEで動かしてみてください。
-
at_ito
DebianパッケージをAtmark Distで作ったユーザーランドに追加する際に、バイナリを実行しても必要なファイルが見つからずに正常に起動しないことがあるかと思います。その際に、何が必要なファイルかを調べる方法を紹介します。
バイナリ実行時に必要なファイルは、open()システムコールで開かれます。そのため、バイナリ実行時にどのシステムコールが使用されたかを調べるstraceを使うことで、どのファイルをopen()しようとしたかを調べることができます。このstraceはLinuxのデバッグユーティリティであり、引数に渡されたバイナリが使用するシステムコールを見ることができます。
Atmark Distのコンフィギュレーションで選択できるstraceでは、ビルド時にエラーが発生するため、Debian Packagesからstraceのバイナリを持ってくる必要があります。
以下のページを参考に、straceをユーザーランドに追加してください。
-
at_ito
Armadillo-810 製品マニュアルでは、/sys/class/video4linux/videoN/name(Nは数字が入ります)でどのデバイスファイルがどのカメラに対応するかを確認する方法が記載されています。この方法の場合、複数のカメラが接続されているとコマンドを複数回打つ必要があり面倒です。そのため、2014年11月の製品アップデートで追加されたv4l-utilsを使って、どのデバイスファイルが、どのカメラに対応しているか調べる方法を紹介します。
例として、Armadillo-810 カメラモデル開発セット(標準イメージ)の場合で説明します。 起動時には、以下のように/dev/video0と/dev/video1が作成されています。
[root@armadillo810-0 (ttySC2) ~]# ls -1 /dev/video* /dev/video0 /dev/video1
v4l-utilsに含まれるv4l2-ctlコマンドを、以下のように実行することで、どのデバイスファイルが、どのカメラに対応しているか調べることができます。
-
at_ito
ユーザーモードqemuを使うと、amd64もしくはi386アーキテクチャのLinux上で、armアーキテクチャのバイナリが動かせます。 この仕組みを使って、ATDE上でArmadillo-800シリーズ用のDebian(armhfアーキテクチャ)を動かす方法を紹介します。
-
at_ito
Howto : Armadillo-810/840で IEEE802.11ac USB無線LANアダプタ GW-450Sを動作させるを参考に、Armadillo-840のDebian環境(SDカード使用)でGW-450Sを使える環境を作成してみました。
-
at_ito
LANケーブル接続時にDHCPを使用して、IPアドレスを取得する方法として、 ifplugdを使用する方法があります。 以下、Armadilloでifplugdを使用する手順について説明いたします。
-
at_ito
ソースコードをビルドする際に、特定のファイルが必要で、それをDebianパッケージからインストールしたい場合があると思います。そういった際に便利な方法です。
-
at_ito
開発したアプリケーションや、設定ファイルなどを、Atmark Distで作ったユーザーランドに配置する方法について紹介します。
-
at_ito
Armadilloのユーザーランドには、「Atmark Dist」と「Debian GNU/Linux」が使用できます。 それぞれに特徴があり、どういった場面でどちらを使えば良いかわからない場合もあるかと 思います。 今回は、簡単にですが「Atmark Dist」と「Debian GNU/Linux」の選び方について紹介します。
-
at_ito
Howto : Debianのパッケージに含まれるコンパイル済みのバイナリをArmadilloで動作させる方法を参考に、Armadillo-400シリーズでPythonをインストールしたユーザーランドイメージを作成してみました。
インストールしたパッケージは以下の通りです。
-
at_ito
DebianパッケージをAtmark Distにインストールする際に、依存関係を考慮する必要がある場合があります。 その際に、依存しているパッケージをインストールするのにさらに依存パッケージが存在していたりして、インストールするのに手間がかかります。 そのため、簡単にDebianパッケージの依存関係を再帰的に検索し、表示する方法を紹介します。
-
at_ito
製品出荷時に、ArmadilloにLinuxカーネルイメージや、ユーザーランドイメージを書き込むことがあるかと思います。 Hermit-Atのtftpdlコマンド等でイメージを書き込んだ後に、正常にNORフラッシュに書き込まれたのかどうかを確認したい場合もあるかと思います。 ここでは、Hermit-Atのmd5sumコマンドを使用し、イメージが正常に書き込まれているかどうかを確認する方法を紹介します。
-
at_ito
Armadilloを使用している際に、作業用PCとのファイルの送受信を行いたい場合があるかと思います。 Ethernet経由や、USBメモリ等のストレージ経由でファイルを送受信することもできますが、 ネットワークの設定が必要であったり、ストレージを用意したりと面倒なこともあるかと思います。 そこで、Armadilloを使用する際に使うシリアル通信ソフト(ここではTeraTermを使用)のZMODEMを使い、 シリアル経由でファイルを送受信する方法を紹介します。
-
at_ito
ATDE5をデフォルトのまま使用していると、共有フォルダが自動的にマウントされません。 これはATDE5がopen-vmを使用しているためです。open-vmの代わりにVMware Toolsを インストールすると、自動的に共有フォルダがATDE5にマウントされます。 ここではopen-vmの変わりにVMware Toolsを使用するための方法について紹介します。
-
at_ito
Armadillo-400シリーズでDebianを使用する場合には、標準でDebian lennyのアーカイブを展開して使うことになります。 Debian lennyは2012年にリリースされており古いため、使用するパッケージのバージョンが古い場合があります。 そのため、ここではArmadillo-400でDebian squeezeを使用する方法を紹介します。
-
at_ito
HDMIやDVIで接続するディスプレイでは、タッチパネルがUSBで接続するマルチタッチパネルになっている場合があります。 ここではUSBマルチタッチパネルを使用するための方法を紹介します。
-
at_ito
Armadillo-840は、Armadillo-400シリーズに比べイメージサイズが大きくなっているため起動時間が遅くなりがちです。 最終的に製品化する際には、起動時間を早めたい場合もあるかと思います。 そこで、Armadillo-840の標準イメージに入っている機能をけずり、どこまで起動時間を短縮できるかを試してみました。
-
at_ito
iperfコマンドを使用して、ネットワークのスループットを測る方法を紹介します。
-
at_ito
NPtcpコマンドを使用して、ネットワークのスループットを測る方法を紹介します。
-
at_ito
ATDEで開発をしていると、WindowsでダウンロードしたファイルをATDE上で扱ったり、ATDE上で作成したファイルをWindows上で扱ったり等のファイル共有を行いたい場合があると思います。その場合は、VMwareの共有フォルダ機能を使うことで実現できます。 ここではではVMwareの共有フォルダ機能を使うための手順を紹介します。
-
at_ito
開発時に、Linuxカーネルイメージ、ユーザーランドイメージを頻繁に変更することがあると思います。 その際に、毎回フラッシュに書き込むと時間がかかってしまいます。 そのため、起動時に自動的にTFTPサーバーからイメージをダウンロードし、そのイメージで起動する方法を紹介します。
-
at_ito
ATDE5を立ち上げた状態で、しばらく操作しない状況が発生すると、再度操作する際にパスワード入力が必要になります(ロック機能)が、 ATDE5はVMware上で動かすため、ロック機能が特に必要のないことが多いかと思います。
そのため、ここではATDE5でロック機能を無効化する手順を紹介します。
以下の画面のように、メニューから「システム設定」を選択してください。
以下の画面が表示されますので、「画面の明るさとロック」を選択してください。
-
at_ito
QWTは、Qt上でグラフ表示などを簡単に表示することができるライブラリです。 センサーからのデータを表示するときなどに使えます。 Armadillo-840でも動作させることが可能で、センサー等の結果を表示させる場合などに便利です。
-
at_ito
Armadillo-400シリーズでQWTを使うための環境構築方法を紹介します。