第6章 動作確認方法

目次

6.1. 動作確認を行う前に
6.2. ネットワーク
6.2.1. 接続可能なネットワーク
6.2.2. デフォルト状態のネットワーク設定
6.2.3. 有線LAN
6.2.4. 無線LAN
6.2.5. 3G
6.2.6. DNSサーバー
6.2.7. ファイアーウォール
6.2.8. ネットワークアプリケーション
6.3. ストレージ
6.3.1. ストレージの使用方法
6.3.2. ストレージのパーティション変更とフォーマット
6.4. LED
6.4.1. LEDを点灯/消灯する
6.4.2. トリガを使用する
6.5. RTC
6.5.1. RTCに時刻を設定する
6.6. ユーザースイッチ
6.6.1. イベントを確認する
6.7. 温度センサ
6.7.1. 温度を取得する
6.7.2. 温度を監視する
6.8. ADコンバーター
6.8.1. 電源電圧を取得する
6.8.2. 電源電圧を監視する
6.9. Armadillo-IoT RS232Cアドオンモジュール RS00
6.9.1. Armadillo-IoTにログインする
6.10. Armadillo-IoT 絶縁RS232C/422/485アドオンモジュール RS01
6.10.1. RS422/RS485の通信設定を変更する
6.10.2. Armadillo-IoTにログインする
6.11. Armadillo-IoT BLEアドオンモジュール BT00
6.11.1. 設定情報を取得する
6.12. Armadillo-IoT EnOceanアドオンモジュール EN00
6.12.1. EnOcean無線データを受信する
6.13. Armadillo-IoT Wi-SUNアドオンモジュール WS00
6.13.1. 設定情報を取得する
6.14. Armadillo-IoT 絶縁RS485アドオンモジュール RS02
6.14.1. RS422/RS485の通信設定を変更する
6.14.2. Armadillo-IoTにログインする
6.15. Armadillo-IoT 絶縁デジタル入出力/アナログ入力アドオンモジュール DA00
6.15.1. 出力状態を設定する
6.15.2. 入力状態を取得する
6.15.3. 電圧を取得する

6.1. 動作確認を行う前に

工場出荷状態でフラッシュメモリに書き込まれているイメージファイルは、最新版ではない可能性があります。最新版のブートローダーおよび LinuxカーネルイメージファイルはArmadilloサイトから、ユーザーランドイメージファイルはユーザーズサイトからダウンロード可能です。最新版のイメージファイルに書き換えてからのご使用を推奨します。

イメージファイルの書き換えについては、12章フラッシュメモリの書き換え方法を参照してください。

6.2. ネットワーク

ここでは、ネットワークの設定方法やネットワークを利用するアプリケーションについて説明します。

6.2.1. 接続可能なネットワーク

Armadillo-IoT は、複数の種類のネットワークに接続することができます。接続可能なネットワークとLinuxから使用するネットワークデバイスの対応を次に示します。

表6.1 ネットワークとネットワークデバイス

ネットワークネットワークデバイス備考
有線LANeth0 
無線WLANawlan0Armadillo-WLAN(AWL13) 搭載
3Gumts0Sierra Wireless製 HL8548 搭載

6.2.2. デフォルト状態のネットワーク設定

ネットワーク設定は、/etc/config/interfacesに記述されています。デフォルト状態では、次のように設定されています。

表6.2 デフォルト状態のネットワーク設定

インターフェース種類設定起動時に有効化
loTCP/IPループバック有効
eth0TCP/IPDHCP有効
umts0TCP/IPDHCP無効
awlan0未設定未設定未設定

# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)

auto lo eth0
iface lo inet loopback
iface eth0 inet dhcp
iface umts0 inet dhcp
	pre-up 3g-connect
	post-up 3g-monitor start
	pre-down 3g-monitor stop
	post-down 3g-disconnect

図6.1 デフォルト状態の/etc/config/interfaces


6.2.3. 有線LAN

ここでは有線LANの使用方法について説明します。

6.2.3.1. 有線LANインターフェースの有効化、無効化

無効化されている有線LANインターフェースを有効化するには、次のようにコマンドを実行します。

[armadillo ~]# ifup eth0

図6.2 ネットワークインターフェース(eth0)の有効化


有効化されている有線LANインターフェースを無効化するには、次のようにコマンドを実行します。

[armadillo ~]# ifdown eth0

図6.3 ネットワークインターフェース(eth0)の無効化


6.2.3.2. 有線LANのネットワーク設定を変更する

有線LANのネットワーク設定を変更する方法について説明します。

[警告]

ネットワーク接続に関する不明な点については、ネットワークの管理者へ相談してください。

Armadillo-IoT上の「/etc/config」以下にあるファイルを編集し、コンフィグ領域に保存することにより起動時のネットワーク設定を変更することができます。コンフィグ領域の保存については、7章コンフィグ領域 − 設定ファイルの保存領域を参照してください。

[注記]

設定を変更する場合は、かならずネットワークを無効化してから行ってください。変更してからネットワークを無効化しても、「新しい設定」を無効化することになります。「古い設定」が無効化されるわけではありません。

6.2.3.2.1. 有線LANを固定IPアドレスに設定する

表6.3「有線LAN固定IPアドレス設定例」の内容に設定する例を、図6.4「有線LANの固定IPアドレス設定」に示します。

表6.3 有線LAN固定IPアドレス設定例

項目設定
IPアドレス192.0.2.10
ネットマスク255.255.255.0
ネットワークアドレス192.0.2.0
ブロードキャストアドレス192.0.2.255
デフォルトゲートウェイ192.0.2.1

[armadillo ~]# vi /etc/config/interfaces
# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)

auto lo eth0
iface lo inet loopback
iface eth0 inet static
address 192.0.2.10
netmask 255.255.255.0
network 192.0.2.0
broadcast 192.0.2.255
gateway 192.0.2.1
iface umts0 inet dhcp
	pre-up 3g-connect
	post-up 3g-monitor start
	pre-down 3g-monitor stop
	post-down 3g-disconnect

図6.4 有線LANの固定IPアドレス設定


6.2.3.2.2. 有線LANをDHCPに設定する

DHCPに設定する例を、図6.5「DHCP設定」に示します。

DHCPに設定するには、viエディタで/etc/config/interfacesを、次のように編集します。

[armadillo ~]# vi /etc/config/interfaces
# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)

auto lo eth0
iface lo inet loopback
iface eth0 inet dhcp
iface umts0 inet dhcp
	pre-up 3g-connect
	post-up 3g-monitor start
	pre-down 3g-monitor stop
	post-down 3g-disconnect

図6.5 DHCP設定


6.2.3.3. 有線LANの接続を確認する

有線LANで正常に通信が可能か確認します。設定を変更した場合、かならず変更したインターフェースを再度有効化してください。

同じネットワーク内にある通信機器とPING通信を行います。以下の例では、通信機器が「192.0.2.20」というIPアドレスを持っていると想定しています。

[armadillo ~]# ping 192.0.2.20

図6.6 有線LANのPING確認


[注記]

awlan0 または umts0 を使用してネットワークに接続している場合、ネットワーク通信に eth0 が使用されない場合があります。確実に eth0 を使用させる場合は、事前に eth0 以外のネットワークインターフェースを無効化してください。

6.2.4. 無線LAN

ここでは、Armadillo-IoT に搭載されている無線LANモジュール「Armadillo-WLANモジュール(AWL13)」の使用方法について説明します。

6.2.4.1. WLAN インターフェースの有効化

Armadillo-WLANモジュール(AWL13)が接続されている WLAN インターフェース(ベースボード:CON5)と SD インターフェース(ベースボード:CON4)は、共通の信号が接続されています。工場出荷状態のソフトウェアでは、デフォルトで SD インターフェースが有効化されているため、無線LANモジュールを利用することができません。

WLAN インターフェースを有効化するためには、図6.7「無線LANモジュールの有効化」のようにコマンドを実行します。事前に SD インターフェース(ベースボード:CON4)から SD カードを取り外しておく必要があります。

[armadillo ~]# sd-awlan-sel awlan
select to AWLAN
mmc1: queuing unknown CIS tuple 0x10 (5 bytes)
mmc1: queuing unknown CIS tuple 0x10 (5 bytes)
mmc1: new high speed SDIO card at address 02bd
awl13: RX Transmission mode SDINT HT
mmc1: registerd "awl13" device as awlan0
awl13: WID=0x5, STATUS CODE=0x0
awl13: disconnected!
awl13: device ready!
awl13: MAC is 00:1d:12:cf:28:ae
awl13: WID=0x5, STATUS CODE=0x1
awl13: WID=0x5, STATUS CODE=0x1

図6.7 無線LANモジュールの有効化


WLAN インターフェースを有効化すると、Armadillo-WLANモジュール(AWL13)のLinuxカーネルモジュールおよびファームウェアのロードが自動的に行われます。

[ティップ]

Armadillo-WLANモジュール(AWL13)のファームウェアは、"STA"(ステーションおよびアドホックモード用)と"AP"(アクセスポイントモード用)の2種類が用意されています。工場出荷状態のソフトウェアでは、"STA"が自動的にロードされるよう設定されています。

"AP"を自動的にロードするように設定するには図6.7「無線LANモジュールの有効化」を実行する前に、次のように設定ファイル/etc/config/awl13.confを編集します。

[armadillo ~]# vi /etc/config/awl13.conf
#AWL13_MODE=STA
AWL13_MODE=AP

設定ファイルをコンフィグ領域に保存する方法については、7章コンフィグ領域 − 設定ファイルの保存領域を参照してください。

6.2.4.2. 手動で無線LANインターフェースを有効化する

コマンドを入力して無線設定および無線LANインターフェースの有効化を行う方法について説明します。事前に「WLAN インターフェースの有効化」を参照してWLANインターフェースを有効化しておく必要があります。

ここでは例として、WPA2-PSK(AES)のアクセスポイントに接続します。WPA2-PSK(AES)以外のアクセスポイントへの接続方法など、AWL13のより詳細な情報については、「Armadillo-WLAN(AWL13)ソフトウェアマニュアル」を参照してください。

WPA2-PSK(AES)のアクセスポイントに接続する場合の設定例を次に示します。以降の説明では、アクセスポイントのESSIDを[essid]、パスフレーズを[passphrase]と表記します。

[armadillo ~]# iwconfig awlan0 essid [essid]
[armadillo ~]# iwpriv awlan0 set_psk [passphrase]
[armadillo ~]# iwpriv awlan0 set_cryptmode WPA2-AES
[armadillo ~]# iwconfig awlan0 mode managed

上記コマンドを実行すると、無線設定が完了します。無線LANインターフェースのIPアドレスを 192.0.2.1 に設定して有効化するには、次のようにコマンドを実行します。

[armadillo ~]# ifconfig awlan0 192.0.2.1 up

図6.8 ネットワークインターフェース(awlan0)のIPアドレス設定と有効化


6.2.4.3. 自動で無線LANインターフェースを有効化する

Armadilloの起動時に、自動的に無線LANインターフェースの有効化を行う方法について説明します。無線LANの設定をコンフィグ領域に保存することにより、Armadilloを再起動するたびに設定を行う必要が無くなります。

Armadilloの起動時に、自動的に WLAN インターフェースを有効化するために/etc/config/rc.localに「sd-awlan-sel awlan」を追加します。

[armadillo ~]# vi /etc/config/rc.local
        echo -n "Starting vinmonitor: "
        /etc/config/vinmonitor &
        check_status
fi

sd-awlan-sel awlan  1

1

WLAN インターフェースを有効化します

WPA2-PSK(AES)のアクセスポイントに接続する場合の/etc/config/interfacesの編集例を次に示します。

[armadillo ~]# vi /etc/config/interfaces
# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)

auto lo eth0
iface lo inet loopback
iface eth0 inet dhcp
iface umts0 inet dhcp
	pre-up 3g-connect
	post-up 3g-monitor start
	pre-down 3g-monitor stop
	post-down 3g-disconnect
iface awlan0 inet dhcp  1
      pre-up iwpriv awlan0 set_psk [passphrase]  2
      pre-up iwpriv awlan0 set_cryptmode WPA2-AES  3
      pre-up iwconfig awlan0 essid [essid]  4
      wireless-mode managed  5

1

awlan0をDHCPに設定します

2

パスフレーズを[passphrase]に設定します

3

暗号化方式をWPA2-PSK(AES)に設定します

4

ESSIDを[essid]に設定します

5

接続モードをインフラストラクチャモード(STA)に設定します

Armadilloの起動時に自動的にawlan0が有効化されるようにするには、/etc/config/awl13-firmware-load.shの最後の行に「ifup awlan0」を追加します。

[armadillo ~]# vi /etc/config/awl13-firmware-load.sh
[ -f /sys/module/awl13_usb/$WLAN/firmware ] && \
cat $FIRMWARE_USB > /sys/module/awl13_usb/$WLAN/firmware
iwpriv $WLAN fwload
iwpriv $WLAN fwsetup

ifup awlan0  1

1

/etc/config/interfacesの設定でawlan0を有効化します

追加後、次回起動時に設定が反映されるようにコンフィグ領域を保存します。

[armadillo ~]# flatfsd -s

Armadilloを再起動すると、自動的に無線LANインターフェースが有効化されます。

[注記]

Armadilloの再起動の前に、SD インターフェース(ベースボード:CON4)から SD カードを取り外しておく必要があります。

6.2.4.4. 無線LANの接続を確認する

無線LANで正常に通信が可能か確認します。

同じネットワーク内にある通信機器とPING通信を行います。以下の例では、通信機器が「192.0.2.20」というIPアドレスを持っていると想定しています。

[armadillo ~]# ping 192.0.2.20

図6.9 無線LANのPING確認


[注記]

eth0 または umts0 を使用してネットワークに接続している場合、ネットワーク通信に awlan0 が使用されない場合があります。確実に awlan0 を使用させる場合は、事前に awlan0 以外のネットワークインターフェースを無効化してください。

6.2.5. 3G

ここでは、Armadillo-IoT に搭載されている 3Gモジュール「Sierra Wireless製 HL8548」の使用方法について説明します。

[警告]

3Gモジュール「Sierra Wireless製 HL8548」はJATE/TELEC認証は取得していますが、Docomo IOT(相互接続性試験)については認証試験中で2015年7月下旬に取得予定となっています。

JATE/TELEC認証を取得しているため、国内での使用に問題はありません。いわゆる、SIM Freeの状態となります。 Docomo網を使用した場合、接続トラブルが発生しても技術サポートが得られないなどの制約があります。 MVNO事業者については、個別にお問い合わせください。

6.2.5.1. 3G データ通信設定を行う前に

3Gデータ通信を利用するには、通信事業者との契約が必要です。契約時に通信事業者から貸与されたmicroSIM(UIMカード)とAPN情報を準備します。

[警告]

Armadillo-IoTの電源が切断されていることを確認してからmicroSIM(UIMカード)を取り付けてください。

microSIM(UIMカード)は、次のようにArmadillo-IoTに取り付けます。

microSIMの取り付け

図6.10 microSIMの取り付け


APNの設定を行うには、次に示す情報が必要です。

  • APN

  • ユーザー名

  • パスワード

  • 認証方式(PAP または CHAP)

  • PDP Type(IP または PPP)

6.2.5.2. 3Gモジュールを制御するソフトウェア

3Gモジュールは、TTY デバイスファイル/dev/ttyATCMDから制御を行うことができます。

/dev/ttyATCMD から、対話形式での AT コマンドが利用できます。AT コマンドを利用すると、接続先やユーザ名、パスワードの設定などを行うことができます。

Armadillo-IoT のソフトウェアでは、AT コマンドを自動実行するシェルスクリプトがインストールされています。このスクリプトを使用して接続先設定とパケット接続を行うと、通常のネットワークインターフェースとして使用することができるようになります。

6.2.5.3. APN設定方法

3GモジュールにAPN情報を設定します。APN設定には3g-set-apコマンドを利用します。3g-set-apコマンドのヘルプは次の通りです。

[armadillo ~]# 3g-set-ap
usage: /usr/bin/3g-set-ap [apn] [user] [passwd] [auth_type] [pdp_type]
   apn       ... access point name
   user      ... user name
   passwd    ... pass word
   auth_type ... NON/PAP/CHAP(default)
   pdp_type  ... IP(default)/PPP

図6.11 3g-set-apコマンドのヘルプ


表6.4「APN情報設定例」の内容に設定する例を、図6.12「APN設定例」に示します。

表6.4 APN情報設定例

項目設定
APN[apn]
ユーザー名[user]
パスワード[password]
認証方式PAP
PDP TypeIP

[armadillo ~]# 3g-set-ap [apn] [user] [password] PAP IP

図6.12 APN設定例


[警告]

3g-set-apは本来、3Gモジュール「Sierra Wireless製 HL8548」内の不揮発性メモリに対して永続的にAPN情報を保存します。 しかし、3Gモジュールのファームウェアの不具合により、保存することができません。 このため、Armadillo-IoTの電源を切断した場合、3Gモジュールに設定したAPN情報が消えてしまいます。

暫定対策として、コンフィグ領域を利用し、Armadillo-IoT内蔵のフラッシュメモリにAPN情報を保存します。

vi エディタで/etc/config/interfacesを次のように編集します。

[armadillo ~]# vi /etc/config/interfaces
# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)

auto lo eth0
iface lo inet loopback
iface eth0 inet dhcp
iface umts0 inet dhcp
        pre-up 3g-set-ap [apn] [user] [password] [auth_type] [pdp_type] 1
        pre-up 3g-connect
        post-up 3g-monitor start
        pre-down 3g-monitor stop
        post-down 3g-disconnect
          

1

pre-upで3g-set-apを実行し、3Gインターフェース有効化時にAPN情報を設定します。

編集後、次回起動時に設定が反映されるようにコンフィグ領域を保存します。

[armadillo ~]# flatfsd -s

コンフィグ領域については、7章コンフィグ領域 − 設定ファイルの保存領域を参照してください。

6.2.5.4. 3Gインターフェースの有効化、無効化

無効化されている3Gインターフェースを有効化するには、次のようにコマンドを実行します。

[armadillo ~]# ifup umts0

図6.13 ネットワークインターフェース(umts0)の有効化


有効化されている3Gインターフェースを無効化するには、次のようにコマンドを実行します。

[armadillo ~]# ifdown umts0

図6.14 ネットワークインターフェース(umts0)の無効化


[注記]

APN情報が適切に設定されていない場合、3Gインターフェースを有効化することができません。

[armadillo ~]# ifup umts0
3G connect
error

上記のように"error"と表示された場合は、APNの設定を確認してください。

6.2.5.5. 自動で3Gインターフェースを有効化する

Armadilloの起動時に、自動的に3Gインターフェースの有効化を行う方法について説明します。

/etc/config/interfacesを、次のように編集します。

[armadillo ~]# vi /etc/config/interfaces
# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)

auto lo eth0 umts0 1
iface lo inet loopback
iface eth0 inet dhcp
iface umts0 inet dhcp
        pre-up 3g-connect
        post-up 3g-monitor start
        pre-down 3g-monitor stop
        post-down 3g-disconnect

1

auto 節に umts0 を追加します。

追加後、次回起動時に設定が反映されるようにコンフィグ領域を保存します。

[armadillo ~]# flatfsd -s

Armadilloを再起動すると、自動的に3Gインターフェースが有効化されます。

6.2.5.6. 3Gの接続を確認する

3Gで正常に通信が可能か確認します。

アットマークテクノのWebサーバーとPING通信を行います。VPN接続を利用するなどインターネットに接続できない場合は、ネットワーク内の通信機器に読み替えてください。

[armadillo ~]# ping www.atmark-techno.com

図6.15 3GのPING確認


[注記]

eth0 または awlan0 を使用してネットワークに接続している場合、ネットワーク通信に umts0 が使用されない場合があります。確実に umts0 を使用させる場合は、事前に umts0 以外のネットワークインターフェースを無効化してください。

6.2.5.7. microSIMから電話番号を取得する

microSIM(UIMカード)から電話番号を取得するには、次のようにコマンドを実行します。

[armadillo ~]# 3g-phone-num
[number] 1

1

11桁の電話番号が表示されます。

図6.16 microSIMからの電話番号取得


[注記]

microSIMが適切に接続されていない場合、電話番号を取得することができません。

[armadillo ~]# 3g-phone-num
error

上記のように"error"と表示された場合は、図6.10「microSIMの取り付け」を参照してmicroSIMの接続を確認してください。

6.2.5.8. 3Gモジュールの温度を取得する

3Gモジュール内蔵の温度センサから温度を取得するには、次のようにコマンドを実行します。

[armadillo ~]# 3g-temp
30 1

1

温度は °C の単位で表示されます。この例では 30°C を示しています。

図6.17 3Gモジュールからの温度取得


6.2.5.9. 3Gモジュールの高度な設定

本書で紹介していない高度な設定を行うために、直接 AT コマンドを利用する方法について説明します。例として、ATIコマンドを実行し、3Gモジュールの情報を表示する手順を次に示します。

手順6.1 3Gモジュールの情報を表示する

  1. tipコマンドを実行して/dev/ttyATCMDに接続します。ボーレートは115200bpsです。

    [armadillo ~]$ tip -l /dev/ttyATCMD -s 115200
    Connected.
  2. ATIコマンドを実行すると、3Gモジュールの情報が表示されます。

    ATI
    HL8548
    
    
    OK
  3. tipを終了するには、"~."(チルダ「~」に続いてドット「.」)を入力します。

    Disconnected.
    [armadillo ~]$ 

その他の AT コマンドについては Sierra Wireless製ドキュメントを参照してください。ドキュメントのダウンロードには、ユーザー登録が必要です。

6.2.6. DNSサーバー

DNSサーバーを指定する場合は、viエディタで/etc/config/resolv.confを編集します。

[armadillo ~]# vi /etc/config/resolv.conf
nameserver 192.0.2.1

図6.18 DNSサーバーの設定


[ティップ]

DHCPを利用している場合には、DHCPサーバーがDNSサーバーを通知する場合があります。この場合、/etc/config/resolv.confは自動的に更新されます。

6.2.7. ファイアーウォール

Armadilloでは、簡易ファイアーウォールが動作しています。設定されている内容を参照するには、図6.19「iptables」のようにコマンド実行してください。

[armadillo ~]# iptables --list

図6.19 iptables


6.2.8. ネットワークアプリケーション

工場出荷イメージで利用することができるネットワークアプリケーションについて説明します。

[注記]

ATDEとArmadilloのネットワーク設定がデフォルト状態であることを想定して記述しています。ネットワーク設定を変更している場合は適宜読み換えてください。

6.2.8.1. TELNET

ATDEなどのPCからネットワーク経由でログインし、リモート操作することができます。ログイン可能なユーザを次に示します。

表6.5 TELNETでログイン可能なユーザ

ユーザ名パスワード
guest(なし)

TELNETを使用してATDEからArmadilloにリモートログインする場合の例を、次に示します。

[ATDE ~]$ telnet 192.0.2.10  1
Trying 192.0.2.10...
Connected to 192.0.2.10.
Escape character is '^]'.

atmark-dist v1.41.0 (AtmarkTechno/Armadillo-IoTG-Std)
Linux 3.14-at1 [armv5tejl arch]

armadillo-iotg login: guest 2
[guest@armadillo ~]$
[guest@armadillo ~]$ su 3
Password:  4
[root@armadillo ~]#
[root@armadillo ~]# exit 5
[guest@armadillo ~]$ exit 6
Connection closed by foreign host.
[ATDE ~]$ 

1

telnetの引数にArmadilloのIPアドレスを指定します。

2

"guest"と入力するとログインすることができます。パスワードの入力は不要です。

3

特権ユーザーとなる場合には"su"コマンドを実行します。

4

特権ユーザーのデフォルトパスワードは"root"です。

5

特権ユーザーからguestユーザーに戻る場合は、"exit"と入力します

6

telnetを終了するにはもう一度"exit"を入力します

図6.20 telnetでリモートログイン


6.2.8.2. FTP

ATDEなどのPCからネットワーク経由でファイル転送することができます。次に示すユーザでログインすることができます。

表6.6 ftpでログイン可能なユーザ

ユーザ名パスワード
ftp(なし)

ftpを使用してATDEからArmadilloにファイルを転送する場合の例を、次に示します。

[ATDE ~]$ ls -l file
-rw-r--r-- 1 atmark atmark 1048576 Jan 1 12:00 file
[ATDE ~]$ ftp 192.0.2.10  1
Connected to 192.0.2.10.
220 armadillo-iotg FTP server (GNU inetutils 1.4.1) ready.
Name (192.0.2.10:atmark): ftp
331 Guest login ok, type your name as password.
Password: 2
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub 3
250 CWD command successful.
ftp> put file 4
local: file remote: file
200 PORT command sucessful.
150 Opening BINARY mode data connection for 'file'.
226 Transfer complete.
1048576 bytes sent in 0.14 secs (7399.5 kB/s)
ftp> quit 5
221 Goodbye.
[ATDE ~]$ 

1

ftpの引数にArmadilloのIPアドレスを指定します。

2

ftpユーザにパスワードが設定されていないためEnterキーを入力します。

3

ファイル転送することができるpubディレクトリに移動します。

4

ファイルをアップロードします。ダウンロードする場合は"get"コマンドを使用します。

5

ftpを終了する場合は"quit"と入力します。

図6.21 ftpでファイル転送


ATDEからArmadilloにファイルをアップロードすると、/home/ftp/pub/ディレクトリ以下にファイルが作成されています。ダウンロードする場合も、同じディレクトリにファイルを配置してください。

[armadillo ~]# cd /home/ftp/pub/
[armadillo /home/ftp/pub]# ls
file

図6.22 Armadillo上でアップロードされたファイルを確認


6.2.8.3. HTTPサーバー

Armadilloでは、HTTPサーバーが動作しています。ATDEなどのPCのWebブラウザからArmadilloのURL (http://[ArmadilloのIPアドレス]/ [10] または、http://armadillo-iotg.local/)にアクセスすると、Armadilloのトップページ(index.html)が表示されます。

Armadilloトップページ

図6.23 Armadilloトップページ


6.3. ストレージ

Armadillo-IoT でストレージとして使用可能なデバイスを次に示します。

表6.7 ストレージデバイス

デバイス種類ディスクデバイス先頭パーティションインターフェース
SD/SDHC/SDXCカード/dev/mmcblk*[a]/dev/mmcblk*p1SDインターフェース(ベースボード:CON4)
microSD/microSDHC/microSDXCカード/dev/mmcblk*[b]/dev/mmcblk*p1SDインターフェース(Armadillo-410:CON1)
USBフラッシュメモリ/dev/sd*[c]/dev/sd*1USB ホストインターフェース(ベースボード:CON7)

[a] microSD/microSDHC/microSDXCカードを接続した場合は、認識された順に mmcblk0 mmcblk1 となります。

[b] SD/SDHC/SDXCカード を接続した場合は、認識された順に mmcblk0 mmcblk1 となります。

[c] USBハブを利用して複数のUSBメモリを接続した場合は、認識された順に sda sdb sdc ... となります。


6.3.1. ストレージの使用方法

ここでは、ベースボードにSDHCカードを接続した場合を例にストレージの使用方法を説明します。以降の説明では、共通の操作が可能な場合に、SD/SDHC/SDXCカードをSDカードと表記します。

[注記]

SD インターフェース(ベースボード:CON4)と WLAN インターフェース(ベースボード:CON5)は、共通の信号が接続されています。工場出荷状態のソフトウェアでは、デフォルトで SD インターフェースが有効化されています。

「WLAN インターフェースの有効化」の手順を実行してWLAN インターフェースが有効化されている場合は、次のように SD インターフェースを有効化してください。

[armadillo ~]# sd-awlan-sel sd
select to SD
[ティップ]

SDXC/microSDXCカードを使用する場合は、事前に「ストレージのパーティション変更とフォーマット」を参照してフォーマットを行う必要があります。これは、LinuxカーネルがexFATファイルシステムを扱うことができないためです。通常、購入したばかりのSDXC/microSDXCカードはexFATファイルシステムでフォーマットされています。

Linuxでは、アクセス可能なファイルやディレクトリは、一つの木構造にまとめられています。あるストレージデバイスのファイルシステムを、この木構造に追加することを、マウントするといいます。マウントを行うコマンドは、mountです。

mountコマンドの典型的なフォーマットは、次の通りです。

mount -t [fstype] device dir

図6.24 mountコマンド書式


-t オプションに続くfstypeには、ファイルシステムタイプを指定します[11]。FAT32ファイルシステムの場合はvfat[12]、EXT3ファイルシステムの場合はext3を指定します。

deviceには、ストレージデバイスのデバイスファイル名を指定します。SDカードのパーティション1の場合は/dev/mmcblk0p1、パーティション2の場合は/dev/mmcblk0p2となります。

dirには、ストレージデバイスのファイルシステムをマウントするディレクトリを指定します。

SDスロットにSDHCカードを挿入した状態で図6.25「ストレージのマウント」に示すコマンドを実行すると、/mntディレクトリにSDHCカードのファイルシステムをマウントします。SDカード内のファイルは、/mntディレクトリ以下に見えるようになります。

[armadillo ~]# mount -t vfat /dev/mmcblk0p1 /mnt

図6.25 ストレージのマウント


[注記]

FAT32ファイルシステムをマウントした場合、次の警告メッセージが表示される場合があります。

FAT-fs (mmcblk0p1): utf8 is not a recommended IO charset for
FAT filesystems, filesystem will be case sensitive!

これは無視して構いません。 UTF-8 ロケールでは結局はファイル名の表示を正しく処理できないためです。

ストレージを安全に取り外すには、アンマウントする必要があります。アンマウントを行うコマンドは、umountです。オプションとして、アンマウントしたいデバイスがマウントされているディレクトリを指定します。

[armadillo ~]# umount /mnt

図6.26 ストレージのアンマウント


6.3.2. ストレージのパーティション変更とフォーマット

通常、購入したばかりのSDHCカードやUSBメモリは、一つのパーティションを持ち、FAT32ファイルシステムでフォーマットされています。

パーティション構成を変更したい場合、fdiskコマンドを使用します。fdiskコマンドの使用例として、一つのパーティションで構成されているSDカードのパーティションを、2つに分割する例を図6.27「fdiskコマンドによるパーティション変更」に示します。一度、既存のパーティションを削除してから、新たにプライマリパーティションを二つ作成しています。先頭のパーティションには100MByte、二つめのパーティションに残りの容量を割り当てています。先頭のパーティションは/dev/mmcblk0p1、二つめは/dev/mmcblk0p2となります。fdiskコマンドの詳細な使い方は、manページ等を参照してください。

[armadillo ~]# fdisk /dev/mmcblk0

The number of cylinders for this disk is set to 62528.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): d
Selected partition 1

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-62528, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-62528, default 62528): +100M

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (3054-62528, default 3054):
Using default value 3054
Last cylinder or +size or +sizeM or +sizeK (3054-62528, default 62528):
Using default value 62528

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
 mmcblk0: p1 p2
 mmcblk0: p1 p2
Syncing disks.

図6.27 fdiskコマンドによるパーティション変更


FAT32ファイルシステムでストレージデバイスをフォーマットするには、mkfs.vfatコマンドを使用します。また、EXT2やEXT3ファイルシステムでフォーマットするには、mke2fsコマンドを使用します。SDカードのパーティション1をEXT3ファイルシステムでフォーマットするコマンド例を、次に示します。

[armadillo ~]# mke2fs -j /dev/mmcblk0p1

図6.28 EXT3ファイルシステムの構築


6.4. LED

Armadillo-IoT のLEDは、GPIOが接続されているためソフトウェアで制御することができます。

利用しているデバイスドライバはLEDクラスとして実装されているため、LEDクラスディレクトリ以下のファイルによってLEDの制御を行うことができます。LEDクラスディレクトリと各LEDの対応を次に示します。

表6.8 LEDクラスディレクトリとLEDの対応

LEDクラスディレクトリインターフェースデフォルトトリガ
/sys/class/leds/led1/ユーザーLED1default-on
/sys/class/leds/led2/ユーザーLED2default-on[a]
/sys/class/leds/led3/ユーザーLED3none
/sys/class/leds/led4/ユーザーLED4none
/sys/class/leds/yellowArmadillo-410:LED5none

[a] ユーザーランドの起動処理が完了すると "none" に変更されます。


Armadillo-IoT の外観から見たユーザーLEDの位置を次に示します。

ユーザーLEDの位置

図6.29 ユーザーLEDの位置


以降の説明では、任意のLEDを示すLEDクラスディレクトリを"/sys/class/leds/[LED]"のように表記します。

6.4.1. LEDを点灯/消灯する

LEDクラスディレクトリ以下のbrightnessファイルへ値を書き込むことによって、LEDの点灯/消灯を行うことができます。brightnessに書き込む有効な値は0〜255です。

brightnessに0以外の値を書き込むとLEDが点灯します。

[armadillo ~]# echo 1 > /sys/class/leds/[LED]/brightness

図6.30 LEDを点灯させる


[ティップ]

Armadillo-IoT のLEDには輝度制御の機能が無いため、0 (消灯)、1〜255 (点灯)の2つの状態のみ指定することができます。

brightnessに0を書き込むとLEDが消灯します。

[armadillo ~]# echo 0 > /sys/class/leds/[LED]/brightness

図6.31 LEDを消灯させる


brightnessを読み出すとLEDの状態が取得できます。

[armadillo ~]# cat /sys/class/leds/[LED]/brightness
0

図6.32 LEDの状態を表示する


6.4.2. トリガを使用する

LEDクラスディレクトリ以下のtriggerファイルへ値を書き込むことによってLEDの点灯/消灯にトリガを設定することができます。triggerに書き込む有効な値を次に示します。

表6.9 triggerの種類

設定説明
noneトリガを設定しません。
mmc0SDインターフェース(Armadillo-410:CON1)のアクセスランプにします。
mmc1SDインターフェース(ベースボード:CON4)のアクセスランプにします。
timer任意のタイミングで点灯/消灯を行います。この設定にすることにより、LEDクラスディレクトリ以下にdelay_on, delay_offファイルが出現し、それぞれ点灯時間, 消灯時間をミリ秒単位で指定します。
heartbeat心拍のように点灯/消灯を行います。
default-on主にLinuxカーネルから使用します。LEDが点灯します。

以下のコマンドを実行すると、LEDが2秒点灯、1秒消灯を繰り返します。

[armadillo ~]# echo timer > /sys/class/leds/[LED]/trigger
[armadillo ~]# echo 2000 > /sys/class/leds/[LED]/delay_on
[armadillo ~]# echo 1000 > /sys/class/leds/[LED]/delay_off

図6.33 LEDのトリガにtimerを指定する


triggerを読み出すとLEDのトリガが取得できます。"[ ]"が付いているものが現在のトリガです。

[armadillo ~]# cat /sys/class/leds/[LED]/trigger
none mmc0 mmc1 [timer] heartbeat default-on

図6.34 LEDのトリガを表示する


6.5. RTC

Armadillo-IoT には、カレンダー時計(Real Time Clock)が実装されています。電源を切断しても一定時間(平均300秒間、最小60秒間)時刻を保持することができます。

電源が切断されても長時間時刻を保持させたい場合は、RTC外部バックアップインターフェース(ベースボード:CON13)に外付けバッテリー(対応バッテリー例: CR2032)を接続することができます。

6.5.1. RTCに時刻を設定する

Linuxの時刻には、Linuxカーネルが管理するシステムクロックと、RTCが管理するハードウェアクロックの2種類があります。RTCに時刻を設定するためには、まずシステムクロックを設定します。その後に、ハードウェアクロックをシステムクロックと一致させる手順となります。

システムクロックは、dateコマンドを用いて設定します。dateコマンドの引数には、設定する時刻を[MMDDhhmmCCYY.ss]というフォーマットで指定します。時刻フォーマットの各フィールドの意味を次に示します。

表6.10 時刻フォーマットのフィールド

フィールド意味
MM
DD日(月内通算)
hh
mm
CC年の最初の2桁(省略可)
YY年の最後の2桁(省略可)
ss秒(省略可)

2015年6月2日12時34分56秒に設定する例を次に示します。

[armadillo ~]# date 1
Sat Jan  1 09:00:00 JST 2000
[armadillo ~]# date 060212342015.56 2
Tue Jun  2 12:34:56 JST 2015 
[armadillo ~]# date 3
Tue Jun  2 12:34:57 JST 2015

1

現在のシステムクロックを表示します。

2

システムクロックを設定します。

3

システムクロックが正しく設定されていることを確認します。

図6.35 システムクロックを設定


[ティップ]

Armadillo-IoTが接続しているネットワーク内にタイムサーバーがある場合は、NTP(Network Time Protocol)クライアントを利用してシステムクロックを設定することができます。

[armadillo ~]# ntpclient -h [NTP SERVER] -s
42155 30535.977   24736.0      0.8   14862.8      0.0         0
[armadillo ~]# date
Tue Jun  2 12:34:57 JST 2015

システムクロックを設定後、ハードウェアクロックをhwclockコマンドを用いて設定します。

[armadillo ~]# hwclock 1
Sat Jan  1 00:00:00 2000  0.000000 seconds
[armadillo ~]# hwclock --utc --systohc 2
[armadillo ~]# hwclock --utc 3
Tue Jun  2 12:35:08 2015  -0.897934 seconds

1

現在のハードウェアクロックを表示します。

2

ハードウェアクロックを協定世界時(UTC)で設定します。

3

ハードウェアクロックがUTCで正しく設定されていることを確認します。

図6.36 ハードウェアクロックを設定


6.6. ユーザースイッチ

Armadillo-IoT のユーザースイッチのデバイスドライバは、インプットデバイスとして実装されています。インプットデバイスのデバイスファイルからボタンプッシュ/リリースイベントを取得することができます。

ユーザースイッチのインプットデバイスファイルと、各スイッチに対応したイベントコードを次に示します。

表6.11 インプットデバイスファイルとイベントコード

ユーザースイッチインプットデバイスファイルイベントコード
ベースボード:SW1/dev/input/event02 (1)
ベースボード:SW2/dev/input/event13 (2)
ベースボード:SW34 (3)


[警告]

インプットデバイスは検出された順番にインデックスが割り振られます。USBデバイスなどを接続してインプットデバイスを追加している場合は、デバイスファイルのインデックスが異なる可能性があります。

6.6.1. イベントを確認する

ユーザースイッチのボタンプッシュ/リリースイベントを確認するために、ここではevtestコマンドを利用します。evtestを停止するには、Ctrl+c を入力してください。

[armadillo ~]# evtest /dev/input/event1
Input driver version is 1.0.0
Input device ID: bus 0x19 vendor 0x1 product 0x1 version 0x100
Input device name: "gpio-keys-polled"
Supported events:
  Event type 0 (Sync)
  Event type 1 (Key)
    Event code 3 (2)
    Event code 4 (3)
Testing ... (interrupt to exit)
Event: time 946704238.665631, type 1 (Key), code 3 (2), value 1
Event: time 946704238.665651, -------------- Report Sync ------------ 1
Event: time 946704238.785610, type 1 (Key), code 3 (2), value 0
Event: time 946704238.785623, -------------- Report Sync ------------ 2
                 :
[armadillo ~]#

1

SW2のボタンプッシュイベントを検出したときの表示。

2

SW2のボタンリリースイベントを検出したときの表示。

図6.37 ユーザースイッチ: イベントの確認


6.7. 温度センサ

Armadillo-IoT には、温度センサが実装されています。基板周辺温度の取得や、温度変化を監視することができます。

6.7.1. 温度を取得する

/sys/devices/platform/i2c-gpio.3/i2c-3/3-0048/temp1_inputファイルを値を読み出すことによって、現在の基板周辺温度を取得することができます。

[armadillo ~]# cat /sys/devices/platform/i2c-gpio.3/i2c-3/3-0048/temp1_input
30000 1

1

温度はミリ°C の単位で表示されます。この例では 30°C を示しています。

図6.38 基板周辺温度を取得する


6.7.2. 温度を監視する

thermaltriggerコマンドを利用して、指定した温度になった場合に任意のコマンドを実行させることができます。

[警告]

thermaltriggerを複数起動することはできません。「thermalmonitor」に示すthermalmonitorコマンドも、内部的にthermaltriggerを起動しています。

thermaltriggerコマンドのヘルプは次の通りです。

[armadillo ~]# thermaltrigger
Usage: thermaltrigger -a|-b THRESHOLD COMMAND [ARGS]
Options:
  -a, --above=THRESHOLD
      Execute the program COMMAND when the detected temperature is equal
      to or above the THRESHOLD.
  -b, --below=THRESHOLD
      Execute the program COMMAND when the detected temperature is equal
      to or below the THRESHOLD.
TEMPERATURE: Range: -55000 - 125000

図6.39 thermaltriggerコマンドのヘルプ


温度が60000ミリ°C(60°C)以上になった場合に、ベースボード:LED2を点灯させる例を次に示します。

[armadillo ~]# thermaltrigger -a 60000 echo 1 > /sys/class/leds/led2/brightness

図6.40 thermaltriggerコマンド例


[ティップ]

thermaltriggerコマンドのログは/var/log/messagesファイルに出力されます。

[armadillo ~]# cat /var/log/messages
                 :
Dec 19 12:34:59 (none) daemon.info thermaltrigger[1131]: Waiting for 60000 millidegrees Celsius or above.  1
Dec 19 12:34:59 (none) daemon.info thermaltrigger[1131]: exceeded the threshold. executing command.  2

1

指定した温度(60000ミリ°C)以上になることを待機します。

2

指定した温度に達したのでコマンドを実行します。

6.8. ADコンバーター

Armadillo-IoT には、ADコンバーターが実装されています。電源電圧の取得や、電圧の変化を監視することができます。

6.8.1. 電源電圧を取得する

電源電圧は、分圧されてADコンバーターへ入力されています。電源電圧を取得するためには、まずADコンバーターへの入力電圧を取得する必要があります。

ADコンバーターは IIO(Industrial I/O) デバイスとして実装しています。/sys/bus/iio/devices/iio:device0/in_voltage_rawファイルと/sys/bus/iio/devices/iio:device0/in_voltage_scaleの値を読み出し乗算する事で、ADコンバータの入力電圧を算出する事ができます。

[注記]

IIO デバイスは、デバイスを認識した順番で iio:deviceN (N は'0'からの連番)となります。IIO デバイスは、IIOデバイス名から特定することができます。ADコンバーターの IIO デバイス名は "3-0054"です。

[armadillo ~]# cat /sys/bus/iio/devices/iio:device0/name
3-0054
[ADコンバータへの入力電圧 (mV)] = [in_voltage_raw] × [in_voltage_scale]

図6.41 ADコンバータへの入力電圧の計算式


[armadillo ~]# cat /sys/bus/iio/devices/iio:device0/in_voltage_raw
150
[armadillo ~]# cat /sys/bus/iio/devices/iio:device0/in_voltage_scale
12.890625000

図6.42 ADコンバーターへの入力電圧を取得する


図6.42「ADコンバーターへの入力電圧を取得する」の例では、ADコンバータへの入力電圧は、約 1.933V (150 × 12.89062500 [mV])である事がわかります。

ADコンバーターへの入力電圧から、電源電圧を求める計算式を次に示します。

[電源電圧 (mV)] = [ADコンバーターへの入力電圧] × (200 + 39) ÷ 39

図6.43 電源電圧の計算式


図6.42「ADコンバーターへの入力電圧を取得する」を例にとると、ADコンバーターへの入力電圧1.933Vから、電源電圧は約11.849Vであることを求めることができます。

[ティップ]

awkコマンドを利用して、次のように電源電圧を表示することができます。

[armadillo ~]# adin_raw=`cat /sys/bus/iio/devices/iio:device0/in_voltage_raw`
[armadillo ~]# adin_scale=`cat /sys/bus/iio/devices/iio:device0/in_voltage_scale`
[armadillo ~]# echo $adin_raw $adin_scale | awk '{printf ("%d",$1*$2*(200+39)/39)}'
11849

6.8.2. 電源電圧を監視する

vintriggerコマンドを利用して、電源電圧が指定した電圧になった場合に任意のコマンドを実行させることができます。

[警告]

vintriggerを複数起動することはできません。「vinmonitor」に示すvinmonitorコマンドも、内部的にvintriggerを起動しています。

vintriggerコマンドのヘルプは次の通りです。

[armadillo ~]# vintrigger
Usage: vintrigger -o|-u VOLTAGE COMMAND [ARGS]
Options:
  -o, --over=VOLTAGE
      Execute the program COMMAND when the detected voltage is equal
      to or over the VOLTAGE.
  -u, --under=VOLTAGE
      Execute the program COMMAND when the detected voltage is equal
      to or unver the VOLTAGE.
VOLTAGE: Range: 0 - 20223

図6.44 vintriggerコマンドのヘルプ


電源電圧が11000mV(11V)以下になった場合に、ベースボード:LED2を点灯させる例を次に示します。

[armadillo ~]# vintrigger -u 11000 echo 1 > /sys/class/leds/led2/brightness

図6.45 vintriggerコマンド例


[ティップ]

vintriggerコマンドのログは/var/log/messagesファイルに出力されます。

[armadillo ~]# cat /var/log/messages
                 :
Jun 15 12:34:57 (none) daemon.info vintrigger[1173]: waiting for an under range alert (11000 mV). 1
Jun 15 12:34:57 (none) daemon.info vintrigger[1173]: exceeded the limit. executing command. 2

1

指定した電圧(11000mV)以下になることを待機します。

2

指定した電圧に達したのでコマンドを実行します。

6.9. Armadillo-IoT RS232Cアドオンモジュール RS00

Armadillo-IoT RS232Cアドオンモジュール RS00(以降、RS232Cアドオンモジュールと記載します)は RS232C レベルのシリアルポートが 1 ポート搭載されています。RS232Cアドオンモジュールのシリアルポートのデバイスドライバは、TTYデバイスとして実装されているためTTYデバイスファイルから制御を行うことができます。

RS232Cアドオンモジュールを接続するアドオンインターフェースと、TTYデバイスファイルの対応を次に示します。

表6.12 アドオンインターフェースとTTYデバイスファイル

アドオンインターフェースTTYデバイスファイル
ベースボード:CON1/dev/ttymxc3
ベースボード:CON2/dev/ttymxc0

[注記]

工場出荷状態の開発セットは、ベースボード:CON1にRS232Cアドオンモジュールが接続されています。

[ティップ]

RS232Cアドオンモジュールが接続されているアドオンインターフェースは、Linuxカーネルの起動ログで確認することができます。ベースボード:CON1に接続されている場合は次のように出力されます。

Atmark Techno RS232C board detected at CON1(Rev 2, SerialNumber=xxxx).

6.9.1. Armadillo-IoTにログインする

RS232CアドオンモジュールのシリアルインターフェースからArmadillo-IoTにログインします。

アドオンインターフェース(ベースボード:CON1)に接続したRS232Cアドオンモジュールのシリアルインターフェースからログインする手順を次に示します。

手順6.2 RS232Cアドオンモジュールからログイン

  1. ATDEでminicomを起動します。シリアルデバイスには/dev/ttyS0を指定します。

    [ATDE ~]$ minicom -o -w -D /dev/ttyS0
  2. Armadillo-IoTでgettyを起動します。シリアルデバイスには ttymxc3[13]を指定します。/etc/inittabの設定を有効にするためには、プロセスIDが1であるinitプロセスにSIGHUPシグナルを送ります。

    [armadillo ~]# echo ::respawn:/sbin/getty -L 115200 ttymxc3 >> /etc/inittab
    [armadillo ~]# kill -SIGHUP 1

ATDEのminicomにログインプロンプトが表示されます。ユーザー「guest」でログインすることができます。

[ティップ]

以下のように/etc/securettyにシリアルデバイスを登録すると、特権ユーザー「root」でログインすることが可能になります。

[armadillo ~]# echo ttymxc3 >> /etc/securetty

デフォルト状態ではセキュリティーを考慮し、特権ユーザーでのログインを制限しています。

6.10. Armadillo-IoT 絶縁RS232C/422/485アドオンモジュール RS01

Armadillo-IoT 絶縁RS232C/422/485アドオンモジュール RS01(以降、絶縁シリアルアドオンモジュールと記載します)は、電気的に絶縁された RS232C/RS422/RS485 のシリアルポートが 1 ポート登載されています。絶縁シリアルアドオンモジュールのシリアルポートのデバイスドライバは、TTYデバイスとして実装されているためTTYデバイスファイルから制御を行うことができます。

絶縁シリアルアドオンモジュールを接続するアドオンインターフェースと、TTYデバイスファイルの対応を次に示します。

表6.13 アドオンインターフェースとTTYデバイスファイル

アドオンインターフェースTTYデバイスファイル
ベースボード:CON1/dev/ttymxc3
ベースボード:CON2/dev/ttymxc0

[ティップ]

絶縁シリアルアドオンモジュールが接続されているアドオンインターフェースは、Linuxカーネルの起動ログで確認することができます。ベースボード:CON2に接続されている場合は次のように出力されます。

Atmark Techno RS485/RS422/RS232C board detected at CON2(Rev 2, SerialNumber=xxxx).

6.10.1. RS422/RS485の通信設定を変更する

Armadillo-IoTに電源を投入する前に 絶縁シリアルアドオンモジュール:SW1.1をOFFに設定すると、TTYデバイスのRS485設定が自動的に有効化されます。

[警告]

Armadillo-IoTの電源投入後に 絶縁シリアルアドオンモジュール:SW1.1の設定を変更しないでください。故障の原因となる可能性があります。

変更が可能なRS485設定と、自動的に有効化された場合の初期値を表6.14「RS485設定と初期値」に示します。flagsは各ビットごとの論理和を示します。

表6.14 RS485設定と初期値

設定説明初期値
flagsENABLED(bit0)

0: RS485無効

1: RS485有効

1
RTS_ON_SEND(bit1)

0: データ送信時のRTS(Driver Enable)がLow

1: データ送信時のRTS(Driver Enable)がHigh

1
RTS_AFTER_SEND(bit2)

0: データ非送信時のRTS(Driver Enable)がLow

1: データ非送信時のRTS(Driver Enable)がHigh

0
RX_DURING_TX(bit4)

0: 半二重通信

1: 全二重通信

0
delay_rts_before_send送信前遅延時間(ミリ秒)0
delay_rts_after_send送信後遅延時間(ミリ秒)0

[警告]

flagsのRTS_ON_SENDとRTS_AFTER_SENDは初期値を変更しないでください。変更した場合はデータ送信を行うことができなくなります。

[注記]

RS485が有効化されたTTYデバイスをコンソールとして利用することはできません。

RS485設定は、アプリケーションプログラムまたは、Linuxカーネル起動オプションで変更することができます。

アプリケーションプログラムの作成方法については、Linuxカーネルのソースコードに含まれているドキュメント(Documentation/serial/serial-rs485.txt)を参照してください。

Linux カーネル起動オプションでは、次のオプション指定子でRS485設定を行います。

表6.15 Linuxカーネル起動オプションからのRS485設定

オプション指定子説明
imx.rs485_uart4=

ベースボード:CON1に接続されているUART4(ttymxc3)のRS485設定を指定します。

imx.rs485_uart1=

ベースボード:CON2に接続されているUART1(ttymxc0)のRS485設定を指定します。


RS485設定のフォーマットは次の通りです。

<flags>,<delay_rts_before_send>,<delay_rts_after_send>

例として、ベースボード:CON2に接続した絶縁シリアルアドオンモジュールのRS485設定を全二重通信にする場合は、保守モードで起動してから次のようにコマンドを実行してください。

hermit> setenv console=ttymxc1,115200 root=/dev/ram0 imx.rs485_uart1=0x13,0,0

6.10.2. Armadillo-IoTにログインする

絶縁シリアルアドオンモジュールのシリアルインターフェースからArmadillo-IoTにログインします。

RS422/RS485通信を行う場合は、事前に「RS422/RS485の通信設定を変更する」を参照して通信環境に合わせた設定を行ってください。

アドオンインターフェース(ベースボード:CON2)に接続した絶縁シリアルアドオンモジュールのシリアルインターフェースからログインする手順を次に示します。

手順6.3 絶縁シリアルアドオンモジュールからログイン

  1. ATDEでminicomを起動します。シリアルデバイスには/dev/ttyS0を指定します。

    [ATDE ~]$ minicom -o -w -D /dev/ttyS0
  2. Armadillo-IoTでgettyを起動します。シリアルデバイスには ttymxc0[14]を指定します。/etc/inittabの設定を有効にするためには、プロセスIDが1であるinitプロセスにSIGHUPシグナルを送ります。

    [armadillo ~]# echo ::respawn:/sbin/getty -L 115200 ttymxc0 >> /etc/inittab
    [armadillo ~]# kill -SIGHUP 1

ATDEのminicomにログインプロンプトが表示されます。ユーザー「guest」でログインすることができます。

[ティップ]

以下のように/etc/securettyにシリアルデバイスを登録すると、特権ユーザー「root」でログインすることが可能になります。

[armadillo ~]# echo ttymxc0 >> /etc/securetty

デフォルト状態ではセキュリティーを考慮し、特権ユーザーでのログインを制限しています。

6.11. Armadillo-IoT BLEアドオンモジュール BT00

Armadillo-IoT BLEアドオンモジュール BT00(以降、BLEアドオンモジュールと記載します)は Microchip製 RN4020が搭載されています。Bluetooth(R) version 4.1に対応しており、Bluetooth Low Energy 4.1 プロトコルスタックが内蔵されています。

BLEアドオンモジュールは、TTY デバイスファイルからASCIIコマンドを使用した制御を行うことができます。BLEアドオンモジュールを接続するアドオンインターフェースと、TTYデバイスファイルの対応を次に示します。

表6.16 アドオンインターフェースとTTYデバイスファイル

アドオンインターフェースTTYデバイスファイル
ベースボード:CON1/dev/ttymxc3
ベースボード:CON2/dev/ttymxc0

[ティップ]

BLEアドオンモジュールが接続されているアドオンインターフェースは、Linuxカーネルの起動ログで確認することができます。ベースボード:CON2に接続されている場合は次のように出力されます。

Atmark Techno Bluetooth Low Energy board detected at CON2(Rev 2, SerialNumber=xxxx).

6.11.1. 設定情報を取得する

BLEアドオンモジュールを制御する例として、RN4020 の設定情報の取得を行います。

アドオンインターフェース(ベースボード:CON2)に接続したBLEアドオンモジュールに搭載されているRN4020の設定情報を取得する手順を次に示します。

手順6.4 設定情報の取得

  1. tipコマンドを実行して/dev/ttymxc0に接続します。ボーレートは115200bpsです。

    [armadillo ~]$ tip -l /dev/ttymxc0 -s 115200
    Connected.
  2. D (Dump configuration)コマンドを実行すると、RN4020の設定情報が表示されます。

    D
    BTA=001EC01BBF7B
    Name=RN4020_BF7B
    Role=Peripheral
    Connected=no
    Bonded=no
    Server Service=80000000
  3. tipを終了するには、"~."(チルダ「~」に続いてドット「.」)を入力します。

    Disconnected.
    [armadillo ~]$ 

その他の ASCII コマンドや、RN4020 の詳細な情報については Microchip製ドキュメントを参照してください。

6.12. Armadillo-IoT EnOceanアドオンモジュール EN00

Armadillo-IoT EnOceanアドオンモジュール EN00(以降、EnOceanアドオンモジュールと記載します)は ROHM製 BP35A3が搭載されています。BP35A3にはEnOcean無線トランシーバーTCM410Jが搭載されています。

EnOceanアドオンモジュールは、TTY デバイスファイルからEnOcean Serial Protocol 3(ESP3)で通信することができます。EnOceanアドオンモジュールを接続するアドオンインターフェースと、TTYデバイスファイルの対応を次に示します。

表6.17 アドオンインターフェースとTTYデバイスファイル

アドオンインターフェースTTYデバイスファイル
ベースボード:CON1/dev/ttymxc3
ベースボード:CON2/dev/ttymxc0

[ティップ]

EnOceanアドオンモジュールが接続されているアドオンインターフェースは、Linuxカーネルの起動ログで確認することができます。ベースボード:CON2に接続されている場合は次のように出力されます。

Atmark Techno EnOcean board detected at CON2(Rev 2, SerialNumber=xxxx).

6.12.1. EnOcean無線データを受信する

EnOcean無線データを受信する例として、ROHM製スイッチモジュール PTM 210Jを使用します

アドオンインターフェース(ベースボード:CON2)に接続したEnOceanアドオンモジュールで受信する手順を次に示します。

手順6.5 EnOcean無線データの受信

  1. sttyコマンドを実行してTTY デバイスの通信設定を行います。ボーレートは57600bpsです。

    [armadillo ~]$ stty -F /dev/ttymxc0 57600 -icanon min 1
  2. hexdumpコマンドを実行して受信データを16進数でダンプします。

    [armadillo ~]$ hexdump -v /dev/ttymxc0
    0000000 0055 0207 0a0a 0020 e928 8447 0114 bd38                                 
    0000010 0055 0207 0a0a 0020 e928 0047 0181 ba39
  3. hexdumpを終了するには、Ctrl+cを入力します。

PTM 210Jなど、EnOcean製品の情報については ROHM社 Webページを参照してください。

EnOcean Serial Protocolの詳細については EnOcean GmbH製ドキュメントを参照してください。

6.13. Armadillo-IoT Wi-SUNアドオンモジュール WS00

Armadillo-IoT Wi-SUNアドオンモジュール WS00(以降、Wi-SUNアドオンモジュールと記載します)は ROHM製 BP35A1が搭載されています。

Wi-SUNアドオンモジュールは、TTY デバイスファイルからASCIIコマンドを使用した制御を行うことができます。Wi-SUNアドオンモジュールを接続するアドオンインターフェースと、TTYデバイスファイルの対応を次に示します。

表6.18 アドオンインターフェースとTTYデバイスファイル

アドオンインターフェースTTYデバイスファイル
ベースボード:CON1/dev/ttymxc3
ベースボード:CON2/dev/ttymxc0

[ティップ]

Wi-SUNアドオンモジュールが接続されているアドオンインターフェースは、Linuxカーネルの起動ログで確認することができます。ベースボード:CON2に接続されている場合は次のように出力されます。

Atmark Techno Wi-SUN board detected at CON2(Rev 2, SerialNumber=xxxx).

6.13.1. 設定情報を取得する

Wi-SUNアドオンモジュールを制御する例として、BP35A1 の設定情報の取得を行います。

アドオンインターフェース(ベースボード:CON2)に接続したWi-SUNアドオンモジュールに搭載されているBP35A1の設定情報を取得する手順を次に示します。

手順6.6 設定情報の取得

  1. tipコマンドを実行して/dev/ttymxc0に接続します。ボーレートは115200bpsです。

    [armadillo ~]$ tip -l /dev/ttymxc0 -s 115200
    Connected.
  2. SKINFOコマンドを実行すると、BP35A1 の設定情報が表示されます。

    SKINFO
    EINFO FE80:0000:0000:0000:021D:1290:0004:0FBE 001D129000040FBE 21 FFFF FFFE
    OK
  3. tipを終了するには、"~."(チルダ「~」に続いてドット「.」)を入力します。

    Disconnected.
    [armadillo ~]$ 

その他の ASCII コマンドや、BP35A1 の詳細な情報については ROHM 製ドキュメントを参照してください。

6.14. Armadillo-IoT 絶縁RS485アドオンモジュール RS02

Armadillo-IoT 絶縁RS485アドオンモジュール RS02(以降、絶縁 RS485アドオンモジュールと記載します)は、電気的に絶縁された RS422/RS485 のシリアルポートが 1 ポート登載されています。絶縁 RS485アドオンモジュールのシリアルポートのデバイスドライバは、TTYデバイスとして実装されているためTTYデバイスファイルから制御を行うことができます。

絶縁 RS485アドオンモジュールを接続するアドオンインターフェースと、TTYデバイスファイルの対応を次に示します。

表6.19 アドオンインターフェースとTTYデバイスファイル

アドオンインターフェースTTYデバイスファイル
ベースボード:CON1/dev/ttymxc3
ベースボード:CON2/dev/ttymxc0

[ティップ]

絶縁 RS485アドオンモジュールが接続されているアドオンインターフェースは、Linuxカーネルの起動ログで確認することができます。ベースボード:CON2に接続されている場合は次のように出力されます。

Atmark Techno RS485 board detected at CON2(Rev 1, SerialNumber=xxxx).

6.14.1. RS422/RS485の通信設定を変更する

TTYデバイスのRS485設定は自動的に有効化されます。

変更が可能なRS485設定と、自動的に有効化された場合の初期値を表6.14「RS485設定と初期値」に示します。flagsは各ビットごとの論理和を示します。

表6.20 RS485設定と初期値

設定説明初期値
flagsENABLED(bit0)

0: RS485無効

1: RS485有効

1
RTS_ON_SEND(bit1)

0: データ送信時のRTS(Driver Enable)がLow

1: データ送信時のRTS(Driver Enable)がHigh

1
RTS_AFTER_SEND(bit2)

0: データ非送信時のRTS(Driver Enable)がLow

1: データ非送信時のRTS(Driver Enable)がHigh

0
RX_DURING_TX(bit4)

0: 半二重通信

1: 全二重通信

0
delay_rts_before_send送信前遅延時間(ミリ秒)0
delay_rts_after_send送信後遅延時間(ミリ秒)0

[警告]

flagsのRTS_ON_SENDとRTS_AFTER_SENDは初期値を変更しないでください。変更した場合はデータ送信を行うことができなくなります。

[注記]

RS485が有効化されたTTYデバイスをコンソールとして利用することはできません。

RS485設定は、アプリケーションプログラムまたは、Linuxカーネル起動オプションで変更することができます。

アプリケーションプログラムの作成方法については、Linuxカーネルのソースコードに含まれているドキュメント(Documentation/serial/serial-rs485.txt)を参照してください。

Linux カーネル起動オプションでは、次のオプション指定子でRS485設定を行います。

表6.21 Linuxカーネル起動オプションからのRS485設定

オプション指定子説明
imx.rs485_uart4=

ベースボード:CON1に接続されているUART4(ttymxc3)のRS485設定を指定します。

imx.rs485_uart1=

ベースボード:CON2に接続されているUART1(ttymxc0)のRS485設定を指定します。


RS485設定のフォーマットは次の通りです。

<flags>,<delay_rts_before_send>,<delay_rts_after_send>

例として、ベースボード:CON2に接続した絶縁 RS485 アドオンモジュールのRS485設定を全二重通信にする場合は、保守モードで起動してから次のようにコマンドを実行してください。

hermit> setenv console=ttymxc1,115200 root=/dev/ram0 imx.rs485_uart1=0x13,0,0

6.14.2. Armadillo-IoTにログインする

絶縁 RS485アドオンモジュールのシリアルインターフェースからArmadillo-IoTにログインします。

RS422/RS485通信を行う場合は、事前に「RS422/RS485の通信設定を変更する」を参照して通信環境に合わせた設定を行ってください。

アドオンインターフェース(ベースボード:CON2)に接続した絶縁 RS485アドオンモジュールのシリアルインターフェースからログインする手順を次に示します。

手順6.7 絶縁 RS485アドオンモジュールからログイン

  1. ATDEでminicomを起動します。シリアルデバイスには/dev/ttyS0を指定します。

    [ATDE ~]$ minicom -o -w -D /dev/ttyS0
  2. Armadillo-IoTでgettyを起動します。シリアルデバイスには ttymxc0[15]を指定します。/etc/inittabの設定を有効にするためには、プロセスIDが1であるinitプロセスにSIGHUPシグナルを送ります。

    [armadillo ~]# echo ::respawn:/sbin/getty -L 115200 ttymxc0 >> /etc/inittab
    [armadillo ~]# kill -SIGHUP 1

ATDEのminicomにログインプロンプトが表示されます。ユーザー「guest」でログインすることができます。

[ティップ]

以下のように/etc/securettyにシリアルデバイスを登録すると、特権ユーザー「root」でログインすることが可能になります。

[armadillo ~]# echo ttymxc0 >> /etc/securetty

デフォルト状態ではセキュリティーを考慮し、特権ユーザーでのログインを制限しています。

6.15. Armadillo-IoT 絶縁デジタル入出力/アナログ入力アドオンモジュール DA00

Armadillo-IoT 絶縁デジタル入出力/アナログ入力アドオンモジュール DA00(以降、絶縁 IO アドオンモジュールと記載します)は、電気的に絶縁されたデジタル入力2 ポート、デジタル出力 2 ポートと 0~5V のアナログ入力 2 ポートを追加することができます。

絶縁 IO アドオンモジュールのデジタル入出力のデバイスドライバは GPIO、アナログ入力のデバイスドライバは IIO(Industrial I/O) デバイスとして実装しています。

絶縁 IO アドオンモジュールを接続するアドオンインターフェースと、GPIO クラスディレクトリの対応を表6.22「アドオンインターフェースとGPIO クラスディレクトリ」に示します。IIO デバイスは、デバイスを認識した順番で iio:deviceN (N は'0'からの連番)となります。

表6.22 アドオンインターフェースとGPIO クラスディレクトリ

アドオンインターフェースポートGPIO クラスディレクトリ
ベースボード:CON1デジタル出力 1/sys/class/gpio/DO1_CON1
デジタル出力 2/sys/class/gpio/DO2_CON1
デジタル入力 1/sys/class/gpio/DI1_CON1
デジタル入力 2/sys/class/gpio/DI2_CON1
ベースボード:CON2デジタル出力 1/sys/class/gpio/DO1_CON2
デジタル出力 2/sys/class/gpio/DO2_CON2
デジタル入力 1/sys/class/gpio/DI1_CON2
デジタル入力 2/sys/class/gpio/DI2_CON2

[ティップ]

絶縁 IO アドオンモジュールが接続されているアドオンインターフェースは、Linuxカーネルの起動ログで確認することができます。ベースボード:CON2に接続されている場合は次のように出力されます。

Atmark Techno DI/DO/AD board detected at CON2(Rev 1, SerialNumber=xxxx).

6.15.1. 出力状態を設定する

GPIOクラスディレクトリ以下のvalueファイルに値を書き込むことによって、出力状態を設定することができます。"0"は開放、"1"は短絡を表わします。

アドオンインターフェース(ベースボード:CON2)に接続した絶縁 IO アドオンモジュールのデジタル出力 1を開放に設定する例を次に示します。

[armadillo ~]# echo 0 > /sys/class/gpio/DO1_CON2/value

図6.46 デジタル入力状態を取得する


6.15.2. 入力状態を取得する

GPIOクラスディレクトリ以下のvalueファイルから値を読み出すことによって、入力状態を取得することができます。"0"はGND_ISOとの短絡。"1"は開放または3.15V以上印加を表わします。

アドオンインターフェース(ベースボード:CON2)に接続した絶縁 IO アドオンモジュールのデジタル入力 1の状態を取得する例を次に示します。

[armadillo ~]# cat /sys/class/gpio/DI1_CON2/value
1

図6.47 デジタル入力状態を取得する


6.15.3. 電圧を取得する

/sys/bus/iio/devices/iio:device0/ディレクトリ以下のファイルから入力電圧を算出することができます。

[注記]

IIO デバイスは、デバイスを認識した順番で iio:deviceN (N は'0'からの連番)となります。IIO デバイスは、IIOデバイス名から特定することができます。絶縁 IO アドオンモジュールに搭載しているADコンバーターの IIO デバイス名は "mcp3202"です。

[armadillo ~]# cat /sys/bus/iio/devices/iio:device0/name
mcp3202

ADコンバータへの入力電圧は、AD変換値と最小入力電圧変動から算出する事ができます。

[ADコンバータへの入力電圧 (mV)] = [AD変換値] × [最小入力電圧変動]

図6.48 ADコンバータへの入力電圧の計算式


/sys/bus/iio/devices/iio:device0/ディレクトリ以下にある、入力電圧の算出に必要なファイルを次に示します。

表6.23 入力電圧の算出に必要なファイル

ファイル説明
in_voltage0_rawシングルエンド入力 CH0のAD変換値
in_voltage1_rawシングルエンド入力 CH1のAD変換値
in_voltage_scaleシングルエンド入力の最小入力電圧変動
in_voltage0-voltage1_raw疑似差動入力のAD変換値
in_voltage-voltage_scale疑似差動入力の最小入力電圧変動

シングルエンド入力 CH0への入力電圧を算出する例を次に示します。

[armadillo ~]# cat /sys/bus/iio/devices/iio:device0/in_voltage0_raw
2048
[armadillo ~]# cat /sys/bus/iio/devices/iio:device0/in_voltage_scale
1.220703125

図6.49 ADコンバーターへの入力電圧を取得する


図6.49「ADコンバーターへの入力電圧を取得する」の例では、シングルエンド入力 CH0への入力電圧は、2.5V (2048 × 1.220703125 [mV])である事がわかります。

[ティップ]

awkコマンドを利用して、次のように電源電圧を表示することができます。

[armadillo ~]# adin_raw=`cat /sys/bus/iio/devices/iio:device0/in_voltage0_raw`
[armadillo ~]# adin_scale=`cat /sys/bus/iio/devices/iio:device0/in_voltage_scale`
[armadillo ~]# echo $adin_raw $adin_scale | awk '{printf ("%d",$1*$2)}'
2500
[ティップ]

Linuxカーネルのソースコードに含まれているサンプルプログラム(drivers/staging/iio/Documentation/generic_buffer.c)を利用して、AD変換値とタイムスタンプを取得することができます。サンプルプログラムは次のようにビルドします。

[ATDE ~]# cd linux-3.14-at[version]
[ATDE ~/linux-3.14-at[version]]# arm-linux-gnueabi-gcc drivers/staging/iio/Documentation/generic_buffer.c -o generic_buffer

シングルエンド入力 CH0のAD変換値とタイムスタンプ(ナノ秒)を取得する例を次に示します。

[armadillo ~]# echo 1 > /sys/bus/iio/devices/iio_sysfs_trigger/add_trigger
[armadillo ~]# echo 1 > /sys/bus/iio/devices/iio:device0/scan_elements/in_voltage0_en
[armadillo ~]# echo 1 > /sys/bus/iio/devices/iio:device0/scan_elements/in_timestamp_en
[armadillo ~]# ./generic_buffer -n mcp3202 -t sysfstrig1 -l 128 -c 10 &
[armadillo ~]# echo 1 > /sys/bus/iio/devices/trigger0/trigger_now
2472.000000 947128416143915461


[10] ArmadilloのIPアドレスが 192.0.2.10 の場合、http://192.0.2.10/ となります。

[11] ファイルシステムタイプの指定は省略可能です。省略した場合、mountコマンドはファイルシステムタイプを推測します。この推測は必ずしも適切なものとは限りませんので、事前にファイルシステムタイプが分かっている場合は明示的に指定してください。

[12] 通常、購入したばかりのSDHCカードはFAT32ファイルシステムでフォーマットされています。

[13] /dev/を指定する必要はありません。

[14] /dev/を指定する必要はありません。

[15] /dev/を指定する必要はありません。