HAT for Raspberry Pi スタートガイド

ここでは、Raspberry Piとsakura.io通信モジュールを組み合わせて、データをプラットフォームに送信するためのチュートリアルを行います。

対象読者

本ドキュメントは、以下の方に向けて作成されています。

  • Linuxの操作にある程度習熟しており、使い慣れた環境でsakura.ioの動作を確認したい方

用意するもの

  • sakura.io通信モジュール(LTE)
  • sakura.io HAT for Raspberry Pi SCO-RPI-01
  • Raspberry Pi (2 Model Bを推奨)
  • Raspbian Desktopが書き込まれたSDカード(容量は問いませんが、16GB以上を推奨します)
  • HDMI入力を持つディスプレイ
  • HDMIケーブル
  • USBキーボード
  • 電源(5V2A以上の供給能力がある物を推奨)
  • 電源用microUSBケーブル(なるべく短いものを推奨)
  • インターネットへの接続環境(ライブラリのインストールに必要)

なお、このスタートガイドにおいては、Raspberry Pi 2 Model BとRaspbian Stretch Desktop June 2018の組み合わせを使用しています。 弊社で動作確認を行った組み合わせについては、 sakura.io HAT for Raspberry Piの取扱説明書 をご覧ください。

コントロールパネルへのログイン

sakura.io コントロールパネルから、 プロジェクト の作成、 通信モジュール の登録、 連携サービス の設定を行います。

会員IDの取得

さくらインターネットのサービスで使用する「会員ID」が必要です。 さくらインターネットの会員IDをお持ちでない場合は、 マニュアル>会員登録 を参考に、会員IDを取得してください。

sakura.io コントロールパネル

会員登録が完了したら、 sakura.io コントロールパネル を開き、コントロールパネルにログインします。

初めてコントロールパネルにログインした場合、各種約款への同意を求められます。

内容をご確認いただいたうえで、 ✓同意する をクリックするとコントロールパネルにアクセスできます。

約款同意

コントロールパネルにアクセスすると、プロジェクトの一覧が表示されます。 初回ログイン時には デフォルトプロジェクト という名前のプロジェクトが自動で作成されます。

プロジェクト一覧

このプロジェクトを使って進めることも可能ですが、この手順では新たにプロジェクトを作成し、そちらを使用することにします。

プロジェクト作成

プロジェクト一覧画面を開いたら、右上にある +プロジェクト追加 をクリックします。

プロジェクト追加ボタン

新規プロジェクトの作成画面に遷移するので、 名称 欄に任意の名前を入力し、 追加 をクリックします。

プロジェクト作成画面

プロジェクトが作成されると自動的にプロジェクト一覧画面に戻ります。名称欄に入力した名前でプロジェクトが作成されていることを確認できます。

プロジェクト作成完了

通信モジュール登録

次にモジュールの登録を行います。作成したプロジェクトの右上に表示されている 詳細 ボタンをクリックし、プロジェクトの詳細を表示します。

プロジェクトの詳細表示

モジュール登録 のボタンをクリックします。

モジュール追加をクリック

モジュールの追加画面に遷移します。 sakura.io モジュールのラベルに記載されている登録用IDと登録用パスワード情報を確認します。

登録フォームには、sakura.io モジュールに貼り付けられている下のラベルのうち ID:XXXXXXXXXXPASS:XXXXXXXXXX の部分を入力します。

文字が小さくて読み取りづらい場合には、その下のQRコードを読み取ることで同様の情報を得ることができます。

モジュールラベル

指定したプロジェクトが選択されていることを確認のうえ、モジュール記載の登録用ID、登録用パスワード、および任意の名称を入力して、 追加 ボタンをクリックします。

モジュール登録画面

登録に成功すると、このようなダイアログが表示されます。登録対象のモジュールが初めてsakura.ioコントロールパネルに追加された場合、初回登録ポイントがアカウントに付与されます。

モジュール登録完了画面

ホームへ戻る ボタンをクリックすると、プロジェクト詳細ページでモジュールが追加されていることを確認できます。

モジュール登録後の一覧画面

連携サービス作成

続けて、連携サービスを作成します。モジュールを登録したプロジェクトの 詳細 ボタンをクリックしてプロジェクト詳細画面を開きます。

プロジェクト詳細画面

プロジェクトの詳細ページ内の 連携サービス をクリックします。連携サービス一覧表示に切り替わるので、右端の 連携サービス追加 をクリックします。

連携サービス一覧

連携サービスの選択画面に遷移します。ここではWebSocketを選択します。

WebSocket連携サービスを使うと、通信モジュールからのメッセージをブラウザ上でプレビューできるほか、外部のプログラムとの双方向通信の窓口として使用することができます。

新規連携サービス種別選択

名前の入力を求められるので、適当な連携サービス名を入力します。入力が済んだら 作成 ボタンをクリックします。

連携サービス名入力

連携サービス一覧画面に戻ると、連携サービスが追加されたことが確認できます。

連携サービス一覧(追加済)

上記の図中赤枠で示した 設定 ボタン(歯車マーク)をクリックすると、 連携サービスの編集 画面に遷移します。 この画面では、sakura.io 通信モジュールから送信されてきたデータをブラウザ上で確認することができます。

WebSocket連携サービス編集画面

このページは、この後の手順でデータが送信されてきたことを確認するために使用しますので、ブラウザで開いたままにしておくことをおすすめします。

デバイスの組み立て

Raspberry Piの電源を入れる前にデバイスの組み立てを行います。

HATにスペーサーを取り付けます。説明書を参考にネジ止めします。 Raspberry Pi Zeroシリーズでは3箇所、それ以外のシリーズにおいては4カ所ネジ止めします。

スペーサー取り付け

Raspberry Pi本体をHAT本体が覆い被さるような形で重ね、HATをRaspberry Pi本体に接続します。 このとき、取り付けたスペーサーとRaspberry Pi本体のネジ穴がきちんと合っているか、接続しているピンにズレはないかを確認してください。

HATを本体に差し込む

合っている事を確認したら、ピンをしっかりと奥まで差し込み接続します。

HATを本体に差し込む

取り付けが完了したら、Raspberry Pi本体側からスペーサーをネジ止めします。

ネジ止め写真

sakura.io 通信モジュールの取り付け

HATにsakura.io 通信モジュールを取り付ける前に、sakura.io 通信モジュールにアンテナケーブルを取り付けます。

両面テープで固定した場合、後からアンテナケーブルを取り付けることができなくなります!!!!!

空中線用のアンテナケーブルと通信モジュール側のアンテナコネクタを合わせ、垂直にはめ込みます。

アンテナ接続写真1 アンテナ接続写真2

警告

端子同士がズレている状態や斜めから強く押し込むとアンテナ端子が変形・破損する場合があります。

基板には2つアンテナの端子があるため、2つとも取り付けます。

アンテナ接続写真3

アンテナケーブルのスクリュー溝部とアンテナを合わせて回すことで取り付けます。

アンテナ接続写真4

sakura.io通信モジュールをHATに取り付けます。コネクタ同士の位置が合っていることを確認し、垂直にはめ込みます。 この時、必要に応じて両面粘着テープを使用します。

sakura.io 通信モジュールの取り付け

警告

両面粘着テープを使用すると強力に固定されるため、HATから通信モジュールを取り外すことができなくなります。その他機器への取り付けを検討されている場合は両面粘着テープを使わないようにしてください。 なお、ホストインタフェースの挿抜保証回数は30回です。 コネクタ部は壊れやすいため、挿抜は注意して行ってください。

組立が終わってもまだ電源は入れないでください。 DIPスイッチの確認を行った後に電源を入れます。

組立が済んだら、Raspbianを書き込んだmicroSDカードを挿入し、HDMIケーブルとUSBキーボードをそれぞれUSBポートに接続しておいてください。

HAT上DIPスイッチの確認

sakura.io HATには、sakura.io通信モジュールの持つピンのうち、どれをRaspberry Piに接続するかを選択することが出来るDIPスイッチが存在します。

本スタートガイドの手順を進めるにあたり、以下の設定になっていることを確認してください。

SW2
番号 状態 ピン名
1 ON SDA
2 ON SCL
3 OFF Rx
4 OFF Tx
5 OFF WAKE_IN
6 OFF WAKE_OUT
SW1
番号 状態 ピン名
1 OFF RESET
2 ON CS
3 OFF CS
4 ON MOSI
5 ON MISO
6 ON SCK

図中青枠内にある白線で囲われた部品が操作対象のDIPスイッチです。黄色い矢印で示す白い出っ張り部分を先の細い工具などで左右に動かすことによりON/OFFを切替えます。

下記写真のように、基板上の文字が正しく読める向きで見た場合、白い出っ張り部分が右側に寄っている場合ON、左側に寄っている場合にOFFとなります。

基板上に記載されているSW1, SW2の文字を元に適切に設定してください。

sakura.io 通信モジュールの取り付け

Raspberry Piの準備

組み立てが完了し、DIPスイッチの設定確認が終わったら、電源を投入します。

microUSBケーブルでRaspberry Piを電源に繋ぐと自動的に電源が入ります。しばらく放置するとモニターにデスクトップ画面が出てきます。

なお、初回起動時にセットアップ画面が出てくる場合がありますが、今回は使用しませんのでウィンドウ右上の×ボタンでウィンドウを閉じてください。

Raspbianデスクトップ画面

メニューから Raspberry Pi Configuration を起動します。

raspi-configの図

Interfacesタブに移動し、I2CをEnableにします。

raspi-configでI2C選択

OKをクリックしてRaspberry Pi Configurationを終了します。終了時にリブートするか尋ねられますので Yes を選択し再起動します。

raspi-configでI2C選択

開発環境の準備

sakura.ioを簡単に扱うためのライブラリが用意されています。

インターネットに接続されていることを確認したら、Raspberry Piの準備 の手順と同様にTerminalを起動して、以下のコマンドを実行します。

sudo apt update
sudo apt install python3 python3-smbus python3-rpi.gpio python3-pip i2c-tools

インストールが完了したら、pipを使用してsakura.ioライブラリをインストールします。

sudo pip3 install sakuraio pyserial

ライブラリのインストール完了後、Python3のインタラクティブシェルを起動します。Terminal上で python3 と入力し、Enterキーを押下します。

>>> と表示されたら、以下のコードを1行ずつキーボードで入力し、行ごとにEnterキーを押下してください。

import sakuraio
from sakuraio.hardware.rpi import SakuraIOSMBus
sakuraio = SakuraIOSMBus()
print(sakuraio.get_unique_id())

sakura.ioライブラリが正常にインストールできている場合、Enterを押したタイミングでエラー等は発生せずにすぐ >>> が表示される状態に戻るはずです。 以下のような出力が得られれば成功です。

$ python3
Python 3.5.3 (default, Jan 19 2017, 14:11:04)
[GCC 6.3.0 20170124] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sakuraio
>>> from sakuraio.hardware.rpi import SakuraIOSMBus
>>> sakuraio = SakuraIOSMBus()
>>> print(sakuraio.get_unique_id())
16X00000000
>>>

この手順でエラーが出る場合、コマンドを打ち間違えているか打ち忘れている可能性が高いです。 手順を最初から読み直して、再度試してみてください。 トラブルシューティング集 も参照してください。

手入力による送信

sakura.io プラットフォームでデータが受信できたことを確認するために、まずsakura.ioコントロールパネルでWebSocket連携サービスを作り、ブラウザで表示しておきます。

Python3のインタラクティブシェルを起動した状態で、以下のコマンドを入力してください。

from sakuraio.hardware.rpi import SakuraIOSMBus
sakuraio = SakuraIOSMBus()
sakuraio.enqueue_tx(0, 1)
sakuraio.send()

sakuraio.send() を実行したタイミングで、連携サービス作成 の手順で開いた 連携サービスの編集 画面にデータが表示されれば成功です。 送信する値を変えたい場合には、 sakuraio.enqueue_tx(0, N)N を任意の数値に置き換え、再度 sakuraio.send() を実行してください。

raspi-configでI2C選択

もし途中で何らかのエラーが発生したり、値が表示されない場合は、手順を最初から読み直して、再度試してみてください。 トラブルシューティング集 も参照してください。

トラブルシューティング集

よくあるエラーの内容と考えられる対応策です。

  • ImportError: No module named 'sakuraio'
    • pip3 install sakuraio が実行されていない。
  • ImportError: No module named 'smbus'
    • python3-smbusがインストールされていない。
  • print(sakuraio.get_unique_id()) がエラーになる
    • sakura.io 通信モジュールの取り付けが上手く出来ていない
    • 電圧降下等でsakura.io通信モジュールの起動に失敗している

最後に

以上でチュートリアルは完了です! これでRaspberry Pi上のPythonからsakura.io へデータを送信し、ブラウザ上で送信されたデータを確認することができました。

例えば、センサーからのデータをsakura.ioへ送信したい場合には、センサーをRaspberry Piに接続し、センサーからのデータをRaspberry Piで取得できれば、上記のコードと同様にして簡単にセンサーデータをsakura.io へ送信することができます。

お好きなセンサーモジュールを接続したり、別途販売しているブレイクアウトボードを使用して他のマイコンボードを組合せたり、実際の案件にお役立てください!