「セキュアモバイルコネクト x モノプラットフォーム」
Spresense(LTE拡張ボード & カメラボード)の開発サンプル
2023年6月から7月にかけてハッカソンイベントのTechSeeker HACKATHON 2023(主催:ソフト産業プラザTEQS)が開催されました。弊社も協賛企業として参加し、さくらのセキュアモバイルコネクト(略称:セキュモバ)やさくらのモノプラットフォーム(略称:モノプラ)、クラウドのリソースなどを提供させていただきました。
その際に、ソニーセミコンダクタソリューションズ様にSpresenseでモノプラを利用するためのArduinoライブラリを作成していただきましたので、弊社の江草にてそちらを利用して「Spresenseのカメラとさくらのモノプラットフォームで撮影した画像をアップロードする」という例を示し、記事も公開しましたが、本コラムでは、それらをベースに作成したモノプラの一通りの機能を利用できるArduino向けSIPFライブラリの使用方法について、作例をもとにご紹介します。なお、Arduino向けSIPFライブラリおよびサンプルコードは、さくらインターネットのGitHub Organizationにて公開しています。
また、作例にて使用しているSpresenseやサーマルプリンターは、同じくハッカソンイベントに協賛されたソニーセミコンダクタソリューションズ様と共立電子産業様よりご提供頂きました。ありがとうございました。
作例の概要
今回の作例は、①カメラ側と ②プリンター側の2点で構成されており、「①カメラ側で定期的に撮影された画像を②プリンター側で定期的に印刷する」といったシステムになります。どちらの機器にもSpresense+LTE拡張ボード+セキュモバSIMが搭載されており、画像の送受信は、セキュモバおよびモノプラを利用して行います。また、ソフトウェアは、Arduino IDEを使用して開発しています。
免責事項
試作品ですので、本内容をご利用に当たり以下の内容はご承知おき下さい。
- いかなる場合も、当社は一切の損害賠償を支払わないものとします
- 作成例ですので、この内容を製品化をすることはお止め下さい
また、弊社の「本サイトご利用にあたって」も御覧ください。
動作環境
主に以下の環境で動作確認が取れておりますので、事前にご準備ください
- Windows11
- Arduino IDE 2.x系
概要図
Spresenseとは?
Spresense(読み方:スプレッセンス)は、ソニー社が開発したIoT向けボードコンピュータです。「低消費電力」「豊富なセンシング機能」「柔軟な開発環境」の特徴を持ちます。2018年7月に発売され、日本国内を中心に多くの企業や個人で活用されています。
モノプラの準備
システムを動作させるにあたり、モノプラ側で以下の準備が必要となります。
- プロジェクトの作成
- サービスアダプタの作成
- ①カメラ側で使用するセキュモバSIMの登録とプロジェクトへの紐付け
- ②プリンター側で使用するセキュモバSIMの登録とプロジェクトへの紐付け
①カメラ側の構成
ハードウェアは、以下にて構成されます。
- Spresenseメインボード
- LTE拡張ボード
- HDRカメラボード
- セキュモバSIM
ソフトウェアの仕様は、以下となります。
- 1分周期で撮影し、モノプラに画像ファイルをアップロードする。
Arduinoのスケッチは、SIPFライブラリ内のサンプルcamera_uploadを利用します。
スケッチを書き込み、電源を投入することで自動的に撮影と画像ファイルのアップロードが開始されます。
モノプラへの画像ファイルのアップロードは、モノプラのファイル送受信のファイル送信の機能を利用しています。
「Spresenseのカメラとさくらのモノプラットフォームで撮影した画像をアップロードする」作例とほぼ同じ内容となりますので、そちらもあわせてご参照ください。
②プリンター側の構成
ハードウェアは、以下にて構成されます。
- Spresenseメインボード
- LTE拡張ボード
- サーマルプリンター CSN-A2-T
- セキュモバSIM
Spresenseとサーマルプリンターの接続は、以下の通りです。
Spresense LTE拡張ボード CN9 |
サーマルプリンター CSN-A2-T |
備考 |
---|---|---|
1 - GND | 1 - GND | |
2 - MAIN_POWER | 3 - VH(5V-9V) | |
6 - GND | 4 - GND | |
10 - D30 | 6 - TXD | ソフトウェアシリアルの transmitPinに割り当て |
12 - D31 | 5 - RXD | ソフトウェアシリアルの receivePinに割り当て |
- Spresenseとサーマルプリンターの接続は、LTE拡張ボードCN9を使用します。
- サーマルプリンターの電源は、LTE拡張ボードを経由して供給します。
(メインボードまたはLTE拡張ボードのMicro USBコネクタより) - サーマルプリンターの制御は、Arduinoのソフトウェアシリアルを利用します。
ソフトウェアの仕様は、以下となります。
- 1分周期でモノプラから画像ファイルをダウンロードし、印刷する。
- 文字列メッセージの受信がある場合は、それを印刷する。
Arduinoのスケッチは、SIPFライブラリ内のサンプルthermal_printerを利用します。
なお、以下のライブラリを利用しておりますので、ライブラリマネージャーにて適宜インストールしてください。
- Adafruit Thermal Printer Library:サーマルプリンターの制御用
- JPEGDEC:画像のモノクロ化用
スケッチを書き込み、電源を投入することで自動的に画像ダウンロードと印刷が開始されます。(電源投入時は、動作確認としてさくらインターネットのロゴが印刷されます)
モノプラからの画像ファイルのダウンロードは、モノプラのファイル送受信のファイルの機能を利用しています。
注意:サーマルプリンターは、消費電流が大きいため、供給電流が小さい場合に動作が不安定になったり印刷がかすれたりする場合があります。
任意の文字列を印刷する
②プリンター側には、モノプラからのデータ受信の利用例として、文字列のオブジェクトを受信し、その文字列を印刷する機能が実装されています。
この機能は、ウェブのコントロールパネル(サービスアダプタのメッセージ送信の機能)を用いて動作確認することができます。(送信する文字列は、半角英数字記号で入力してください)
1.サービスアダプタをダブルクリック
ウェブのコントロールパネルにて、対象のデバイスが登録されているサービスアダプタをダブルクリックします。(作例では、テストサービスアダプタという名称のサービスアダプタを選択します)
2.メッセージ送信をクリック
サービスアダプタの詳細画面が表示されますので、画面右上のメッセージ送信をクリックします。
3.送信
送信するメッセージの内容を入力し、送信ボタンをクリックします。
- 宛先 … ②プリンター側のデバイス名を選択します。
- タグ … 任意の値を入力します。
(作例では、特に利用していませんのでダミーの値で問題ありません) - タイプ … 可変長文字列を選択します。
- 値 … 任意の文字列(半角英数記号)を入力します。
4.印刷
送信した文字列が②プリンター側で印刷されます。
Arduino向けSIPFライブラリの利用方法
今回の作例で使用しているArduino向けSIPFライブラリは、Arduino IDEのライブラリとして登録されており、ライブラリマネージャーから簡単にインストールすることができます。(ライブラリマネージャーから sipf-arduino-client で検索しインストールしてください)
現在(2023年8月時点)、モノプラの以下の機能が実装されています。
- モノプラへのファイル送信
(デバイス側におけるファイル送信の手順を利用) - モノプラからのファイル受信
(デバイス側におけるファイル受信の手順を利用) - オブジェクト群のモノプラへのデータ送信
(SIPF Object ProtocolコマンドのCOMMAND_TYPE_OBJECTS_UPを利用) - オブジェクト群のモノプラからのデータ受信
(SIPF Object Protocol コマンドのCOMMAND_TYPE_OBJECTS_DOWN_REQUESTおよびCOMMAND_TYPE_OBJECTS_DOWNを利用)
注意:動作確認は、Spresenseでのみ行っています。
まとめ
Spresense、Arduino、SIPFライブラリの組み合わせで、モノプラの一通りの機能を簡単に利用することができます。
今回の作例は、サーマルプリンターの解像度が低く実用的なシステムではありませんが、代わりにより解像度の高いプリンターやディスプレイを利用することでLTE通信対応のネットワークカメラのような製品となります。
また、Node-REDのようなサーバーを組み合わせることで、より複雑なシステムの構築も可能となります。モノプラとNode-REDでの開発サンプルは、「LTEモジュール × さくらのクラウド」双方向通信の開発サンプル」をご参照ください。
IoTコラムでは、さくらのIoTに関係するビジネス向けの内容や身近な例、通信技術の説明や当社エンジニアが取り組んだ開発サンプルなどを掲載しています。