Arduino入門 一番簡単なプログラミングは電圧測定
皆さんArduino使ってますか。この記事では簡単プログラマブルマイコンのArduino Unoを使って入門のプログラミングで一番簡単と思われる電圧計測について説明したいと思います。
Arduinoとは?
今更ですが、入門ということでArduinoについて説明します。
Arduinoは2005年ごろにイタリアの学生に安価なデジタル技術の教材を広めようと始まりました。Arduinoとはマイコンを搭載した基板だけでなくプログラミングを行う開発環境や関連のプロジェクトまで含めてArduinoと呼ぶことがあります。
Arduinoはオープンソースです。Arduinoの偽物のような製品がAlibabaとかに見られますが、正確には他社がArduinoを名乗ってもよいので偽物にはなりません。逆に中国などからArduino互換の安い製品が出てきたのでArduinoプロジェクトは大成功を収めたといえます。
今ではAliExpressやAmazonで中国製のArduinoを見つけることができますが100円台からの価格が付いています。私もたまに中華Arduinoを買いますが、性能などは全然問題ありません。
Arduinoの使いかた
Arduinoは本体をUSBケーブルでパソコンに接続して、開発環境ソフト(IDE)で作ったプログラムを本体に書き込みます。
このIDEはArduino本家のHPからダウンロードできます。
USBのドライバはOSデフォルトのドライバで認識してくれます。また開発環境ソフトはWindows、Mac、Linux、Chrome OSで利用が可能です。開発環境ソフトはChrome OSのみ有料で月100円くらいかかります。教育に一番普及しているChrome OSだけから徴収しているのが気に入りませんね。
プログラミングに用いる言語はC言語のようですが、Arduino特有の言語です。しかし、C言語が分かればある程度すらすら書くことができます。また日本語の情報も多くなりましたので言語が特有だからとの理由で困ることはないでしょう。
プログラムを書いて、開発環境でビルドすると自動的に本体のICに書き込まれます。書き込まれると直後にプログラムがスタートします。
プログラムがスタートすると接続されているUSBはシリアル通信ができますのでパソコンからArduinoに命令を出したり、Arduinoからデータを受け取ったりできます。もちろん、そのようにプログラムしなければいけませんが。
5Vの電圧測定
Arduinoの一番簡単なサンプルとしてこの記事では直流5VをArduinoで測るプログラムを書いて、乾電池の電圧を測ってみようと思います。
Arduinoは5VのICを使っていますので5Vまでしか測れません。5Vだと用途が制限されますが、乾電池測るくらいならいいですよね。5V以上ならば抵抗分圧などで電圧を落としてから測ります。
今回はGNDとA0の端子を使いましょう。2つの端子の間に乾電池をつないで電圧を見ます。
Arduinoのスケッチ
Arduinoはソースコードのことを「スケッチ」と呼びます。IDEにサンプルスケッチが付属しています。ここにいろいろなプログラムのスケッチが入っていますのでこれも参考にしてください。
ArduinoのIDEから新しいスケッチを開いて次のようにコードを書きます。
void setup()
{
Serial.begin(9600);
}
void loop()
{
int value = analogRead(A0);
Serial.println(value);
delay(1000);
}
Arduinoのコードはsetup()とloop()の2つの箇所に分けられます。まずsetup()の中の命令は起動時に一回だけ実行されます。loop()は setupが終了した後に ずっと繰り返し実行されます。両方とも後ろの{ }の中にコードを書き込みます。
はじめの、Serial.begin(9600);はシリアル通信の設定です。9600 bpsで通信を準備します。命令の最後は;をつけます。
int value = analogRead(A0);でA0とGNDの間の電圧を変数valueの中に保存します。
Serial.print(value);でvalueの中に保存している値をSerial通信に送信します。
delay(1000);は1000ミリ秒実行を停止するコマンドです。
書けたらIDEの矢印(→)ボタンを押してプログラムをArudinoの中に書き込みます。書き込まれるとArduinoは一回リセットされて再起動します。再起動後は書き込まれたプログラムを実行します。
測定値をシリアルモニタで確認
Serial.print命令でPCに送られた値はツール>シリアルモニタで確認できます。プログラムが間違っていなければ、1秒ごとに電圧の値が表示されるはずです。
このデータはコピペしてExcelなどに保存することができます。単に実験のデータ収集でしたらこれでも全然足りますが、本当にデータを活用するんだったらWindowsパソコンが受け取ったデータを使って何かの処理をさせたいですね。
シリアル通信のデータをC#で受け取る方法については別の記事にまとめてあります。参考にしてください。
いろいろな用途が考えられますが、私はPCのボタンで一眼レフのシャッターを切るようなデバイスを作りました。計測器の制御に合わせて一定時間ごとに写真を撮りたかったのですが、うまく動いてくれました。
まとめ
Arduinoのサンプルプログラムとしてはこれが一番簡単だと思うんですが、うまく動きましたか?ここから先はArduinoにセンサーICをつなげたり、物理ボタンを増設したりするといろいろ発展できます。
Arduinoというと知っている人はハードウェアのArduino Unoを思い浮かべますが、Arduinoで一番すごいことはハードウェアでなくソフトウェアです。ICのATMegaに書き込まれたブートローダーとパソコンにインストールする統合開発環境(IDE)は本当に優秀です。これが無料で配られているんだから使うべきでしょう。
Arduinoについてはこの記事はまだまだ触りです。他にもいろいろな応用がありますので、少しずつ記事を書いていく予定なので参考にしてください。