どうも、まさとらん(@0310lan)です!
今回は、Raspberry PiにLTE通信を簡単に組み込めるsakura.ioを利用した通信モジュールの使い方についてご紹介します!
月額60円という破格の安さで通信ができることに驚きますが、専用のクラウドサービスを活用したデータのやり取りなども簡単に導入できるのも魅力的です。
初心者でも簡単にIoT開発に取り組めるのでご興味ある方はぜひ参考にしてみてください!
なお、通信制御のプログラムはPythonとJavaScriptで書きますので、paizaラーニングの「Python3入門編」「JavaScript入門編」の学習講座もチェックしてみてください。
【 sakura.io 】
■モジュールデバイスの組み立て方
sakura.ioの通信モジュールは、ArduinoやRaspberry Piなどに最適化された専用のモジュールデバイス(拡張ボード)が提供されており、これと組み合わせることで簡単に利用できるようになっています。
そこで、今回はRaspberry Piの専用デバイスと通信モジュールを組み合わせて利用してみたいと思います。
まずは、デバイスの取り付けから始めていきましょう!
今回利用するモジュールデバイスは「SCO-RPI-01」で、Raspberry Pi Zero WHと組み合わせてみます。
Raspberry PiはZeroシリーズ以外にも通常のRaspberry Pi2や3も利用可能です。
最初にスペーサーを以下のように設置します。
上から被せるようにしっかりとデバイスを接続します。
最後に付属のネジで止めればOKです。
デバイスの取り付けはこれだけなので簡単です。
今度は、通信モジュールをデバイスに取り付けましょう!
最初にアンテナのケーブルをコネクタへ接続しておきます。
垂直に押し込んでカチッと音がするまでしっかり固定します。
ケーブルとアンテナはネジのように回すだけで接続できるようになっています。
デバイスと通信モジュールのコネクタ同士を接続します。
(※付属の両面テープを適度なサイズにカットして貼り付けると、しっかり固定されます)
これで組み立てはすべて完了です!
特に難しい作業は無いので、初心者の方でも迷うことなく取り付けられると思います。
また、デバイスに搭載されているDIPスイッチを公式ガイドに記載されている通りに設定しておくとよいでしょう。
■sakura.ioのセットアップについて
さきほど組み立てた通信モジュールは、sakura.ioのコントロールパネルに登録することですぐに利用できます。
そこで、まずは無料の会員登録を済ませておきましょう。
【 sakura.io 】
必要事項の入力が終わったら【会員ID】が発行されます。
発行されたIDとパスワードを利用して、自分のコントロールパネルにアクセスできるようになります。(2段階認証の設定も可)
【 コントロールパネル 】
コントロールパネルが表示されたら【プロジェクト追加】ボタンから新規のプロジェクトを作成します。
プロジェクト内にある【詳細】ボタンをクリックします。
【モジュール登録】ボタンから通信モジュールを登録します。
通信モジュールのラベルに記載されているIDとパスワードを入力して登録をおこないます。
これでsakura.ioの通信モジュールとクラウドサービスを利用できるようになりました。
そこで簡単な通信テストをやってみたいので、連携サービスをプロジェクトに追加してみましょう。
連携できるサービスはいくつかあるのですが、今回はリアルタイムに双方向通信ができるWebSocketを使ってみましょう。
サービス一覧から【WebSocket】をクリックするだけで利用できます。
あとはRaspberry Piから通信をおこなってみましょう!
■Raspberry Piからsakura.ioを使う
Raspberry Pi側から通信をおこない、送信したデータをコントロールパネルに出力してみましょう。
まず最初にRaspberry Piを起動させたら、【設定】からI2Cを有効にしておきます。
(※有効にしたら再起動しておきましょう)
次に、通信モジュールを制御するためのPython関連ライブラリをインストールします。ターミナルアプリを起動して以下のコマンドを実行しましょう。
sudo apt install python3 python3-smbus python3-rpi.gpio python3-pip i2c-tools
(※すでにインストール済みの場合は不要です)
そして、sakura.ioの専用ライブラリを追加しておきます。
sudo pip3 install sakuraio pyserial
これで準備は完了です!
試しにsample.pyというファイルを作成して、次のプログラムを書いてみましょう。
from sakuraio.hardware.rpi import SakuraIOSMBus sakuraio = SakuraIOSMBus() sakuraio.enqueue_tx(0, 123) sakuraio.send()
enqueue_tx()の第1引数にチャンネルを設定し、第2引数に好きな値を入力します。今回は、0チャンネルを使い送信する値は123という数値になります。また、チャンネルを変えていくことで複数の値を同時に送信することもできます。
プログラムが作成できたら、sakura.ioのコントロールパネルから連携サービスの設定ボタンをクリックします。
設定画面が表示されて、下段にデータ出力用のエリアが用意されているのが分かります。
このエリアにRaspberry Piから送信したデータが出力されるわけです。
それでは、Raspberry Pi側からさきほど作成したプログラムを実行してみましょう。Raspberry PiのWiFiを切断してsakura.ioの通信モジュールだけにしておくと分かりやすいと思います。
以下のコマンドを実行します。
$ python3 sample.py
コントロールパネルを確認すると、無事にデータが送られていることが分かります!
プログラムした通り、0チャンネルで値は123になっていますね。
これでRaspberry Piはどこに置いていても、LTE通信を利用してデータの送受信ができるようになりました。
■JavaScriptでsakura.ioの通信を受信する
sakura.ioのコントロールパネルからデータを確認できるようになりましたが、実際には自分で用意したWebページなどから確認できたほうが便利ですよね?
そこで、Raspberry Piから送信されたデータを取得して、Webページの画面に表示する簡単なJavaScriptプログラムを作ってみましょう!
今回は、sakura.ioのコントロールパネルからWebSocketを利用しているので、JavaScriptからは以下のような記述でデータを取得できるようになります。
const url = 'wss://api.sakura.io/ws/v1/******************'; const client = new WebSocket(url); client.onmessage = function(e) { const data = JSON.parse(e.data); console.log(data); }
【url】の部分には、sakura.ioのコントロールパネルからWebScoketの編集画面に表示されているURLを設定してください。
ブラウザのコンソールログを確認すると、定期的にデータを取得しているのが分かります。そこで、typeプロパティを見てみましょう!
【keepalive】という値になっているのですが、これは待機中のような意味合いを持っておりRaspberry Pi側から何もデータが送信されていないことになります。
もし、Raspberry Pi側から何らかのデータが送信されたら【channels】という値に変わります。
そこで、さきほどのプログラムを少し変えて何らかのデータが送信されたときにメッセージを出力するようにしてみましょう!
client.onmessage = function(e) { const data = JSON.parse(e.data); if(data.type === 'channels') { // ここにプログラムを記述する } }
IF文でtypeプロパティの値を確認して、【channels】の場合のみ任意のプログラムを実行するようにします。
今回はサンプルとして、Raspberry Piから送信された値だけを取得して画面に表示させてみましょう!
if(data.type === 'channels') { const value = data.payload.channels[0].value p.innerHTML = '値は、' + value + 'です!'; }
データが送信されると、値が画面に表示されます!
この仕組みを応用すれば、Raspberry Piで取得したセンサーの値などを遠隔でブラウザから確認するようなシステムが簡単に作れるというわけです。
今回のサンプルデモのソースコードは以下のURLから閲覧できますので、ぜひ参考にしてみてください!
【 sakura.ioサンプルデモのソースコード|GitHub 】
ちなみに、今回のサンプルではwss://から始まるURLが誰でも閲覧できるため、あくまでプライベートな利用にしておきましょう。もし、本番環境で利用する場合はNode.jsなどを利用して隠密化するようにしてください。
■動画でプログラミングが学べるpaizaラーニング
動画でプログラミングが学べるpaizaラーニングでは、Python、Java、C言語、C#、PHP、Ruby、SQL、JavaScript、HTML/CSSなど、プログラミング初心者でも動画で学べる入門レッスンを公開しています。
「Python入門編」「C#入門編」「ITエンジニアの就活準備編」といった人気講座も完全無料となっておりますので、プログラミングを学びたい方・ITエンジニアを目指したい方はぜひごらんください。
■まとめ
今回は、Raspberry Piへ簡単にLTE通信を組み込めるsakura.ioの通信モジュールの基本的な使い方についてご紹介しました。
ちなみに、sakura.ioの課金はポイント消費になっており、1回の通信で1ポイント消費するという分かりやすい仕組みです。月額60円で毎月10,000ポイントが加算されるので、大抵の場合はこの範囲で収まるはずです。(2万ポイントを100円で購入も可)
とにかく安価で簡単にLTE通信を始められるので、これからIoT開発を始めようと考えている方はぜひ挑戦してみてください!
「paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。
詳しくはこちら
そしてpaizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。
スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。
詳しくはこちら