kogame2004のブログ

電子工作+プログラミング、書道が好きな中学一年生。 小3より各種ワークショップで色々な体験をしているうちに電子工作+プログラミング(フィジカルコンピューティング)に興味を持ち、現在に至ります。RaspberryPiでのもの作りは小4の4月から始めました。

LazuriteとRaspberryPiを組み合わせてお手軽Iot ~Lチカ ・ 920MHz編~

 最近、IoTという言葉をよく聞く。
僕は最初は何のことかわからなかった。ショッカソン見学に行き、作品を色々みせてもらっている時、「ラズパイならIoTが簡単にできるよ!」と言われ、それならやってみようか!と思った。
 改めて書くと、IoTとは、Internet of Thingsの略称でモノのインターネットのこと。
う~ん。理解いまいち。w
ラズパイでIoTしたいけれど、何が必要なんだろう。
何ができるんだろう。
何から始めたらいいんだろう。もやもやしたまま、CEATECで何かヒントがあるといいなと思って会場を回っていたところ、ROHM(株)さんのブースで僕は、「これだ!」と思うものと出逢った。
 その時の事を始めに少し書きます。

ROHMのブース天井からつり下げられていた大きな「折り鶴」。
「もしかして、これ、飛ぶんじゃない?」
ピンポーン!大正解!この「折り鶴」は、折り鶴型飛行体「ORIZURU」というものだった。
あと10分でデモ飛行をすると聞き、デモ会場の一番前に陣取って待った。
2羽の和紙の折り鶴が幕張メッセのCEATECの会場を見事に飛んだ。
大勢の観客からどよめきがあがった。

f:id:kogame2004:20151113215120j:plain

 【写真】デモで折り鶴型飛行体「ORIZURU」を飛ばす超小型飛行研究所の宗像俊龍さん

その後、開発者の方による「ORIZURU」の説明、プレゼンがあった。

興味を持って聞いていると、「RaspberryPiでIoTが簡単にできる」と説明が!

しかも、920MHz帯の技適認証取得済モジュールがついてる!

 これは、運命の出会い!(大袈裟!?笑)
飛ばすものも作れちゃう!

f:id:kogame2004:20151113215142j:plain

プレゼン終了後、Lazurite開発者の方に詳しい話を伺いに行き、後日、僕はLazuriteSubGHzとLazurite Pi Gatewayを手にした!

f:id:kogame2004:20160111165847p:plain

ラピスセミコンダクタ株式会社 Lazurite開発者の齊藤 直孝さん。

f:id:kogame2004:20151113215039j:plain

 

 そして、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関連ファイルダウンロードはこちらです。

ダウンロード | Lazurite

 

 僕は、ほとんどArduinoを触ったことがなかったので、Lazurite SubGHzを使いTwitter連携をするために、まずは基本のLチカをし、その次に920MHz通信をやってみることにした。

1、Lチカ
・まず、LazuriteSubGHzの準備する。
・LazuriteSubGHzと無線モジュールを組み立てる。
  ネジ穴が最初からあいているのでネジでガッチリ固定できる。

・LAZURITE IDEのインストール
 Lazurite関連ファイルダウンロードページに行き、インストーラ又はzipファイルを選んでダウンロードする。
 僕はWindowsPCでインストーラーを選択した。

・サンプルプログラム「Blue LED」(blue led)を見ながら基板内蔵のLEDが点滅するプログラムを作り、実行する。
 きちんと動く。
 ここは、スムーズだった。

f:id:kogame2004:20160111155237p:plain

>(上記写真は、ラピスセミコンダクタ株式会社のダウンロードページのドキュメントからダウンロードしたファイル記載の写真を引用させて頂きました。)


2、920MHz通信

 次にLazuriteSubGHzの最大のウリである920MHz通信をLazuriteSubGHzとLazurite Pi Gatewayを使ってしてみる。
Lazurite Pi GatewayとRaspberryPi2、無線モジュールを下の写真のように接続した。

f:id:kogame2004:20160111122456p:plain

(上記写真は、先ほどの写真と同じでラピスセミコンダクタ株式会社のダウンロードページのドキュメントからダウンロードしたファイル記載の写真を引用させて頂きました。)


 組み立て終わり、いざ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側に書き込む。
 下記のような感じ。

      f:id:kogame2004:20160111173938p:plain

 ここで忘れてはいけないのが、ホストアドレスの編集だ。
 これはマニュアルには書かれていないのだが、下記写真のRaspberryPi&Lazurite Pi Gatewayの方の無線モジュールに貼ってある白いシールのQRコード右横の数字、文字の羅列の下の行の右から4つ目までを覚えておく。

   f:id:kogame2004:20160111195647p:plain
                    四桁
そして、下記の画像の反転している「#define HOST_ADDRESS  0x〇〇〇〇」の〇〇〇〇の所に覚えておいた四桁を打ち込む。
上書き保存し、LazuriteSubGHzに書き込む。

f:id:kogame2004:20160111193508p:plain


 続いて、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しないといけないの。
だが、かの有名なトーマス・エジソンはこう言った。
「失敗したわけではない。 それを誤りだと言ってはいけない。 勉強したのだと言いたまえ。」と。
これは失敗ではない、勉強したのだ。

f:id:kogame2004:20160111235958p:plain

上記のようなカッコつけはこれくらいにして、920MHz通信するためのドライバーのロードするためターミナルで「”sudo insmod ~/driver/sub-ghz/DRV_802154.ko”」と打ち、実行。
うまくいった~。
嬉しさが胸にこみ上げてきた。
イェーイ!!!
 

このブログは、2015年10月下旬に書き始めたものなのですが、ずっと続きを書けていなくて、今日やっと何とか前半部分を書き終えました。
後半のTwitter連携の話は別で書きます。