こんにちは。ライターの加藤恵美(かとえみ)です。先日、同じ会社の人に「ツイートを大声で勝手に読み上げる悪魔のロボット」を作られてしまいました。
「ぐへへへ かとえみさんが、ツイートしたよ。『きのうふぐおいしかった……』」
将来、もしかしたらこのロボットが、勝手にいろんなところへ行ってしまうかもしれません。あなたの会社に訪問してくるかもしれません。今の世の中、誰でも手に入る部品でこんなものが作れてしまうようです。
これは、止めなければいけない。
まったく仕組みがわからないのですが、自分の身を自分で守るためにも、基幹として使われている「Raspberry Pi(以下:ラズベリーパイ、ラズパイ)」というマイコンボードをいじり、「ラズパイ」でロボットを作る仕組みを勉強していきます!
連載7回目の今回は、ラズベリーパイにセンサーを取り付け、現実世界の情報を取得してみたいと思います。センサーでいろんなデータを得られれば、ロボットが周りの状況を自分で感知して自力で動けるようになるはずです……! ちょっとわくわくしてきました。
今回も、「ツイートを大声で勝手に読み上げる悪魔のロボット」を作った張本人の今井先生に教えてもらいましょう。
はんだ付けしたくない(できない)
- ※補足
- ロボットの定義は「センサ」、「知能・制御系」及び「駆動系(動く、出力するもの)」の3つの要素技術があるものと言われています
【ラズパイ入門32】 ラズベリーパイでセンサーを使いたいけれど「はんだ付けしたくない!」という場合は、「GrovePi+」というとっておきのアイテムがある |
GrovePi+とは
今井先生が言っていた「GrovePi+ スターターキット for Raspberry Pi」はこちら。中国・深センのSeeedという会社が開発したキットです。
箱をあけると、説明書とマイコンボードが入っていました。右にあるのが今回の肝となる「GrovePi+」。ラズベリーパイに乗せると、はんだ付けをしなくてもSeeedオリジナル「Grove」規格のセンサーやパーツを使える拡張ボードです。
キットには他にも、センサーなどのパーツがたくさん入っていました。
【ラズパイ入門33】 ラズベリーパイは、アナログ入出力ができない |
1. GrovePi+の初期設定をしよう
GrovePi+公式の設定解説ページを参考に、初期設定していきます。
公式ページではデスクトップにインストールしていますが、今回はより簡単な方法でインストールします。(管理者権限が必要なコマンドを実行する”sudo”を、なるべく使わないようにしています)
1-1. GrovePi+を使うのに必要なデータをダウンロードする
GrovePi+をラズベリーパイにつける前に、まずはラズベリーパイ側のソフトウェア環境を整えます。Terminal(黒い画面)を開き以下のコマンドを打つと、必要なデータのダウンロードが始まります。
git clone https://github.com/DexterInd/GrovePi
1-2. 実行ファイルをインストールする
データのダウンロードが終わったら、下記のコマンドで環境を構築していきます。
cd GrovePi/Script/
chmod +x install.sh
sudo ./install.sh
黒い画面(Terminal)に聞かれるがままに、「y」(yesの意味)を押しながらインストールを続けていくと、ラズベリーパイが自動的に再起動されます。これで設定完了です!
2. ラズベリーパイにGrovePi+を取り付ける
電源がついたままだと危ないので、ラズベリーパイの電源を切り、こちらの向きでGrovePi+を取り付けます。
ラズベリーパイの金属部分(USBコネクタや有線LANコネクタ)と接触しそうなところには、ふせんなどを貼って絶縁しておくのが小技だそうです。
【ラズパイ入門34】 ラズベリーパイに別の基板を取り付けるときは、金属部分が接触しないようにふせんなどで絶縁する |
このように、ラズベリーパイにGrovePi+をつなげてみました!
3. 接続確認のためにGrovePi+でLチカしてみる
前回教わったとおり、新しい基板を使うときは、環境が整っているかを確認するため、「Lチカ」(LEDをチカチカと光らせること)でテストします。今回基板は、ラズベリーパイとGrovePi+の2枚を使うので、これらの接続確認をしていきます。
3-1. ラズベリーパイとGrovePi+の接続確認
GrovePi+公式の設定解説ページを参考に、以下のコマンドを打つと、このような画面になります。
i2cdetect -y 1
こちらのスクリーンショットと同じ場所に「04」という数字が表示されれば、ラズベリーパイとGrovePi+が正しく接続されている状態です。
3-2. GrovePi+とLEDをくっつける
GrovePi+ スターターキット for Raspberry Piに入っている好きな色のLEDを、「D4」と書いてあるポートにくっつけます。(GrovePi+の設定解説ページで、「D4」につけるように指示がでています)※LEDのパーツの組み立て方がわからない方は、下記の「おまけ」をご参照ください
なんと、「1. GrovePi+の設定」でダウンロードしたGrovePi+のデータの中に、Lチカのためのサンプルプログラムが既に入っているそうです。(ありがとう、サンプルプログラムを作ってくれた誰か!)
そのサンプルプログラムを探して、実行してみたいと思います。
3-3. サンプルプログラムを探す
cd GrovePi/Software/Python
このコマンドを打って、サンプルプログラムを探していきたいと思います。
【ラズパイ入門35】 キーボードのTabを押すと、アドレスを自動的に補完してくれる。また、↑を押すと、過去に打ったコマンドを再利用できる |
次に、以下のコマンドを打つと、Pythonフォルダに入っている情報がずらりと表示されます!
ls GrovePi/Software/Python
プログラマーっぽい……(満足)
この中から、Lチカしそうなサンプルプログラムを探します。「LED」「Blink(チカチカ)」と書いてあるファイルを発見しました。
python grove_led_blink.py
と打つと、Pythonのプログラムが実行されます。早速実行してみると……、
LEDがチカチカしました!!! ありがとう、サンプルプログラムを作ってくれた誰か……!
画面にはこのような感じで延々と「ON」「OFF」が繰り返し表示されていました。止めるときは、Ctrl+Cで中止できます。
4. GrovePi+でセンサー情報を読み取る
4-1. サンプルプログラムの中身を見てみよう
今回は、試しに光センサーを使ってみることにしました。「3-3. サンプルプログラムを探す」で出てきた一覧の中にある、「grove_light_sensor.py」というサンプルプログラムが使えそうです。
less grove_light_sensor.py
と打つと、プログラムの中身の記述が閲覧できます。
プログラムを読んでみると、”# Connect the Grove Light sensor to analog port A0(A0に光センサーをつなぐ)” という記述を見つけました! 「A0」のポートに挿せばいいんですね。
キーボードでQを押すと、元の画面に戻れます。
【ラズパイ入門36】 サンプルプログラムの中身を読めば、基板の使い方が学べる |
4-2. GrovePi+にセンサーを取り付ける
GrovePi+のA0のポートに、光センサーを挿してみます。このように、はんだ付けをしなくてもセンサーを取り付けられるんです! では、以下のコマンドで光センサーのサンプルプログラムを実行してみます。
Python grove_light_sensor.py
センサーを障害物で覆ったり、どかしたりして、センサーの値が変わることを確認できました!
ちなみに、光センサーの値に応じてLEDの点滅を制御するプログラムも用意されていました。試してみると……、
このような感じで、LEDの光を制御できました! どんどんロボットの制御に近づいていっています。
おわりの前に……おまけ
「GrovePi+ スターターキット for Raspberry Pi」のLEDは、LED、基板、ケーブルがばらばらになってパッケージされています。
前回、LEDは足が長いほうがプラス(陽極、アノード)と習いましたが……なんと……
GrovePi+キットに入っているLEDは、足の長さが同じなんです……(涙)
ということで、よーくみて、マイナス側を確認し、
無事、基板側の「+」「-」の表示通りにセットできました。電子工作の知識が1つ増えました!
【ラズパイ入門37】 LEDの足の長さが一緒の場合は、LEDの中身をよーくみて、旗がついている方がマイナス |
おわりに
GrovePi+を手に入れて、簡単にセンサーで現実世界の情報を入手することができるようになりました。プログラミングの小技もたくさん習って、だんだんとプログラマーにも近づいてきました。どんなラズパイロボットを作ってみようかな。
次回は、いよいよ、ラズベリーパイでロボットを動かしてみたいと思います!