ラズパイとPython(パイソン)で電子工作しよう

Scratch(スクラッチ)の次は何をしようか、と小学校4年生の息子と話していました。もともと電子工作が好きだったので、「ラジコンが作りたい」と言い出した息子。

マイナビ出版の「やさしくはじめるラズベリー・パイ」を購入しました。こちらの最後の章に、ラズパイで制御するラジコンカーの作り方が掲載されています。

ラズパイは、Scratch(スクラッチ)からのステップアップとしてScratch(スクラッチ)とマインクラフト・パイを連携させてマイクラの建造物を自動化させるプログラムを作成した経験があります。

とても良い教材でしたが、ビジュアルプログラミング言語なので、そろそろ本格的なプログラミング言語である「Python(パイソン)」に触れたいところです。Python(パイソン)を選んだ理由は、今注目されているプログラミング言語だから・・というノリです。

GPIOプログラミング入門

ラズパイには、「GPIO(汎用入出力)」という剣山のようなピンが2列で40ピン配置されています。それぞれのピンごとに異なる機能があるので、ピン番号を意識して配線を行いましょう。

LEDをチカチカ点滅させてみよう(Lチカ)

Python(パイソン)でLEDをチカチカと点滅させるプログラムを作成します。

Lチカのプログラムを書こう

「ラズベリーのアイコン」→「プログラミング」→「Python3(IDLE)※」をクリックして、エディタを起動しましょう。

(※IDLEとは、Python用の総合開発環境のことです)

ちなみに、エディタはPython3(IDLE)でなくお好みのエディタでも大丈夫です。

「New File(新規作成)」をクリック

Lチカのプログラムを書いたら、「Save As..(名前を付けて保存)」をクリックしてプログラムを保存します。

①「led.pi」とタイトルを入力して、②「Save(保存)」をクリックしましょう。

LX Terminalからプログラムを実行してみよう

プログラムはターミナルから実行します。「LX Terminal」を起動しましょう。

ターミナルからプログラムを実行するには、プログラムがあるディレクトリを「カレントディレクトリ」にする必要があります。(各コマンドでディレクトリの指定を省略する場合は、カレントディレクトリが対象となるので)

現在、どのディレクトリが操作対象なのかカレントディレクトリを調べてみましょう。

$ pwd

と入力します。

カレントディレクトリが

/home/pi

であることが分かりました!

もし、カレントディレクトリが

/home/pi/Public

となっていた場合は、1つ上の階層へ移動しなければなりません。

$ cd ..

と入力すると1つ上の階層へ移動できるので、

と入力します。

$ pwdコマンドでカレントディレクトリが

/home/pi/Public

になっているか確認しましょう!

「led.pi」のプログラムがカレントディレクトリにあることが確認できたら、以下のコマンドを入力してプログラムを実行します。

$ python3 led.py

LEDを10回チカチカさせるプログラムが実行されました!

LX Terminalを見ると、プログラムが実行されたことが分かります。

LEDを交互に光らせよう

2つのLEDを交互に光らせよう

このプログラムには、while文が使われているので、ずっと点滅を繰り返します。そこで、プログラムの最後に

except Keyboard Interrupt:

GPIO.cleanup()

sys.exit()

の3文を記入して、強制終了できるようにしています。(このプログラムは、[Ctrl]+[C]で強制終了します。)

LEDを5つ光らせよう

LEDの数が増えると、抵抗やジャンパワイヤの数が増えるので配線が複雑になります。ブレッドボードの穴(ソケット)の数が書籍で使用されている穴の数よりも少なかったので、抵抗を斜めに配置してみました。もし上手く点滅しなかったら、配線が間違えているのかも!

スイッチやボタンを使ってみよう

イベントを利用したLEDの操作

writing pi(Raspberry piのGPIOを制御するためのC言語ライブラリ)には、イベント機能があります。イベントを利用することで、while構文を利用しなくてもスイッチを押したときだけLEDを点灯・消灯させるプログラムを作成できます。writing piはPythonからもアクセス可能です。

また、ラズパイに内蔵されているプルアップ・プルダウン抵抗を利用することで、シンプルな配線でスイッチが安定して動作します。

フルカラーLEDを使ってみよう

set_color()関数を使って、フルカラーLEDの各※RGBポートを操作します。赤→緑→青と光るプログラムを作成します。(フルカラーLEDには足が4本あり、一番長い足がGNDと接続する各LED共通のカソード、その他は赤・緑・青のアノードになります)

※RGBとは赤(Red)・緑(Green)・青(Blue)の三原色の頭文字です。

赤→緑→青と光ります。画像では分かりにくいかもしれませんが、もっと鮮やかな色をしています。

DIPスイッチで色を切替えられるようにしよう

RGBフルカラーLEDを※DIP(ディップ)スイッチで切り替えるプログラムです。

  • スイッチが上の状態→ON
  • スイッチが下の状態→OFF

※DIPスイッチとは、8本の足がある4つの切り替えスイッチが1つになった小型スイッチです。

  • 1番のスイッチ→赤をON
  • 2番のスイッチ→緑をON
  • 3番のスイッチ→青をON

このプログラムの面白いところは、1番と3番のスイッチをONにするとフルカラーLEDが紫色に点灯するところです。

PWMを利用して圧電スピーカーを鳴らしてみよう

メロディーを演奏してみよう


圧電スピーカーとPWM(パルス幅変調)を使ってメロディーを演奏するプログラムです。

PWMで一定の周波数の信号を与えて音階を調整しています。チューリップの曲です。

サーボモーターを動かしてみよう

サーボモーターを動かすプログラム

サーボモーターは、ラジコンのタイヤの向きを変えたりカメラの向きを制御するときに使用します。

サーボモーターには3本の線があり、

  • 茶色の線→GND
  • 橙色の線→電源プラス
  • 黄色の線→制御線

になっています。

モーターの角度を

90度→0度→-90度→0度

と回転させるプログラムです。

ボタンでサーボモーターの角度を変えるプログラム

タクトスイッチ2個を追加します。左右のボタンでサーボモーターの角度が変わるプログラムです。

-90度から90度までの範囲を超えないようにするプログラムも追加されています。

ラズパイ制御のラジコンカーを作ろう

モーターに電子回路をつなげよう

ラズパイのGPIO(汎用入出力)とモーターを繋いでモーターを制御するラジコンカーを作ります・

  • タミヤ ユニバーサルプレートセット
  • タミヤ ツインモーターギヤボックス
  • タミヤ トラック&ホイールセット(キャタビラ)


を組み立ててから、

  • モーター
  • ブレッドボード
  • 電池ボックス
  • ラズパイ

などの電子回路をつなぎます。

回路図の自分メモ:


右用のモーターと左用のモーターがあるので、モータードライバーも2つあります。

ブレッドボードの配線の仕方は好みで変えて大丈夫です。

追記)

※後日、再び同じものを作ったときの配線メモです。

プログラムを作成してモーターが動くか確かめよう

  • 前進(1.5秒)
  • 後進(1.5秒)
  • 停止(1.5秒)

という動きを繰り返すプログラムを作成して実行してみます。モーターが動かないときは、配線が間違っているのかもしれません。筆者は、電池ボックスの電源がONになっていなくて最初動きませんでした;

あっ、キャタビラの右と左の動きが違う・・

左右のキャタビラが逆回転するときの対処法

逆回転しているモーターにつながっているモータードライバーの2番と10番の配線を交換すると直りますよ!(モーター側は半田付けしているので、ブレッドボード側の配線を差し替えます)

2番の黄色と10番の緑を交換して・・
2番を緑に、10番を黄色にすればOK!

ラジコン完成まで、もう少し・・!!!

スマホをリモコンで操作しよう

Webブラウザの操作画面をHTMLで作り、pythonで作成したWebサーバー経由でラジコンを操作します。

あとは

  • モバイルバッテリー
  • ブレッドボード
  • ラズベリーパイ


を固定すれば完成です!

ラジコンで遊ぶのにわざわざサーバーを立ち上げたりするのが面倒だな・・と思いましたが、材料をそろえてラジコンを組み立てたりプログラムを組んで失敗したり、成功したりの繰り返しがまた楽しかったです。配線もかなり勉強になりました。ラジコンが走ったときは感激しましたね!

ラジコンを作るときの注意点

ギヤボックスを組み立てるときは、半田付けが必要です。モーターの穴に

  • ジャンパワイヤ
  • セラミックコンデンサー

を通してまとめて半田付けします。

補足ですが、ブレッドボードの穴に差し込む側のジャンパワイヤの先端と電池ボックスの導線の先端を半田でコーティングしておくことで、ブレッドボードに差し込みやすく&抜けにくくなります。

まとめ

マイナビ出版の「やさしくはじめるラズベリー・パイ」は、ラズパイ初心者でもラジコンが作れる本です。今回ご紹介した内容は、この本の内容の全てではありません。他にも、

  • Webカメラの作り方
  • ライブ配信のやり方
  • デジカメの作り方
  • 防犯ロボットの作り方
  • ラズパイをしゃべらせる方法
  • 赤外線リモコンの作り方

などなど盛りだくさんの内容です。

すべて挑戦するのは大変ですが、(予算もかかります;)興味がある内容だけ挑戦するのも良いのではないでしょうか。