工場出荷状態でフラッシュメモリに書き込まれているイメージファイルは、最新版ではない可能性があります。最新版のイメージファイルは、Armadilloサイトからダウンロード可能です。最新版のイメージファイルに書き換えてからのご使用を推奨します。
イメージファイルの書き換えについては、11章イメージファイルの書き換え方法を参照してください。
ここでは、ネットワークの設定方法やネットワークを利用するアプリケーションについて説明します。
Armadillo-IoT は、複数の種類のネットワークに接続することができます。接続可能なネットワークとLinuxから使用するネットワークデバイスの対応を次に示します。
表6.1 ネットワークとネットワークデバイス ネットワーク | ネットワークデバイス | 備考 |
---|
有線LAN | eth0 | | 無線LAN | wlan0 | AEH-AR9462 搭載 | 3G | ttyACM3 | Gemalto製 PDS6-J 搭載 |
Armadillo-IoT ゲートウェイG3 では、通常のLinuxシステムと同様、ネットワークインターフェースの設定はNetworkManagerを使用します。NetworkManagerはデフォルトでeth0(LANのネットワークインターフェース)が自動でupし、DHCPでネットワーク設定を取得するようになっています。
NetworkManagerはすべてのネットワーク設定をコネクションとして管理します。コネクションには「どのようにネットワークへ接続するか」、「どのようにネットワークを作成するか」を記述し、/etc/NetworkManager/system-connections/ に保存します。
また、1つのデバイスに対して複数のコネクションを保存することは可能ですが、1つのデバイスに対して有効化にできるコネクションは1つだけです。
NetworkManagerは、従来の/etc/network/interfaces を使った設定方法もサポートしていますが、本書ではnmcliを用いた方法を中心に紹介します。
nmcli は NetworkManagerを操作するためのコマンドラインツールです。
図6.1「nmcli のコマンド書式」 に nmcli の書式を示します。このことから、nmcli は「オブジェクト(OBJECT)というものが存在し、それぞれのオブジェクトに対してコマンド(COMMAND)を実行する。」という書式でコマンドを入力することがわかります。また、オブジェクトそれぞれに help が用意されていることもここから読み取れます。
各オブジェクトについての詳しい情報は man nmcli を参照してください。
| |
---|
Armadillo-IoT には nmcli の他ユーザーフレンドリーな nmtui もインストールされていますが本書では取り扱いません。
|
ここでは nmcliの、基本的な使い方を説明します。
登録されているコネクションの一覧を確認するには、次のようにコマンドを実行します。
[]
コネクションを有効化するには、次のようにコマンドを実行します。
コネクションを無効化するには、次のようにコマンドを実行します。
コネクションを作成するには、次のようにコマンドを実行します。
[ID] にはコネクションの名前(任意)、[type] には ethernet, wifi といった接続タイプ、[interface name] にはインターフェース名(デバイス)を入力します。具体的なコネクションの作成方法はそれぞれのデバイスの章で説明します。
| |
---|
/etc/NetworkManager/system-connections/ に[ID] の名前でコネクションファイルが作成されます。これをviなどで編集しコネクションを修正することも可能です。
|
コネクションを削除するには、次のようにコマンドを実行します。
| |
---|
/etc/NetworkManager/system-connections/ のコネクションファイルも同時に削除されます。
|
具体的なコネクションの修正方法を紹介します。
| |
---|
無線LAN、3Gの設定情報をnmcli connection modify コマンドで編集すると、パスフレーズ情報がリセットされます。
編集する際は、都度パスフレーズも同時に設定してください。
無線LANのパスフレーズ設定方法は、「無線LAN」を参照してください。
3Gのパスフレーズ設定方法は、「3Gのコネクション設定を編集する場合の注意事項」を参照してください。
|
| |
---|
ネットワーク接続に関する不明な点については、ネットワークの管理者へ相談してください。
|
DHCPに設定する例を、図6.8「DHCP設定」に示します。
| |
---|
-ipv4.addresses のように、プロパティ名の先頭に '-' を付けることで設定したプロパティを削除することができます。反対に '+' を付けることでプロパティを追加することができます。
|
有効化されているコネクションをコネクションを修正した場合、かならず修正したコネクションを再度有効化してください。
デバイスの一覧(デバイス名、タイプ、状態、有効なコネクション)を確認するには、次のようにコマンドを実行します。
[]
デバイスを接続するには、次のようにコマンドを実行します。
| |
---|
デバイスを接続するには、接続しようとしているデバイスの有効なコネクションが必要です。"Error: neither a valid connection nor device given" というメッセージが表示された場合には、nmcli connectionなどで有効なコネクションがあるかを確認してください。
|
デバイスを切断するには、次のようにコマンドを実行します。
ここでは有線LANの使用方法について説明します。
6.2.4.1. 有線LANインターフェース(eth0)のコネクションの作成
有線LANインターフェース用のコネクションを作成するには、次のようにコマンドを実行します。
有線LANで正常に通信が可能か確認します。設定を変更した場合、かならず変更したインターフェースを再度有効化してください。
同じネットワーク内にある通信機器とPING通信を行います。以下の例では、通信機器が「192.0.2.20」というIPアドレスを持っていると想定しています。
| |
---|
有線LAN以外のコネクションが有効化されている場合、ネットワーク通信に有線LANが使用されない場合があります。確実に有線LANの接続確認をする場合は、事前に有線LAN以外のコネクションを無効化してください。
|
ここでは、Armadillo-IoT に搭載されている無線LANモジュールの使用方法について説明します。
例として、WPA2-PSK(AES)のアクセスポイントに接続します。WPA2-PSK(AES)以外のアクセスポイントへの接続方法などについては、man nm-settings を参考にしてください。また、以降の説明では、アクセスポイントのESSIDを[essid] 、パスフレーズを[passphrase] と表記します。
6.2.5.1. 無線LANアクセスポイントに接続する
無線LANアクセスポイントに接続するためには、次のようにコマンドを実行します。
6.2.5.2. 無線LAN(wlan0)のコネクションの作成
「無線LANアクセスポイントに接続する」方法は簡単ですが、この方法はDHCPにしか対応していません。そのため、無線LANを固定IPにする場合や、細かなネットワーク設定を行うためにはコネクションから作成する必要があります。
無線LAN(wlan0)のコネクションの作成するためには、次のようにコマンドを実行します。
| type を wifi に設定し、無線LANのコネクションを作成します。 | | 暗号化キー管理方式を wpa-psk に設定します。 | | パスフレーズを設定します。 |
| |
---|
接続先のアクセスポイントによっては、以下のようなメッセージが出力され、アクセスポイントに接続できないことがあります。
|
無線LANで正常に通信が可能か確認します。
同じネットワーク内にある通信機器とPING通信を行います。以下の例では、通信機器が「192.0.2.20」というIPアドレスを持っていると想定しています。
| |
---|
無線LAN以外のコネクションが有効化されている場合、ネットワーク通信に無線LANが使用されない場合があります。確実に無線LANの接続確認をする場合は、事前に無線LAN以外のコネクションを無効化してください。
|
ここでは、Armadillo-IoT に搭載されている 3Gモジュール「Gemalto製3G通信モジュールPDS6-J」の使用方法について説明します。
| |
---|
3Gモジュール「Gemalto製3G通信モジュールPDS6-J」はドコモ相互接続性試験を完了しています。
|
3Gデータ通信を利用するには、通信事業者との契約が必要です。契約時に通信事業者から貸与されたmicroSIM(UIMカード)とAPN情報を準備します。
| |
---|
Armadillo-IoTの電源が切断されていることを確認してからmicroSIM(UIMカード)を取り付けてください。
|
| |
---|
本製品は、microSIMスロットを搭載しています。
SIM変換アダプタを利用したnanoSIM、標準サイズのSIMカードをmicroSIMサイズにカットしたもの、サイズの異なるものを使用すると、microSIMスロットが故障する原因となります。
これらを使用し本製品が故障した場合は、保証期間内であっても保証適用外となります。
|
microSIM(UIMカード)の切り欠きを挿入方向と反対側に向け、刻印面を上にして挿入してください。
APNの設定を行うには、次に示す情報が必要です。
APN ユーザー名 パスワード 認証方式(PAP または CHAP) PDP Type(IPのみをサポート)
3Gで正常に通信が可能か確認します。
アットマークテクノのWebサーバーとPING通信を行います。VPN接続を利用するなどインターネットに接続できない場合は、ネットワーク内の通信機器に読み替えてください。
| |
---|
3G以外のコネクションが有効化されている場合、ネットワーク通信に3Gが使用されない場合があります。確実に3Gの接続確認をする場合は、事前に3Gのコネクションを無効化してください。
|
| |
---|
図6.21「3Gのコネクションの作成」でコネクションを作成しても、コネクションを有効化できない状態になることがあります。
正しいAPN情報を設定していてもコネクションを有効化できない場合は、以下のようにしてPDS6-Jのリセットを行った後、コネクションを有効化できることがあります。
手順6.1 PDS6-Jのリセット方法
NetworkManagerとModemManagerを終了します。
PDS6-Jをリセットするため、/dev/ttyACM0に接続し、ATコマンドを実行します。
| ATコマンドを実行します。 |
NetworkManagerとModemManagerを起動します。
|
nmcliコマンドでデータ通信の終了を行う前に、3G再接続サービスを停止します。3G再接続サービスを停止せずにデータ通信の終了を実行した場合、同機能によって再度データ接続が開始されます。
3G再接続サービスを停止したのち、データ通信を終了します。
6.2.6.4.3. 3Gのコネクション設定を編集する場合の注意事項
3Gの設定情報をnmcli connection modify コマンドで編集する場合、パスワード情報がリセットされます。次に示すコマンドを実行し、都度パスワードを再設定してください。
3G再接続サービスは3Gのデータ接続の状態を定期的に監視し、切断を検出した場合に再接続を行うサービスです。atmark-x1-base v1.5.0-1以降(ルートファイルシステム: debian-jessie-armhf_aiotg3_20170419.tar.gz以降)で対応しています。
microSIMが接続されており、NetworkManagerの有効な3Gのコネクション設定がされているとき、120秒に一度、コネクションの状態を監視します。
コネクションが無効になっている場合、切断状態と判定しコネクションを有効にします。コネクションが有効になっている場合、特定の宛先にPINGを実行します。PINGがエラーになったとき切断状態と判定し、コネクションの無効化・有効化を行うことで再接続を実施します。
コネクションの無効化・有効化による再接続が2回以上失敗した場合、3Gモジュールの動作異常と判断し、3Gモジュールの電源をOFF・ONして再接続を実施します。
工場出荷状態で有効化されており、システム起動時にサービスが自動的に開始されます。PINGを実行する宛先は、デフォルトで"8.8.8.8"です。ご利用の環境に合わせて設定ファイル(/etc/connection-recover/gsm-ttyACM3_connection-recover.conf)を適宜変更してください。
3G再接続サービスを停止するには、次に示すコマンドを実行してください。
3G再接続スクリプトを開始するには、次に示すコマンドを実行してください。
6.2.6.6. ModemManager について
ここでは ModemMamager と、mmcli について説明します。
Armadillo-IoT にはネットワークを管理する NetworkManager とは別に、モデムを管理する ModemManager がインストールされています。
ModemManager はモバイルブロードバンドデバイス(3Gモジュールなど)の操作および、接続状況の管理などを行います。
ModemManager のコマンドラインツールである mmcli を使用することで、3G通信の電波強度やSIMカードの情報(電話番号やIMEIなど)を取得することが可能です。mmcli の詳しい使いかたについては man mmcli を参照してください。
6.2.6.6.1. 認識されているモデムの一覧を取得する認識されているモデムの一覧を取得するには、次のようにコマンドを実行します。 モデムの状態を取得するには、次のようにコマンドを実行します。 | |
---|
モデムの情報を取得するには、microSIMが取り付けられている必要があります。正しくmicroSIMが取り付けられていることを確認してください。
|
6.2.6.6.3. microSIMの情報を取得するmicroSIMの情報を取得するには、次のようにコマンドを実行します。 回線情報を取得するには、次のようにコマンドを実行します。 6.2.7. NetworkManagerによる設定例
ここでは、図6.33「ネットワーク構成図」を例にとってNetworkManagerを使った設定例を紹介します。
表6.4 ネットワークのアドレス情報 ノード名 | ネットワークデバイス | IPアドレス | ネットワークアドレス |
---|
Armadillo | eth0 | 192.168.0.2 | 192.168.0.0/24 | wlan0 | 172.16.xxx.xxx[] | 172.16.0.0/16[] | ttyACM3[] | xxx.xxx.xxx.xxx[] | xxx.xxx.xxx.xxx[] | Router | eth0 | 192.168.0.1 | 192.168.0.0/24 | eth1 | 192.168.10.1 | 192.168.10.0/24 | Server | eth0 | 192.168.10.2 | 192.168.10.0/24 | Access Point | eth0 | 172.16.0.1 | 172.16.0.0/16 |
図6.33「ネットワーク構成図」に示すネットワークを構築する際のネットワーク設定手順は以下のようになります。なお、作成したコネクションは/etc/NetworkManager/system-connections/ に保存され、Armadilloの再起動後も有効化されます。
手順6.2 ネットワーク設定手順
eth0, ttyACM3, wlan0の状態がdisconnectedになっていることを確認します。
disconnected以外の状態になっていた場合、表6.5「デバイスの状態をdisconnectedにする方法」に従い、各デバイスの状態をdisconnectedにしてください。
表6.5 デバイスの状態をdisconnectedにする方法 デバイスの状態 | 対処方法 |
---|
unmanaged | /etc/network/interfaces にデバイスの設定が記述されていないか確認してください。記述されていた場合は、その記述を削除してください。 | unavailable | LANケーブルが抜けていないか確認してください。抜けていた場合、LANケーブルを接続してください。 | connecting | デバイスを使用したコネクションを有効化する処理が実行されています。図6.4「コネクションの無効化」を参照してコネクションを無効化してください。 | connected | デバイスを使用してコネクションが有効化されています。図6.4「コネクションの無効化」を参照してコネクションを無効化してください。 |
無線 LAN(wlan0)の設定を行います。
有線 LAN インターフェース(eth0)の設定を行います。
3G(ttyACM3)の設定を行います。
eth0, ttyACM3, ppp0, wlan0の状態がconnectedになっていることを確認します。
ルーティングテーブルを確認します。
Armadilloでは、簡易ファイアーウォールが動作しています。設定されている内容を参照するには、図6.34「iptables」のようにコマンドを実行してください。
工場出荷イメージで利用することができるネットワークアプリケーションについて説明します。
| |
---|
ATDEとArmadilloのネットワーク設定がデフォルト状態であることを想定して記述しています。ネットワーク設定を変更している場合は適宜読み換えてください。
|
Armadilloでは、HTTPサーバーが動作しています。ATDEなどのPCのWebブラウザからArmadilloのURL (http://[ArmadilloのIPアドレス]/ にアクセスすると、lighttpdのトップページ(index.html)が表示されます。
Armadillo-IoT でストレージとして使用可能なデバイスを次に示します。
表6.6 ストレージデバイス デバイス種類 | ディスクデバイス | 先頭パーティション | インターフェース |
---|
SD/SDHC/SDXCカード | /dev/mmcblk* [] | /dev/mmcblk*p1 | SDインターフェース(CON4) | USBフラッシュメモリ | /dev/sd* [] | /dev/sd*1 | USB ホストインターフェース(CON7) |
ここでは、SDHCカードを接続した場合を例にストレージの使用方法を説明します。以降の説明では、共通の操作が可能な場合に、SD/SDHC/SDXCカードをSDカードと表記します。
| |
---|
SDXC/microSDXCカードを使用する場合は、事前に「ストレージのパーティション変更とフォーマット」を参照してフォーマットを行う必要があります。これは、LinuxカーネルがexFATファイルシステムを扱うことができないためです。通常、購入したばかりのSDXC/microSDXCカードはexFATファイルシステムでフォーマットされています。
|
Linuxでは、アクセス可能なファイルやディレクトリは、一つの木構造にまとめられています。あるストレージデバイスのファイルシステムを、この木構造に追加することを、マウントするといいます。マウントを行うコマンドは、mountです。
mountコマンドの典型的なフォーマットは、次の通りです。
-t オプションに続くfstype には、ファイルシステムタイプを指定します[]。FAT32ファイルシステムの場合はvfat []、EXT4ファイルシステムの場合はext4 を指定します。
device には、ストレージデバイスのデバイスファイル名を指定します。SDカードのパーティション1の場合は/dev/mmcblk0p1 、パーティション2の場合は/dev/mmcblk0p2 となります。
dir には、ストレージデバイスのファイルシステムをマウントするディレクトリを指定します。
SDスロットにSDHCカードを挿入した状態で図6.37「ストレージのマウント」に示すコマンドを実行すると、/mntディレクトリにSDHCカードのファイルシステムをマウントします。SDカード内のファイルは、/mntディレクトリ以下に見えるようになります。
ストレージを安全に取り外すには、アンマウントする必要があります。アンマウントを行うコマンドは、umountです。オプションとして、アンマウントしたいデバイスがマウントされているディレクトリを指定します。
6.3.2. ストレージのパーティション変更とフォーマット
通常、購入したばかりのSDHCカードやUSBメモリは、一つのパーティションを持ち、FAT32ファイルシステムでフォーマットされています。
パーティション構成を変更したい場合、fdiskコマンドを使用します。fdiskコマンドの使用例として、一つのパーティションで構成されているSDカードのパーティションを、2つに分割する例を図6.39「fdiskコマンドによるパーティション変更」に示します。一度、既存のパーティションを削除してから、新たにプライマリパーティションを二つ作成しています。先頭のパーティションには100MByte、二つめのパーティションに残りの容量を割り当てています。先頭のパーティションは/dev/mmcblk0p1、二つめは/dev/mmcblk0p2となります。fdiskコマンドの詳細な使い方は、manページ等を参照してください。
FAT32ファイルシステムでストレージデバイスをフォーマットするには、mkfs.vfatコマンドを使用します。また、EXT3ではmkfs.ext3コマンドを、EXT4ではmkfs.ext4コマンドを使用します。SDカードのパーティション1をEXT4ファイルシステムでフォーマットするコマンド例を、次に示します。
Armadillo-IoT のLEDは、GPIOが接続されているためソフトウェアで制御することができます。
利用しているデバイスドライバはLEDクラスとして実装されているため、LEDクラスディレクトリ以下のファイルによってLEDの制御を行うことができます。LEDクラスディレクトリと各LEDの対応を次に示します。
表6.7 LEDクラスディレクトリとLEDの対応 LEDクラスディレクトリ | インターフェース | デフォルトトリガ |
---|
/sys/class/leds/led1/ | ユーザーLED1 | default-on | /sys/class/leds/led2/ | ユーザーLED2 | default-on | /sys/class/leds/led3/ | ユーザーLED3 | none | /sys/class/leds/led4/ | ユーザーLED4 | none |
Armadillo-IoT の外観から見たユーザーLEDの位置を次に示します。
以降の説明では、任意のLEDを示すLEDクラスディレクトリを"/sys/class/leds/[LED] "のように表記します。
LEDクラスディレクトリ以下のbrightnessファイルへ値を書き込むことによって、LEDの点灯/消灯を行うことができます。brightnessに書き込む有効な値は0〜255です。
brightnessに0以外の値を書き込むとLEDが点灯します。
| |
---|
Armadillo-IoT のLEDには輝度制御の機能が無いため、0 (消灯)、1〜255 (点灯)の2つの状態のみ指定することができます。
|
brightnessに0を書き込むとLEDが消灯します。
brightnessを読み出すとLEDの状態が取得できます。
LEDクラスディレクトリ以下のtriggerファイルへ値を書き込むことによってLEDの点灯/消灯にトリガを設定することができます。triggerに書き込む有効な値を次に示します。
表6.8 triggerの種類 設定 | 説明 |
---|
none | トリガを設定しません。 | mmc0 | SDインターフェース(CON4)のアクセスランプにします。 | mmc2 | eMMCのアクセスランプにします。 | timer | 任意のタイミングで点灯/消灯を行います。この設定にすることにより、LEDクラスディレクトリ以下にdelay_on, delay_offファイルが出現し、それぞれ点灯時間, 消灯時間をミリ秒単位で指定します。 | heartbeat | 心拍のように点灯/消灯を行います。 | default-on | 主にLinuxカーネルから使用します。LEDが点灯します。 |
以下のコマンドを実行すると、LEDが2秒点灯、1秒消灯を繰り返します。
triggerを読み出すとLEDのトリガが取得できます。"[ ]"が付いているものが現在のトリガです。
Armadillo-IoT は、Board Management ICのRTC機能を利用しています。
電源が切断されても時刻を保持させたい場合は、RTCバックアップインターフェース(CON13)に外付けバッテリー(対応バッテリー例: CR1220)を接続することができます。
Linuxの時刻には、Linuxカーネルが管理するシステムクロックと、RTCが管理するハードウェアクロックの2種類があります。RTCに時刻を設定するためには、まずシステムクロックを設定します。その後に、ハードウェアクロックをシステムクロックと一致させる手順となります。
システムクロックは、dateコマンドを用いて設定します。dateコマンドの引数には、設定する時刻を[MMDDhhmmCCYY.ss]というフォーマットで指定します。時刻フォーマットの各フィールドの意味を次に示します。
表6.9 時刻フォーマットのフィールド フィールド | 意味 |
---|
MM | 月 | DD | 日(月内通算) | hh | 時 | mm | 分 | CC | 年の最初の2桁(省略可) | YY | 年の最後の2桁(省略可) | ss | 秒(省略可) |
2015年6月2日12時34分56秒に設定する例を次に示します。
| |
---|
Armadillo-IoTが接続しているネットワーク内にタイムサーバーがある場合は、NTP(Network Time Protocol)クライアントを利用してシステムクロックを設定することができます。
|
システムクロックを設定後、ハードウェアクロックをhwclockコマンドを用いて設定します。
Armadillo-IoT のユーザースイッチのデバイスドライバは、インプットデバイスとして実装されています。インプットデバイスのデバイスファイルからボタンプッシュ/リリースイベントを取得することができます。
ユーザースイッチのインプットデバイスファイルと、各スイッチに対応したイベントコードを次に示します。
表6.10 インプットデバイスファイルとイベントコード ユーザースイッチ | インプットデバイスファイル | イベントコード |
---|
SW1 | /dev/input/event1 | 2 (KEY_1) | SW2 | 3 (KEY_2) | SW3 | 4 (KEY_3) |
| |
---|
インプットデバイスは検出された順番にインデックスが割り振られます。USBデバイスなどを接続してインプットデバイスを追加している場合は、デバイスファイルのインデックスが異なる可能性があります。
|
ユーザースイッチのボタンプッシュ/リリースイベントを確認するために、ここではevtest コマンドを利用します。evtest を停止するには、Ctrl+c を入力してください。
Armadillo-IoTの温度センサーは、i.MX 7DualのTEMPMON(Temperature Monitor)を利用しています。
/sys/class/thermal/thermal_zone1/temp ファイルの値を読み出すことによって、i.MX 7Dualの測定温度を取得することができます。
Armadillo-IoTのLinuxカーネルは、「温度センサ」に記載されているように、i.MX 7Dualの温度が105℃以上になるとシステムを停止します。高温環境で使用した場合でも、温度が105℃以上にならないように発熱を抑える必要があります。thermal-monitor を使用することで、i.MX 7Dualの温度を監視し、アプリケーションの制御によって発熱を抑えることができます。
thermal-monitor は、指定した温度に達した場合に、任意のコマンドを実行できる状態監視アプリケーションです。インストール後、システム起動時にサービスが自動で開始されるようになります。
thermal-monitor は、次のコマンドでインストールすることができます。
設定ファイル/etc/systemd/thermal-monitor.conf で、以下の設定を行うことができます。
表6.11 thermal-monitor 設定ファイル 項目 | 説明 | 初期値 |
---|
POLL_INTERVAL | 温度の測定周期を秒単位で指定します。 | 3 | UPPER_TEMP | UPPER_TEMP_CMDを実行する上方しきい値をミリ°C単位で指定します。 | 95000 | LOWER_TEMP | LOWER_TEMP_CMDを実行する下方しきい値をミリ°C単位で指定します。 | 90000 | UPPER_TEMP_CMD | 上方しきい値以上になった時に実行するコマンドを指定します。 | 未設定 | LOWER_TEMP_CMD | 下方しきい値以下になった時に実行するコマンドを指定します。 | 未設定 |
| |
---|
UPPER_TEMPとLOWER_TEMPの関係は、図6.52「UPPER_TEMPとLOWER_TEMP」のようになります。
図中の丸印は、コマンドが実行されるタイミングを示しています。赤い丸印のタイミングでUPPER_TEMP_CMDを実行します。緑色の丸印のタイミングでLOWER_TEMP_CMDを実行します。UPPER_TEMP_CMDとLOWER_TEMP_CMDは、必ず交互に実行されます。
設定を行う際、UPPER_TEMPはLOWER_TEMPより高く設定して下さい。また、UPPER_TEMPは105℃より高く設定しても、コマンドが実行されないので注意して下さい。
|
| |
---|
thermal-monitor のログは/var/log/messages ファイルに出力されます。
また、UPPER_TEMP_CMD、LOWER_TEMP_CMDに指定したコマンドが、実行に失敗した場合は、/var/log/syslog ファイルに、エラーログが出力されます。
|
例として、i.MX 7Dualの温度がUPPER_TEMP以上になった時に有線LANの通信速度を100Mpbs、LOWER_TEMP以下になった時に1000Mpbsへ変更する方法を表記します。
有線LANの通信速度を変更するために、Armadillo に ethtoolを インストールします。 Armadillo のコンソールで次のコマンドを実行してください。
/etc/systemd/thermal-monitor.conf の設定を行います。
thermal-monitor を再起動し、/etc/systemd/thermal-monitor.conf の設定を反映します。
| |
---|
有線LANの通信速度を制限することによる温度上昇を抑えるための対策は、あくまでサンプルであり、実際の運用を行う際は、お客様の環境に合わせて適切な温度設定や対策を行ってください。
|
Armadillo-IoT G3は、BMIC(Board Management IC)のADコンバーター機能により、電源電圧およびRTCバックアップインターフェース(CON13)に接続された外付けバッテリーの電圧を取得することができます。
電源電圧は、分圧されてADコンバーターへ入力されています。電源電圧を取得するためには、まずADコンバーターへの入力電圧を取得する必要があります。
外部バッテリーの電圧は分圧されていないため、ADコンバーターの入力電圧がそのまま外部バッテリーの電圧となります。
ADコンバーターは IIO(Industrial I/O) デバイスとして実装しています。
/sys/bus/iio/devices/iio:device0/ ディレクトリ以下のファイルから入力電圧を算出することができます。
| |
---|
IIO デバイスは、デバイスを認識した順番で iio:deviceN (N は'0'からの連番)となります。IIO デバイスは、IIOデバイス名から特定することができます。BMICのADコンバーターの IIO デバイス名は "3-0012"です。
|
ADコンバータへの入力電圧は、AD変換値と最小入力電圧変動から算出する事ができます。
/sys/bus/iio/devices/iio:device0/ ディレクトリ以下にある、入力電圧の算出に必要なファイルを次に示します。
表6.12 入力電圧の算出に必要なファイル ファイル | 説明 |
---|
in_voltage0_raw | シングルエンド入力 CH0(電源電圧)のAD変換値 | in_voltage1_raw | シングルエンド入力 CH1(外部バッテリー電圧)のAD変換値 | in_voltage_scale | シングルエンド入力の最小入力電圧変動 |
例として、電源電圧の取得方法について記載します。
図6.57「ADコンバーターへの入力電圧を取得する」の例では、ADコンバーターの入力電圧は、約 1.261V (1766 × 0.714111328 [mV])である事がわかります。
ADコンバーターへの入力電圧から、電源電圧を求める計算式を次に示します。
図6.57「ADコンバーターへの入力電圧を取得する」を例にとると、ADコンバーターの入力電圧1.261Vから、電源電圧は約11.770Vであることを求めることができます。
| |
---|
awk コマンドを利用して、次のように電源電圧を表示することができます。
|
vintrigger コマンドを利用して、電源電圧が指定した電圧になった場合に任意のコマンドを実行させることができます。
| |
---|
vintrigger を複数起動することはできません。
|
vintrigger コマンドのヘルプは次の通りです。
30秒間隔で電源電圧を監視し、11000mV(11V)以下になった場合に、LED2を点灯させる例を次に示します。
| |
---|
vintrigger コマンドのログは/var/log/syslog 及び/var/log/daemon.log ファイルに出力されます。
|
6.9. Armadillo-IoT RS232Cアドオンモジュール RS00
Armadillo-IoT RS232Cアドオンモジュール RS00(以降、RS232Cアドオンモジュールと記載します)は RS232C レベルのシリアルポートが 1 ポート搭載されています。RS232Cアドオンモジュールのシリアルポートのデバイスドライバは、TTYデバイスとして実装されているためTTYデバイスファイルから制御を行うことができます。RS232Cアドオンモジュールの詳細は「Armadillo-IoT RS232Cアドオンモジュール RS00」を参照して下さい。
RS232Cアドオンモジュールを接続するアドオンインターフェースと、TTYデバイスファイルの対応を次に示します。
表6.13 アドオンインターフェースとTTYデバイスファイル アドオンインターフェース | TTYデバイスファイル |
---|
CON1 | /dev/ttymxc0 | CON2 | /dev/ttymxc1 |
| |
---|
工場出荷状態の開発セットは、CON1にRS232Cアドオンモジュールが接続されています。
|
| |
---|
RS232Cアドオンモジュールが接続されているアドオンインターフェースは、Linuxカーネルの起動ログで確認することができます。CON1に接続されている場合は次のように出力されます。
|
| |
---|
Linuxカーネル 3.14.38-at2以前(カーネルイメージ uImage-x1-v2.00以前)をご利用の場合、ソフトウェアの制約により、利用可能な最大ボーレートは 1500000 [Baud] となります。
|
6.10. Armadillo-IoT 絶縁RS232C/422/485アドオンモジュール RS01
Armadillo-IoT 絶縁RS232C/422/485アドオンモジュール RS01(以降、絶縁シリアルアドオンモジュールと記載します)は、電気的に絶縁された RS232C/RS422/RS485 のシリアルポートが 1 ポート登載されています。絶縁シリアルアドオンモジュールのシリアルポートのデバイスドライバは、TTYデバイスとして実装されているためTTYデバイスファイルから制御を行うことができます。絶縁シリアルアドオンモジュールの詳細は「Armadillo-IoT 絶縁RS232C/422/485アドオンモジュール RS01」を参照して下さい。
絶縁シリアルアドオンモジュールを接続するアドオンインターフェースと、TTYデバイスファイルの対応を次に示します。
表6.14 アドオンインターフェースとTTYデバイスファイル アドオンインターフェース | TTYデバイスファイル |
---|
CON1 | /dev/ttymxc0 | CON2 | /dev/ttymxc1 |
| |
---|
絶縁シリアルアドオンモジュールが接続されているアドオンインターフェースは、Linuxカーネルの起動ログで確認することができます。CON1に接続されている場合は次のように出力されます。
|
| |
---|
Linuxカーネル 3.14.38-at2以前(カーネルイメージ uImage-x1-v2.00以前)をご利用の場合、ソフトウェアの制約により、利用可能な最大ボーレートは 1500000 [Baud] となります。
|
6.10.1. RS422/RS485の通信設定を変更する
Armadillo-IoTに電源を投入する前に 絶縁シリアルアドオンモジュール:SW1.1をOFFに設定すると、TTYデバイスのRS485設定が自動的に有効化されます。
| |
---|
Armadillo-IoTの電源投入後に 絶縁シリアルアドオンモジュール:SW1.1の設定を変更しないでください。故障の原因となる可能性があります。
|
変更が可能なRS485設定と、自動的に有効化された場合の初期値を表6.15「RS485設定と初期値」に示します。flagsは各ビットごとの論理和を示します。
表6.15 RS485設定と初期値 設定 | 説明 | 初期値 |
---|
flags | ENABLED(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.16 Linuxカーネル起動オプションからのRS485設定 オプション指定子 | 説明 |
---|
imx.rs485_uart1= |
CON1に接続されているUART1(ttymxc0)のRS485設定を指定します。
| imx.rs485_uart2= |
CON2に接続されているUART2(ttymxc1)のRS485設定を指定します。
|
RS485設定のフォーマットは次の通りです。
例として、CON2に接続した絶縁シリアルアドオンモジュールのRS485設定を全二重通信にする場合は、保守モードで起動してから次のようにコマンドを実行してください。
6.11. Armadillo-IoT RN4020アドオンモジュール BT00
Armadillo-IoT RN4020アドオンモジュール BT00(以降、RN4020アドオンモジュールと記載します)は Microchip製 RN4020が搭載されています。RN4020は、Bluetooth(R) version 4.1に対応しており、Bluetooth Low Energy 4.1 プロトコルスタックが内蔵されています。RN4020アドオンモジュールの詳細は「Armadillo-IoT RN4020アドオンモジュール BT00」を参照して下さい。
RN4020アドオンモジュールは、TTY デバイスファイルからASCIIコマンドを使用した制御を行うことができます。RN4020アドオンモジュールを接続するアドオンインターフェースと、TTYデバイスファイルの対応を次に示します。
表6.17 アドオンインターフェースとTTYデバイスファイル アドオンインターフェース | TTYデバイスファイル |
---|
CON1 | /dev/ttymxc0 | CON2 | /dev/ttymxc1 |
| |
---|
RN4020アドオンモジュールが接続されているアドオンインターフェースは、Linuxカーネルの起動ログで確認することができます。CON1に接続されている場合は次のように出力されます。
|
RN4020アドオンモジュールを制御する例として、RN4020 の設定情報の取得を行います。
アドオンインターフェース(CON2)に接続したRN4020アドオンモジュールに搭載されているRN4020の設定情報を取得する手順を次に示します。
手順6.3 設定情報の取得
cu コマンドを実行して/dev/ttymxc0 に接続します。ボーレートは115200bpsです。
D (Dump configuration)コマンドを実行すると、RN4020の設定情報が表示されます。
まず、入力したコマンドを表示するために、Ctrl+aに続けてeを入力して下さい。
Dコマンドを実行すると、以下のように設定情報が取得できます。
cu を終了するには、"~."(チルダ「~」に続いてドット「.」)を入力します。
| |
---|
cuで設定情報を取得するには、atmark-x1-base v1.1.0以降を使用する必要があります。以下いずれかの方法で使用可能です。
次に示すコマンドを実行し、atmark-x1-baseを最新版にする
debian-jessie-armhf_aiotg3_20160705.tar.gz 以降のルートファイルシステムを使用する
x1-debian-builder v1.1.0以上を使用して作成したルートファイルシステムを使用する
|
その他の ASCII コマンドや、RN4020 の詳細な情報については Microchip製ドキュメントを参照してください。
6.12. Armadillo-IoT EnOceanアドオンモジュール EN00
Armadillo-IoT EnOceanアドオンモジュール EN00(以降、EnOceanアドオンモジュールと記載します)は コアスタッフ製 BP35A3 又は CS35A3が搭載されています。BP35A3/CS35A3にはEnOcean無線トランシーバーTCM410Jが搭載されています。EnOceanアドオンモジュールの詳細は「Armadillo-IoT EnOceanアドオンモジュール EN00」を参照して下さい。
EnOceanアドオンモジュールは、TTY デバイスファイルからEnOcean Serial Protocol 3(ESP3)で通信することができます。EnOceanアドオンモジュールを接続するアドオンインターフェースと、TTYデバイスファイルの対応を次に示します。
表6.18 アドオンインターフェースとTTYデバイスファイル アドオンインターフェース | TTYデバイスファイル |
---|
CON1 | /dev/ttymxc0 | CON2 | /dev/ttymxc1 |
| |
---|
EnOceanアドオンモジュールが接続されているアドオンインターフェースは、Linuxカーネルの起動ログで確認することができます。CON1に接続されている場合は次のように出力されます。
|
6.12.1. EnOcean無線データを受信する
EnOcean無線データを受信する例として、ROHM製スイッチモジュール PTM 210Jを使用します
アドオンインターフェース(CON1)に接続したEnOceanアドオンモジュールで受信する手順を次に示します。
手順6.4 EnOcean無線データの受信
stty コマンドを実行してTTY デバイスの通信設定を行います。ボーレートは57600bpsです。
hexdump コマンドを実行して受信データを16進数でダンプします。
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アドオンモジュールの詳細は「Armadillo-IoT Wi-SUNアドオンモジュール WS00」を参照して下さい。
Wi-SUNアドオンモジュールは、TTY デバイスファイルからASCIIコマンドを使用した制御を行うことができます。Wi-SUNアドオンモジュールを接続するアドオンインターフェースと、TTYデバイスファイルの対応を次に示します。
表6.19 アドオンインターフェースとTTYデバイスファイル アドオンインターフェース | TTYデバイスファイル |
---|
CON1 | /dev/ttymxc0 | CON2 | /dev/ttymxc1 |
| |
---|
Wi-SUNアドオンモジュールが接続されているアドオンインターフェースは、Linuxカーネルの起動ログで確認することができます。CON1に接続されている場合は次のように出力されます。
|
Wi-SUNアドオンモジュールを制御する例として、BP35A1 の設定情報の取得を行います。
アドオンインターフェース(CON1)に接続したWi-SUNアドオンモジュールに搭載されているBP35A1の設定情報を取得する手順を次に示します。
手順6.5 設定情報の取得
cu コマンドを実行して/dev/ttymxc0 に接続します。ボーレートは115200bpsです。
SKINFOコマンドを実行すると、BP35A1 の設定情報が表示されます。
cu を終了するには、"~."(チルダ「~」に続いてドット「.」)を入力します。
| |
---|
cuで設定情報を取得するには、atmark-x1-base v1.1.0以降を使用する必要があります。以下いずれかの方法で使用可能です。
次に示すコマンドを実行し、atmark-x1-baseを最新版にする
debian-jessie-armhf_aiotg3_20160705.tar.gz 以降のルートファイルシステムを使用する
x1-debian-builder v1.1.0以上を使用して作成したルートファイルシステムを使用する
|
その他の ASCII コマンドや、BP35A1 の詳細な情報については ROHM 製ドキュメントを参照してください。
6.14. Armadillo-IoT 絶縁RS485アドオンモジュール RS02
Armadillo-IoT 絶縁RS485アドオンモジュール RS02(以降、絶縁 RS485アドオンモジュールと記載します)は、電気的に絶縁された RS422/RS485 のシリアルポートが 1 ポート登載されています。絶縁 RS485アドオンモジュールのシリアルポートのデバイスドライバは、TTYデバイスとして実装されているためTTYデバイスファイルから制御を行うことができます。絶縁RS485アドオンモジュールの詳細は「Armadillo-IoT 絶縁RS485アドオンモジュール RS02」を参照して下さい。
絶縁 RS485アドオンモジュールを接続するアドオンインターフェースと、TTYデバイスファイルの対応を次に示します。
表6.20 アドオンインターフェースとTTYデバイスファイル アドオンインターフェース | TTYデバイスファイル |
---|
CON1 | /dev/ttymxc0 | CON2 | /dev/ttymxc1 |
| |
---|
絶縁 RS485アドオンモジュールが接続されているアドオンインターフェースは、Linuxカーネルの起動ログで確認することができます。CON1に接続されている場合は次のように出力されます。
|
| |
---|
Linuxカーネル 3.14.38-at2以前(カーネルイメージ uImage-x1-v2.00以前)をご利用の場合、ソフトウェアの制約により、利用可能な最大ボーレートは 1500000 [Baud] となります。
|
6.14.1. RS422/RS485の通信設定を変更する
TTYデバイスのRS485設定は自動的に有効化されます。
変更が可能なRS485設定と、自動的に有効化された場合の初期値を表6.15「RS485設定と初期値」に示します。flagsは各ビットごとの論理和を示します。
表6.21 RS485設定と初期値 設定 | 説明 | 初期値 |
---|
flags | ENABLED(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.22 Linuxカーネル起動オプションからのRS485設定 オプション指定子 | 説明 |
---|
imx.rs485_uart1= |
CON1に接続されているUART1(ttymxc0)のRS485設定を指定します。
| imx.rs485_uart2= |
CON2に接続されているUART2(ttymxc1)のRS485設定を指定します。
|
RS485設定のフォーマットは次の通りです。
例として、CON2に接続した絶縁 RS485 アドオンモジュールのRS485設定を全二重通信にする場合は、保守モードで起動してから次のようにコマンドを実行してください。
6.15. Armadillo-IoT 絶縁デジタル入出力/アナログ入力アドオンモジュール DA00
Armadillo-IoT 絶縁デジタル入出力/アナログ入力アドオンモジュール DA00(以降、絶縁 IO アドオンモジュールと記載します)は、電気的に絶縁されたデジタル入力2 ポート、デジタル出力 2 ポートと 0~5V のアナログ入力 2 ポートを追加することができます。絶縁IOアドオンモジュールの詳細は「Armadillo-IoT 絶縁デジタル入出力/アナログ入力アドオンモジュール DA00」を参照して下さい。
絶縁 IO アドオンモジュールのデジタル入出力のデバイスドライバは GPIO、アナログ入力のデバイスドライバは IIO(Industrial I/O) デバイスとして実装しています。
絶縁 IO アドオンモジュールを接続するアドオンインターフェースと、GPIO クラスディレクトリの対応を表6.23「アドオンインターフェースとGPIO クラスディレクトリ」に示します。IIO デバイスは、デバイスを認識した順番で iio:deviceN (N は'0'からの連番)となります。
表6.23 アドオンインターフェースとGPIO クラスディレクトリ アドオンインターフェース | ポート | GPIO クラスディレクトリ |
---|
CON1 | デジタル出力 1 | /sys/class/gpio/gpio89 | デジタル出力 2 | /sys/class/gpio/gpio90 | デジタル入力 1 | /sys/class/gpio/gpio141 | デジタル入力 2 | /sys/class/gpio/gpio140 | CON2 | デジタル出力 1 | /sys/class/gpio/gpio106 | デジタル出力 2 | /sys/class/gpio/gpio107 | デジタル入力 1 | /sys/class/gpio/gpio181 | デジタル入力 2 | /sys/class/gpio/gpio180 |
| |
---|
絶縁 IO アドオンモジュールが接続されているアドオンインターフェースは、Linuxカーネルの起動ログで確認することができます。CON2に接続されている場合は次のように出力されます。
|
GPIOクラスディレクトリ以下のvalueファイルに値を書き込むことによって、出力状態を設定することができます。"0"は開放、"1"は短絡を表わします。
アドオンインターフェース(CON2)に接続した絶縁 IO アドオンモジュールのデジタル出力 1を開放に設定する例を次に示します。
GPIOクラスディレクトリ以下のvalueファイルから値を読み出すことによって、入力状態を取得することができます。"0"はGND_ISOとの短絡。"1"は開放または3.15V以上印加を表わします。
アドオンインターフェース(CON2)に接続した絶縁 IO アドオンモジュールのデジタル入力 1の状態を取得する例を次に示します。
/sys/bus/iio/devices/iio:device1/ ディレクトリ以下のファイルから入力電圧を算出することができます。
| |
---|
IIO デバイスは、デバイスを認識した順番で iio:deviceN (N は'0'からの連番)となります。IIO デバイスは、IIOデバイス名から特定することができます。絶縁 IO アドオンモジュールに搭載しているADコンバーターの IIO デバイス名は "mcp3202"です。
|
ADコンバータへの入力電圧は、AD変換値と最小入力電圧変動から算出する事ができます。
/sys/bus/iio/devices/iio:device1/ ディレクトリ以下にある、入力電圧の算出に必要なファイルを次に示します。
表6.24 入力電圧の算出に必要なファイル ファイル | 説明 |
---|
in_voltage0_raw | シングルエンド入力 CH0のAD変換値 | in_voltage1_raw | シングルエンド入力 CH1のAD変換値 | in_voltage_scale | シングルエンド入力の最小入力電圧変動 | in_voltage0-voltage1_raw | 疑似差動入力のAD変換値 | in_voltage-voltage_scale | 疑似差動入力の最小入力電圧変動 |
シングルエンド入力 CH0への入力電圧を算出する例を次に示します。
図6.64「ADコンバーターへの入力電圧を取得する」の例では、シングルエンド入力 CH0への入力電圧は、2.5V (2048 × 1.220703125 [mV])である事がわかります。
| |
---|
awk コマンドを利用して、次のように電源電圧を表示することができます。
|
| |
|