0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Raspberry Pi & iBeacon ハンズオン レジュメ

Last updated at Posted at 2019-06-19

はじめに

以下は、名古屋市にある介護系ベンチャー企業、株式会社メグラスにて実施したRaspberry Piを使ってiBeacon信号を取り出すハンズオンのレジュメです。
ぜひコメントやツッコミいただけると幸いです。

ハンズオン実施の背景や準備などは別記事にまとめていますので、そちらを参照してください。
Raspberry Pi & iBeaconハンズオンを介護系ベンチャー企業でやってみた

また、実際のレジュメでは割り振ったIPアドレスやホスト名などを書いていますが、本記事ではそちらの記載を省く or 伏せた形で公開させていただいております。

ハンズオンのゴール

iBeaconをRaspberry Piに近づけたら何かが起きるようにする
→「百聞は一見にしかず」なので、デモします!(実際のハンズオンでは完成形のデモをしました)

TOC

  1. 必要なもののダウンロードとインストール
  2. SDカードへのイメージ焼き
  3. Bootと接続確認
  4. 環境構築
  5. フロー作成

1. 必要なもののダウンロードとインストール

2. SDカードへのイメージ焼き

  1. SDカードのフォーマット
    1. SDFormatterを起動
    2. SDカードのドライブを選択してクイックフォーマットを実行 →ボリュームラベルは何でもOK
  2. イメージ焼き
    1. PiBakeryを起動
    2. 主催者が作成したrecipe.xmlをインポート
    3. 必要箇所を変更
      • IPアドレス
      • ホスト名
      • ログインパスワード
    4. Write!(Raspbian Liteを選ぶように注意)

3. Bootと接続確認

  1. 焼いたSDカードをRaspberry Piに挿入して電源ON
  2. スタートアップスクリプトが動いてreboot完了したらログイン
    • ID:pi
    • PW:さっき決めたパスワード
  3. IPアドレスの設定確認
    ifconfig
  4. 外部への疎通確認
    ping 8.8.8.8
  5. 自分の端末(Windows機)への疎通確認
    ping 192.168.***.***
  6. 自分の端末でTeraTermを起動してSSH接続を確認

4. 環境構築

  1. リポジトリの更新/導入済みソフトのアップデート

    sudo apt update
    sudo apt upgrade
    
  2. Node.jsとnpmのインストール(https://github.com/nodesource/distributions/blob/master/README.md)

    curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash
    sudo apt install -y nodejs
    
  3. インストール確認

    node -v
    npm -v
    
  4. Node.jsでBLEを扱うライブラリ "bleacon" を導入(https://qiita.com/yuyakato/items/739443960fac2668f4a3)

    mkdir iBeacon
    cd iBeacon
    sudo apt install libbluetooth-dev
    npm install bleacon
    
  5. テスト用スクリプトを用意

    vi beacon.js
    
  6. 下記のスクリプトをコピペして保存して終了
    →viの使い方は自分で調べてください。心を無にしてやるなら、今回は
     ”i”で編集モードになって、貼り付けて(TeraTermなら右クリック)、”ESC”、”:wq!”で”Enter”ってすればOK
    ※”wq”は”write”と”quit”

    var Bleacon = require('bleacon');
    // Start scanning
    Bleacon.startScanning();
    // Events
    Bleacon.on('discover', function(bleacon) {
    	if (bleacon.proximity==="near"){
    		console.dir(bleacon);
    	}
    });
    
  7. テスト用スクリプトを動かしてみてiBeaconの信号(BLE)を受信できてるか確認する

    sudo node beacon.js
    
  8. iOS端末で "Beacon入門" などのアプリから信号を発信して情報が流れるのを確認→Ctrl+Cで停止

  9. Node-REDの導入(https://nodered.jp/docs/hardware/raspberrypi)

    cd
    bash <(curl -sL https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/update-nodejs-and-nodered)
    node-red-start
    
  10. スタート後、Ctrl+Cで戻る(Node-REDはBGで動く)

  11. ブラウザで下記URLへアクセスして動作確認
    http://RaspberryPiのIPアドレス:1880

  12. 問題なければOS起動時の自動スタートを設定

    sudo systemctl enable nodered.service
    
  13. Node-REDでBLEを扱えるノードを追加

    node-red-stop
    cd $HOME/.node-red
    npm install node-red-contrib-bleacon
    node-red-start
    
  14. 再度ブラウザでアクセス(再読込)してノードが追加されていることを確認

5. フロー作成

  1. 以下のURLのJSONをコピーしてNode-REDにインポート
    https://flows.nodered.org/node/node-red-contrib-bleacon
  2. このままだとデプロイできないので、scanBeacon側だけのフローにする
  3. jsonのノードのところで動作を「常にJavaScriptオブジェクトに変換」にする
  4. ビーコン発信して、デバッグ画面みてまずは流れる生のデータを見てみる →https://developer.apple.com/documentation/corelocation/clbeacon
  5. ググったり、下記のURLを参考にしながらフローを作ってみる
    https://www.1ft-seabass.jp/memo/2017/10/07/node-red-meets-smart-button-switch/
    http://denshibu.blog.fc2.com/blog-entry-28.html
0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?