ラズパイその他工作

Lチカonラズパイで、オームの法則・GPIO・トランジスタをちょっと詳しく知る

デバプラの電子工作シリーズも、ずいぶんと溜まってきました。過去記事を読んでいただいた読者のみなさんは、自身の手で何かを作り出し、楽しんでいただいていると思います。

しかし、「何かは作れるけど、実は原理みたいなものはイマイチわかっていない」という声も、編集部に届いています。確かに、電気・電子・回路・プログラム、となると、それぞれどうしても難しい部分があり、その根本のリクツのようなものはなかなか理解しがたい。編集部も、身をもって体感しているところです。

そこで、今回はメディアアートの分野で、また「ちょっと深い仕組み」を解説する書籍の世界で活躍している、伊藤尚未さんにご登場いただきます。テーマはLチカ。……ただし、ちょっと深く、その大事な部分に迫ります。後々応用が利くお話です。

[目次]

・はじめに
・まずは「Lチカ」と呼ばれるものから考える
・オームの法則
・ラズパイのGPIO
・トランジスタでLEDを制御する
・改めてLチカ
・Lチカを発展
・これをどう使うか?

はじめに

はじめまして、伊藤尚未です。ここ数年、小型マイコンがブームとなって電子工作熱も盛り上がりを見せています。光や音、動き、映像などを含めいろいろなものをセンシング、コントロールすることが、手のひらに乗る小さな装置でできるとは、なんとも不思議な感覚を覚えます。子どものころに想像していた未来がカタチになってきたのだろうと感慨深いものです。

トランジスタでラジオを作っていた時代とは電子工作のイメージも変わってきましたね。

私自身はメディアアートに身を置いているので、道具、材料、つまり絵筆、絵の具として電子工作を扱うことで表現手法が広がりました。また、同じように、周囲でもアート作品としての表現も多くみられるようになり、また一方で、ホビーとしてのものづくりの楽しみ方が「メイカー」と呼ばれるようにもなりました。各地で関連のイベントが催されるのを見ると、サブカルチャーとしてのホビーの概念も変ってきたものだと感じ、時代の変化に思いを巡らせます。

さて、マイコンの中でも入手が容易で、OSやさまざまなアプリケーションがインストールされていて扱いも簡単にできるRaspberry Pi(ラズパイ)を使って電子工作を楽しんでみようと思います。

今回はRaspberry Pi 3 Model B+を使用

今回はRaspberry Pi 3 Model B+を使用

まずは「Lチカ」と呼ばれるものから考える

特に定義はないと思いますが、一般に「LEDがチカチカと光る回路」を略して「Lチカ」と呼んでいるのでしょう。もちろんLEDが点滅するだけのシンプルなものであれば、トランジスタ、コンデンサなど電子部品を使って同じ機能を作り出すことは簡単です。ちなみに電子工作で私がよく使う回路は非安定マルチバイブレータという回路で、トランジスタ、コンデンサを2個ずつ、抵抗器4個、LED1個、これらを基板にハンダ付けして乾電池で光らせます。

回路例:非安定マルチバイブレータ

(回路例:非安定マルチバイブレータ)

作品例:鉄道警報機をイメージした工作

(作品例:鉄道警報機をイメージした工作)

この回路では約1秒でLEDが交互に点滅を繰り返します。点滅の速さを変えるにはコンデンサの容量と抵抗値を変更すればよいので、速く点滅させるにはコンデンサ容量を小さいものに変え、、、、

おっと、ここではマイコンを使うことがテーマでした。

さて、ラズパイの出力でLEDを光らせる場合どのようにすればよいのかというとGPIOを使うのがシンプルで、扱いやすい方法ですね。これは様々な書籍でも紹介していますし、ブロックのように組み立てる必要機能を持った専用拡張ボードなども充実しているので、詳細はそちらに譲ります。ただ、一番基本的で電子回路を組むときに最低限必要な知識の中でも、重要でありつつ、あまり深く解説されないものもあるようですので、まずはここで改めて復習しましょう。小中学校の理科、技術などの授業で出てきたことを思い出してくださいね。

オームの法則

オームの法則というと「電流=電圧/抵抗」ですね。私の時代はI=E/Rと書きました。今ではA=V/Ωでしょうか?
どうもこれは時代と教科書に寄るようなのですが、単位そのものを表現した「A(アンペア)=V(ボルト)/Ω(オーム)」の方が直感的でわかりやすいかもしれません。

オームの法則

参考書などにはこのような図がみられますが、どのように習ったか、思い出してください。ちなみに知人の某動物園の飼育員さんに聞いたところ、こんな覚え方だったそうです。

オームの法則

「まぁるい地球の水平線、空にはカモメ、海の中にはタコさん、イカさん」

、、、、

さて、このオームの法則をどのように使うのかというと、例えばLEDを単純に電池で点灯させることを考えます。電源(ここでは電池)にLEDをつなげればよいわけですが、LEDはダイオードの一種なので、電気の流れる方向があります。A(アノード)にプラス側、K(カソード)をマイナス側につなげます。

回路例:非安定マルチバイブレータ

これで接続方向はよいのですが、実はこのままではLEDが壊れてしまうことがあります。部品を壊さないためにはその部品に正しい電気を流さなければいけません。

正しい電気とはその部品の定格表(データシート)の範囲内に沿っていることです。製品にもよりますが、例えば白色で3.5V20mAと記載されているLEDの場合、この電気が「その製品の能力を発揮しつつ、製品が壊れない保障範囲である」と解釈できます。つまり、「これを超えて使うと、壊れちゃうことがあるよ」と言っている様なものです。
ということは、このLEDにかける電圧は3.5V、流す電流は0.02Aが最適だということですね。

さて、まず電圧が3.5Vであれば、これ以上の電源電圧を考えます。例えば乾電池4本で6Vの電源と考えましょう。厳密には新品の乾電池では1.6V近い電圧の場合もあります。もちろんここまで考慮するのがベストですが、後述するとしてここでは省略します。

6Vのうち、3.5VをLEDにかけたいので、残りの2.5Vを他にかけましょう。これには分圧すればよいので、LEDと直列に他の負荷をかけますが、シンプルに抵抗器を接続すればよいでしょう。

豆電球を直列に接続した場合と並列に接続した場合と明るさが異なる、などという実験を思い出してください。負荷(豆電球)が直列の場合、それぞれに電圧が分けられ、負荷も倍になるわけですから、回路に流れる電流は1/2になり、豆電球は暗くなります。

作品例:鉄道警報機をイメージした工作

「約」としているのは豆電球の疲労度など個体差により負荷が異なるため

電圧を分けるので分圧といいます。さてLEDにハナシを戻します。LEDは半導体であり、そのものを負荷と考えないので分圧しても、回路の電流はLED以外の部分で計算します。

分圧
この回路に20mA電流が流れればよいので、どれぐらいの抵抗値にすればよいか?これはオームの法則で計算できるわけです。「抵抗=電圧/電流」なので、「2.5V/0.02A=125Ω」、125Ωの抵抗器をLEDと直列に接続します。LEDと抵抗器で分圧するわけです。

さて125Ωの抵抗器は、、、と探すと実際には市販されているものにはありません。一番近い抵抗値で120Ω、130Ωがあります。120Ωの場合、これも電流をオームの法則で計算すると25/120=0.0208333という数字になります。微妙に20mAを超えてしまうので、130Ωを使います。これであれば20mA以下になるのでよいでしょう。

ここで新品の乾電池を使った場合を考えます。それぞれが1.6Vだったとしたら、全体で6.4V。抵抗器に2.9Vかけるとしたら、ここから計算すると145Ωという数字になります。なので、製品としては150Ωでも十分でしょう。もちろん大きい方が安全にはなりますが、LEDが暗くなります。作る作品によってどこまで必要かを考慮し、選定するとよいでしょう。回路に流れる電流をコントロールするので、この抵抗器のことを電流制限抵抗器と呼んでいます。

ラズパイのGPIO

ラズパイでは外部の機器を制御するのに便利なGPIOという入出力端子がいっぱいあります。これに関しても細かいところは他に譲るとして、あまり書かれていないことから解説すると、一体どれぐらいの電気信号を出せるものかと?
オームの法則
例えばLEDをこの端子につなげたときに光らせることができるのか?

もちろんできます。が、先にも書きましたようにLEDにはそれぞれの定格があります。例えば赤色2.0V20mAのLEDを光らせようとすると電流制限抵抗器を使います。GPIOの出力電圧は3.3Vですから1.3V分を電流制限抵抗器に分圧し、20mA流せばよいのです。ところがラズパイのGPIOは16mAまでしか流せないということなので、これをオームの法則で計算すると、「1.3V/0.016=81.25Ω」となります。なので、100Ωを使いました。定格表のLED性能を十分発揮しているとは言えませんが、点灯するには十分でしょう。ブレッドボードで組むと簡単に実験できますね。

LED

ちなみにこれをScratchで光らせるにはこのように組めば良いでしょう。
Scratchについては、こちらの記事もご参考ください:第10回「Raspberry PiでLチカ!Scratchのネコちゃんと遊ぼう!」

スクラッチ

GPIOを宣言し、GPIO4を出力に設定、その後GPIO4にON(Hi)を出力する。
左のままでは点きっぱなしになってしまうので、OFF(Low)で消すことができる

スクラッチ

左の形に組めば1秒ごとに点灯、消灯を10回繰り返すことができる

さてこれでLチカらしいものができましたが、先述のようにラズパイのGPIOの出力には電流の限界があります。例えば、白や青など3.5Vのものを使いたい、もっと明るくするためにLEDを複数つなげたい、めちゃ明るいパワーLEDを使いたいという場合はどうでしょう?こうなるとGPIO出力だけではむつかしいので、別の電源を使い、LEDを駆動させる回路を別に組む必要があります。専用のLEDドライバを使うこともできますが、シンプルにトランジスタを使ってドライブ(駆動)する方法を紹介します。

トランジスタでLEDを制御する

ここではNPN型のトランジスタ2SC1815(現在、同形互換で2SC1815L、KSC1815等があります)を使いました。トランジスタの役割は増幅とスイッチングです。
ベースへの入力によってコレクタからエミッタに向かって電気を流しますが、このときにベースの入力信号を大きな信号電流として流すことが増幅、ベースに入力があればコレクタ~エミッタ間をスイッチON又はOFFにすることをスイッチングと呼んでいます。いわば、アナログ的な扱いが増幅、デジタル的な扱いがスイッチングですね。ラズパイで扱うので、スイッチング機能と考えて良いでしょう。

スクラッチ

NPN型トランジスタ図記号と姿図例

NPN型のトランジスタはベースにプラスの入力があることで、コレクタ~エミッタをスイッチングONにします。PNP型の場合はマイナスの入力と考えていればよいでしょう。

2SC1815の定格表をみるとコレクタに流れる電流は150mAまでです。また製品は増幅率でランク分けしていますが、Yランクで120~240の増幅率となっています。例えば、増幅率200だとすると、コレクタ電流最大150mA流そうとすると、ベースには0.75mAの電流が流れればよいわけです。GPIOからするとホンの少しだけ出力電流が流れれば良いということになります。

ここでは10kΩの抵抗器をつなげてベースへの入力としました。LEDは白色3.5V20mAを使い、外部電源として乾電池を使いましたので、回路電圧は6Vです。電流制限抵抗器ですが、既出のように150Ωの抵抗器を使いました。
これらを接続します。
LED
さて、ラズパイのGPIOにトランジスタのベースをつないでみます。まずは実験と思ってブレッドボードを使ってみましょう。
LED
あとはプログラムですが、Scratchで先ほどのものがそのまま使えますね。もちろんGPIOのピンを差し替える場合はプログラム上での番号も変えるといいでしょう。

基本的にはGPIOの使用を宣言し、ピンの出力、入力などを設定、あとはON(Hi)、またはOFF(Low)を出力するだけです。ON(Hi)出力によってトランジスタのベースにプラスの入力がされるので、コレクタ~エミッタ間がスイッチングON状態となり、LEDが点灯する仕組みです。

PullUp、PullDownに関してはプログラム上の記述でもよいのですが、トランジスタのベースにプルダウン抵抗として10kΩを取り付けているので、ここでは不要としました。いわば、ハードウェア側での対応です。

改めてLチカ

では、これを点滅させるにはどうしましょう?これはプログラムによってON(Hi)出力か、OFF(Low)出力かをコントロールすればよいわけなので、さして難しいことではありません。冷静に考えれば、はじめ出力はOFF(Low)として、次にON(H)出力し、1秒状態を維持し、OFF(Low)出力、これも1秒維持し、またON(Hi)出力と繰り返せば良いですね。これでLチカと言われるものができます。Scratchでの例は前述のものですね。

Lチカを発展

さて、Lチカはいいのですが、複数のLEDを制御しましょう。2個のLEDを交互に点滅するにはこのようにすればいいですね。接続はGPIOふたつ使い、それぞれトランジスタでLEDを駆動させます。
LED
先ほどのトランジスタドライブの回路をふたつ作っただけです。回路は簡単ですがブレッドボードで組むと線が複雑になるので、配線には注意を払いましょう。Scratchのプログラムはこのようなかたちで。

スクラッチ

GPIO3とGPIO4を使っています。4を先にON、1秒後4をOFF、その後すぐに3をON、1秒後OFF、これを繰り返します。10回繰り返しますが、ずっと繰り返すには「ずっと」ブロックを使うといいでしょう。

この応用でLEDの数は使えるGPIO分だけ増やすことができます。4個でも、10個でも。順番に光らせるだけではなく、あるときは全灯、あるときは逆回り、なんて演出もプログラム次第ですね。

これをどう使うか?

ところで、一番の問題はLEDが光ったり、点滅したりするだけでは実験やプログラミングの練習、電子工作のトレーニングまでのハナシです。これをどう使うのかが一番の問題です。もちろん、クリスマスツリーやイルミネーションとするのも良いでしょう。でも光というのは、ピカピカするだけではなくて、影を落とすことや、色を混ぜること、反射や屈折、分光や偏光などさまざまな造形要素を持ちます。
工夫次第で光を使ったアーティスティックな作品を作ることもできます。

私ならこんな作品を作りましたが。

踊る埴輪を踊らせる(2010)(C)Naomi Ito

6個のLEDを順番に光らせるまでが装置の部分です。ここではLEDの光によって6体の埴輪の影をカベに投影していますが、それぞれの影が同じ場所に投影されることで、影のカタチ=本体のポーズが移り変わって見えます。つまり影がアニメーションとして表現されるわけです。
動かないテラコッタ造形と、「踊る埴輪」というタイトルから、現代の技術を用いた表現として作品化したのです。いわば数千年の悠久な時間をかけた作品でもあるのです。

……と、なんとも大げさな、、、

もちろん元がLチカですが、応用するとさらにいろいろな表現もできるでしょう。必ずしもアート作品を作ろうということではないのですが、こういうものを作るのも楽しいのではないでしょうか?

まとめ

電子工作は楽しいのですが、装置や仕組みを作り上げるだけではなく、それを使って何ができるのか?どうすれば面白いのか?など、応用や表現まで考えるとさらに深く面白いものができると思ってます。
作った後にさらに改造するのもいいでしょう。そこから新たな発見、発展があればそれもいいでしょう。おそらく、私の記事もここからさらにちょっと広く、ちょっと深く展開していくと思います。次回はLEDよりも大きな電流を扱う場合の方法を紹介しようと考えています。

※回路や仕組みなど私の知りうる範囲での記述になります。ご意見、ご指摘などございましたら、ご指導、ご教示いただけると幸いと存じます。

razero_580-230
伊藤 尚未

日本電子工作普及推進委員会代表、メディアアーティスト。サイエンスライター、動物園の飼育員のフリした電気工事士、理科実験教室講師、ワークショップ講師、教材開発など、幅広く活動中。 月刊「子供の科学(誠文堂新光社)」で電子工作の連載を続けて19年、代表的な書籍は「電子工作大図鑑」「電子工作パーフェクトガイド」があります。