Armadillo Base OS搭載のArmadillo製品で開発を行う方向けの基礎セミナーです。
コマンドラインで開発を行う手順で説明します。
ブログ
-
at_shinya.matsumoto
-
at_takuma.fukuda
IoTゲートウェイを様々なセンサや機器と接続して使用する際、 データを収集してサーバへアップロードするだけでなく、接続された機器への遠隔制御を行う場合、
Armadilloシリーズ製品ではどのようにその機能を実装すれば良いかをご紹介します。基本的な考え方
機器を制御するための処理を実装しておき、この処理を実行するためのトリガを遠隔から与えるという考え方です。
トリガの種別ごとにいくつかの方法をご紹介します。サーバに常時接続していない場合
Armadilloがサーバに常時接続していない場合、サーバで何らかの操作を行ってもArmadilloにはすぐには反映されません。
そこで、別途Armadilloにアクセスする手段を考える必要があります。 -
at_takuma.fukuda
Armadillo-IoT G4上でPostgreSQLを動作させるための手順をご紹介します。
-
at_takuma.fukuda
Armadillo-IoT G4の拡張インタフェースを使用して、温湿度センサとRS-485通信を行いました。
-
at_akihito.irie
アットマークテクノがArmadillo-IoT ゲートウェイ G4 上で動作確認できた機械学習モデルについての詳細をまとめた Armadillo-IoT G4 Model Zoo を公開しました。
概要
Armadillo-IoT G4 Model Zooでは動作確認済みの機械学習モデルについて、以下をまとめて紹介しています。
-
at_kazutaka.bito
Armadillo-IoT(A6)の開発/メンテナンス等に使用するデフォルトのコンソールは、RS232Cインタフェースに設定されています。
ここでは、コンソールを拡張インタフェースのUARTに変更する方法を説明します。
活用例)
RS232Cインタフェースをコンソールではなく、他機器とのシリアル通信にしたい場合
→コンソールを拡張インタフェースのUARTに変更し、RS232Cインタフェースを他機器とのシリアル通信専用にする
-
at_kazutaka.bito
Armadillo-640/IoT(A6)をネットワーク経由で、Webブラウザの画面から制御する方法です。
ここでは、lighttpd+php-cgiを使用します。
例として、WebブラウザからArmadillo-640/IoT(A6)の赤/緑LEDを制御します。 -
at_kazutaka.bito
Armadillo-X1:製品アップデート/ソフトバージョン相関早見表(Linux-4.9/Buster版)
(2022年6月時点) -
at_kazutaka.bito
Armadillo-640/610:製品アップデート/ソフトバージョン相関早見表(Linux-4.14/Buster版)
(2022年6月時点) -
at_takuma.fukuda
Armadillo-IoT G3のユーザランドと同等に操作できるコンテナイメージを作成する方法
-
at_takumi.mizutani
ファイル内文字列の加工
文字列の一部を置き換え、削除といった加工を行うにはsedコマンドを使用します。
文字列の置き換え
sedコマンドで"s/置換元/置換後/g"と記述することで文字列の置き換えを行うことができます。
以下の例では、Armadillo.txtから"G3"とマッチする箇所を"Degu_G3"と置き換えます。
-
at_takumi.mizutani
ファイル内文字列の検索(基本正規表現)
ファイル内の文字列を検索するにはgrepコマンドを使用します。
以下の例では、Armadillo.txtから"Armadillo-IoT"とマッチする行を検索します。
cオプションを使用するとマッチする行数を出力することもできます。
-
at_yosuke.moriyama
Armadillo-IoT A6を使ってセンサからのデータ収集・グラフ表示を行います。
-
at_takumi.mizutani
本記事で紹介する正規表現
本記事で紹介する正規表現の概要について下表にまとめます。
各正規表現の詳細な説明についてはその後に説明します。
-
at_shinya.matsumoto
本ブログはArmadillo Base OSに標準搭載されているSWUpdateで、簡易Webサーバーを用いてソフトウェアをリモートアップデートする方法を紹介します。
-
at_shinya.matsumoto
Armadillo-IoT G4のシリアルナンバーやArmadillo Base OSのバージョン及び、SWUpdateにおけるアップデートのバージョンの確認方法を説明します。
-
at_shiita.ishigaki
swupdate で使用する鍵を変更・追加する方法について本ブログに記載します。
-
at_takumi.mizutani
本記事で紹介する正規表現
本記事で紹介する正規表現の概要について下表にまとめます。
各正規表現の詳細な説明についてはその後に説明します。
-
at_takumi.mizutani
本記事で紹介する正規表現
本記事で紹介する正規表現の概要について下表にまとめます。
各正規表現の詳細な説明についてはその後に説明します。
-
at_takumi.mizutani
コマンドが存在するパスを調べるには、whichコマンドを使用します。
※ここでは例として、systemctlコマンドについて調べます。[armadillo ~]# which systemctl /usr/bin/systemctl
また、whereisコマンドを使用することで、指定したコマンドのマニュアル等が存在するパスも調べることができます。
[armadillo ~]# whereis systemctl systemctl: /usr/bin/systemctl /usr/share/man/man1/systemctl.1.gz
マニュアルのパスのみを調べる場合はman -wコマンドを使用します。
-
at_takumi.mizutani
Linuxコマンドのリファレンスマニュアルを表示するにはmanコマンドを使用します。
コマンドの概要のみを表示す場合にはwhatisコマンドを使用します。
※ここでは例として、systemctlコマンドについて調べます。 -
at_shiita.ishigaki
任意のメモリ空間にアクセスする方法として devmem2 を使用する方法がありますが、似た機能を持つコマンドとして **memtool** があります。 **memtool** は debian パッケージとして配布されているため、ビルドせずに使用することができます。
-
at_shinya.matsumoto
本ブログではSWUpdateでソフトウェアアップデートが実行される条件についてご説明します。
-
at_kazutaka.bito
Armadillo-IoT(G3):製品アップデート/ソフトバージョン相関早見表(Linux-4.9/Buster版)
(2022年6月時点) -
at_kazutaka.bito
SDブートを活用して、eMMC内のルートファイルシステムの一部を書き換える方法です。
活用例)
eMMC内のソフトが意図した動作をせず、起動途中で止まる、ログインできないなど操作不能の状態に陥った場合
→SDブートで起動して、eMMC内の問題となるソフトを停止、削除、正常なソフトに書き換える。 -
at_takuma.fukuda
Armadillo-640を使ってセンサからのデータ収集・グラフ表示を行います。 今回のデモは、node-redというツールを使って、極力プログラムを書かずに作成しています。 最低限のコマンド入力は必要になりますが、あまりソフトウェア開発に知見の無いユーザ様でも実践できるものとなっています。 また、機器構成についても市販品のみで構成しておりますので、簡単に構成を再現してお試しいただけるものとなっています。
-
at_kazutaka.bito
Armadillo-IoT(G3):製品アップデート/ソフトバージョン相関早見表(Linux-4.9/Stretch版)
(2022年6月時点) -
at_shiita.ishigaki
/etc/atmark/containers/*.conf を用意することで、podman コンテナの自動起動等、起動時のオプションを設定することができます。
.conf ファイルの書き方については、Armadillo-IoT G4 のマニュアルを参考にしてください。
podman_start コマンドを使用することで .conf ファイルに記載されている podman コンテナを起動することができます。
podman_start コマンドの使用方法を以下に示します。 -
at_shiita.ishigaki
.tar ファイルを使用して podman イメージを Armadillo-IoT G4 に入れる方法として、podman イメージをまるごと .tar ファイルにする方法と、podman イメージの差分のみを .tar ファイルにする方法が挙げられます。
podman イメージの差分のみを .tar ファイルにする方法のメリットとして、.tar ファイルの容量を小さくすることができます。デメリットとして、アップデートの元となる podman イメージが Armadillo-IoT G4 に入っている必要があります。
podman イメージの差分を .tar ファイルに変換するには podman_partial_image コマンドを使用します。 podman_partial_image コマンドの使い方を以下に示します。 -
at_shiita.ishigaki
現在の Armadillo-IoT G4 のイメージを他の Armadillo-IoT G4 へインストールすることや、バックアップを目的に、使用している Armadillo-IoT G4 のイメージを取り出したい場合が考えられます。
Armadillo-IoT G4 からイメージファイルを作成するには、abos-ctrl make-installer コマンドを使用します。
abos-ctrl make-installer コマンドはインストールディスクイメージを作成して micro SD カードに書き込みますので、micro SD カードを挿入しておく必要があります。micro SD カードに Armadillo Base OS のインストールディスクイメージが含まれていない場合は、Armadillo Base OS のインストールディスクイメージをダウンロードする必要がありますので、Armadillo-IoT G4 をネットワークに接続しておく必要があります。 -
at_shiita.ishigaki
Armadillo Base OS は SWUpdate によってアップデートすることができます。
アップデートする際には、SWUpdate によるアップデートに含まれるファイルと /etc/swupdate_preserve_files に記載されているファイルで新しい rootfs を作ります。
そのため、 SWUpdate と /etc/swupdate_preserve_files に含まれていないファイルは消えてしまいます。
本ブログでは、 /etc/swupdate_preserve_files にファイルを記載する方法について説明します。Armadillo Base OS に含まれていないファイルを /etc/swupdate_preserve_files に記載するには persist_file -p コマンドを使用します。
-
at_shiita.ishigaki
Armadillo Base OS は OS ・ブートローダー・コンテナ部分が二面化されており、SWUpdate によるアップデートやロールバックが行われたときに、自動的に今まで使用していた面と違う面に切り替わります。
違う面のファイルにアクセスするには、abos-ctrl mount-old コマンドを使用します。
以下に abos-ctrl mount-old コマンドを使用する例として、hogeというファイルを作成し、ロールバック後に前の面にあるhogeというファイルを現在の面に持ってきます。 -
at_shinya.matsumoto
コンテナの自動起動方法とその設定に必要なconfファイルについて記載しております。
-
at_shiita.ishigaki
Armadillo BaseOS ではルートファイルシステムに overlayfs を採用しています。
そのため、ファイルを変更した後 Armadillo-IoT G4 の電源を切ると変更内容は保持されません。
rootfs の変更内容を保持するには、変更したファイルに対して persist_file コマンドを使用します。
persist_fileコマンドの使い方を以下に示します。 -
at_shinya.matsumoto
本ブログではコンテナ作成時に使用するコンテナイメージを取得する方法をご説明します。
-
at_shiita.ishigaki
Podmanでreadonlyコンテナイメージを作成・削除する方法
-
at_shiita.ishigaki
Armadillo Base OSはOS・ブートローダー・コンテナ部分が二面化されており、起動が失敗した時に自動的にロールバックされます。
現在のルートファイルシステムの確認とロールバックが行われたかどうかの確認をするにはabos-ctrl statusコマンドを使用します。
-
at_shiita.ishigaki
本ブログでは、Armadillo-IoT G4上でOCR(Optical Character Recognition:光学文字認識)を実行する方法・結果について紹介します。今回は、機械学習によってOCRを行うPaddleOCRを使用しました。特徴として、 文字の傾きや日本語に対応しています。 PaddleOCRは、スマートフォンや組み込み用に対応しているPaddle Liteというフレームワークを使用して、Armadillo-IoT G4で実行しました。OCRの処理を行ったハードウェアはNPUではなくCPUになります。以下にソフトウェアの構成等についてまとめていますが、実行結果のみ知りたい方は「実行結果」をご覧ください。
-
at_shinya.matsumoto
本ブログではコンテナ内のタイムゾーンを変更する方法をご説明します。
-
at_kazutaka.bito
Armadillo-IoT(G4):製品アップデート/ソフトバージョン相関早見表
(2022年5月時点) -
at_kazutaka.bito
Armadillo-IoT(G3L):製品アップデート/ソフトバージョン相関早見表(Linux-4.9/Buster版)
(2022年4月時点) -
at_kazutaka.bito
Armadillo-IoT(G3L):製品アップデート/ソフトバージョン相関早見表(Linux-4.9/Stretch版)
(2022年4月時点) -
at_shinya.matsumoto
Armadillo製品に使用しているeMMC(ストレージ)の予備領域の確認方法について、eMMCの前提情報を交えつつご紹介します。
予備領域が残っているかどうかで寿命予測に活用できます。 -
at_takuma.fukuda
Armadillo-IoT G4にシキノハイテック社製MIPIカメラKBCR-S08MMを接続して使用するための手順を紹介します。
-
at_shinya.matsumoto
本ブログはArmadillo-IoT G4(以下、G4)でNPU(Neural network Processing Unit)を使った物体検知(推論)を行う方法を説明します。モデルは学習済みのモデルMobilenet v1でTensorflow Liteを使用します。
-
at_kazutaka.bito
開発中など、何らかの理由でSWUイメージ作成環境が変わってしまった場合(※)、
SWUイメージの鍵とArmadillo-IoT(G4)上の鍵と整合がとれず、以降のアップデートができなくなります。
※)基本的には、ソフトウェアアップデートの管理の点からSWUイメージ作成環境は変えないような運用が望ましい。
ここでは、SWUイメージ作成環境が変わってしまった場合に、Armadillo-IoT(G4)上の鍵を
新しいSWUイメージ作成環境の鍵にインストールし直す方法を説明します。 -
at_kazutaka.bito
購入製品登録ための正規認証ファイルの取得には、Armadillo-X1/IoT(G3/G3L)上でget-board-infoを実行しますが、
Linuxディストリビューションによって、手順に若干の違いがあります。
正規認証ファイルの取得(get-board-info)が失敗する場合は、下記のようにLinuxディストリビューションを確認の上、
get-board-infoを実行ください。 -
at_takuma.fukuda
Armadillo-IoT G4をLTE通信に接続するための手順を紹介します。
-
at_naomi.todori
Cactusphere RS485 モデル(CT1510-W01) に 交流電流センサを接続し、 Azure IoT Central 上で 電流値の推移を可視化するシステムを構築してみました。 今回使用した交流電流センサは分割クランプ式のため、既設の設備や配電盤などの構成を変更することなく、 後付けで電流値を簡単に取得・見える化することができます。
-
at_kazutaka.bito
シリアル通信で制御コードを含むデータの送信/受信する簡易的な方法です。
ここでは、pyserialを使用します。