Armadillo-440でQtで作成したGUIをUSBマウスで操作できるようにしてみました。 (本方法はArmadillo-410、Armadillo-460も同様に使用できます。)
個人別ブログ
at_kazutaka.bito さんのブログ
-
at_kazutaka.bito
-
at_kazutaka.bito
Armadillo-400シリーズは、タクトスイッチや、LCD拡張ボードのスイッチ(Armadillo-420を除く)について、 ボタン入力に応じて任意のコマンドを実行するswmgrというコマンドを使用できるようになっています。
ここでは、swmgrをタッチスクリーンのタッチに対応するように改造してみます。 -
at_kazutaka.bito
Armadillo-400シリーズの標準カーネルでは、タクトスイッチ、LCD拡張ボードのスイッチ(Armadillo420を除く)のボタン入力が実装されています。
ここでは、下記のようにGPIOを使ったボタン入力を追加してみます。 -
at_kazutaka.bito
Armadillo-IoT+RN4020アドオンモジュールで、 BLE照度センサー(http://www.robotsfx.com/robot/BLECAST_BL.html) から照度データを読んでみました。
-
at_kazutaka.bito
Armadillo-400シリーズでWebページ上で表とグラフを表示するサンプルデモを作ってみました。
-
at_kazutaka.bito
Armadillo-IoT開発セットと、RS232アドオンモジュールの未使用のGPIO使って、GPIOをI2C化する方法を確認しました。
RS232アドオンモジュールには、Armadillo-IoTとのコネクタ(60pin)の信号がスルーホールに出ているので、 動作確認にはこのスルーホールが活用できます。 -
at_kazutaka.bito
Armadillo-IoT+Armadillo-IoT EnOceanアドオンモジュール EN00で、 EnOcean通信のセンサーからデータを取得して、Herokuに通知する仕組みを作ってみました。
-
at_kazutaka.bito
Armadillo-400シリーズでWebページ上で表を表示するサンプルデモを作ってみました。
-
at_kazutaka.bito
Armadilloで簡易的に固定IPアドレス(例:192.168.10.10)を設定するには、
[armadillo ~]# ifconfig eth0 192.168.10.10 up
というコマンドでできます。 -
at_kazutaka.bito
Armadillo-810開発セットをPCとLANで接続して、PCのWebブラウザから カメラの画像の動画(MJPG:10fps)
カメラの画像の5秒毎の静止画(JPEG)
静止画を10枚分のファイルのダウンロード
ができるサンプルデモを作ってみました。 -
at_kazutaka.bito
Armadillo-810開発セットに簡単にトグルスイッチを付ける方法を検討してみました。
ここでは、スイッチを1個つけれればいい、ということで、ピンコネクタが実装済みの起動モード設定のジャンパ(JP1)を使うことにします。 -
at_kazutaka.bito
Armadillo-400シリーズハードウェアマニュアに記載されている 「i.MX257のSoftware Pad Control Register(SW_PAD_CTL)とDrive Voltage Select Group Control Register(SW_PAD_CTL_GRP_DVS)で、 出力電流(Std, High, Max)、スルーレート(Slow, Fast)、プルアップ/プルダウンを変更することができます。」 について、端子の出力電流の設定を実際にしてみました。
-
at_kazutaka.bito
用意するもの
- USB電源ケーブル
- USB電流電圧チェッカ
- USBバッテリ(PC、モバイルバッテリなど)
USBバッテリ--USB電源ケーブル--USB電流電圧チェッカ と接続する。
Armadillo-440開発セットで標準イメージで起動したとき 通常動作時の電圧(標準イメージ内のサンプルソフトfunctesterが動作中)
Armadillo-440開発セットで標準イメージで起動したとき 通常動作時の電流(標準イメージ内のサンプルソフトfunctesterが動作中)
Armadillo-440開発セットで標準イメージで起動したとき スリープ時の電圧(power-on suspend)
-
at_kazutaka.bito
当方がテストに使っていること以外に用途があるのかわからないが、備忘録的にメモしておく。
Armadilloと対抗機(USBキーボード等)を接続して、とりあえずイベントを拾えているかどうかの確認に、
[armadillo ~]# hexdump /dev/input/event0 0000000 f5d3 38c3 09ab 0000 0004 0004 005d 0007 0000010 f5d3 38c3 09cc 0000 0001 004c 0001 0000 0000020 f5d3 38c3 09d9 0000 0000 0000 0000 0000 0000030 f5d3 38c3 16ef 0003 0004 0004 005d 0007 0000040 f5d3 38c3 1709 0003 0001 004c 0000 0000
といった感じでhexdumpで反応を確認している。
この出力をファイルに残したいと思って、
-
at_kazutaka.bito
tarの解凍先を指定したい場合は、-Cオプションで指定できる。
例)temp.tar.gzを~/tmpに直接展開したい場合
tar zxvf temp.tar.gz -C ~/tmp/
-
at_kazutaka.bito
Armadillo-IoTで、3Gの接続状態を監視する方法は、 Armadillo-IoT ゲートウェイ スタンダードモデル 製品マニュアルの9.3.1. ifplugd でできる。
-
at_kazutaka.bito
Armadillo-IoT+Armadillo-IoT 絶縁デジタル入出力/アナログ入力アドオンモジュール DA00で、 マグネットセンサーの接点のオープン/クローズ状態を取得して、Herokuに通知する仕組みを作ってみた。 ここでは、株式会社日本アレフの人感センサーAPX-101を使用する。 この人感センサーは動体を検知すると、赤い光が点灯して警報出力用にパルスを出力する。 Armadillo-IoTで警報出力のパルスの立ち上がりエッジを検出して、検出した時刻をHeroku送信する仕組みを作る。
-
at_kazutaka.bito
Armadillo-IoT+Armadillo-IoT 絶縁デジタル入出力/アナログ入力アドオンモジュール DA00で、 マグネットセンサーの接点のオープン/クローズ状態を取得して、Herokuに通知する仕組みを作ってみた。 ここでは、株式会社日本アレフのマグネットセンサーAD-1001/AD-1011を使用する。 このマグネットセンサーは、 マグネットが近いと、接点がクローズ マグネットが遠いと、接点がオープン になるようだ。
-
at_kazutaka.bito
Armadillo-440シリーズのプロダクトディレクトリにあるGPIO制御のプログラムのgpioctrlを Armadillo-IoTで使用できるようにしてみた。
1.Armadillo-IoTのプロダクトディレクトリにgpioctrlを置く
ここでは、標準のプロダクトディレクトリ"Armadillo-IoTG-Std"を"my-iot"という名前にコピーした プロダクトディレクトリを使う。
-
at_kazutaka.bito
Armadilloで標準で動作するエディタはviエディタでした。 viエディタは、テキスト入力時とファイル操作時でモードの切り替えが必要なので、慣れるまでが大変です。
Armadillo-IoTでは、joeエディタが動作します。 joeエディタは、テキスト入力時とファイル操作時でモードの切り替えが必要ありません。 joeエディタの基本操作は以下のとおりです。
・ファイルを開く
joe [ファイル名]viエディタは、ファイルを開いた後、iまたはaを入力してテキスト入力モードに移行しないと、テキストが入力できませんでした。 joeエディタは、ファイルを開いた後、そのままテキスト入力できます。
・ファイル操作
Ctrl + c:終了
Ctrl + k, x:保存して終了
Ctrl + k, d:保存
Ctrl + Shift + -:undo・ファイル操作
Ctrl + k, h:ヘルプヘルプを開いたままテキストを編集できます。
-
at_kazutaka.bito
Armadillo-IoT + Heroku(Node.js)でHello World に手を加えて、 Armadillo-IoTからHerokuに送信した文字をWebブラウザで見れるようにします。
-
at_kazutaka.bito
Armadillo-460+LCD拡張ボード(OP-A400-LCD43EXT-L01)でQtを使ってみた。
-
at_kazutaka.bito
Armadillo-IoTのRS232アドオンモジュールのテストインタフェースのSPIを使ってみた。
1.SPI端子の確認
Armadillo-IoT ゲートウェイ スタンダードモデル 製品マニュアル Armadillo-IoTベースボードマルチプレクス表 から、今回は、Armadillo-IoTのCON1にRS232アドオンモジュールを接続して、 RS232アドオンモジュールの CON4の35ピン:CSPI2_SCLK CON4の36ピン:CSPI2_MISO CON4の37ピン:CSPI2_MOSI CON4の50ピン:CSPI2_SS0 を使う。
-
at_kazutaka.bito
Armadilloをインターネットに接続している状態で、グローバルIPアドレスは下記コマンドで確認できる。
[armadillo ~]# wget -q -O - ipcheck.ieserver.net
-
at_kazutaka.bito
Armadillo-440でGPIOをI2Cにするドライバ(i2c-gpio)を実際に動作させてみた。
1.I2CにするGPIOの選択
Armadillo-400シリーズハードウェアマニュアル5.3.6. CON9(拡張インターフェース1) - 「Armadillo-420/440」 の表5.16 CON9信号マルチプレクス - 「Armadillo-420/440」を参考に CON9_1(GPIO3_17)をSCL CON9_2(GPIO3_14)をSDA にすることにした。
-
at_kazutaka.bito
ネットワーク経由でArmadillo-440の赤LEDを点灯->消灯するプログラムをCGIで作ってみた。
1.下記のようなプログラムredled.cを作成する。
redled.c -
at_kazutaka.bito
Armadillo-WLANのアクセスポイントモードでdhcpdを動かして、IPアドレスを自動取得できるようにする。
今回は、Armadillo-810+ATB-A810WLANで確認した。
前提) Armadillo-810製品マニュアル第11章 ビルド手順に従い、ソースコードの準備ができているものとする。
1.ATDEにawl13のソースコードをダウンロードして、atmark-dist/awl13にリンクを貼る
-
at_kazutaka.bito
Armadillo-400シリーズハードウェアマニュアル3.2.2. 電源回路の構成 -「Armadillo-420/440」の 「Armadillo-420/440のUSBインターフェースからUSBデバイスに供給する電源は、 CON12(またはCON13)の電源入力VINと電源ICで生成される+5V電源のどちらかを選択することが可能です。」 より、USB電源の供給源を設定してみる。
USB電源の供給源が、電源入力(VIN)か、電源ICの5Vかは、Linuxカーネルのソースコード atmark-dist/linux-2.6.x/arch/arm/mach-mx25/board-armadillo400.h の80行目付近で下記のように指定されている。
-
at_kazutaka.bito
atmark-distにdiffコマンドは含まれていない。 Howto : Debianのパッケージに含まれるコンパイル済みのバイナリをArmadilloで動作させる方法を参考に Armadilloでdiffコマンドを実行できるようにした。
1.DebianパッケージをATDEにダウンロードする
[atde ~]$ wget http://archive.debian.org/debian-archive/debian/pool/main/d/diffutils/diff_2.8.1-12_armel.deb [atde ~]$ ls diff_2.8.1-12_armel.deb
2.パッケージを展開する(本例では、~/temp-dirに展開)
-
at_kazutaka.bito
Armadillo-440液晶開発セットで、Qtを使ってLCDタッチパネルにタッチした位置を表示するサンプルプログラム。 Qtの開発環境については、下記URLを参考
参考URL)
- Howto : Armadillo-440でQt! 第2回
- http://armadillo.atmark-techno.com/howto/armadillo-440-qt-2
- Howto : Armadillo-440でQt! 第3回
- http://armadillo.atmark-techno.com/howto/armadillo-440-qt-3
以下、Howto : Armadillo-440でQt! 第3回を最後まで実行したQtCreatorのプロジェクトを使う。 mainwindow.hとmainwindow.cppを以下のように変更する。(追加箇所には、/ /でコメントしてある。) ビルドして実行すると、LCD拡張ボードのスイッチ(SW1、SW2、SW3)を押すと、LCDに対応するスイッチ名が表示される。
1.カーネルの修正
- Howto : Armadillo-440でQt! 第2回
-
at_kazutaka.bito
Armadillo-440液晶開発セットで、Qtを使ってLCDタッチパネルにタッチした位置を表示するサンプルプログラム。 Qtの開発環境については、下記URLを参考
参考URL)
- Howto : Armadillo-440でQt! 第2回
- http://armadillo.atmark-techno.com/howto/armadillo-440-qt-2
- Howto : Armadillo-440でQt! 第3回
- http://armadillo.atmark-techno.com/howto/armadillo-440-qt-3
以下、Howto : Armadillo-440でQt! 第3回を最後まで実行したQtCreatorのプロジェクトを使う。 mainwindow.hとmainwindow.cppを以下のように変更する。(追加箇所には、/ /でコメントしてある。) ビルドして実行すると、Mainwindow上にLCDにタッチした位置が"(258, 170)"のように表示される。
mainwindow.h
- Howto : Armadillo-440でQt! 第2回
-
at_kazutaka.bito
カーネル起動時にUSBのプローブが有効になっていると、 認識された順番にデバイスファイルの末尾の番号がつく。
例えば、Armadillo-IoT開発セットの場合、3Gモジュールには、ttyUSB[0-4]が割り当てられるが、 USBコネクタにUSB-シリアル変換ケーブルを挿入した状態で起動すると、 USB-シリアル変換ケーブル:ttyUSB0 3Gモジュール:ttyUSB[1-4] のように3Gモジュールのデバイスファイルの番号がずれる。 補足)本例では、カーネルコンフィギュレーションのUSBサポートの機能で、シリアル変換のサポートを有効にしているものとする。
このような番号ずれを防ぐ方法としては、delayed_probeという方法がある。
本例について、USBコネクタにさしたデバイスを、3Gモジュールより後で認識させる場合は、 make menuconfigでカーネルコンフィギュレーションを
-
at_kazutaka.bito
1.ATDEを起動して、MicroSDカードを接続してアンマウントする
SDカードを接続すると自動的にマウントされる
[atde ~]$ mount /dev/sdb1 on /media/略
ので、下記コマンドでアンマウントする。
[atde ~]$ sudo umount /dev/sdb1
2.fdiskコマンドでMicroSDカードのパーティションを構成
-
at_kazutaka.bito
準備)
Armadilloで、転送したいファイルを /home/www-dataに置く。下記例において、
- ArmadilloのIPアドレス:192.168.10.10
- 転送したいファイル:log10.txt
とする。
方法1:htmlを使う
<a href="http://192.168.10.10/log10.txt" download="log10.txt"> Armadillo log </a> </br>
という内容のhtmlファイルを作る。
htmlファイルをダブルクリックするとWebブラウザが開いて。 Armadillo log という文字が表示される。
当方が使ったWebブラウザはFirefox。
Armadillo logの文字を右クリックして、 名前を付けてリンク先を保存 すると、log10.txtがダウンロードされる。
-
at_kazutaka.bito
Armadilloを標準イメージで起動すると、 /etc/network/interfaces の
auto lo eth0 iface eth0 inet dhcp
に基づきDHCPでアドレスを取得するようにネットワーク設定される。
上記の設定でArmadilloを起動後、固定IPアドレスに変更するには、下記のようにifconfigコマンドで設定できる。
[armadillo ~]# ifconfig eth0 192.168.10.0 up
ただし、長時間たつとIPアドレスが変更されることがある。
これは、DHCPクライアントのプロセス
- atmark-distを使用している場合、udhcpc
- Debianを使用している場合、dhclient3
が動作していることが要因のようなので、DHCPクライアントを止める。
・恒久的な方法:DHCPクライアント動作させない
-
at_kazutaka.bito
ifconfigコマンドを使えば、IPアドレスを簡単に設定できる
[armadillo ~]# ifconfig eth0 192.168.11.36 up
helpを読むと他にも設定できることがわかった。 broadcastは
[armadillo ~]# ifconfig eth0 broadcast 0.0.0.0 up
netmaskは
[armadillo ~]# ifconfig eth0 netmask 255.255.255.0 up
などなど。
-
at_kazutaka.bito
実行結果を標準出力とファイルの両方に出力する必要があった。
(ファイルにログを残しつつも、コンソールでリアルタイムにログを確認したかった。)teeコマンドを使えばよかった。 例えば、psコマンドの出力を標準出力とtemp.txtに出力したい場合は、
[armadillo ~]# ps | tee temp.txt
例えば、makeのログを標準出力とtemp.txtに出力したい場合は、
[armadillo ~/atmark-dist]# make 2>&1 | tee temp.txt
-
at_kazutaka.bito
Armadillo上で動作しているプロセスの物理メモリ使用量を調べてみます。
Armadillo-440の標準イメージで自動起動されるfunctesterの場合、まずは
[root@armadillo440-0 (ttymxc1) ~]# ps | grep functester PID Uid VmSize Stat Command 1358 root 6352 S functester
でPIDを確認します。
/proc/[プロセスのID]/status
をcatで確認します。 上記のfunctesterの場合は、プロセスIDは1358なので、
-
at_kazutaka.bito
Armadillo-400シリーズのUART2は、標準のカーネルコンフィギュレーションでは ハードフロー制御が有効になっており、make menuconfigからは設定変更できない。
そこで、ハードフロー制御を無効にできるようにする。
備考)以下の説明において、、ディレクトリ構成は、 Armadillo実践開発ガイド第1部7.2. Atmark Distを使ったルートファイルシステムの作成に基づいて環境構築しているものとする。
1. Kconfigの編集
atmark-dist/linux-2.6.x/arch/arm/mach-mx25のKconfig内で、Armadillo-410/420/440については、 デフォルトでUART2のハードフロー制御が有効になるように設定されているので、その設定を削除する。
-
at_kazutaka.bito
例として、 Howto : Armadillo-440でQt! 第3回 で作成されたMainWindowにラベルを貼りつけて3種類のフォントで「こんにちは」を表示する方法を示す。
1.Armadillo-440のROMのユーザーランド領域には、日本語Truetypeフォントを複数置けるサイズはないので、予め、Truetypeフォント書き込んだMicroSDをArmadillo-440に挿入して起動する。
(下記サンプルコードでは、TakaoGothic.ttf、TakaoMincho.ttf、sazanami-mincho.ttf をMicroSDに置いた場合である。これらのttfファイルは、ATDEの/usr/share/fonts/truetype/にある。)2.Armadilloの/usr/local/Trolltech/Qt-4.8.3-qws-armel/lib/fonts のフォントファイルを削除する。(標準では、TakaoPGothic.ttfが存在。)
-
at_kazutaka.bito
Howto : Armadillo-440でQt! 第2回に紹介されているQtに対応したATDE(atde4-qt-amd64)でビルドした場合、 フォントは、 atmark-dist/romfs/usr/local/Trolltech/Qt-4.8.3-qws-armel/lib/fonts の下に置かれる。 (デフォルトは、TakaoPGothic.ttf)
簡易的にフォントを変更する場合は、TakaoPGothic.ttfを削除して 別のフォント(例えばTakaoPMincho.ttfや、sazanami-gothic.ttf等)を置いてmake imageする。
補足)ATDEだと、/usr/share/fonts/truetype/内にフォントファイルがある。
-
at_kazutaka.bito
例として、 Howto : Armadillo-440でQt! 第3回 で作成されたMainWindowにラベルを貼りつけて「こんにちは」を表示する方法を示す。
QtCreatorで、
1.「編集」を選択して、「mainwindow.cpp」をダブルクリックする。
->mainwindow.cppのソースの編集画面に変わる。2.mainwindow.cppのインクルードファイルに
#include <QLabel> #include <QTextCodec>
を追加。
-
at_kazutaka.bito
Armadillo上で、テキストファイルの改行コードがLFのものをLF+CRにする方法を試してみた。
例えば、改行コードがLFのテキストファイル"test0.txt"を、改行コードがLF+CRのテキストファイル"test1.txt"にするには 下記のようなコマンドになる。
[armadillo ~]# awk '{sub(/$/, "\r"); print}' test0.txt > test1.txt
trコマンドやsedコマンドでも可能かもしれないが、当方はうまい方法が見つからなかった。 nkfコマンドとiconvコマンドは標準イメージでは有効になっていなかった。
-
at_kazutaka.bito
Armadillo-440でlighttpd+php5-cgiの組み合わせで、phpinfoが見れるまでを確認した。
以下に手順を示す。
(ATDE上で、ビルド済みの環境(atmark-dist/romfs)が存在するものとする。)1.php5-cgiのdebianパッケージを下記からダウンロードする
- http://archive.debian.org/debian-archive/debian/pool/main/p/php5/php5-cgi_5.2.6.dfsg.1-1+lenny16_armel.deb
2.パッケージを展開する(以下、tempディレクトリに展開したものとする)
[atde ~]$ dpkg -x php5-cgi_5.2.6.dfsg.1-1+lenny16_armel.deb temp
3.上記2で展開してできたphp5-cgiをromfsに置く
-
at_kazutaka.bito
WikiPediaのXlibの項目の例にあるプログラムをArmadillo-440開発セットで実行して、LCDに表示してみた。
1.ATDEで上記プログラムのファイル(下記例では、test_xlib.cとする)を作成し、下記のようにコンパイルする。 [atde ~]$ arm-linux-gnueabi-gcc test_xlib.c -o test_xlib -lX11 上記のようにコンパイルすると実行ファイル(本例では、test_xlib)ができる。 2.上記1の実行ファイルをArmadilloに転送する。 3.Armadillo上で実行ファイルに実行権限をつけて、実行する。 [armadillo ~]# chmod +x test_xlib [armadillo ~]# DISPLAY=:0 ./test_xlib
補足)Armadillo-440の標準のイメージファイルを使う場合はfunctesterというXwindowシステムを使うアプリが自動起動しているので、
-
at_kazutaka.bito
通常、Armadillo上でユーザを追加しても、電源をOFFにすると追加したユーザは消えてしまうので、 次の起動時に追加したユーザでログインできない。 電源をOFFにしても、次の起動時に追加したユーザでログインができるように、追加したユーザを保存する方法を試してみた。
-
at_kazutaka.bito
Armadillo上でコンフィギュレーションを確認するには、下記のコマンドで可能。
zcat /proc/config.gz
-
at_kazutaka.bito
Armadillo-810カメラモデル開発セットで、カメラの画像をH.264エンコードして、MPEG2-TS形式のコンテナにしてみた。 gstreamerのmpegtsmuxというエレメントを使った。 コマンド例は下記の通り。 (画像データの保存先として、/mntにSDカード等、外部メモリマウントしているとする)
gst-launch-1.0 -e v4l2src device="/dev/video1" \ ! video/x-raw,format=NV12,width=640,height=480,framerate=30/1 \ ! acmh264enc ! queue \ ! mpegtsmux ! filesink location=/mnt/out.ts
-
at_kazutaka.bito
ATDE上で簡易にテキストファイルをビットマップファイルに変換する方法を考えてみた。
1. テキストファイルをUTF-8で保存
補足)
UTF-8かどうかは、geditエディタを使用している場合、- ファイル->別名で保存
を開いて、エンコーディング(H)の項目で確認できる。 UTF-8になっていない場合は、UTF-8を選択する。
2. convertでUTF-8ファイルをビットマップに変換
下記にスクリプト例(text2bmp.sh)を記載する。
このスクリプトでは- UTF-8のテキストファイル:utf-8.txt
について、
- 背景:黒
- 文字色:オレンジ
- フォント:ゴシック
- 文字サイズ:120
の
- ビットマップファイル:text.bmp
が生成される。
text2bmp.sh
-
at_kazutaka.bito
QMLで等幅フォントを使いたくなった。
make menuconfig を実行してユーザーランドコンフィグレーションで、TakaoGothicフォントを追加。Userland Configuration Fonts ---> [*] TakaoGothic // デフォルトは空白なので、*を付ける。
QMLのコードでは、Textの中で font.family: "TakaoGothic" のように指定する。
Armadillo-840製品マニュアル 14.5. QMLのhello_qmlの場合は、
<font.familyの追加箇所を抜粋>