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人のカーネル開発者

人気コンテンツ


Linux Foundationについて

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

 

The Linux Foundation Japan

サイトマップ

問い合わせ先

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

Linux Foundation Japan

Linux Foundation

Linux Training

提案、要望

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

乞うご期待!