161005: Arduino UNO R3 がやってきた!
めっちゃやってみたかった Arduino(アルドゥイーノ)!!! マイコンって聞いたとき真っ先に浮かぶのは石原良純さんないし炊飯器、とにかく昭和なイメージのマイコンですが見てくださいよこれ!! USB ですよ。 ユニヴァーサルでシリアルなバスですよ?! 大好きなパソコン君と繋がれそうですよこれ!! 人差し指でオウチ…デンワ…できそうですよこれ!!111
マイコンは簡単に言うとプログラム可能なハードウェアです。パソコンと比べると非力すぎますけど、ここで人間の単位時間を考えるとミリ秒よりもずっと長いですよね。マイコンの動作速度はミリ秒以下です。つまり、人間が同じことをすることと比べると、超高性能です。そういった「パソコン - マイコン - 人間」といったミドルレイヤーに位置するモノですね。
開発環境:
- Windows 10 1607 Build 14393
- Arduino UNO R3 A000066( ATMega328P-PU が付け替え可能なやつ)
- Arduino IDE 1.7.11 by arduino.org
開封
箱は 80 x 57 x 20 mm ほど。不安になるほど小さいですし、内袋とか無いです。本体、触れ書き、ステッカーの3セット。ベリセンポー。USB ポートは御覧の通りプリンタ用として有名な角 USB です。買わないでも持ってるくらいじゃないとつらいよね~ってフィルタリングにも見えますね。違うか…
インストール
インストールはうまくいきました。が、Arduino 本体が認識される感じがしません。書き出そうとしてもポートが見つからない(的な)エラーとなります。
誰でも簡単に使えるように設計されているのにこういうところで転ぶやつって必ずいるよな~と言われますが、ほとんどの障害は Google 先生もとい先人の苦労の軌跡があれば解決できるものです。障害報告/解決記事を書かれる皆様にはどこかでお世話になっておりますので、私も経緯を一応書いておきます。
Windows サービス
DmEnrollmentSvc(デバイス管理登録サービス)を無効にしていました。勝手にサービス止めるマンは不具合があるとまずここを探すのが癖になっていると思いますが気づくのが遅かった…、情けない。
arduino.cc / arduino.org
左が .cc、右が .org です。ちょっと違うんですよね。どっちでも使えるんだとしても、どうせだったら純正品を使いたいところです。
Arduino 入手前、はやる気持ちを抑えられず(人はこれを予習と呼びます) Arduino と検索してトップに出てくる arduino.cc からインストーラをダウンロードしました。ドライバは同時にインストールするようにしたはずですが、IDE(プログラムを書くテキストエディタ)の COM ポート欄にはシリアルと COM1 の項しかありません。もちろん構成によりけりなのですが、それにしても「 COM ポートはなるべく後ろのほうを使うという」聞きかじった説明と異なります。デバイスマネージャをざっと一覧しても、新しく項が増えたようには見えませんでした。
ここで、つい先日「分裂していた Arduino チームが一つに」というニュースを見たのを思い出し、arduino.org から導入したインストーラを実行してみたました。こちらは DOS ウインドウが出るタイプや確認画面が 20 回ほど出るなどしてたくさんのドライバがインストールされ、てんとうむしアイコンのインストーラなど、素人目にいかにも動きそうだぞ!という感じに見えました。IDE のメニュー項目も「ボードから情報を取得」が無かったり、一部違うようです。
後日談ですが箱にしっかりと arduino.org と書かれていました。「マニュアルを読め」とは言いますが、箱もきちんと見ましょう。基本的なことでしたね。
解決してしまった今となっては cc / org 問題が原因の一つになっていたかの真偽は、Windows をクリーンインストールし直さないと確認できませんが、Arduino が Windows にどう認識されるか(どの枝にぶら下がるのか)が気になっておりました。私の環境では、デバイスマネージャを確認したところ新たに「JungoConnectivity - WinDriver」の親項目が増え、「ポート(LPT と COM)」に「Arduino UNO(COM 3)」が追加されました。ここで認識され、ポートとして扱われるみたいです( USB と接続するとシリアル通信ができるという事でやってみるとなるほどですが、こういうのやった事ないので勘が良くないです)。
ここまでくると、いかにも動けるっぽいです!
電源
恐れる必要はありません(ここ大事)。正常に動作するパソコンと A-角 USB で接続するだけで OK です。開発時も Arduino 単体で接続するのであればパソコンから十分供給できるはずです(多くても 500 mA 以下の設計であるはず…)。
ただ、大きな電流を食うシールド(いくつかブロックを積み重ねるように連結させることができます。これをシールドと呼ぶようです)を接続している時、たくさんのシールドを接続したとき、もしくはスタンドアロン動作させる時は AC-DC アダプタなどが必要になります。億劫で測定していませんが、どのくらい電力を使うかは USB 電流量を測るアクセサリがあるのでそれを使うと良さそうです。7~12V の任意の DC 電圧で、電流は 2 A ほど取り出せれば十分らしいので、安定化(負荷によらず電圧が一定なスイッチング電源)タイプを選んだほうが無難でしょう。
<161009> そういえばここで参考値が得られますね。100 mA だそうです。仮に最大 100 mA としたら USB ハブでも動かせそうですね。
参考までに:TFT モニタ(シールド)を接続した状態で Vcc の電流を測ってみましたが 59 mAでした(測定方法は GND にかませる方が良いのでしょうか。わかったら編集します)。LCD 有りで 60 mA なら非力なバスパワー USB ハブでも余裕があると言えます。やー、やっぱり測ると安心できますね~。
※「大した手間ではないので測ってみました!」用の USB ケーブルつないでいたら、安いキーボードのリード、例の赤 GND 黒 VCC でしたわ…危なかった…
Hello World
どの世界でも、はじめの一歩は挨拶から(?)。GUI プログラミングではダイアログボックスに「世界よこんにちは!」と表示させますね。
Arduino では「 L チカ」とって、LED を blink させる事が相当するみたいです。LED は Arduino にいくつかオンボードされており、シルクがその名も L です。ベリセンポー。誰がやっても正しく動作し、簡単で分かりやすいテストなのでさっそくやってみm… これ、私は最初プログラムを書いて光らせるのだと思っていましたが、Arduino を買ってきてすぐの状態で、すでにプログラムが書き込まれていました。
マイコン入門の障壁は、マイコンが「動く」ためのブートローダーを書き込む事に、私には見えます。ライタと呼ばれる機器を導入するだけかもしれませんが、このへんの説明を見ているとたまに「???」って思考停止します。Arduino はブートローダーを書き込み済みで、プログラムも書き込まれているという事で、PC と USB プラグで接続するだけで L チカは体験できてしまうのです(当初は「エラーじゃないのこれ?!」と思って焦りました)。プログラムのテストというよりはハードウェアの導通テストですね。添付の紙には導通前にいくつもチェックしろと書いてありますが、読む前に黒ヤギさんに食べられました。
1秒間隔でチカチカしてくれれば初期プログラムの動作確認は完了です。USB プラグを抜くか、いえ、ふつうは自分で書いたプログラムを試すでしょうね。
IDE 日本語版では、[ファイル] - [スケッチの例] - [01.Basics] - [Blink] を選択すると新しいウインドウが出てきてテンプレートファイルが開かれます。余談ですが Arduino IDE はクロスプラットフォーム対応なので Java で動いてるみたいです。Delphi ならネイティブなのになぁ。
最初は LED の点滅速度を書き換えて動作することを確認するのが通過儀礼となっており、「Arduino 手に入れたとしても俺は絶対やらん!!」と思っていましたが点滅周期を変えるだけでも楽しかったですね。やってみるものです。
気になること
プログラムは何度、書き換えられるんでしょうか。これについては実験してくれた人がいます。
http://madlabo.oops.jp/MAD/0026/0026.htm
マイコンに詳しくないので PIC は AVR とは異なるのかもしれませんが、不揮発性のデータ記憶領域 EEPROM を同じものと仮定して、約 2000 万回達成できたそうです。あくまでも例えの前提で考えますが、プログラム領域が最低 1000 回書き換え可能というのを目安にすると少し気を付けたほうが良いかもしれませんね。12 か月、30 日 / 月として 1 日に 3 回書き換えれば一年以内にダメになる計算です。例えばの話ですが。
機は熟した
すべての環境は整いました。これで思いついたプログラムを気軽に試せます!※Arduino ではソースコードの事をスケッチと呼びます。プログラムを気軽に試せるようにという願いが込められているようです。何作りましょうかね~、考えるだけでもワクワクします。
編集:
161009:電源項に電流測定を追加