Arduinoその他工作

ArduinoとTOF距離センサでつくるドーナツプレーヤ【前編】

今回は、Arduinoを使った電子工作を前編、後編の2回に分けてお届けしていきます。ここでユニークな電子工作を紹介してくれるのは、物事の関係性をテーマに活動するアーティストである平原真さんです。大阪芸術大学准教授でもある平原さんは、これまでもコンピュータや電子デバイスを使ったメディアアートを多数制作されており、Device Plusでもこれまでに、「Arduinoを使ったソーラーパネルで動くデジタル飼育箱」の制作を紹介して頂いております。そんな平原さんが今回紹介してくれるのは、ArduinoとTOF距離センサでつくるドーナツプレーヤ。果たしてどんな作品に仕上がるのか、どうぞお楽しみください!

はじめに

みなさん、こんにちは。平原と申します。突然ですが、みなさんは音楽を聞く時に何を使いますか?最近は配信サービスが当たり前になりスマートフォンで聞くことが多くなったと思いますが、かつてはレコードの時代でした。レコードは樹脂製の円盤に刻まれた音声の波形を針で読み取って、電気信号に変えてスピーカを鳴らすというメディアです。レコードの中でも、中央の穴が大きいタイプを「ドーナツ盤」といいます。

今回は、本物のドーナツを回転させ、距離センサで表面までの距離を読み取り、形に応じた音を鳴らす「ドーナツプレーヤ」を作りたいと思います。

全体のイメージは本物のレコードプレーヤと似ています。回転するテーブルの上にドーナツを乗せ、距離センサをアームの先に取り付け、本体の中にスピーカやArduinoを入れます。アームの高さや位置を変えたり、音量や回転速度を調整するツマミもあるといいですね。

アイデアスケッチ

アイデアスケッチ

配布ファイル

作成例をつくるために必要なデータをダウンロードしてください。Arduinoのスケッチや、3Dプリンタで出力するためのモデルデータ、シナベニヤをカットするための形状データなどが含まれています。

  • ArduinoSketch:Arduinoのスケッチ
  • MusicDounuts:音階の形をしたドーナツのモデルデータ
  • SensorArm:センサーアームの部品のモデルデータ
  • CutData:レーザー加工機で箱の部品を切断するためのデータ

>>配布ファイルはこちらからダウンロードできます。

システム構成

全体の機器構成を図に描いて考えましょう。

まず、テーブルを回転させるためにモータが必要です。モータを簡単に制御するためにモータドライバを使ったほうがいいでしょう。持ち運ぶものではないので電源はACアダプタを使います。ドーナツまでの距離を測る距離センサも要ります。音を鳴らすためにスピーカも必要ですね。モータのスピードと音量を調整するためにボリュームもあったほうがいいでしょう。また、距離の原点を設定するためのボタン、全体を制御するためのマイコンボードも必要です。

h02

次に、電圧や消費電流、使用するピン、通信方法、実物のサイズ、カッコよさなどを考慮して部品を選定します。主要な部品、選択肢の少ない部品から決めると考えやすくなります。

プラネタリギアドモータ
DCモータでは回転が速すぎるので、何らかの方法で減速させます。プーリや歯車を使っても良いですが、工作の手間を減らすために、変速機を内蔵したギアドモータを使います。
h03a

モータドライバ
スピードや回転方向を簡単に制御するためにモータドライバを使います。
h04

TOF近距離センサ
距離センサは、SHARPのGP2Y0A21YKが定番ですが、出力にブレがあり狭い範囲を測りにくいので今回の用途には不向きでした。TOF(Tiem of Flight)方式の距離センサモジュールは、分解能が1mmと細かく、リニアな出力を得られます。TOF方式は、赤外線を照射してから反射が帰ってくるまでの時間を計測して距離を出力します。
h05

Arduino UNO
マイコンボードは、今回はそれほど大きさに制約がないので、定番のArduino UNOを使います。互換品でも結構です。
h06

構造

イメージを元に構造を考えます。最初は手書きでラフに考え、大枠ができてからCADで設計するのがおすすめです。

全体は箱型で、天板にスイッチ、モータ、センサなど、主要な部品を固定します。Arduino UNOとブレッドボードは、下に置き長めの電線で配線します。回転テーブルは、モータの回転数が十分遅いので、プーリなどは使わずに、直結しています。荷重は天板に取り付けたボールキャスタで支えています。

外観はレトロなオーディオ機器っぽさをだすために、木と金属と黒い部品でまとめます。箱と回転テーブルは厚さ4mのシナベニヤ、センサを取り付けるアームは直径10mmのアルミパイプと黒いフィラメントを3Dプリンタで出力します。

手書きラフ

手書きラフ


CADで設計

CADで設計

部品リスト

品名 個数 購入先URL 価格
Arduino UNO R3 1個 https://www.switch-science.com/catalog/789/ 3,300円
TB6612FNG搭載 デュアルモータドライバ 1個 https://www.switch-science.com/catalog/3586/ 721円
プラネタリギアドモータ 1個 https://www.switch-science.com/catalog/5447/ 877円
ジャンパワイヤ(オス~オス) 10本 http://akizukidenshi.com/catalog/g/gP-09012 130円
スピーカホルダ 1個 http://akizukidenshi.com/catalog/g/gP-11933/ 20円
スイッチ付小型ボリューム
(1kΩ, Bカーブ)
2個 http://akizukidenshi.com/catalog/g/gP-07211/ 80円
小型ボリューム用ツマミ
(直径20mm)
2個 http://akizukidenshi.com/catalog/g/gP-01001/ 30円
ボールキャスタ 2個 http://akizukidenshi.com/catalog/g/gK-10372/ 300円
スイッチングACアダプタ
(9V, 2A)
1個 http://akizukidenshi.com/catalog/g/gM-02193/ 950円
ブレッドボード 1個 http://akizukidenshi.com/catalog/g/gP-00315/ 270円
両端ロングピンヘッダ 1個 http://akizukidenshi.com/catalog/g/gC-09056/ 50円
耐熱電子ワイヤ(AWG24・20m) 1個 http://akizukidenshi.com/catalog/g/gP-11091/ 600円
VL6180X TOF近距離センサモジュール 1個 https://strawberry-linux.com/catalog/items?code=16180 1,200円(税抜)
押ボタンスイッチ LP01シリーズ 1個 https://www.monotaro.com/p/7579/7705/ 399円(税別)
熱収縮チューブセット 1個 https://www.monotaro.com/p/5053/3053/ 820円(税別)
シナベニヤ
(600mm x 450mm x 4mm)
1枚
アルミパイプ
(外径10mm x 300mm)
1本
つまみネジ(M3, 8mm) 1個
ネジ(M3, 15mm) 2個
ネジ(M2, 20mm) 1個
ナット(M3) 2個
ナット(M2) 2個

※価格は執筆時点のものです。送料が別途かかります。購入先URLが無いものは、ホームセンターなどで購入してください。

使用する工具

必ず使うもの

  • ニッパ
  • ペンチ
  • ハンダゴテ
  • テスタ
  • ドライバセット
  • 3Dプリンタ
  • レーザー加工機
  • PC
  • USB ケーブル(A – B)

あると便利なもの

  • ストリッパ
  • ヒードガン
  • パイプカッタ

回路の組み立て

配線図と回路図

実際の構造を考慮しながら、システム構成で選定した部品の配線を考えます。

それぞれの部品とブレッドボードをつなぐ配線は、30cmに切った電線の先端にジャンパピンをハンダ付けして使用します。圧着ペンチをお持ちの方は、QIコネクタを使ったほうが簡単かもしれません。

ジャンパワイヤの色分けは、区別をしやすくするためにしているだけなので、実際の電線は同じ色で構いません。ただ、配線の本数が多いため、先端にマスキングテープなどを貼り、接続先を書いておくと間違いが起きにくいです。

h09

回路図は電気的な接続関係を表したもので、配線図は実際のサイズや位置関係などを考慮した図です。慣れないうちは配線図をそっくりそのまま再現すると作りやすいですが、制作に慣れてきて自分で回路を作ったり、他の人の回路を取り入れる時は、回路図で考えるほうが理解しやすくなります。

h010

作業手順

回路の組み立ての手順は以下のとおりです。

      

  1. モータの配線
  2. ボリュームの配線
  3. スピーカー&ボリュームの配線
  4. ピンソケットのハンダ付け
  5. センサの配線
  6. スイッチの配線
  7. ピンヘッダの取り付け
  8. ブレッドボードで配線

手順1:モータの配線

モータの電極に電線をハンダ付けします。AWG26の電線を30cm(2本)に切り分け、両端の被膜を5mmほど取り除いてください。 電極と電線にあらかじめハンダを乗せておくと作業がしやすくなります。

ハンダ付けした個所がむき出しだと、屈折によって折れてしまったりすることがあるので、できれば熱収縮チューブで保護してください。右の写真の手前はむき出しのまま、奥は熱収縮チューブで覆う加工をした状態です。
h011

手順2:ボリュームの配線

モータの速度を調整するためのボリュームに電線をハンダ付けします。AWG26の電線を30cm(3本)に切り分け、両端の被膜を5mmほど取り除いてください。ストリッパという刃に穴が空いた専用工具を使うと、芯を切らずに速く作業できます。ボリュームの1,2,3番の端子にハンダ付けしてください。

h11

手順3:スピーカ&ボリュームの配線

スピーカと、音量調節用のボリュームに電線をハンダ付けします。AWG26の電線を30cm(5本)に切り分け、両端の被膜を5mmほど取り除いてください。

ボリュームの2、 3、 4、 5番端子に電線をハンダ付けしてください。1番端子には何も取り付けません。2番端子の電線の先をスピーカのプラス端子に接続し、最後の1本をスピーカのマイナス端子にハンダ付けしてください。
h13

手順4:ピンソケットのハンダ付け

TOF近距離センサに、付属のピンソケットをハンダ付けします。基板の裏表を間違えないように注意してください。付属のピンヘッダは、次の手順で使用するのでとっておいてください。
h14

手順5:センサの配線

センサのピンソケットに接続するためのケーブルを作ります。センサーに付属している横一列のピンヘッダに、30cmに切断した電線をハンダ付けしてください。

次にセンサとケーブルを接続します。写真の通りの向きになるように注意して、ピンソケットにピンヘッダを差し込んでください。
h015

手順6:スイッチの配線

スイッチにも配線します。1、2の端子に30cmに切断した電線をハンダ付けしてください。
h016

手順7:ピンヘッダの取り付け

ここまでに、モータ、ボリューム、スピーカ、センサ、スイッチに電線を取り付けました。この後ブレッドボードを使って配線していきますが、電線の芯のままでは差し込みにくいので、先端に1ピンのピンヘッダを取り付けます。
ピンヘッダは、ニッパやストリッパで切り離すことができます。熱収縮チューブは1cmの長さに切断しておきます。ハンダ付けする前に、電線に熱収縮チューブを通しておくことを忘れないでください。
h017

これでハンダ付けが必要な作業は完了しました。5つのパーツにしっかりとハンダ付けできているか、テスタを使って通電確認してください。
h019

手順8:ブレッドボードで配線

配線図と以下の写真を参考に、パーツをArduino UNOとブレッドボードに配線してください。D11、 D13、 A0 SCL、 SDAはArduino UNOに接続します。配線図のワイヤは、区別しやすくするために色を変えていますが、実際に配線するジャンパワイヤは、何色でも構いません。
h020
h021
f030

すべてをつなぐとこのようになります。配線が多いので絡まらないように注意してください。
h023

動作テスト

回路ができたので、プログラムを書き込んで動作テストをしてみましょう。一度に全部の機能を試すと、正しく動かない場合に、どこに問題があるのか分かりにくいので、主要な機能を分けてテストします。今回は、センサで距離を読み取って音程を変えるテストと、ボリューム回してモータのスピードを変えるテストをします。

センサのテスト

TOF近距離センサはI2Cという通信方式でArduino UNOと情報をやり取りします。ライブラリを下記のページからダウンロードして、Arduino IDEのライブラリフォルダに入れてください。

>> https://github.com/pololu/vl6180x-arduino

下記のテスト用のコードをArduino IDEに入力し、Arduino UNOに書き込んでください。

センサに手を近づけて、スピーカから鳴る音の高さが変われば成功です。Arduino IDEのシリアルプロッタを開くと、センサの値をグラフとして確認することもできます。スピーカにつながるボリュームを回すと音量も変わることを確認してください。
h024b

シリアルプロッタで確認してセンサが反応していない場合は、センサにつながる4本の電線が、しっかりとはんだ付けされているか、接続先が間違っていないか、ライブラリがインストールされているか、などを確認してください。

モータのテスト

続いてモータのテストをおこないます。ACアダプタをArduino UNOのDCジャックに差し込んで、家庭用電源に繋いでください。
h025

モータをコントロールするためのモータドライバもライブラリを使います。下記のURLからダウンロードして、Arduino IDEのライブラリフォルダに入れてください。
>> https://github.com/sparkfun/SparkFun_TB6612FNG_Arduino_Library
下記のテスト用のコードをArduino IDEに入力し、Arduino UNOに書き込んでください。

Arduino UNOのA0ピンに接続しているボリュームを回すと、モータのスピードが変われば成功です。
h026

前編では動作テストまでを紹介しました。引き続き後編では3Dプリンタでの部品作りから、Arduinoを使った距離センサの制御、そして実際に動作させるところまでを紹介していきたいと思います。後編もお楽しみに!

センサについてさらに詳しく知りたい人は「エレクトロニクス豆知識」をチェック!

smartwatch_ebook_banner_580-230
平原真

物事の関係性をテーマに活動するアーティスト。コンピュータや電子デバイスを使ったメディアアートを多数制作しているが、近年は木や石など自然の素材を使った立体作品を手掛ける。大阪芸術大学准教授。Oggoroggo Products 代表。著書に『実践Arduino! 電子工作でアイデアを形にしよう』(オーム社)。 https://makotohirahara.com/