twitter icon   twitter icon   rss icon

Linux.com Japan

Home Linux Jp チュートリアル Arduino を害虫よけ器にする - 第 1 部

Arduino を害虫よけ器にする - 第 1 部

原文は、こちらです。

この 2 回にわたるシリーズで、モーション センサーのトリガーで音を出すデバイスを Arduino で開発します。これを使って、さまざまな応用ができます。たとえば、訪問者検知、猫を台所から追い払う、ソファで眠りこけてしまったときに起こしてくれるとか、仕事場の侵入検知とかです。

第 2 部は、ここ

私は、庭を害虫から守るために使うつもりです。地球上で人間が占める割合は、土地の 5% だそうです。太った鹿、スカンク、アライグマ他、多数の動物が私の庭を自分の王国だと考えているのです。

fig-1 workbench

Arduino は、組み込み用ハードウェアであると同時に、オープン ソフトウェア用のプラットフォームです。組み込みプログラム、電子工学、ロボットやラピッド プログラミングの入門に最適です。このプロジェクトを終えるころには、半田付け、半田外し、回路図の読み方がわかるようになっています。電子工学や Arduino が初めてならば、以下の文献を読んでください。

Weekend Project: Learning Ins and Outs of Arduino 

Weekend Project: Loading Programs Into Arduino 

Arduino Tutorial

Arduino Lesson 1. Blink

fig-2 visor

買い物リスト

Arduino 関係のオンライン ショップは、たくさんあります。私は、Adafruit Industries、Jameco、Sparkfun か Digikey で買います (訳注: 日本でも Digikey で購入できます。また、秋葉原の千石、若月、秋月他でも可能です)。Adafruit は、最高の品物、解説書と製品ドキュメントを豊富にそろえています。ツールと半田を含む、このプロジェクトに必要な品物を $250 程度で購入できます。既にツールを持っていれば、$100 以下で済みます。必要なものは:

Arduino Uno

WAVE Shield for Arduino に加えて、SD カード、スピーカー。スピーカーは、PC やラップトップから取り外したものでも構いません。

MaxBotix LV-EZ 超音波距離測定器

スターター パックには、他にも付いてきます。余分に持っていることも良いことです。

WAVE シールドは、自分で組み立てる必要があります。スピーカーの線をどこに半田付けするかが、いつも問題になります。WAVE ボード回路を勉強すれば、スピーカー用出力が、ヘッドフォンジャックのすぐ後ろにある 2 つのピンであることがわかります。図 3 に、黒と赤のスピーカー線がスピーカー ピンに半田付けされている様子が見えます。どちらのピンに半田付けしても構いません。

fig-3-speaker-pins 1

または、半田付けを省略して、ヘッドフォン ジャックにスピーカーを接続するアダプターを使う手もあります。スピーカー ピンの出力は、8Ω 抵抗で 1/8W、4Ω 抵抗で 1/4W です。ヘッドフォン ジャックの出力は、もう少し大きいです。どちらにせよ、適切な音量にするには外部アンプが必要です。室内用として、WAVE シールドの既存のチップの上に、2 つ目の TS922 増幅チップを付けることもできます。

WAVE シールドは、モノラルの 16 ビット 22050 MHz WAV ファイルだけを演奏でき、SD カードは、FAT16 もしくは、FAT32 でフォーマットされている必要があります。

演奏のテスト

/usr/share/arduino/libraries/ から、WaveHC library をダウンロードします。WAVEHC Library に含まれる daphc.pde スケッチで、WAVE ボードをテストします。このスケッチは、SD カード上のすべての WAV ファイルを演奏し、Arduino IDE シリアル モニター上にファイル名を表示します。事前に、オーディオ ファイルを SD カード上に用意しておきます。Arduino に WAVE シールドを接続します。Arduino をコンピューターに接続し、daphc,pde スケッチをロード (File>Examples>WaveHC) して、演奏開始です。シリアル モニターを開き、スケッチが動いている様子を見ます (図 4)。もし動いていなければ、何か問題があったのです。

fig-4 serial-monitor

MaxBotix 超音波距離測定器の取り付け

MaxBotix は、単なるモーション センサーというだけでなく、6 インチから-254 インチ (15 cm から 635 cm)の範囲を測定できる超音波距離計です。42KHz の超音波を出し、反射して戻ってくる時間を測定して、距離を計算します。結果は電圧出力で、電圧が高いほど遠距離ということになります。それほど高精度ではありません。

fig-5 ez1

しかし、今回の目的には問題ありません。EZ1 は、超音波ビームの拡散が少ないです。Maxbotix sonar rangefiner は拡散がより少ないため、精度が高いです。

EZ1 に、グラウンド、+5V と AN ピンを半田付けします (図 5)。

PC から Arduinoを外し、Arduino から WAVE を外します。EZ1 のグラウンドを WAVE のグラウンドに、+5V 同士、そして AN は、アナログイン #0 に接続します (図 6)。グラウンドは接地線、+5 は 5V 電源を意味します。WAVE シールドは、アナログ入力を 6 個持っています。それらは、Arduino ボードへ直結しています。アナログ デジタル (A/D) 変換器が、アナログ センサーを読み込むことに使えます。また、汎用入出力 (GPIO) にも使用可能です。

fig-6 ez1-2-wave

簡単なスケッチで、EZ1 をテストします。

// ez1_measure.ino; print in inches
// how far away objects are
    void setup() {    
    Serial.begin(9600);
    }
    void loop(){ 
    float a0value = analogRead(0); 
    float inches = 0.496 * a0value; 
    Serial.print("The value captured from pin a0 is: "); 
    Serial.println(a0value);
    Serial.print("The distance in inches is "); 
    Serial.println(inches);
    delay(3000);
    }

このスケッチをロードします。適当な複数の物を適当な距離に置きます。距離が測定されるのがわかります (図 7)。

fig-7-ez1-measure

EZ 1クイック スタート ガイドに、電圧を距離に変換する数式が掲載されています。しかし、この計算式だけでは不足です。EZ1 は 9 ビット、Arduino は 10 ビット単位で、Arduino の A/D 変換器は 10 ビット処理をするからです。9 ビットの式は、以下のとおりです。

(5.0V/512) = 0.009766V per inch * 1000 = 9.766mV per inch

9 ビット数式では、電圧を 512 (9ビットでの最大値=29=512) で割り、つぎに、1000 倍して、単位を V から mV に変換して読みやすいようにします。

それでは、10 ビットに変換するにはどうしたらよいでしょうか。2 倍すればよいのです。1 ビット多いわけですから (210=1024)、1024 で割って 2 倍すれば、9 ビットの値と同じ値が得られることになります。

(5.0V/1024) * 2 = 0.009765625V per inch = * 1000 = 9.765mV per inch

inch に変換するためには、どうすれば良いでしょうか。EZ1 の測定範囲の最大値は、254 inch でした。つまり、デジタル値の最大値 (1024) で割り、2 倍すると、0.496 が得られます。そして、アナログ ピン #0 の値を掛けると距離が inch で得られます。

これで、最初のステップは終わりました。第 2 部では、Arduino スケッチを使ってデバイスの詳細設定を行います。

Linux Foundationメンバーシップ

30人のカーネル開発者

人気コンテンツ

  1. Today's Linux 2018/11/28 2018年 11月 27日
  2. Today's Linux 2018/11/29 2018年 11月 28日
  3. Today's Linux 2018/12/03 2018年 12月 02日
  4. Today's Linux 2018/12/04 2018年 12月 03日
  5. Today's Linux 2018/12/06 2018年 12月 05日

Linux Foundationについて

Linux Foundation はLinux の普及,保護,標準化を進めるためにオープンソース コミュニティに資源とサービスを提供しています

 

The Linux Foundation Japan

サイトマップ

問い合わせ先

サイトに関するお問い合わせはこちらまで

Linux Foundation Japan

Linux Foundation

Linux Training

提案、要望

Linux.com JAPANでは広く皆様の提案、要望、投稿を受け付ける予定です。

乞うご期待!