目次
大友(@yomon8)です。
現場に存在する様々な機器(この記事ではセンサー、計測器、各種装置などの総称として機器とします)をとシステムを連携させるために、機器の横にIoT GatewayとしてRaspberry Piを利用してきました。
プロトコルとしては以下のようなものがあります。
- Modbus TCP/RTU
- Echonet Lite
- RS485等のシリアル通信
- 業界毎のプロトコロル
対応してきた機器の種類は小さいセンサーから、見上げるほどの大きな機器まで、大小20種類を超えたと思います。
例え同じプロトコルでも機器毎に様々な特徴があり、苦労することも多いのです。いつも意識しているポイントを以下に纏めようと思います。
機器ドキュメントを良く読む
ITの世界にいると様々な良質な情報からWEBから取得可能ですが、機器に関してはメーカーのドキュメントがほぼ唯一の情報であることがほとんどです。かつ自分が門外漢のドメインの機器が多いので、ブラックボックスとして扱うしかありません。
苦労した時もドキュメント隅っこにヒント書いてあったり、記載の解釈を角度を変えて読むことで乗り越えてこられました。
○ 機器の役割の概要を理解する
- 専門的な機器は分からない用語が沢山ですが頑張って概要だけでも理解しておく
○ 付属しているドキュメント全体に目を通す
- ドキュメントは数百ページのものから、数ページのペラペラのものまで質量共に様々
- 英語の百ペーシ超えの文章でもざっと目を通す。
- ここでサボっても結局後から熟読が必要なので、インデックスを頭に入れておくだけでも有用
○ インターフェースを確認する
- シリアル+TCPなど複数のチャネルを持っている場合もあり
- データの吸い上げルートを考える際に選択肢の理解は重要
- シリアルならBaudrate等、TCPならPort番号みたいなパラメータは確認する
- 機器のモニターやLEDが付いている場合はその内容もヒントになる可能性があるので確認する
○ 製品サポートページにも目を通す
- 付属以外の有用なマニュアルが存在する場合がある
- 英語のサイトも確認すると英語のみ提供のドキュメントが取得できる場合もある
○ 全てが記載されていない可能性も考える
- 記載されていない内容が全てではないことを認識して読む
- 3文字英語などの用語が表す意味が、自分の認識とは可能性があることを認識して読む
プロトコル仕様を理解する
例えばWEBサーバーなら手元で起動して、ブラウザで繋いで各種ツール使えば細かい挙動まで追うことが可能です。
初めての機器は、実際に触ってみないとわからない機器固有の特性があります、そこが苦労ポイントであるので、準備は入念に行ないます。
○ Modbusのような汎用的なプロトコル
- プロトコル共通の仕様をWEB等で勉強しておく
- 可能ならば同じプロトコルを持つ小さなセンサーなどを購入して慣れておく
- Modbusなら小さなセンサー、Echonet Liteなら家のエアコンなど
- プロトコルは汎用的でも機器固有の特徴が多いので気をつける
- 設定によってアドレスが変わる
- 動作モード、動作シーケンスの存在など
○ 機器個別のプロトコル
- まずはドキュメントの内容を隅々まで読む(再掲)
- 制御文字を意識して仕様を確認する
- 試行錯誤しやすいように、この時点で簡単なコードに落としておく
- GitHubで機器名検索すると接続されたコードが見つかる場合もあるので確認しておく
接続と開発について
個人的には接続するまでが一番の戦いで、接続してデータが取れればまずは一安心です。
○ 接続
- 下の層から一つ一つ接続確認する(物理層がら一つ一つ上に上がっていくイメージ)
- 難易度はTCP >> UDP >>>>その他 (TCP/IPはLinux OSで調査がやりやすい)
- 最初は一番シンプルな項目から試す(いきなり目的の複雑なデータ連携の対応はしない)
○ 開発
- コードを整理する
- 速度要件を踏まえて、可能な限りリーダブルなコードを心がける
- 特に個別仕様のByte列から数値を取り出す場合など、後から見て何をやっているかわかるように
その他
○ Raspberry Piに親しむ
記事の写真は何年も前の手元のデバイスの写真ですが、今は4~5倍くらいに増えています。
Raspberry Piはそれ自体が面白い玩具なので、普段から慣れ親しんでおくと、仕事で使う時も楽だなと思います。ただ、かなり時間を溶かす遊びでもあるので要注意です。
- Raspberyy Piは多機能かつ、遊び甲斐があります。普段から慣れ親しんでおくと接続の際にアイデアが出てくることもあります
- USBポートも沢山搭載、GPIOからシリアル通信も可能、Bluetoothつないだり、WiFiルーターにもなれる応用範囲は無限大
- Raspberry Pi Imager使えば何度も簡単にスクラップアンドビルドを繰り返せる
- QEMU使ってAnsible等でゴールデンイメージ作成も可能
- MicroSDではなくSSDブートできるように設定しておくと捗ります
- 電子工作を趣味として楽しんでみるのも○
以上、基本的なことも多いですが、意識しているポイントを整理してみました。
ここまで読んでいただいてありがとうございました。
- カテゴリー