βを接続する実験の続編です。今回は、IchigoJamからLTEモジュールの属性を読み込む機能を追加し、照度センサ値をIoTクラウドサービスAmbientへデータ転送する実験を行いました。昨年11月に実験を行った時は、IchigoJamからの属性読み取りが出来ませんでした。LTEモジュールの電源を投入した直後や、省電力化のためにLTEモジュールの電源のON/OFFを制御していた場合、LTEモジュールの接続状態を取得できないので、適切に測定結果を送信することが出来ませんでした。今回は、IchigoJamのベータ版ファームウェアを使って属性の読み取りを行う実験と、Ambientへのデータ転送を行う方法について説明します。Platformβ用のLTEモジュールは、携帯電話事業者ソフトバンク社の4Gネットワークに対応したIoT製品組み込み用のLTE通信モジュールです。「プラットフォーム」と名付けられている通り、通信モジュールだけでなく、ソフトバンクの4G用SIMカード、IoT用のクラウドサービスのセットで提供されています。β用のLTE通信モジュールAX-919-1とブレイクアウトボードAX-920-1を組み合わせたときの様子。ソフトバンクの4Gネットワークに対応したSIMカードも実装されている(規約上、SIMカードの取り外しはできない)。-定価5,000円Arduino用シールドも8000円で販売されていますが、私はモジュールとブレイクアウトボードを購入し、Arduino用のピン配列に変換する中継基板を製作しました(後述)さくらIoTの読み取りに対応したIchigoJam用のベータ版ファームウェアが公開にさくらのIoT用LTEモジュールからの読み取りに対応したIchigoJam用のベータ版ファームウェア1.2β40とβ42がリリースされましたので、LTEモジュールが接続状態にあることを確認するための属性読み取りが可能になりました。1.2β40ではI2CRコマンドで属性読み取りが可能に、またβ42では引数の一部を省略可能になりました。β42の新表記では、以下のようにI2Cアドレス、メモリアドレス、送信バイト数の順に引数を記述することが出来ます。i2cw(79,#700,N+1)β42に従来表記を使用しても使用可能であり、上位互換コマンドとなっています。今回は、従来のIchigoJamファーム1.1.1および1.2.1との互換性を考慮し、新表記ではなく旧表記を使用しました。1.1.1が使用されている市販キット製品。前回のプログラムをもとに属性読み取り機能を追加したプログラムを以下に示します。修正した部分は行番号100~150の部分です。1.1.1や1.2.1を使用していた場合は行番号200へジャンプし、センサ値の送信のみを行います(※今回、対応した属性読み取り機能は使いません)。1.1.1および、1.2.1、1.2β42で動作を確認。1.2.1が実装されている。これらすべてのIchigoJamで動作することを確認した。行番号900番台はLTEモジュールからデータを送信する処理部(機器ドライバ部)です。1.1.1や1.2.1)でも動作します。プログラムをIchigoJamマイコンへ転送し、前回(https://bokunimo.net/blog/ichigojam/103/)と同じように照度センサを接続すれば、ワイヤレス照度センサの完成です。IchigoJamを制御したい場合の参考情報ワイヤレスLEDのようにインターネット側からIchigoJamを制御したい場合は、受信処理が必要になります。受信にも対応したサンプルプログラムについては、IchigoJamの開発者である福野さんのブログで紹介されています。こちらを使用すれば、一つの機器ドライバ部で属性読み取り、データ受信、データ送信の全てが可能です(IchigoJamファームウェアには1.2β42を使用する)。Computer基板を使って、さくらのIoTプラットフォームβのLTEモジュールを接続した場合の一例です。I2C信号の電圧を1.8Vに変換するために秋月電子通商のAE-PCA9306を使用しています。私の実験では、プルアップ抵抗が1kΩと低いので、液晶やEEPROMなどが動作しなくなりました。Computer基板に10kΩのプルアップ抵抗を実装しているので、AE-PCA9306側のプルアップ抵抗を外すと良いでしょう。他のマイコンボードでもプルアップ抵抗を10kΩくらいにしたほうが良いでしょう。LTEモジュールとマイコンボードとの間に、中継用の基板を挟む3枚構造。中継用の基板にはI2C信号のレベル変換用に秋月電子通商のAE-PCA9306を実装した。プルアップ抵抗が1kΩと低いので、他のI2C通信へ影響することがあるので、プルアップ抵抗を取り外すか基板裏面のパターンを切断する。Arduino用のI2C信号は5Vで、IchigoJamの3.3Vと合わないので、中継基板に電圧切り替えスイッチを実装した。一見しただけでは、なんの実験を行っているかが分からない地味な写真。基板裏面にもモジュールの名称やロゴのシルク印刷が欲しいところ。Inc.)が提供しているIoTセンサ用のクラウドサービスです。センサなどから送信したデータを簡単にグラフ化し、パソコンだけでなくスマートフォンからも閲覧することが出来ます。アンビエントデータ株式会社が提供しているIoTセンサ用のクラウドサービスAmbientの表示例。センサ値をHTTP(json形式)でアップロードすると、簡単にグラフ化して閲覧することが可能になる。今回、さくらのIoTプラットフォームへ送信した照度センサ値を、Ambientへ転送してみました。今のところ、さくらのIoTプラットフォームから、直接、転送することは出来ません。Piとは別の遠隔地へ設置することができます。Pi用のスクリプトは、以下のコマンドでダウンロードできます。(予め、トークンなどを追記してください)最新版:https://github.com/bokunimowakaru/RaspberryPi/blob/master/network/sakura/sakuraToAmbient.shスクリプトは、以下のようになります。TOKENと、AmbientChannelId、AmbientWriteKeyの部分については、それぞれのサービスから取得して、スクリプトを書き換えてください。Pi上で実行すると、変数TOKENに設定されたトークンを使って、さくらのIoTサーバから測定値を取得し、Ambientへ転送します。転送間隔はINTERVALで設定します。IchigoJamの測定間隔Wよりも長い時間に設定してください。Piでスクリプトを動作させた状態で、遠隔地にIchigoJam×さくらIoTのセンサを設置して実験してみましょう。Piで受信し、BashスクリプトでAmbientへ転送した時の様子。IoTセンサのデータを簡単にグラフ化(Ambientの特長)することができた。このスクリプトではcurlコマンドによる簡易的な方法でWebSocketを受信しています。受信データは転送間隔毎に処理しますが、その処理のたびにWebSocketの接続を切断し、再接続する動作となっています。Curlコマンドを使ってWebSocket接続した状態のまま受信後のread処理をする記述方法が分からなかったので、このような実装となっています。ご存知の方は、教えていただけると嬉しいです。;done」のような感じで動かせないかと考えていましたが、うまくいかないのです。現時点では、さくらのIoTプラットフォームβ用のLTEモジュールには、省電力機能が備わっていません。このため、乾電池などで長期間の駆動を行うには、IchigoJamからLTEモジュールの電源供給をFETスイッチなどで制御する必要があります。LTEモジュール単独で動作可能なGPIOモードがあれば、IchigoJam不要でワイヤレスセンサを製作できるようになるかもしれません。このあたりはLTEモジュール側のファームウェアで対応されると思うので、その様子を見ながら、次のステップに進みたいと思っています。Zeroへ接続することも可能。Add-on)を使用した。右上:自作したArduinoシールド用の中継基板。(3)紹介ボクにもわかる電子工作bokunimo.netとの連携ブログです。関する情報などを掲載しています。(7)リンクは自由ですが、掲載情報についての責任は負いません。