まいこーmemog

生きづらいとき人の言葉で生き返るので,自分も言葉にしてみる.[memo+blog]

Raspberry Pi3で電子工作への第一歩-Lチカ編-

前回記事でRasPiに電源だけ繋げばmacから操作ができるようになりました

 

maikocho.hatenablog.com

 この記事で、ssh接続して画面共有画面でGUIのpreferencesからRaspberryPiの設定(configuration)にアクセスしようとしてもできなかったので困っていました。

 

この件についてはこれまで通り直接モニタを繋ぐ使い方をすれば問題なくGUIでRasPiの設定をいじれました!

共有画面は所詮"共有"ということでしょうか...また詳しくわかれば記事にします。

 

さて、今回は電子工作界のHelloWorld、Lチカに挑戦です。

LチカはLEDチカチカ、個人的にLEDのパットつくサマはピカッと形容したいという願望はここでは置いておきます。とにかくやってみよう!

 

Lチカに向けた準備物

まず、物品準備をしましょう!

 とりあえずLチカするのに必要なのは次の4つです。

  1. ブレッドボード
  2. ジャンパー線(メス-オス)
  3. 抵抗
  4. LED

電子工作はやったことがなかったのでまずこいつらをどこで買えるの??

となりました。電子部品屋さん、検索しましょう

1.マルツ

www.marutsu.co.jp

マルツは簡単に行ける範囲にすぐあった店舗をたまたま発見

ここで適当な上記4点をゲット。今後も実店舗でないとわからない場合はマルツさんにお世話になりましょう。

2.秋月電子通商

akizukidenshi.com

いろんなページを見ていると必ず紹介されているのがこのお店です。

電子部品のいわゆる老舗ですね。まだ僕にはレベル高です。

3.スイッチサイエンス

トップページ - スイッチサイエンス

ここも電子工作に関わるページを見ていると必ずと言っていいほど出てきます。

しかし、まだここもレベル高に感じる

まだ作るものがぼんやりしかわからないと単品購入は難しいです...

 

さて、色々したいけど何を買うかわからないので結局次の商品を買うことにしました

なんやかんやと入っているキットです、しかも3,000円ほど

しかし、このキットは注意事項があって

ジャンパー線のオス-メスが入っていません!!

なので別で購入しましょう。とりあえずこれを購入しました。

 いや、キットに入れといてよ...

さて、これで必要品は揃ったので早速配線しましょう!!

回路を構成する

以下では回路を実際に作っていきますが、最初は念のためRasPiは電源を切って始めてください

電源が入っていると構成中に電流が流れて素子が壊れたり、ということが起こる可能性があります。

では、回路図見て見ましょう!!

f:id:maikocho:20171010104329p:plain

Lチカのためにはこれだけの回路でオッケーです

今回は470Ωの抵抗を挟みました!

LEDに過電流が流れて壊れてしまうのを防ぐ役割です

 

LEDは極性があるので気をつけます

足の長い方がプラス(アノード)、短い方がマイナス(カソード)

ワカンねぇよ!って人はこちらを参考に→LED(発光ダイオード

 

さて、これは図の通り電源があればいいので電池でも光りますが、この電源をRasPiにしてさらに光らせるかどうかを制御してやるのが目的になります!!

 

ここでRasPiのGPIO端子を使います

f:id:maikocho:20171010105915j:plain

ピン多すぎて何が何だか...となりますよね

GPIOはGeneral Purpose Input/Outputの略で、つまり「いろんな入出力端子」ぐらいの認識でオッケーです

だからピンが多いんですね

 

またブレッドボードも穴がたくさんありますが内部で導通している部分もあり初心者は迷ってしまう可能性があります

これらはよくまとまった詳しいページ(GPIOのピン番号など)があるのでここを参考にするということで細かいことは省きます

deviceplus.jp

 

僕自身がその日の気分で田植えのように素子を挿した回路も参考程度に貼っておきます

f:id:maikocho:20171010110916j:plain

 

見にくいかと別角度でもう一枚

 

f:id:maikocho:20171010110946j:plain

このGPIOからブレッドボードへの接続にジャンパー線オス-メスを使いますね

ではようやくRasPiの電源を入れて操作に入っていきましょう

RasPiからLEDを制御する

 ここからはRasPi内での作業になります

まずはLEDを単純に光らせたり、また消したりというのをやってみます

 

しかし、その前に、以下の操作をするために必要なWiringPiというものをインストールしておきましょう

以下のページを参考にやってみました

が、いくつかコマンド実行するので面倒な場合はRasPi3は最初から入ってるかもしれないので下に進んでreadallコマンドを実行してみると良いかと思います!

tool-lab.com

この参考ページの内容とは被りますが自分のやった内容をまとめていきます

ターミナルより以下のコマンドを実行します

$ gpio readall

すると、以下のような結果が返ってきます

f:id:maikocho:20171010165935p:plain

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コマンドを実行します

f:id:maikocho:20171010171342p:plain

ちゃんと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で書かれたコードを試してみました

 

ここがこの記事のメインじゃないのかよ!と自分でなってますが書くの疲れたのでそれぞれの言語について参考になりそう(もしくはそのまま自分が実行した)サイトの紹介をしておこうと思います

 

こんなところでしょう!

プログラムはまだ自分の中に確立されてない感があります...

まだまだお勉強が必要そうです!!

まとめ

なんとかLEDを遠隔操作で制御するということはできました

配線を考えてプログラムを書く

 

プログラムについては

Pythonスクリプト言語で手軽

Scratchはブロック組み立てのようにするので理解しやすい

Cはコンパイルも必要でちょっと面倒かも

といった感想です

 

フランス留学中の3Dプリンタに関するプロジェクトに関わる先輩がPythonよく使うと言っていたのでとりあえずPython勉強してみようかなと思います

ということで!次回は制御のためのプログラム言語や環境を吟味してみたいと思ってます!!

気力がもつ範囲で頑張ろう...