920MHz無線通信モジュールの話

920MHz無線通信モジュールを用いた通信実装


サブギガ帯の無線通信を研究に取り入れるのでいま取組中.

モジュールとの接続はUSB経由のいわゆるCOMポートシリアル接続になるので,枯れたライブラリがいっぱいあって助かる.
Rubyの環境はUbuntuの開発機に既に入ってるので,Rubyでやってみる.

1
2
# apt-get install ruby-dev
# gem install serialport

環境はこれで入った.簡単すぎる.

現在手元にあるのは大学から借りてるモジュールで,昨年講習会である程度説明を受けたほか,マニュアルやらがあるので利用できるコマンドはひと通り調べられるのがよい.ずっとこういう研究開発がしたかったし最高すぎる.

以下シリアル接続開いて初期設定後に近隣端末にタイムスタンプをブロードキャストするプログラム.Ubuntu14.04の場合は,COMポートは/dev/ttyUSB*とか.大体ls /devしたあとモジュールを接続して再度ls /devすれば増えた項目がCOMポートだとわかると思う.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
require 'rubygems'
require 'serialport'

sp = SerialPort.new('/dev/ttyUSB0', 115200, 8, 1, SerialPort::NONE)
sp.write "SKSREG S01 1005 \r"
sleep 1
puts sp.readline

loop do
t = Time.now
strTime = t.strftime("%X")
w = "SKBC 1 5555 08 " + strTime + "\r"
sp.write w
sleep 60
end
sp.close

ハマったポイントは,ボーレートの設定と,コマンド末尾のデリミタだった.

ボーレートはいくつか設定できるような記述があったけど,実際は115200bps以外のボーレートを受け付けなかった.これで1時間位ハマった.

コマンド末尾のデリミタは,一般的な"\n"ではなく"\r"を用いなければ,コマンドが発行されないということに辿り着くまで3時間かかった.

まだ法整備が微妙な感じで,このモジュールに関しては1時間に360秒間しか通信を許可されていない.そのあたりも今後流動的に変わっていきそうなので,実装はそれに準じていくことになりそう.

とりあえずプログラムからシリアル接続して初期設定,任意の文字列を送信までできたので,あとは文字数の指定とかをウマいことやってスループットと遅延時間が測れるようにする.

おわり

ブログの内容について


その日特にやったことがブログのやつになる感じなので,グラブルやってた日はグラブルの話になるし,研究やってた日は研究の話になるし,何もやんなかった日は適当なことを書きます.自分のその日のアレ具合がわかってしまうので悲しい

あと,もう課金辞めるって決めたのに気づいたらまた新キャラで深追いしてしまった.しかも野郎キャラなのに・・・これ以上はまじで生活がやばいので本当に課金辞める.限定キャラとか水着キャラとかほんとうに勘弁してくれ 死にたくない