2016年11月17日 テクノロジー

【第2回】新入社員、ラズベリーパイで電子工作 〜IoTに挑戦、モジュールに慣れよう編!〜

こんにちは、新人フロントエンドエンジニアの嶋谷です!
 
前回、ラズベリーパイを使ってみるために必要なものを揃えてみましたが、今回は実際に回路や機械を組むことに挑戦しました。
 
▼前編はこちら▼

2016-10-20
皆さんこんにちは。新入社員の嶋谷です。僕は、アイスリーデザインでフロントエンドエンジニア(まだまだ、見習いです。)として
 

目次

 
 

使用するキットの紹介

今回購入したのは以下のキットです!
4535_1
 
この中にはブレッドボードやワイヤー、抵抗のような必要不可欠なものから温度計やボタン、センサーにリモコン、各色のLEDなど多くの道具が1箱にまとまって3000円程度で購入できます!中身は以下の画像のようになっています!
4535_2
 
一度に便利なものを揃えられるというのは、初心者の自分にとってはとてもありがたいものです。
 
 

今回の目標

赤外線のセンサーを使ってリモコンから照射された赤外線を受信し、赤外線LEDでエアコンやテレビを操作するということを考えています。
 
今回は、
 
・モジュールを実際に使ってみること
・赤外線を受信してみること
 
次回、操作を管理するというところまでを書きたいと思います。
 
多くの記事を参考にして装置を動かすようトライしました!が、最初に試した手順では目標である赤外線の受信がうまくいかず…。その辺りも含めて、ここに書いていきます。
 
 

作成手順

(こちらの記事を参考につくってみることにしました!)

1.GPIOについて

前回ほんの少しだけ触れたのですがラズベリーパイにはGPIO(General Purpose Input Output)というものがありこちらがどのような役割を果たしているかというと
 
・センサーやLEDに対して電力を供給する
・家電製品についているアース(漏電の防止、余分な電気を逃すといった役割です)
・命令を発する
・結果を受信する
 
という「剣山のような装置」が40個ほどあります。
 
4535_3
↑の画像のトゲトゲした部分がGPIO
 
このGPIOを使うためにはWiringPiというC言語で記述されたライブラリをインストールします。
 

 
これでインストールが完了します。
 
WiringPiはC言語で作られていますが、このライブラリを使うのはC言語でなくともPythonと言った言語でも必要な情報を渡すことができれば使うことができます。
 
 

2.LIRCについて

ここの部分が1週間以上詰まったポイントです。
 
LIRC(Linux Inframed Remote Control)
LIRCというのは直訳するとLinux赤外線コントロールと言う意味です。
つまりこれはLinux≒ラズベリーパイで赤外線の操作を行うために使うプログラムです。
こちらのプログラムはインストールするだけで簡単に赤外線の受信、送信ができるようなのですが、環境がどうしても合わないのか使用することができませんでした…
 
【原因1】
LIRCがGPIOを認識せず、線をつなげているにも関わらず通信が出来ない。
 
【原因2】
エアコンのリモコンの場合、一つの操作あたりの情報量が多いと操作ができないという弱点があり、動かなかった。
 
 

3.今回行った方法について

上記の方法では目的である赤外線の受信が行えなかったため、代わりにこちらを参考にしました。
 
このページではC言語で記述されたscanirというプログラムを使って赤外線の受信・送信を行うコードが記述されています。
 
こちらのコードを参考にした結果、LIRCで苦戦した赤外線の受信を、とても簡単に成功させることができました。その時実行したコマンドが下記のとおりです。
 

 
これで赤外線の読み取りが成功したようです。
 
sudo ./scanir test1.txt 7
というコマンドは
sudo→管理者権限で実行の意味
./scanir→プログラムを実行
text1.txt→ 保存するファイル名
7→上述したGPIOのどの番号から命令を行うかの指定
となっています!
 
次に読み取った赤外線のデータを確認してみます。
 

 
バッチリ読み取れていますね!!
 
受信自体は成功!!が、しかしセンサーの品質がお世辞にも良いとは言えず、リモコンを長押しし何度もトライする状態でした…
 
余談ですが、数年前までは赤外線でメールアドレスを交換していてなかなかうまく通信できなくて交換に時間がかかった思い出があると思いますが感覚的にはそんな感じでした笑
 
リモコンの操作一つ一つを覚えさせる必要があり、現状、一部の内容しか学習をさせることができていませんが、このscanirというプログラムを使うことによって受信の問題はひとまずクリアしました。
 
4535_4
↑こちらが実際に接続した例です!
 
重なっていてちょっと見えにくいのですが
 
・真ん中の赤のコードが電力を供給する線
・右の青のコードがラズベリーパイから命令を送る線
・左の黄色のコードがラズベリーパイに取得した赤外線のデータを送り返す線
 
になります。
 
 

4.温度計モジュールについて

ラズベリーパイによってエアコンを操作できるようになったとき、設定した温度に操作できるようになったら素晴らしいなと思い加えました。
 
30分スパンで気温を取得しそのデータをラズベリーパイに送信し、処理&判定をし、エアコンを操作するというものです。
 
参考にしたページはこちらです。
 
実際にコードを打ってみるとこのようになります。
 

 
結果の気温はこの時、暖房をつけていたので「21度」はだいたい合っていると思います。
 
温度の取得自体はとても簡単にできました。取得できたデータは統計を取ることによってグラフでの可視化を行うこともできます。
 
 

ここまでやってみてどうだったか?

今回の内容は不慣れな自分にとっては非常に苦戦しましたが、苦戦した分、達成感も大きいものでした。調べたとおりに処理を実行して完成とならないのが実際のプログラミングですね…失敗した内容も含めて、どうにか達成させるという点で非常に良い経験になりました!
 
次回は実際に動かして確認を行いたいと思います。
ご期待下さい!
 
 

O.Shimaya

2016年4月にi3DESIGN入社し、フロント周りを担当。大学では経営学部に属していたがプログラミングの方面に進みたくなりエンジニアに。日中はアウトドア派、夜はインドア派でパソコンとスポーツが好き。休日は朝から夜まで外出してロードバイクに乗ったり、最近はテニスも初めたり。

この記事をシェアする