Platformβ用の「LTEモジュール」へ接続し、遠隔地の照度を測るワイヤレス・センサの実験をしてみましたので、その方法を紹介します。Platformβとは、LTEモジュールとクラウドAPIの組み合わせによるIoTクラウドサービスです。詳しくは下記を参照してください。さくらのIoT:https://iot.sakura.ad.jp/LTEモジュール:http://iot-store.sakura.ad.jp/ハードウェアさくらのIoTのLTEモジュールを購入し、IchigoJamへI2Cで接続します。注意点は、このLTEモジュールのIOが1.8Vであることです。そこで、秋月で販売されている「I2Cバス用双方向電圧レベル変換モジュールAE-PCA9306」を購入し、信号の電圧レベル変換を行いました。IchigoJamの開発者の福野さんも、同じものを購入中のようで、ボクだけが「うっかり者」ということではなさそうです。Platformβ、ブレイクアウトボードでハードウェア準備(福野泰介の一日一創)http://fukuno.jig.jp/1578ミニブレッドボードへAE-PCA9306と照度センサNJL7502Lを実装し、IchigoJamに接続したときの様子を下図に示します。Platformβ用のLTEモジュールをIchigoJamに接続したときの様子。I2Cの電圧レベル変換に秋月で販売されているAE-PCA9306を使用した(ブレッドボード中央)。照度センサNJL7502LをIchigoJamのBTN端子へ入力し、照度センサを実現。ブレッドボード部の拡大図を下記に示します。AE-PCA9306の8ピンのうち7ピンを使用します。I2C信号電圧を変換する回路の拡大図。今度はプログラムの製作です。BASICファームウェア1.2.1にて動作を確認しました。行番号110で、LTEモジュールの状態取得コマンドをメモリーに保存し、gsb900でLTEモジュールへ送信します。今回は、状態取得結果を受信しません(後述)。次に、行番号210では、BTN端子の電圧のAD変換値を、変数Aに代入し、同様にLTEモジュールへ送ります。行番号900以降のサブルーチンはI2Cの通信処理部です。行番号940でLTEモジュールへコマンドを送信します。変数Cはパリティチェックです。これはデータ転送が正しく行えたかどうかを確認するためのもので、行番号920のXOR演算で求めました。rtn実行すると、10秒ごとに、照度センサのAD変換値をLTE回線を経由し、クラウドへ送信します。クラウドへの送信が適切に行えているかどうかは、データをWebsocketへ転送して確認してみました。赤文字の部分が照度センサからのデータ値です。★追記(2019/05/19)さくらのIoTへアップロードしたデータを、WebSocketでダウンロードするスクリプト(Bash用、Python用)を作成しました。下記からダウンロードして使っていただくことができます。Piなどで動作します。Platformβへアクセスし、「連携サービス」に「WebSocket」を追加してください。「Token」が発行されるので、スクリプト中の「TOKEN=」の部分にTokenを記述してください。$VALUEfidone実行したときの様子を以下に示します。IchigoJamからは10秒ごとに送信していますが、まれにデータが欠損していることがわかります。この原因は、timeoutコマンドを使用し、WebSocketのセッションを3秒ごとに切断して、データ処理をしているためです。81I2C通信部の不具合!?原因はわかっていませんが、I2Cコマンドの結果を受信しようとすると、LTEモジュール側は応答を返すのに、IchigoJam側がACKを返さずにハングアップしてしまいます。LTEモジュール側も、ACKが来るまで待機し続けているようです。このため、今回はI2CRを用いずに、すべてI2CWでコマンドを発行しました。ボクの勘違いか、IchigoJamやLTEモジュールのI2Cの不具合だと思います。今後、治れば、I2CRに置き換えて、LTEモジュールからの応答値をチェックしようと思います。IoT対応版)にて、動作するようになりました。詳しい情報はhttp://fukuno.jig.jp/1695を、参照してください。1.2β42から、I2Cコマンドの引数が簡単になりました。本ブログのサンプルの例だと、新表記では、以下のようにI2Cアドレス、メモリアドレス、送信バイト数の順に引数を記述します。ifi2cw(79,#700,N+1)?”E従来の記述のままでも、動作しました。受信用のI2CRコマンドについては、従来、送信と受信の両方の役割となっていましたが、新表記では受信のみを行うことが出来るようになったみたいです。多くの場合は、I2CWコマンドでデバイスへ命令を送信してから、I2CRコマンドで応答を受け取るような記述になると思います。(2017/3/18追記)属性の読み取り機能を追加し、またIoTセンサ用クラウドサービスAmbientへの転送の実験を行った続編を公開しました。単4×3本で3か月の動作を達成。(3)紹介ボクにもわかる電子工作bokunimo.netとの連携ブログです。関する情報などを掲載しています。(7)リンクは自由ですが、掲載情報についての責任は負いません。