microbit勉強会 自習テキスト 【その1】
オンやる×サイこみゅ!リアルイベント「サイバー大学生、ゆるっとe運動会やるってよ」ではIT系オンライン大学にちなんで小型ハードウェアmicro:bitを使ってミニ運動会を楽しむ予定です。
こちらの記事ではmicro:bitについて機能や使い方などより理解するため、卒業生(組込屋先生)を中心にコミュニティ内限定で開催している「microbit勉強会」用に作成された自作テキストを書き起こしたものをご紹介していきます。
始めに
どうも。組込屋(@yyatsuo)です。
今回はmicrobitの世界を飛び出してLEDを光らせたりモーターを回す方法についてテキストで解説していきます。
microbit以外でも通用する知識なので電子工作に興味がある人はできれば部品を買って自分で動かしてみてくださいね。
ところでわたしはソフト屋なのでハードの知識はかなり適当だったりします。なのでこれから書くことはソフト屋なりに理解しているハードの知識だよ~という点についてはくれぐれもご了承願います。そんなに大きく間違えていることはないと思いますが…
では前置きはここまでにして早速始めていきましょう!
【必要なもの】
microbit
LED
抵抗 220Ω
セロハンテープ
乾電池 2~3本
【あると便利なもの】
ブレイクアウト基板
ブレッドボード
ジャンパワイヤ
電池ボックス
電子部品はオンラインストアが主戦場です。リアル店舗であれば東京の秋葉原や大阪の日本橋が有名ですね。名古屋の大須もかつては電気街でした。いまはどこもそういった部品を扱うお店がどんどん減ってしまい寂しい限りです。リアル店舗は楽しいので興味があればいちど覗いてみてください。
ネット通販の話に戻りますが、はじめて電子部品を買うときはよく使うものをパッケージにしたキットものがおすすめです。キットものは中国のスタートアップ企業なんかがよくAmazonやAliExpressに出品していますので探してみてください。個別の部品を小口で注文するのであれば秋月電子通商がおすすめです。ひとつひとつが安いので送料無料ラインまで買おうと思うとなかなか大変ですが……。
最初はLEDを光らせてみよう!
これからmicrobitの外の世界に飛び出していくわけですので、当然microbitについているLEDではなくこういうLEDを光らせることを目標にします。
ちなみにこういう単一の機能をもつ部品を「ディスクリート部品」などと呼びます。使いどころはほとんどありませんが、なんとなくカッコイイ呼び方なのでぜひ覚えておいてください。
LEDは Light-Emitting Diode の頭文字です。日本語だとそのまんま訳して発光ダイオードとも呼ばれます。
発光は何のことだかわかりますね。ではダイオードというのは何かご存知でしょうか?
電気の流れを一方通行にする電子部品のことをダイオードと言います。エジソン効果が~とかセレン整流器が~とかいう小難しい話は飛ばします。というか私もよく知りません。理屈はさておき、とにかく電気を一方通行にするのがダイオードです。
一方通行ということはつまり極性が存在するということです(※)。プラスとマイナスがあり、向きを間違えて繋ぐと電気は流れません。一般的なLEDであれば足が長い方が電源の+端子に繋がる方です。この長い方の足をプラスとか陽極とかカソードと呼びます。短い方の足はマイナスとか陰極とかアノードと呼びます。
※無極性LEDというものも存在します…
せっかくなのでこの機会に記号も覚えておきましょう。基本的な記号をおさえておけば雰囲気で電気回路が理解できるようになります。
記号にはいくつか規格があるため同じ部品でもちょっと違う記号がいくつも存在します。とはいえだいたい同じ見た目なのでそんなに気にしなくても大丈夫です。ここでは一応、国際標準規格に準拠した新JIS規格と呼ばれている記号を使うようにします。
まずはダイオードの記号。
電気を一方通行にするので矢印です。なんとも安直ですね。どの方向に電気が流れるのかはよほどひねくれた人じゃなければわかるかと思います。……一応書いておきますが、上の図だと上から下に電気が流れます。
LEDは光るダイオードなので、このダイオードの記号に光りますよ!という矢印を追加します。はい。これがLEDの記号です。
安直ですがわかりやすくていいですね。
そろそろ文字を追うのに飽きてきた頃だと思いますので理論は後にしてとりあえず光らせましょう!
抵抗とLEDの長い方の足を繋いでください。繋ぐ方法ですが、ネジも釘も使わない日本の伝統技法セロハンテープ留めです。
接触不良を起こしやすいので抵抗の足をLEDの足にぐるぐる巻きつけるといい感じでした。見た目はアレですがこれでも立派な電子回路です。ここでは220Ωの抵抗を使っています。この抵抗の話は後でします。
そうしたら次に電池をアルミ箔やペーパークリップなど、なんでもいいので電気を通すもので直列に繋いでください。電池は2本か3本にしてください。1本だと光りません。4本だとLEDが焼き切れるかもしれません。電池を直列に繋げたら抵抗を電池のプラス側に、LEDの足を電池のマイナス側に接続すればLEDが点灯するはずです。もし点灯しない場合は接触不良かLEDの極性が反対です。
写真だとちょっとわかりにくいですね… まぁ一応回路図にするとこうです。
あ、ちなみに抵抗の記号はこれですよ。
アラサー以上の人はたぶん旧JIS規格のこちらで習ったと思います。私もこっちの記号で習いましたのでいまだに新JIS記号に違和感があります。
ところで簡単に回路を作って実験できるブレッドボードという便利なものがあります。穴に部品の足が入るようになっています。ブレッドボードもぜひ使ってみてください。
各列のa-e と f-j あとは +列と-列がそれぞれ一塊で繋がっている感じです。+列は途中でわかれていたりするタイプもあるのでご注意ください……よくわからないですね。説明下手ですみません。この説明でわからなかった人は参考リンクを読んでみてください。
参考:「ブレッドボード」ってどう使うの?
はい。というわけでブレッドボード上に回路を作るとこんな感じです。
microbitでLEDを光らせてみよう!
LEDがちゃんと点灯することを確認できたら次はいよいよmicrobitでLEDを光らせます。Aボタンを押すとLEDが点灯するようにプログラムを作りました。これだけです。簡単ですね。「デジタルで出力する」というブロックは「高度なブロック」の「入出力端子」にありますよ。
P0が1になるとP0端子から3.3Vが出力されるので、その電圧でLEDを点灯するわけです。
さて、プログラムをmicrobitにダウンロードできたら電池をmicrobitに置き換えます。電池の+のかわりにP0端子を、-のかわりにGND端子を接続しましょう。GNDはジーエヌディーではなくグラウンドと読みます。これは何かというと回路内の電位の基準となる場所に接続される端子です。……というような言葉で説明するとわかりにくくなるのですが。0Vとなる場所、つまり電源でいうところのマイナスだと思っておいてください。
microbitのGPIO拡張ボードとブレッドボード、ジャンパピンなどを持っている人はそれを使うとより電子工作っぽさを感じられると思います。
完成したらmicrobitに電源をいれてAボタンを押してみましょう。LEDが点灯するはずです。
さて、とりあえずLEDと一緒に220Ωの抵抗を繋いだわけですが、実はこれが無いとLEDは焼き切れて壊れてしまいます。LEDは高くても数十円程度なので実験的に焼き切ってみるのも良いでしょう。爆発したり火事になったりする心配はありませんので余分にLEDを持っている人はぜひやってみてください。(※)
※すごく発光する場合があるのであまり直視はしないように。特に白色LEDや高輝度のものを焼き切る場合は注意。目を痛めます。
こうやって部品をたくさん壊しながらやっちゃいけないことを覚えるというのはとても大事な学習プロセスだと思っています。わたしも今までにたくさん壊してきました。
話を戻しまして、なんで抵抗が必要なの?というお話をします。突然ですがオームの法則は覚えていますか?たぶん中学校で習ったと思います。こんなやつでしたね。
V=RI もしくは E=RI ですね。ヴリィとかエリィとか言いながら覚えたと思います。VやEが電圧、R が抵抗、I が電流です。わたしは電圧はE派なのですが世の中にはV派が多い気がします。まぁどちらでもいいんですけど。ここではVにしますね。
式変形すると I = V/R です。……ちょっと嫌な感じですね。この辺で拒否反応が出てくる人がいるかもしれませんがもう少しお付き合いください。オームの法則は電子工作の世界には必ずついてまわりますので慣れましょう。逆に言えばオームの法則でたいていの回路の理解はごり押しできるのでこれに慣れたらあとはなんとかなります。
はい。ここでLEDに着目します。実はLEDの抵抗値はゼロです。まぁ光るということは熱を出すということで熱が出るなら当然抵抗もあるわけで、これを内部抵抗とか呼ぶのですが。結局その内部抵抗がゼロと見做せるくらい小さいわけです。
ですので、オームの法則 I = V/Rにあてはめると 電圧が3.3Vで抵抗が約0Ωになります。ということでRは0の極限となるわけですね。……たぶん高校数学でやったと思うんですけど極限って覚えてますか?
I = 3.3 / R (lim R->0 )
この式を計算すると I = ∞ になります。
やった!人類は無限のエネルギーを手に入れた!となれば世界のエネルギー問題は解決して戦争がなくなり平和な世界が訪れるのかもしれないですが現実にはそうはなりませんね。電源が持つ以上のエネルギーを取り出すことはできません。
現実にはどうなるかというと、電源がうりゃーっとLEDが受け止められる以上の電流を流し込んでLEDが焼き切れてしまうわけです。BAD END。
そこでBAD ENDを回避するためにLEDに流れる電流をコントロールします。そのために抵抗が必要だったんですね。この役割を持たせた抵抗のことを特に電流制限抵抗と呼んだりします。なにか特別な抵抗というわけじゃなくてどのご家庭にも転がっているただのカーボン抵抗です。
さて、ではどれくらいの電流を流せばよいのでしょうか?ここで重要になってくるのが電子部品の仕様が書かれているデータシートというものです。秋月電子の商品ページにはたいていデータシートのリンクがありますし、ネットで「部品の品番 データシート」で検索するとだいたいのものは見つかります。
たとえばこのLED https://akizukidenshi.com/catalog/g/gI-01786/ のデータシートを開くとこんな表があります。
ここで見るべきは Absolute Maximum Rating (=最大定格)の表の一番上、 DC Forward Current というところです。30mAとありますね。これが流せる最大の電流なのでこれより小さい電流を流してやる必要があるわけです。
ちなみにPulse Forward Currentは表の下に脚注がある通り、最長10ms程度のパルス電流を流す場合の最大値ですので今回は無視しましょう。
実際にたとえば150mA程度であれば流し続けたところですぐに焼き切れたりすることはないと思います。最大定格とはあくまでも「この規程を守らないと部品が劣化したり壊れたりするかもしれないよ!」という目安値ですのでかなり余裕を持って最大定格を設定しているんじゃないかと思います。私が設計者ならきっとそうします。
とにかくこれで30mAよりも小さい電流が必要だということはわかったわけですが逆にあまりにも少ない電流だと今度は発光しなかったりします。なのでまぁとりあえず20mAくらい流しておこうか。という結論になります。
実際に製品に組み込む際にはデータシートの他の数値とか消費電流とかいろいろ考えたり計算しなきゃいけないんですけど、趣味の電子工作レベルならこの程度の理解で(とりあえずは)充分です。
じゃあ私の手元にあるLEDはどうだろうという話になるんですが、メーカーや品番がわからなかったり、あきらかなコピー品だったり、どこで買ったどんなLEDだったかわからなくなったり……ということがよくあります。というかデータシートがついている高級なLEDなど持っていません。我が家には素性のわからないLEDが数百個単位で転がっています。。。
一般的にLEDは20mA程度流せと言われているのでとりあえずそのくらいを目安にしてください。LEDなんてだいたい同じような作りですのでそんな決め方でいいんです。
というわけでとりあえず電流制限抵抗として220Ωを入れたわけでしたね。電流値を計算してみましょう。
I = 3.3V / 220Ω = 0.015A = 15mA
となるわけです。20mAにはちょっと足りないですね。
これはあくまでも簡易計算です。順電圧といって本当はLEDを通過するときに下がる分の電圧があるので、それは3.3Vから差し引いて考えなきゃいけないんで実際にはもっと流れる電流は少なくなるんですけど… まぁ今回はそこまではいいかなと思います。
あとがき
さすがに文字ばかりで飽きたと思います。私も資料を作るのに飽きたので今日はここまでにしましょう。
LEDを光らせるだけなのに実に面倒ですね。今日の説明は全部忘れてとりあえず「3.3Vの回路でLEDを光らせるなら100~200Ωくらいのやつを入れとけばいいんだ」とだけ覚えましょう。3.3V以外の回路だともうちょっと大き目の抵抗を入れないといけないかもしれません。そうなったときに今回の説明をちょっと思い出していただけると嬉しいです。
以上、今回はmicrobitでLチカをやってみました。モーターを動かすまであと1歩、いや3歩くらいでしょうかね。次回はいよいよモーターを動かす!ための前段階としてトランジスタとリレーの解説をできればなぁと思っています。
オンやる×サイこみゅ!リアルイベント「サイバー大学生、ゆるっとe運動会やるってよ」公式LP ※鋭意製作中