LoRaやってみた(2)
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
その2:SK StationとLoRaモジュールでセンサネットワークを...
#contents
*はじめに [#s2691e99]
SK920LRモジュール(以下LoRa Cape)とBeagleBone Black(以下BB...
親機にはSK Stationを利用し、子機にBBBを利用します。~
BBBにGrove Capeと呼ばれる拡張ボード(Cape)を接続する事でセ...
~
&ref(./bbb-grove-lora.png,100%);~
~
*必要な機材 [#sa310cdd]
-Windows 8.1 Pro(x64であれば、Windows7, 8/8.1無印でも可)
-SK Station for 4LR
-[[SK920LR(LoRa module)>#v379edf5]]
-[[SK Cape(LoRa Cape)>#v645b63e]]
-BeagleBone Black(Rev.C)
--Micro SD(4GB以上)
--mini B USB cable
--Grove Cape
--Grove Sensor
*開発環境構築 [#df505677]
**BeagleBone Blackの環境構築 [#t7821703]
[[BeagleBone Blackの初期設定方法]]
**SK Stationの環境構築 [#jdd2321c]
詳細はSK Stationのマニュアルを参照して下さい。ここでは設...
+SK StationとPCをLANケーブルで接続~
クロスケーブルで直接接続するか、またはイーサネットハブで...
+PC側のネットワークアダプタ設定
LEFT:
|~IP Address|192.168.0.241|
|~Subnet Mask|255.255.255.0|
|~Default Gateway|192.168.0.1|
~
CENTER:
&ref(./skstation-IPsetting.PNG,25%,center);
+PC側のブラウザでSK Station Managerを開く~
ブラウザのURL欄へ以下のアドレスを入力する~
http://192.168.0.240:9000/index.jsp~
+認証IDとパスワードを入力~
SK Station for 4LRに同梱のユーザー名とパスワードを入力す...
~
CENTER:
&ref(./skstation-login.PNG,50%);
~
LEFT:
認証が成功するとSK Station Managerの画面が表示されます。~
~
CENTER:
&ref(./skstation-after-login.PNG,50%);
~
+SK Stationの各通信モジュールの初期設定~
SK Station for LoRaには4つの通信モジュールが内蔵されてい...
「モジュール選択」の下の各モジュール名をクリックする事で...
++モジュール0
|~動作モード|通信モジュール|
|~ベースチャンネル|24|
|~ステーションID|FFFF0001|
|~スロットモード|16スロット|
|~PSK|11111111222222223333333344444444|
|~チャンネルホッピング|シングル|
~
++モジュール1
|~動作モード|待機|
|~ベースチャンネル|28|
|~ステーションID|FFFF0001|
|~スロットモード|16スロット|
|~PSK|11111111222222223333333344444444|
|~チャンネルホッピング|シングル|
~
++モジュール2
|~動作モード|待機|
|~ベースチャンネル|33|
|~ステーションID|FFFF0001|
|~スロットモード|16スロット|
|~PSK|11111111222222223333333344444444|
|~チャンネルホッピング|シングル|
~
++モジュール3
|~動作モード|待機|
|~ベースチャンネル|38|
|~ステーションID|FFFF0001|
|~スロットモード|16スロット|
|~PSK|11111111222222223333333344444444|
|~チャンネルホッピング|シングル|
~
**LoRa Capeの環境構築 [#e173b27e]
LoRa CapeをBBBに接続して、コマンドの送受信ができる事を確...
+LoRa CapeとBBBを接続~
写真のようにBBBの上にLoRa Capeを重ねるように接続します。~
&ref(./bbb-sk920lr.png,50%);
+BBBとPCをUSB接続~
ミニBタイプのUSBケーブルでBBBとPCを接続する。
+BBBをインターネットへ接続~
のち程説明するminicomをインストールする都合、インターネッ...
+BBBのコンソールを開く~
TeraTermなどのターミナルエミュレータを使ってPCから192.168...
BBBのデフォルトのユーザ名は"root"でパスワードは無しです。~
TeraTermはこちからダウンロードする。~
+BBBのUART1を有効化~
デフォルトではBBBのUART1は無効化されているのでこれを有効...
++"vi /boot/uEnv.txt"でuEnv.txtを開く~
$vi /boot/uEnv.txt
++以下の一行をuEnv.txtの最後に追加~
optargs=capemgr.enable_partno=BB-UART1
LEFT:
&ref(./bbb-eEnv-UART1.PNG,50%);
++uEnv.txtを保存する~
++BBBを再起動~
"reboot"コマンドで再起動する
$reboot
+minicomをインストール~
minicomはBBBで動くシリアルコンソールプログラムです。minic...
aptを使ってminicomをインストールします。(要インターネット...
$sudo apt-get update
$sudo apt-get install minicom
+SK920LRと通信~
SK920LRがUART1経由で接続できている事を確認します。minicom...
$minicom -o -D /dev/ttyO1 -b 115200 -8
シリアルコンソール画面が表示されたら、SKINFOと入力して以...
LEFT:
&ref(./teraterm-access-skinfo.PNG,50%);
*LoRa Capeの使い方 その1(シリアルコンソールから使う)[...
LoRa Capeの使い方を直感的に理解できるよう、シリアルコンソ...
+初期設定~
minicomから以下のコマンドを打ち込む事で最低限度の初期設定...
SKSREG S02 1
SKSREG S04 1
SKSREG S08 18
SKSETPSK 11111111222222223333333344444444
SKSREG S05 FFFF0001
各コマンドの意味~
~
LEFT:
|~コマンド|~意味|
|SKSREG S02 1|子機の動作種別をエンドデバイスに設定|
|SKSREG S04 1|今回はインタラクティブな使い方をするので子...
|SKSREG S08 18|子機のベースチャンネルをch24に設定。SK Sta...
|SKSETPSK 11..(省略)..44|接続用のPre-shared key(128bits)...
|SKSREG S05 FFFF0001|ステーションIDを設定。SK Stationで設...
~
+ビーコン受信~
子機の初期設定が完了するとSK Stationからのビーコンの受信...
~
LEFT:
&ref(./teraterm-erxbcn.PNG,50%);
~
~
|~イベント名|~意味|
|ESTAT E0|ESTATはスタック内で発生した、各種の状態を通知し...
|ERXBCN 94 00 00 FFFF0001 B2|ビーコンを受信した事を意味し...
|ECONF 00 00:00:00:00:00:00:00:00 0025|ビーコンを受信する...
|EACK 01|子機の接続要求に対し親機がACKを返した事を意味し...
|EJOIN 00 0002 00|親機との接続が完了した事を意味します。...
~
+親機へデータ送信~
親機との接続が完了すると子機から親機へデータ送信が可能に...
SKSEND 0000000000000000 4 1234ABCD
|~コマンド|~第1引数|~第2引数|~第3引数|
|SKSEND|送り先のMACアドレス。親機へ送る場合は未指定(0)も...
~
|&ref(./teraterm-sksend.PNG,50%);|
|CENTER:SKSEND実行時のターミナル出力|
~
|~イベント名|~意味|
|SKSEND ...(省略)|親機へのデータ送信コマンド(上述)|
|OK B5AE|SKSENDコマンドを子機が受け取った事を示します。0x...
|ESTAT E0|ESTATはスタック内で発生した、各種の状態を通知し...
|ERXBCN 94 00 00 FFFF0001 B2|ビーコンを受信した事を意味し...
|ECONF 00 00:00:00:00:00:00:00:00 B5AE|子機から親機への上...
|EACK 00|子機のデータ送信(SKSEND)要求に対し親機がACKを返...
~
+SK Station Managerでデータ受信~
SK Station Managerで子機から送信された値を確認します。~
~
++SK Station Managerで子機の接続状況を確認~
通信モジュール0にエンドデバイスが追加されている事を確認す...
~
&ref(./skstation-join-device.PNG,50%);
~
~
++エンドデイバス0の受信データを確認~
エンドデバイスの「受信データ」のリンクをクリックすると、...
今回送信した1234abcdの4bytesが受信している事が確認できま...
&ref(./skstation-receive-data.PNG,50%);
~
~
各コマンド、各イベントのより詳しい詳細はSK Command Refere...
*LoRa Capeの使い方 その2(Bonescriptから使う)[#y83376d3]
より実践的なLoRa Capeの使い方として、BBBにGrove Capeを追...
**Grove Capeについて [#h2684a9d]
Grove Systemは各種の組み込みシステムに簡単にセンサーを接...
[[Grove System公式Wikiサイト>http://wiki.seeed.cc/Grove_S...
~
このGrove SystemのセンサーをBBBに接続する拡張ボードがGrov...
[[Grove Cape for BeagleBone Series>http://wiki.seeed.cc/G...
~
&ref(./bbb-grove-cape.png,50%);
~
Grove CapeをBBBに接続する事で既製品のGrove Systemの各種セ...
今回のチュートリアルではBBB+Grove Cape+LoRa Capeをスタッ...
~
&ref(./bbb-grove-lora.png,50%);
~
**Cloud9 IDEについて [#c6717e7f]
開発環境として、BBBに搭載されているCloud9 IDEという統合開...
[[Cloud9 IDE>http://beagleboard.org/Support/bone101/#clou...
Cloud9 IDEはブラウザから利用可能な開発環境で、PC側に環境...
~
&ref(./bbb-cloud9-open.PNG,50%);
~
***Cloud9 IDEを開く [#b1b68c8a]
ブラウザから以下のURLへアクセスします。~
http://192.168.7.2:3000/ide.html
***Bonescriptについて [#v7dae119]
BBBのCloud9にはBonescriptと呼ばれるnode.js上で動作するJav...
[[Bonescript>http://beagleboard.org/Support/BoneScript]]~
***Cloud9 IDEでサンプルを実行する [#w019c412]
Bonescriptのサンプルとして、BBBに搭載されているLEDを点滅...
+サンプルファイルを開く~
Cloud9 IDEの左側のWorkspaceタブをクリックし、以下のファイ...
~
cloud9->bone101->examples->blinkled.js
~
&ref(./bbb-cloud9-blinksample.PNG,50%);
~
+サンプルファイルを実行する~
Cloud9 IDEのメニューバーにある"Run"ボタンをクリックする。~
~
&ref(./bbb-cloud9-run.png,50%);
~
~
BBBのUSBコネクタ付近にある青色LED全てが1秒おきに点滅を繰...
~
**Bonescriptでセンサー値を読み込み [#m8dfd3ef]
Grove Capeに接続した温度センサーの値を読み込む方法につい...
***温度センサーを接続する[#c519f460]
Grove Sensorの"Temperature Sensor v1.2"をGrove Capeの手前...
コネクタJ3はアナログ入力対応の端子です。~
[[Temeprature Sensor v1.2>http://wiki.seeed.cc/Grove-Temp...
~
&ref(./bbb-grove-lora.png,50%);
~
~
***センサー出力(アナログ値)の読み込み[#d92ccc9e]
Grove CapeのコネクタJ3の温度センサー出力はBBBのピン番号"P...
"P9_39"から温度センサーの出力をanalogReadコマンドで読み出...
以下のサンプルファイルを開き、修正します。~
cloud9->bone101->examples->analog2.js
-inputPinを"P9_39"に変更~
-setTimeoutのインターバルを1000(1秒)に変更~
~
&ref(./bbb-cloud9-analog.PNG,50%);
~
~
***プログラムを実行する [#t1b630f3]
"Run"ボタンで実行すると、Cloud9の画面下のコンソール画面に...
~
&ref(./bbb-cloud9-analog-value.PNG,50%);
~
~
**デモプログラム [#gf252c23]
ここでは簡単なBonescriptを使ったデモプログラムについて説...
デモプログラムのサンプルコードは[[こちらからダウンロード>...
***デモプログラムをCloud9 IDEへアップロードする [#w6fe8540]
+Workspaceタブでマウスの右クリック->"New Folder"を選択する~
ここでは"skwan"というフォルダを作成する。~
+メニューバーの"File"メニュー->"Upload Local Files..."を...
デモプログラムのファイル(skdemo_bbb_v1_04.js)を選択して、...
~
&ref(./bbb-cloud9-upload-sample.PNG,50%);
~
~
***デモプログラムを実行する [#bea3bbfb]
"Run"ボタンで実行すると、Cloud9の画面下のコンソール画面に...
~
&ref(./bbb-cloud9-sample-run.PNG,50%);
~
***デモプログラムの解説 [#dd55086d]
デモプログラムの概要について説明します。~
+デモプログラムの全体の流れ~
&ref(./sample-code-top-flow.png,50%);~
bonescriptはnode.jsによるイベントドリブン型のプログラム環...
基本的にはシリアルポートの受信イベントをトリガにしてonSer...
~
++初期化パート~
bonescriptモジュールの読み込み、必要な変数、オブジェクト...
本サンプルプログラムでは3つのGrove Sensorに対応していま...
(1)[[温度センサー>#t22b7073]]~
(2)[[ポテンショメーター>#ec9d5bb1]]~
(3)[[湿度センサー>#b62a03dc]]~
使うセンサーに応じてコメントアウトを修正して下さい。~
var sd = new SKSensor( b, SKSensor.GroveCape.J3, SKSenso...
//var sd = new SKSensor( b, SKSensor.GroveCape.J3, SKSen...
//var sd = new SKSensor( b, SKSensor.GroveCape.J3, SKSen...
~
++シリアルポート初期化~
var port = '/dev/ttyO1';
var opts = {
baudrate : 115200,
dataBits : 8,
parity : 'none',
stopBits : 1,
flowControl : false,
parser: b.serialParsers.readline("\n")
};
ここではUART1を115200bps,8bit,パリティ無し,ストップビッ...
~
++シリアルポート受信イベント~
// Open Serial Port
b.serialOpen(port,opts,onSerial);
~
シリアルポートにデータの受信などのイベントが発生するとonS...
~
++onSerial関数~
/**
* Serial Interface Callback loop(Main Loop)
**/
function onSerial(x) {
console.log( "current state : " + s.state );
interfaceLoop(x,c); // Process Serial Command data
eventLoop(x,e); // Process Event
appLoop(e,s,c, sd); // Process Application
}
onSerial関数は大きく3つの部分に分かれています。~
+++interfaceLoop関数~
シリアルポートからの引数xからSKコマンドに関する処理を行い...
本サンプルプログラムではSK920LRへ送ったSKコマンドに対する...
~
+++eventLoop関数~
シリアルポートからの引数xからSKイベントに関する処理を行い...
本サンプルプログラムではSK920LRから送られるSKイベントを確...
~
+++appLoop関数~
interfaceLoop、eventLoopでの結果を元に、アプリケーション...
センサーデータの読み込み、読み込んだデータの送信などを行...
詳細は後述します。~
~
+appLoop関数の詳細~
&ref(./sample-code-appLoop.png,25%);~
appLoop関数はSKAppState値を元に動くステートマシンになって...
SK920LRの初期化からデータ送信までの流れを説明します。~
~
++SKAppState.fsm.idle~
シリアルポートがオープンされると、SKAppState.fsm_init_0へ...
~
++SKAppState.fsm.init_0~
SK920LRの初期化を行います。~
cmd.add("SKSREG S02 1");
cmd.add("SKSREG S04 0");
cmd.add("SKSREG S08 1d");
cmd.add("SKSETPSK 11111111222222223333333344444444");
cmd.add("SKSREG S05 FFFF0001");
必要なレジスタ設定をcmdオブジェクトへ追加します。~
各レジスタの設定については[[こちら>#oc7bac7f]]を参照して...
最初のレジスタ設定をcmd.send()で送信した後、SKAppState.fs...
~
++SKAppState.fsm.init_1~
送信したコマンドに対してSK920LRが"OK"と応答してくる事を確...
コマンドキューにコマンドが残っていればsend()メソッドで次...
全てのコマンドの送信が完了した場合は、SKAppState.fsm.init...
~
++SKAppState.fsm.init_2~
初期化結果が有効になるのを待つ為にビーコン受信イベント(ER...
ステータスイベント(ESTAT)の戻り値がE0であれば、親機と接続...
ビーコンを4回受信してもE0が受信できない場合は、エラーとし...
~
++SKAppState.fsm.idel~
SLEEP有効時はビーコン同期スロットのみコマンドを受け付けま...
ビーコン受信イベント(ERXBCN)が発生した時に、センサーデー...
センサーデータの送信コマンドを発行した後にSKAppState.fsm....
~
++SKAppState.fsm.send_0~
データ送信コマンド(SKSEND)に対してSK920LRが"OK"を返すのを...
"OK"の戻り値には送信データのIDが付随しているので、これを...
"OK"が戻ってきた場合にはSKAppState.fsm.send_1に移行します...
~
++SKAppState.fsm.send_1~
SK920LRからデータ送信に対する処理結果(ECONF)を待ちます。~
"ECONF"イベントが発生し、第一引数が0x00で、送信データのID...
SKAppState.fsm.send_2に移行します。~
~
++SKAppState.fsm.send_2~
SK920LRからの親機からの送信完了通知(EACK)を待ちます。~
"EACK"イベントが発生し、第一引数が0x00であれば、送信デー...
データ送信シーケンスが全て完了したところで、SKAppState.fs...
~
*CRONによる自動起動 [#x039a7b5]
サンプルプログラムをCRONで自動起動される事でBBBをヘッドレ...
**SSHでBBBへ接続する [#yc867bc9]
teratermなどでSSHを使ってBBB(192.168.7.2)へ接続する。~
[[参考>BeagleBone Blackの初期設定方法#g8ac7f15]]~
**CRONに設定ファイルを書き込む [#l8ca5320]
$cd /etc/cron.d
$vi boneboot
bonboot内に以下のように設定する。~
m h dom mon dow user command
NODE_PATH=/usr/local/lib/node_modules
@reboot root sleep 120 && /usr/bin/nodejs /var/lib/...
ファイルを保存してviを終了する。~
**再起動する [#z68b118d]
再起動すると自動的にサンプルプログラムが起動する。~
$reboot
*参考リンク [#g1d5b1fb]
**サンプルプログラム[#o09546ba]
&ref(skdemo_bbb_v1_04_2017_0601.zip);
**SK Cape(LoRa Cape)[#v645b63e]
SK Capeは株式会社スカイリーネットワークスで販売しておりま...
SK Cape基板の情報はこちらからダウンロード出来ます。~
&ref(SK-Cape board_20170601.zip);
**SK920LR(LoRa Module)[#v379edf5]
SK920LRは株式会社スカイリーネットワークスで販売しておりま...
SK920LR用のインターフェース変換基板の情報はこちらからダウ...
&ref(SK920LR-IF board_20180105.zip);
**BeagleBone Black [#bae21ecf]
https://beagleboard.org/black
**Grove System [#q1b34e51]
http://wiki.seeed.cc/Grove_System/
***Temperature Sensor V1.2 [#t22b7073]
http://wiki.seeed.cc/Grove-Temperature_Sensor_V1.2/
***Moisture Sensor [#b62a03dc]
http://wiki.seeed.cc/Grove-Moisture_Sensor/
***Slide Potentiometer [#ec9d5bb1]
http://wiki.seeed.cc/Grove-Slide_Potentiometer/
***Grove Cape [#l688c8d2]
http://wiki.seeed.cc/Grove_Cape_for_BeagleBone_Series/
**TeraTerm [#v1147722]
https://ttssh2.osdn.jp/index.html.ja
終了行:
その2:SK StationとLoRaモジュールでセンサネットワークを...
#contents
*はじめに [#s2691e99]
SK920LRモジュール(以下LoRa Cape)とBeagleBone Black(以下BB...
親機にはSK Stationを利用し、子機にBBBを利用します。~
BBBにGrove Capeと呼ばれる拡張ボード(Cape)を接続する事でセ...
~
&ref(./bbb-grove-lora.png,100%);~
~
*必要な機材 [#sa310cdd]
-Windows 8.1 Pro(x64であれば、Windows7, 8/8.1無印でも可)
-SK Station for 4LR
-[[SK920LR(LoRa module)>#v379edf5]]
-[[SK Cape(LoRa Cape)>#v645b63e]]
-BeagleBone Black(Rev.C)
--Micro SD(4GB以上)
--mini B USB cable
--Grove Cape
--Grove Sensor
*開発環境構築 [#df505677]
**BeagleBone Blackの環境構築 [#t7821703]
[[BeagleBone Blackの初期設定方法]]
**SK Stationの環境構築 [#jdd2321c]
詳細はSK Stationのマニュアルを参照して下さい。ここでは設...
+SK StationとPCをLANケーブルで接続~
クロスケーブルで直接接続するか、またはイーサネットハブで...
+PC側のネットワークアダプタ設定
LEFT:
|~IP Address|192.168.0.241|
|~Subnet Mask|255.255.255.0|
|~Default Gateway|192.168.0.1|
~
CENTER:
&ref(./skstation-IPsetting.PNG,25%,center);
+PC側のブラウザでSK Station Managerを開く~
ブラウザのURL欄へ以下のアドレスを入力する~
http://192.168.0.240:9000/index.jsp~
+認証IDとパスワードを入力~
SK Station for 4LRに同梱のユーザー名とパスワードを入力す...
~
CENTER:
&ref(./skstation-login.PNG,50%);
~
LEFT:
認証が成功するとSK Station Managerの画面が表示されます。~
~
CENTER:
&ref(./skstation-after-login.PNG,50%);
~
+SK Stationの各通信モジュールの初期設定~
SK Station for LoRaには4つの通信モジュールが内蔵されてい...
「モジュール選択」の下の各モジュール名をクリックする事で...
++モジュール0
|~動作モード|通信モジュール|
|~ベースチャンネル|24|
|~ステーションID|FFFF0001|
|~スロットモード|16スロット|
|~PSK|11111111222222223333333344444444|
|~チャンネルホッピング|シングル|
~
++モジュール1
|~動作モード|待機|
|~ベースチャンネル|28|
|~ステーションID|FFFF0001|
|~スロットモード|16スロット|
|~PSK|11111111222222223333333344444444|
|~チャンネルホッピング|シングル|
~
++モジュール2
|~動作モード|待機|
|~ベースチャンネル|33|
|~ステーションID|FFFF0001|
|~スロットモード|16スロット|
|~PSK|11111111222222223333333344444444|
|~チャンネルホッピング|シングル|
~
++モジュール3
|~動作モード|待機|
|~ベースチャンネル|38|
|~ステーションID|FFFF0001|
|~スロットモード|16スロット|
|~PSK|11111111222222223333333344444444|
|~チャンネルホッピング|シングル|
~
**LoRa Capeの環境構築 [#e173b27e]
LoRa CapeをBBBに接続して、コマンドの送受信ができる事を確...
+LoRa CapeとBBBを接続~
写真のようにBBBの上にLoRa Capeを重ねるように接続します。~
&ref(./bbb-sk920lr.png,50%);
+BBBとPCをUSB接続~
ミニBタイプのUSBケーブルでBBBとPCを接続する。
+BBBをインターネットへ接続~
のち程説明するminicomをインストールする都合、インターネッ...
+BBBのコンソールを開く~
TeraTermなどのターミナルエミュレータを使ってPCから192.168...
BBBのデフォルトのユーザ名は"root"でパスワードは無しです。~
TeraTermはこちからダウンロードする。~
+BBBのUART1を有効化~
デフォルトではBBBのUART1は無効化されているのでこれを有効...
++"vi /boot/uEnv.txt"でuEnv.txtを開く~
$vi /boot/uEnv.txt
++以下の一行をuEnv.txtの最後に追加~
optargs=capemgr.enable_partno=BB-UART1
LEFT:
&ref(./bbb-eEnv-UART1.PNG,50%);
++uEnv.txtを保存する~
++BBBを再起動~
"reboot"コマンドで再起動する
$reboot
+minicomをインストール~
minicomはBBBで動くシリアルコンソールプログラムです。minic...
aptを使ってminicomをインストールします。(要インターネット...
$sudo apt-get update
$sudo apt-get install minicom
+SK920LRと通信~
SK920LRがUART1経由で接続できている事を確認します。minicom...
$minicom -o -D /dev/ttyO1 -b 115200 -8
シリアルコンソール画面が表示されたら、SKINFOと入力して以...
LEFT:
&ref(./teraterm-access-skinfo.PNG,50%);
*LoRa Capeの使い方 その1(シリアルコンソールから使う)[...
LoRa Capeの使い方を直感的に理解できるよう、シリアルコンソ...
+初期設定~
minicomから以下のコマンドを打ち込む事で最低限度の初期設定...
SKSREG S02 1
SKSREG S04 1
SKSREG S08 18
SKSETPSK 11111111222222223333333344444444
SKSREG S05 FFFF0001
各コマンドの意味~
~
LEFT:
|~コマンド|~意味|
|SKSREG S02 1|子機の動作種別をエンドデバイスに設定|
|SKSREG S04 1|今回はインタラクティブな使い方をするので子...
|SKSREG S08 18|子機のベースチャンネルをch24に設定。SK Sta...
|SKSETPSK 11..(省略)..44|接続用のPre-shared key(128bits)...
|SKSREG S05 FFFF0001|ステーションIDを設定。SK Stationで設...
~
+ビーコン受信~
子機の初期設定が完了するとSK Stationからのビーコンの受信...
~
LEFT:
&ref(./teraterm-erxbcn.PNG,50%);
~
~
|~イベント名|~意味|
|ESTAT E0|ESTATはスタック内で発生した、各種の状態を通知し...
|ERXBCN 94 00 00 FFFF0001 B2|ビーコンを受信した事を意味し...
|ECONF 00 00:00:00:00:00:00:00:00 0025|ビーコンを受信する...
|EACK 01|子機の接続要求に対し親機がACKを返した事を意味し...
|EJOIN 00 0002 00|親機との接続が完了した事を意味します。...
~
+親機へデータ送信~
親機との接続が完了すると子機から親機へデータ送信が可能に...
SKSEND 0000000000000000 4 1234ABCD
|~コマンド|~第1引数|~第2引数|~第3引数|
|SKSEND|送り先のMACアドレス。親機へ送る場合は未指定(0)も...
~
|&ref(./teraterm-sksend.PNG,50%);|
|CENTER:SKSEND実行時のターミナル出力|
~
|~イベント名|~意味|
|SKSEND ...(省略)|親機へのデータ送信コマンド(上述)|
|OK B5AE|SKSENDコマンドを子機が受け取った事を示します。0x...
|ESTAT E0|ESTATはスタック内で発生した、各種の状態を通知し...
|ERXBCN 94 00 00 FFFF0001 B2|ビーコンを受信した事を意味し...
|ECONF 00 00:00:00:00:00:00:00:00 B5AE|子機から親機への上...
|EACK 00|子機のデータ送信(SKSEND)要求に対し親機がACKを返...
~
+SK Station Managerでデータ受信~
SK Station Managerで子機から送信された値を確認します。~
~
++SK Station Managerで子機の接続状況を確認~
通信モジュール0にエンドデバイスが追加されている事を確認す...
~
&ref(./skstation-join-device.PNG,50%);
~
~
++エンドデイバス0の受信データを確認~
エンドデバイスの「受信データ」のリンクをクリックすると、...
今回送信した1234abcdの4bytesが受信している事が確認できま...
&ref(./skstation-receive-data.PNG,50%);
~
~
各コマンド、各イベントのより詳しい詳細はSK Command Refere...
*LoRa Capeの使い方 その2(Bonescriptから使う)[#y83376d3]
より実践的なLoRa Capeの使い方として、BBBにGrove Capeを追...
**Grove Capeについて [#h2684a9d]
Grove Systemは各種の組み込みシステムに簡単にセンサーを接...
[[Grove System公式Wikiサイト>http://wiki.seeed.cc/Grove_S...
~
このGrove SystemのセンサーをBBBに接続する拡張ボードがGrov...
[[Grove Cape for BeagleBone Series>http://wiki.seeed.cc/G...
~
&ref(./bbb-grove-cape.png,50%);
~
Grove CapeをBBBに接続する事で既製品のGrove Systemの各種セ...
今回のチュートリアルではBBB+Grove Cape+LoRa Capeをスタッ...
~
&ref(./bbb-grove-lora.png,50%);
~
**Cloud9 IDEについて [#c6717e7f]
開発環境として、BBBに搭載されているCloud9 IDEという統合開...
[[Cloud9 IDE>http://beagleboard.org/Support/bone101/#clou...
Cloud9 IDEはブラウザから利用可能な開発環境で、PC側に環境...
~
&ref(./bbb-cloud9-open.PNG,50%);
~
***Cloud9 IDEを開く [#b1b68c8a]
ブラウザから以下のURLへアクセスします。~
http://192.168.7.2:3000/ide.html
***Bonescriptについて [#v7dae119]
BBBのCloud9にはBonescriptと呼ばれるnode.js上で動作するJav...
[[Bonescript>http://beagleboard.org/Support/BoneScript]]~
***Cloud9 IDEでサンプルを実行する [#w019c412]
Bonescriptのサンプルとして、BBBに搭載されているLEDを点滅...
+サンプルファイルを開く~
Cloud9 IDEの左側のWorkspaceタブをクリックし、以下のファイ...
~
cloud9->bone101->examples->blinkled.js
~
&ref(./bbb-cloud9-blinksample.PNG,50%);
~
+サンプルファイルを実行する~
Cloud9 IDEのメニューバーにある"Run"ボタンをクリックする。~
~
&ref(./bbb-cloud9-run.png,50%);
~
~
BBBのUSBコネクタ付近にある青色LED全てが1秒おきに点滅を繰...
~
**Bonescriptでセンサー値を読み込み [#m8dfd3ef]
Grove Capeに接続した温度センサーの値を読み込む方法につい...
***温度センサーを接続する[#c519f460]
Grove Sensorの"Temperature Sensor v1.2"をGrove Capeの手前...
コネクタJ3はアナログ入力対応の端子です。~
[[Temeprature Sensor v1.2>http://wiki.seeed.cc/Grove-Temp...
~
&ref(./bbb-grove-lora.png,50%);
~
~
***センサー出力(アナログ値)の読み込み[#d92ccc9e]
Grove CapeのコネクタJ3の温度センサー出力はBBBのピン番号"P...
"P9_39"から温度センサーの出力をanalogReadコマンドで読み出...
以下のサンプルファイルを開き、修正します。~
cloud9->bone101->examples->analog2.js
-inputPinを"P9_39"に変更~
-setTimeoutのインターバルを1000(1秒)に変更~
~
&ref(./bbb-cloud9-analog.PNG,50%);
~
~
***プログラムを実行する [#t1b630f3]
"Run"ボタンで実行すると、Cloud9の画面下のコンソール画面に...
~
&ref(./bbb-cloud9-analog-value.PNG,50%);
~
~
**デモプログラム [#gf252c23]
ここでは簡単なBonescriptを使ったデモプログラムについて説...
デモプログラムのサンプルコードは[[こちらからダウンロード>...
***デモプログラムをCloud9 IDEへアップロードする [#w6fe8540]
+Workspaceタブでマウスの右クリック->"New Folder"を選択する~
ここでは"skwan"というフォルダを作成する。~
+メニューバーの"File"メニュー->"Upload Local Files..."を...
デモプログラムのファイル(skdemo_bbb_v1_04.js)を選択して、...
~
&ref(./bbb-cloud9-upload-sample.PNG,50%);
~
~
***デモプログラムを実行する [#bea3bbfb]
"Run"ボタンで実行すると、Cloud9の画面下のコンソール画面に...
~
&ref(./bbb-cloud9-sample-run.PNG,50%);
~
***デモプログラムの解説 [#dd55086d]
デモプログラムの概要について説明します。~
+デモプログラムの全体の流れ~
&ref(./sample-code-top-flow.png,50%);~
bonescriptはnode.jsによるイベントドリブン型のプログラム環...
基本的にはシリアルポートの受信イベントをトリガにしてonSer...
~
++初期化パート~
bonescriptモジュールの読み込み、必要な変数、オブジェクト...
本サンプルプログラムでは3つのGrove Sensorに対応していま...
(1)[[温度センサー>#t22b7073]]~
(2)[[ポテンショメーター>#ec9d5bb1]]~
(3)[[湿度センサー>#b62a03dc]]~
使うセンサーに応じてコメントアウトを修正して下さい。~
var sd = new SKSensor( b, SKSensor.GroveCape.J3, SKSenso...
//var sd = new SKSensor( b, SKSensor.GroveCape.J3, SKSen...
//var sd = new SKSensor( b, SKSensor.GroveCape.J3, SKSen...
~
++シリアルポート初期化~
var port = '/dev/ttyO1';
var opts = {
baudrate : 115200,
dataBits : 8,
parity : 'none',
stopBits : 1,
flowControl : false,
parser: b.serialParsers.readline("\n")
};
ここではUART1を115200bps,8bit,パリティ無し,ストップビッ...
~
++シリアルポート受信イベント~
// Open Serial Port
b.serialOpen(port,opts,onSerial);
~
シリアルポートにデータの受信などのイベントが発生するとonS...
~
++onSerial関数~
/**
* Serial Interface Callback loop(Main Loop)
**/
function onSerial(x) {
console.log( "current state : " + s.state );
interfaceLoop(x,c); // Process Serial Command data
eventLoop(x,e); // Process Event
appLoop(e,s,c, sd); // Process Application
}
onSerial関数は大きく3つの部分に分かれています。~
+++interfaceLoop関数~
シリアルポートからの引数xからSKコマンドに関する処理を行い...
本サンプルプログラムではSK920LRへ送ったSKコマンドに対する...
~
+++eventLoop関数~
シリアルポートからの引数xからSKイベントに関する処理を行い...
本サンプルプログラムではSK920LRから送られるSKイベントを確...
~
+++appLoop関数~
interfaceLoop、eventLoopでの結果を元に、アプリケーション...
センサーデータの読み込み、読み込んだデータの送信などを行...
詳細は後述します。~
~
+appLoop関数の詳細~
&ref(./sample-code-appLoop.png,25%);~
appLoop関数はSKAppState値を元に動くステートマシンになって...
SK920LRの初期化からデータ送信までの流れを説明します。~
~
++SKAppState.fsm.idle~
シリアルポートがオープンされると、SKAppState.fsm_init_0へ...
~
++SKAppState.fsm.init_0~
SK920LRの初期化を行います。~
cmd.add("SKSREG S02 1");
cmd.add("SKSREG S04 0");
cmd.add("SKSREG S08 1d");
cmd.add("SKSETPSK 11111111222222223333333344444444");
cmd.add("SKSREG S05 FFFF0001");
必要なレジスタ設定をcmdオブジェクトへ追加します。~
各レジスタの設定については[[こちら>#oc7bac7f]]を参照して...
最初のレジスタ設定をcmd.send()で送信した後、SKAppState.fs...
~
++SKAppState.fsm.init_1~
送信したコマンドに対してSK920LRが"OK"と応答してくる事を確...
コマンドキューにコマンドが残っていればsend()メソッドで次...
全てのコマンドの送信が完了した場合は、SKAppState.fsm.init...
~
++SKAppState.fsm.init_2~
初期化結果が有効になるのを待つ為にビーコン受信イベント(ER...
ステータスイベント(ESTAT)の戻り値がE0であれば、親機と接続...
ビーコンを4回受信してもE0が受信できない場合は、エラーとし...
~
++SKAppState.fsm.idel~
SLEEP有効時はビーコン同期スロットのみコマンドを受け付けま...
ビーコン受信イベント(ERXBCN)が発生した時に、センサーデー...
センサーデータの送信コマンドを発行した後にSKAppState.fsm....
~
++SKAppState.fsm.send_0~
データ送信コマンド(SKSEND)に対してSK920LRが"OK"を返すのを...
"OK"の戻り値には送信データのIDが付随しているので、これを...
"OK"が戻ってきた場合にはSKAppState.fsm.send_1に移行します...
~
++SKAppState.fsm.send_1~
SK920LRからデータ送信に対する処理結果(ECONF)を待ちます。~
"ECONF"イベントが発生し、第一引数が0x00で、送信データのID...
SKAppState.fsm.send_2に移行します。~
~
++SKAppState.fsm.send_2~
SK920LRからの親機からの送信完了通知(EACK)を待ちます。~
"EACK"イベントが発生し、第一引数が0x00であれば、送信デー...
データ送信シーケンスが全て完了したところで、SKAppState.fs...
~
*CRONによる自動起動 [#x039a7b5]
サンプルプログラムをCRONで自動起動される事でBBBをヘッドレ...
**SSHでBBBへ接続する [#yc867bc9]
teratermなどでSSHを使ってBBB(192.168.7.2)へ接続する。~
[[参考>BeagleBone Blackの初期設定方法#g8ac7f15]]~
**CRONに設定ファイルを書き込む [#l8ca5320]
$cd /etc/cron.d
$vi boneboot
bonboot内に以下のように設定する。~
m h dom mon dow user command
NODE_PATH=/usr/local/lib/node_modules
@reboot root sleep 120 && /usr/bin/nodejs /var/lib/...
ファイルを保存してviを終了する。~
**再起動する [#z68b118d]
再起動すると自動的にサンプルプログラムが起動する。~
$reboot
*参考リンク [#g1d5b1fb]
**サンプルプログラム[#o09546ba]
&ref(skdemo_bbb_v1_04_2017_0601.zip);
**SK Cape(LoRa Cape)[#v645b63e]
SK Capeは株式会社スカイリーネットワークスで販売しておりま...
SK Cape基板の情報はこちらからダウンロード出来ます。~
&ref(SK-Cape board_20170601.zip);
**SK920LR(LoRa Module)[#v379edf5]
SK920LRは株式会社スカイリーネットワークスで販売しておりま...
SK920LR用のインターフェース変換基板の情報はこちらからダウ...
&ref(SK920LR-IF board_20180105.zip);
**BeagleBone Black [#bae21ecf]
https://beagleboard.org/black
**Grove System [#q1b34e51]
http://wiki.seeed.cc/Grove_System/
***Temperature Sensor V1.2 [#t22b7073]
http://wiki.seeed.cc/Grove-Temperature_Sensor_V1.2/
***Moisture Sensor [#b62a03dc]
http://wiki.seeed.cc/Grove-Moisture_Sensor/
***Slide Potentiometer [#ec9d5bb1]
http://wiki.seeed.cc/Grove-Slide_Potentiometer/
***Grove Cape [#l688c8d2]
http://wiki.seeed.cc/Grove_Cape_for_BeagleBone_Series/
**TeraTerm [#v1147722]
https://ttssh2.osdn.jp/index.html.ja
ページ名: