LazuriteとRaspberryPiを組み合わせてお手軽Iot ~Lチカ ・ 920MHz編~
最近、IoTという言葉をよく聞く。
僕は最初は何のことかわからなかった。ショッカソン見学に行き、作品を色々みせてもらっている時、「ラズパイならIoTが簡単にできるよ!」と言われ、それならやってみようか!と思った。
改めて書くと、IoTとは、Internet of Thingsの略称でモノのインターネットのこと。
う~ん。理解いまいち。w
ラズパイでIoTしたいけれど、何が必要なんだろう。
何ができるんだろう。
何から始めたらいいんだろう。もやもやしたまま、CEATECで何かヒントがあるといいなと思って会場を回っていたところ、ROHM(株)さんのブースで僕は、「これだ!」と思うものと出逢った。
その時の事を始めに少し書きます。
ROHMのブース天井からつり下げられていた大きな「折り鶴」。
「もしかして、これ、飛ぶんじゃない?」
ピンポーン!大正解!この「折り鶴」は、折り鶴型飛行体「ORIZURU」というものだった。
あと10分でデモ飛行をすると聞き、デモ会場の一番前に陣取って待った。
2羽の和紙の折り鶴が幕張メッセのCEATECの会場を見事に飛んだ。
大勢の観客からどよめきがあがった。
【写真】デモで折り鶴型飛行体「ORIZURU」を飛ばす超小型飛行研究所の宗像俊龍さん
その後、開発者の方による「ORIZURU」の説明、プレゼンがあった。
興味を持って聞いていると、「RaspberryPiでIoTが簡単にできる」と説明が!
しかも、920MHz帯の技適認証取得済モジュールがついてる!
これは、運命の出会い!(大袈裟!?笑)
飛ばすものも作れちゃう!
プレゼン終了後、Lazurite開発者の方に詳しい話を伺いに行き、後日、僕はLazuriteSubGHzとLazurite Pi Gatewayを手にした!
ラピスセミコンダクタ株式会社 Lazurite開発者の齊藤 直孝さん。
そして、IoTについて、まだ何もわかっていない僕はLazuriteと、今回はRaspberryPi2を使って、Twitter連携をすることを目標にした。
注:Lazurite Pi Gatewayと繋げられるRaspberryPiは、RaspberryPi2でなくても40pinのb+やa+でもできる。(bやaはGPIOのpinの数が26pinで足りないのでできない。)
Lazuriteとは
・ラピスセミコンダクタ株式会社が出しているArduino互換マイコンボード(IoTソリューションボード)。
・Lazurite Sub-GHzはラピスセミコンダクタ製16bit低消費マイコンML620Q504を搭載したオープンプラットフォームのマイコンボード。
・数百メートルの通信を低消費電力で実現できる特定小電力(920MHz帯)の技適認証取得済モジュールを同梱しているため、IoTのセンサーノードを簡単に実現することができる。
・Lazurite Pi Gatewayは、コストパフォーマンスの高く高性能なLinuxコンピュータ”Raspberry Pi”を特定小電力(920MHz)のGatewayにすることができる無線モジュール。
上記の紹介は、ラピスセミコンダクタ株式会社さんのHPより一部抜粋して引用させて頂いたものなので、詳細は下記へ。
http://www.lapis-semi.com/wp/
Lazurite関連ファイルダウンロードはこちらです。
僕は、ほとんどArduinoを触ったことがなかったので、Lazurite SubGHzを使いTwitter連携をするために、まずは基本のLチカをし、その次に920MHz通信をやってみることにした。
1、Lチカ
・まず、LazuriteSubGHzの準備する。
・LazuriteSubGHzと無線モジュールを組み立てる。
ネジ穴が最初からあいているのでネジでガッチリ固定できる。
・LAZURITE IDEのインストール
Lazurite関連ファイルダウンロードページに行き、インストーラ又はzipファイルを選んでダウンロードする。
僕はWindowsPCでインストーラーを選択した。
・サンプルプログラム「Blue LED」(blue led)を見ながら基板内蔵のLEDが点滅するプログラムを作り、実行する。
きちんと動く。
ここは、スムーズだった。
>(上記写真は、ラピスセミコンダクタ株式会社のダウンロードページのドキュメントからダウンロードしたファイル記載の写真を引用させて頂きました。)
2、920MHz通信
次にLazuriteSubGHzの最大のウリである920MHz通信をLazuriteSubGHzとLazurite Pi Gatewayを使ってしてみる。
Lazurite Pi GatewayとRaspberryPi2、無線モジュールを下の写真のように接続した。
(上記写真は、先ほどの写真と同じでラピスセミコンダクタ株式会社のダウンロードページのドキュメントからダウンロードしたファイル記載の写真を引用させて頂きました。)
組み立て終わり、いざRaspberryPi&Lazurite Pi Gatewayを起動しようとしたが・・・・起動するためのMicroSDの中身いれてなかった(orz)
僕はマニュアルに書いてある
「>1. ダウンロードしたファイルを、Win32DiskImagerなどのツールを使用してイメージファイルをマイクロSDカードに書き込んでください。 」
に従い、関連ファイルダウンロードページの下の方にあるLazurite Pi Gatewayを使用するためのRaspberry Pi用イメージファイルをダウンロードした。
ちなみに、イメージファイルは、Raspberry Pi B+/A+用Rasbianイメージファイル、Raspberry Pi2用Rasbianイメージファイルとそれぞれあり、僕は、最初a+で使いたかったので、Raspberry Pi B+/A+用Rasbianイメージファイルをダウンロードした。
NOOBS解凍後の中身とイメージファイルを1つのMicroSDにcpするのか、イメージファイルだけをMicroSDにcpするのか。
だが、どちらも違った。
イメージファイルを書きこむのだ。
なぜ、分かったか。
上記の「」の部分にもかいてあるが、なんと、きちんとマニュアル(ダウンロードした関連ドキュメントの事)に書いてあったのだ。
改めて思うが、僕ってなんで肝心なところだけ見過ごすんだろう。
ここで、Lazurite Pi GatewayとRaspberry Piを組み立てる。
さて、成功なるか。
ダララララララララララララ~ ダッダッダン(ドラムロ-ルの音♪)
動かないorz
どういうことだ。
ちゃんと、RaspberryPiA+のディスクイメージ入れて、RaspberryPiA+でやっている・・・あれ!?
RaspberryPi2でやっているではないか。何してるんだろう僕。
RaspberryPiA+にUSB差し替えてMicroSD挿して、いざ、参る。
スイッチON!
立ち上がった~。
待った、これログインしなくてはいけないみたい。
マニュアルにも書いてあるが、設定は初期設定のままだそうだ。
"pi" ⇒ "raspberry" ⇒ "startx" ⇒ xwindow立ち上がる。
やっと、見慣れたデスクトップ画面だ。
マニュアルの通り進めていこう。
ターミナルを立ち上げて、「"sudo raspi-config"」でEnterキー。
画面が変わると思うので、「1.Expand Filesystem Ensures that all of the SD card s・・・・。」を選択し、Enter。
また、画面が変わると思うので「ok」Enterキーを押し、再起動又はシャットダウン。
これで、ディスク容量の拡張ができた。
サンプルプログラムの実行&RubyのSerialMonitorの表示
次にメッセージをLazuriteSubGHz側から送らないといけないので、PC(RaspberryPiではない)にMicroUSBでLazuriteSubGHzを接続する。
LAZURITE IDEを立ち上げ、サンプルプログラムであるWelcome_SubGHzをLazuriteSubGHz側に書き込む。
下記のような感じ。
ここで忘れてはいけないのが、ホストアドレスの編集だ。
これはマニュアルには書かれていないのだが、下記写真のRaspberryPi&Lazurite Pi Gatewayの方の無線モジュールに貼ってある白いシールのQRコード右横の数字、文字の羅列の下の行の右から4つ目までを覚えておく。
四桁
そして、下記の画像の反転している「#define HOST_ADDRESS 0x〇〇〇〇」の〇〇〇〇の所に覚えておいた四桁を打ち込む。
上書き保存し、LazuriteSubGHzに書き込む。
続いて、RaspberryPi2&Lazurite Pi Gateway側の準備。
RaspberryPiを立ち上げていたら、再起動し、立ち上げていなければ起動する。
そして「”cd ruby”」で、ディレクトリに移動する。
これで準備は終わりで、後は「”sudo ./SerialMonitor.rb”」を実行するだけなのだが、
僕のはうまくいかなかった。
マニュアル通りに進めたのになんでだ。(本当にorz 意気消沈)
RaspberryPiA+からRaspberryPi2に替え、RaspberryPi2のディスクイメージ入れてやってもみたのだが、それでもうまくいかなかった。
原因を探ってみたが、全くわからなかった。
どうにもならず、開発者の齊藤さんに問い合わせをしてみた所、原因は分かったのだがそれは後ほど。
そして、齊藤さんにRubyではなくPythonでやることを勧められ、そうすることにした。
代わりにPythonで920MHz通信
齊藤さんのサポートを受けながら、Pythonでの方法を教えてもらい、Rubyとは全く違う方法でうまくいった。
Python3を立ち上げ、ターミナルも立ち上げる。
ターミナルで「”cd ~/driver/sub-ghz”」でディレクトリに移動し、「”make”」を実行する。
文字や数字が表示されるが、何かのファイル(知らない)をコンパイルしているそうだ。
これが終わったら、Python3の画面に戻り、Run(実行)をする。(F5キーでも可)
すると、Lazurite Gatewayというwindowが開く。
画面にある「Start」ボタンを押すと、「Welcome to Lazurite Sub-GHz」というコメントが受信される。
Rubyでうまくいかなかった僕は受信された瞬間、歓喜に沸いた。
RubySerialMonitorのDriverを入れて再度実行
さっき、「後ほど。」と書いて終わっていたRubyでうまくいかなかったこと。
この原因は、920MHz通信するためのドライバーがロードされていなかったことだった。
「ガガガガーン」これマニュアルに載ってな~い。
何回orzしないといけないの。
だが、かの有名なトーマス・エジソンはこう言った。
「失敗したわけではない。 それを誤りだと言ってはいけない。 勉強したのだと言いたまえ。」と。
これは失敗ではない、勉強したのだ。
上記のようなカッコつけはこれくらいにして、920MHz通信するためのドライバーのロードするためターミナルで「”sudo insmod ~/driver/sub-ghz/DRV_802154.ko”」と打ち、実行。
うまくいった~。
嬉しさが胸にこみ上げてきた。
イェーイ!!!
このブログは、2015年10月下旬に書き始めたものなのですが、ずっと続きを書けていなくて、今日やっと何とか前半部分を書き終えました。
後半のTwitter連携の話は別で書きます。