123d CircuitsとArduino実機で電子工作(1)

2016年10月28日(金)
青柳 良介

はじめに

前回は「123d Circuits」というシミュレーションツールを紹介しました。今回は123d Circuitsによるシミュレーションに加えて、「Arduino」の実機を用いた電子工作も行っていきます。Arduinoを使う場合はUSBケーブル(タイプB)を使用します。

USB経由でプログラムを転送し、電源を供給します。解説を読み進める前に、ここで各ピンソケットについておさらいしておきましょう。

Arduino IDEの準備

Arduinoの実機を動作させるためには「Arduino IDE」が必要です。まず、Arduino.cc(米国LLCのサイト)にアクセスします。

最新バージョンは 1.6.12です(2016年10月20日現在)。画面右のメニューから、ご利用の環境に合ったArduino IDEのリンクをダクリックします。

「JUST FOWNLOAD」をクリックするとダウンロードが開始します。ダウンロードが終了したらファイルをダブルクリックしてインストールしましょう。画面の指示に従っていくだけで簡単にインストールできます。

インストールが完了したらArduino IDEを立ち上げて、まず簡単な設定を行いましょう。画面上部のメニューから[ツール]-[ボード]-[Arduino/Genuino Uno]を選択します(はじめから選択されている場合はそのままでOKです)。

ここで[ファイル]-[環境設定]を選択すると[エディタ文字の大きさ]などが変更可能です(Macの場合は[ファイル]-[Preference]を選択)。

続いて、[ツール]-[シリアルポート]-[COM1] を選択します。ご利用の機種により数字が異なる場合もありますが、その際は表示されているものを選択してください(Macの場合は[ツール]-[シリアルポート]-[dev/cu.usbmodem]を選択)。

これで、ひとまず設定は完了です。次に動作確認のため、内臓LEDを点滅させてみましょう。Arduino IDEには豊富なサンプルスケッチが用意されています。[ファイル]-[スケッチの例]-[01.Basics]と進んで「Blink」というサンプルスケッチを選択してください。

画面にBlinkのスケッチが表示されたら、そのまま画面左上の矢印アイコン(マイコンボードに書き込み)をクリックします。

コンパイルが通り、正しくマイコンボード(Arduino)に書き込みができたら内臓LEDが点滅するはずです。

シミュレーションとArduino実機で動作を確認

動作確認ができたら、さっそくブレッドボードで配線をして簡単な回路を組んでいきます。配線はまず123d Circuitsでシミュレーションを行ってから実機に配線します。実機をお持ちの方は、ぜひ前回のタクトスイッチでLEDを点滅させたシミュレーションも実機で動作確認してみてください。

温度センサを動かしてみよう

今回は、温度センサと照度センサ、サーボを使用してみます。まずは温度センサを配線します。123d Circuitsでは次のような配線になります。温度センサの金属ピンの端子も確認しておきましょう。それぞれ「Vcc」は電源のプラス側、「GND」は電源のマイナス側、「OUT」は矩形波の端子でしたね。

若干、配線に使用しているジャンパワイヤの形状が異なるので、シミュレーション上の実態配線図を参考にしてください。

温度センサのスケッチは以下のようになります。まずは、このスケッチの動作を123d Circuts上で確認してみます。画面右上の[Code Editor]をクリックし、画面左下にコードを打ち込みましょう。

int val=0;
int temp=0;

void setup() {
  Serial .begin(9600);
}

void loop() {
  val = analogRead(A0);
  temp = map(val, 0, 1023, 0, 511);
  Serial .println(temp);
  delay(500);
}

各コードの意味は下記のとおりです。

Serial.begin():シリアル通信の初期設定。引数にシリアル通信のデータ転送レートをbps(bits per second)で指定
analogRead():アナログの値を読み込む。ピン番号のA0~A5はアナログ入力になる
Serial.println():ASCIIテキストとしてデータをシリアルポートへ出力する

なお、123d Circtuitsで使用する温度センサ(LM35)は実際の温度に比例した電圧を出力します。0℃の時は0V、25度の時は250mVですが、そのままではシリアルモニタ上での表示が実際の温度とは異なるため、map()を利用して表示を調整しています。

map():数値をある範囲から別の範囲に変換する
map(value, fromLow, fromHigh, toLow, toHigh)
value:変換したい数値
fromLow:現在の範囲の下限
fromHigh:現在の範囲の上限
toLow:変換後の範囲の下限
toHigh:変換後の範囲の上限

シミュレーションをスタートさせてから画面右下の「Serial Monitor」をクリックすると、「25」という値が続けて表示されます。これは温度センサが検出している温度です。

温度センサにカーソルを合わせるとツマミが表示され、シミュレーション上の温度を自由に変えることができます。試しにツマミを85度に調整すると、シリアルモニタにも反映されました。

Arduinoの実機で確認する場合は、Arduino IDEに搭載されているシリアルモニタでPC側に値を表示させます。123d Circuits上からプログラムの転送はできないので、コードはArduino IDEのエディタへ直接コピペしましょう。シリアルモニタを表示するにはArduino IDEの[ツール]-[シリアルモニタ]を選択します。

画面にシリアルモニタが表示されるので、実際に配線して動作させるとシミュレーションと同様の文字が表示されます。

センサを指でつまむと、若干温度が上がります。

照度センサとマイクロサーボを連動して動かしてみよう

続いて、照度センサとマイクロサーボを動作させてみましょう。今回は、照度センサの値でサーボの回転角度を変えてみます。まずは実態配線図に沿って123d Circuitsで配線して、動作をシミュレーションします。追加で使用するパーツは以下の4点です。抵抗は値も忘れずに設定してください。

マイクロサーボのスケッチは下記のとおりです。ArduinoではRCサーボを動作させるためのServoライブラリがあります。温度センサと同様に画面右上の[Code Editor]をクリックし、画面左下にコードを打ち込みましょう。またアナログ(PWM)出力のピンは以下のようになります。

#include<Servo.h>

Servo myservo;
int val=0;

void setup() {
     Serial .begin(9600);
     myservo.attach(3);
}

void loop() {
     val = analogRead(A0);
     Serial .println(val);
     delay(500)

     if(val 

各コードの意味は下記のとおりです。

#include:Servoライブラリを使用するためにインクルードする
attach(ピン番号):myservoを3番ピンに割り当てる
write(角度):サーボを動作(回転)するために出力する。引数に角度を取る

準備ができたらシミュレーションをスタートして、シリアルモニタを確認してみましょう。

照度センサにカーソルを合わせると、シミュレーション上の明るさを調整できます。調整するとサーボが回転します。

Arduinoの実機でも確認してみましょう。室内の照明だけでは弱いので、別に照明を用意しました。ちょっと分かりづらいですが、照度センサに直接照明を当てるとサーボが動作しました。

Arudino IDEのシリアルモニタ([ツール]-[シリアルモニタ]を選択)でも確認してみましょう。照明を当てると数値が上がっていることがわかります。

このように、123d Circuitsを利用するとシミュレーションで確認してから実機での動作確認を行うことができます。

123d Circuitsの便利機能

123d Circuitsにはデバッグ機能があり、各ステップにブレイクポイントを設置できます。画面右上の[Code Editor]をクリックし、画面右下にある[Debugger]をクリックします([Serial Monitor]の左隣)。各ステップの行番号をクリックするとブレイクポイントを指定できます。

この状態でシミュレーションをスタートさせると、指定したブレイクポイントで動作が停止します。再び実行するには[▶]ボタン(再生)をクリックします。

おわりに

今回は、123d CircuitsとArduino実機を使用した電子工作を行いました。皆さんのお手元でも、各パーツの動作を確認できたでしょうか。

実際のモノづくりの現場では、シミュレーションや測定を行うことで出戻りを少なくして開発効率を向上させています。趣味の電子工作でも測定をおろそかにしたことで出戻りが発生し、余計に時間を取られることがあります。今回の解説を通じて、123d Circuitsのような簡易シミュレーションツールを利用して作業効率を向上する雰囲気を体感できたのではないでしょうか。

次回は序盤で単一のLEDで様々な光(RGB)を表現することに触れつつ、その後にDCモーターによる駆動などを行ってみます。実際にセンシングと駆動(モーション)が可能になることで、フィジカルコンピューティングの醍醐味が味わえます。お楽しみに!

本連載の電子工作キットを販売しています!

本連載で紹介した電子工作をスグに試せる電子工作キットを販売しています。
記事内の画像や説明だけではもの足りない、という方は、本キットを通してお手元で確認してみてはいかがでしょうか。きっと、電子工作の楽しさをもっと実感できるはずです!

電子工作キットは、下記のWebサイトから購入できます!

商品サイトはこちら→→https://blooomin.stores.jp/

Blooomin代表。半導体ベンチャーや米系通信機器メーカーを経て、組み込みシステムのコンサルディングからフィジカル・コンピューティングのコンテンツ開発などに従事。ハードやソフトにおける設計から保守までの勘所を横断的に網羅しております。
Blooomin:https://blooomin.com

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています