Raspberry Pi3で電子工作への第一歩-Lチカ編-
前回記事でRasPiに電源だけ繋げばmacから操作ができるようになりました
この記事で、ssh接続して画面共有画面でGUIのpreferencesからRaspberryPiの設定(configuration)にアクセスしようとしてもできなかったので困っていました。
この件についてはこれまで通り直接モニタを繋ぐ使い方をすれば問題なくGUIでRasPiの設定をいじれました!
共有画面は所詮"共有"ということでしょうか...また詳しくわかれば記事にします。
さて、今回は電子工作界のHelloWorld、Lチカに挑戦です。
LチカはLEDチカチカ、個人的にLEDのパットつくサマはピカッと形容したいという願望はここでは置いておきます。とにかくやってみよう!
Lチカに向けた準備物
まず、物品準備をしましょう!
とりあえずLチカするのに必要なのは次の4つです。
- ブレッドボード
- ジャンパー線(メス-オス)
- 抵抗
- LED
電子工作はやったことがなかったのでまずこいつらをどこで買えるの??
となりました。電子部品屋さん、検索しましょう
1.マルツ
マルツは簡単に行ける範囲にすぐあった店舗をたまたま発見
ここで適当な上記4点をゲット。今後も実店舗でないとわからない場合はマルツさんにお世話になりましょう。
2.秋月電子通商
いろんなページを見ていると必ず紹介されているのがこのお店です。
電子部品のいわゆる老舗ですね。まだ僕にはレベル高です。
3.スイッチサイエンス
ここも電子工作に関わるページを見ていると必ずと言っていいほど出てきます。
しかし、まだここもレベル高に感じる
まだ作るものがぼんやりしかわからないと単品購入は難しいです...
さて、色々したいけど何を買うかわからないので結局次の商品を買うことにしました
なんやかんやと入っているキットです、しかも3,000円ほど
しかし、このキットは注意事項があって
ジャンパー線のオス-メスが入っていません!!
なので別で購入しましょう。とりあえずこれを購入しました。
いや、キットに入れといてよ...
さて、これで必要品は揃ったので早速配線しましょう!!
回路を構成する
以下では回路を実際に作っていきますが、最初は念のためRasPiは電源を切って始めてください
電源が入っていると構成中に電流が流れて素子が壊れたり、ということが起こる可能性があります。
では、回路図見て見ましょう!!
Lチカのためにはこれだけの回路でオッケーです
今回は470Ωの抵抗を挟みました!
LEDに過電流が流れて壊れてしまうのを防ぐ役割です
LEDは極性があるので気をつけます
足の長い方がプラス(アノード)、短い方がマイナス(カソード)
ワカンねぇよ!って人はこちらを参考に→LED(発光ダイオード
さて、これは図の通り電源があればいいので電池でも光りますが、この電源をRasPiにしてさらに光らせるかどうかを制御してやるのが目的になります!!
ここでRasPiのGPIO端子を使います
ピン多すぎて何が何だか...となりますよね
GPIOはGeneral Purpose Input/Outputの略で、つまり「いろんな入出力端子」ぐらいの認識でオッケーです
だからピンが多いんですね
またブレッドボードも穴がたくさんありますが内部で導通している部分もあり初心者は迷ってしまう可能性があります
これらはよくまとまった詳しいページ(GPIOのピン番号など)があるのでここを参考にするということで細かいことは省きます
僕自身がその日の気分で田植えのように素子を挿した回路も参考程度に貼っておきます
見にくいかと別角度でもう一枚
このGPIOからブレッドボードへの接続にジャンパー線オス-メスを使いますね
ではようやくRasPiの電源を入れて操作に入っていきましょう
RasPiからLEDを制御する
ここからはRasPi内での作業になります
まずはLEDを単純に光らせたり、また消したりというのをやってみます
しかし、その前に、以下の操作をするために必要なWiringPiというものをインストールしておきましょう
以下のページを参考にやってみました
が、いくつかコマンド実行するので面倒な場合はRasPi3は最初から入ってるかもしれないので下に進んでreadallコマンドを実行してみると良いかと思います!
この参考ページの内容とは被りますが自分のやった内容をまとめていきます
ターミナルより以下のコマンドを実行します
$ gpio readall
すると、以下のような結果が返ってきます
BCMはGPIO番号、wPiはWiringPiというC言語でRasPiを制御する時に使う番号です。多分。
ModeはInputしてるかOutputしてるかということでしょう
今回はPhysicalのピン番号で言うと39番でGNDを取り、12番のgpio18を使っています。
ピン番号での指定もできますが今回はgpio番号でいきましょう
LED点灯にはgpio18をOutputにしてやれば良いので以下のコマンドを実行します
$ gpio -g mode 18 out
もう一度gpioの状態を見てみましょう先ほどのreadallコマンドを実行します
ちゃんとModeがOUTに変わりました
さて、これでようやくLED点灯まであと1コマンドです!!
次のコマンドを実行しましょう
$ gpio -g write 18 1
これはgpio18のV=0であったものをV=1にすると言う意味です
やっと光りました!LED結構眩しいです
では、消灯もしてみましょう。これは簡単でまたV=0に戻してやればいいので
$ gpio -g write 18 0
としてやれば消えましたね
以上でターミナルから簡単にgpioの制御ができることがわかりました!
では、Lチカ、つまり時間間隔をあけてチカチカチカとLEDの点灯消灯を繰り返すのはどうしたら良いでしょうか
プログラム言語、環境を選択する
Lチカは簡単なプログラムを書く必要がありますがここでいくつか候補があります
- Python
- Scratch
- C
などなど色々ですが今回は手軽さと以前からの興味もあってPythonで書かれたコードを試してみました
ここがこの記事のメインじゃないのかよ!と自分でなってますが書くの疲れたのでそれぞれの言語について参考になりそう(もしくはそのまま自分が実行した)サイトの紹介をしておこうと思います
こんなところでしょう!
プログラムはまだ自分の中に確立されてない感があります...
まだまだお勉強が必要そうです!!
まとめ
なんとかLEDを遠隔操作で制御するということはできました
配線を考えてプログラムを書く
プログラムについては
Scratchはブロック組み立てのようにするので理解しやすい
Cはコンパイルも必要でちょっと面倒かも
といった感想です
フランス留学中の3Dプリンタに関するプロジェクトに関わる先輩がPythonよく使うと言っていたのでとりあえずPython勉強してみようかなと思います
ということで!次回は制御のためのプログラム言語や環境を吟味してみたいと思ってます!!
気力がもつ範囲で頑張ろう...