「自宅警備員」を作ってみよう 4-1

4章
自由に工作しよう
4-1 「自宅警備員」を作ってみよう
Arduinoで侵入者を検知
外出中に、
「自分の部屋に誰
かが入ってきているのではな
いか」と、ふと気になったこと
はありませんか? 部屋に誰か
が侵入してきたことを知らせ
てくれる警備員がいてくれた
らいいのに、と思ったことは
ありませんか? そんな時には
Arduino に警備員になっても
らいましょう。
図 4-1-1 自宅警備員完成
自宅警備員の構成を考える
自宅警備員にどのような機能を持たせればいいのか、製作するにはどんなものが必
要になるかを考えてみましょう。
部屋に誰かが入ってきたかどうかを検知するには、モーションセンサーが便利です。
3 章でモーションセンサーを使った人は、その高性能ぶりを体感できたかと思います。
モーションセンサーで検知した結果を、どこにいても見られるようにしたいと思い
ませんか。どのような方法があるでしょうか。いつでもどこでもとなれば、やはりイ
ンターネットを使うのが一番です。インターネット上のサービスで手軽に書き込める
といえば、やはり Twitter でしょう。となれば、Arduino に Ethernet シールドを組み
合わせて使う必要があります。
どうやら自宅警備員の機能は、Arduino、Ethernet シールド、モーションセンサー
の組み合わせで実現できそうです。それでは、この 3 つを組み合わせた回路を考えて
みます。この回路図は、図 4-1-2 のようにしましょう。
機能のわりには、とてもシンプルな回路になりました。
298
4-1 「自宅警備員」を作ってみよう
GND
OUT
1
底面視図
AMN31111 の
ピンアサイン
Arduino
7
6
5
4
3
2
1
0
SCK
MISO
MOSI
SS
2
+5V
AMN31111
Ethernetシールド
Vdd
SD̲CS
WP DETECT RESET
OUT
最初の一歩
Arduino
Analog
0
1
2
3
4
5
Power
IOREF
RESET
3.3V
5V
GND
GND
VIN
Digital
+5V
SCL
SDA
AREF
GND
13
12
11
10
9
8
のしくみ
Arduino
Vdd
100k
GND
基本のテクニック
3
図 4-1-2 自宅警備員の回路図
自宅警備員のスケッチを考える
次にスケッチを考えましょう。モーション
で、3 章のモーションセンサーのスケッチと
モーションセンサーで
侵入者を検知
Twitter のスケッチを組み合わせればできあが
4
自由に工作しよう
START
センサーが検知したら Twitter に書き込むの
りそうです。加えて、侵入した時刻がわかれ
ばなお便利です。そこで Twitter に書き込む
を取得するのは NTP サーバにアクセスするこ
とで実現できます。
侵入したことを知らせる
メッセージを書き込む
これらのことを整理すると、図 4-1-3 のよ
5
アンドロイドにつなげよう
NTPサーバで
侵入時刻を取得
メッセージに日付と時間を追加します。時間
うな処理の流れになります。
299
付録
図 4-1-3 自宅警備員の処理の流れ
4章
自由に工作しよう
3 章で紹介した NTP サーバのスケッチでは、時刻の表示を行いました。今回は日付
の表示も追加しましょう。Arduino には NTP サーバの情報から、簡単に日付を取得
することができるライブラリも用意されています。このライブラリは Time ライブラ
リといい、以下のホームページからダウンロードすることができます(図 4-1-4)。
http://www.arduino.cc/playground/Code/Time
図4-1-4 Timeライブラリダウンロードページ
このページの「The download」というリンクをクリックするとファイルのダウン
ロードが始まります。ダウンロードしたファイルを任意のフォルダに保存して解凍し
「Time」フォルダ、
「DS1307RTC」
てください。解凍すると「TimeAlarms」フォルダ、
フォルダが作られます。このうち「Time」フォルダを、Arduino をインストールした
フォルダ内の「libraries」フォルダの中にコピーします。なお、解凍の仕方によっては
「Time」フォルダの中に上記の 3 つのフォルダが作られる場合があります。
コピーが終了したら Arduino IDE を起動します。もし、コピー中に Arduino IDE
が起動していた場合は、一度すべてのウィンドウをとじて、改めて Arduino IDE を起
動してください。「Sketch」メニューから「Import Library...」を選択した時に「Time」
300
4-1 「自宅警備員」を作ってみよう
がリストに出ていれば、ライブラリのインストールは成功です。
Time ライブラリに含まれている関数は表 4-1-1 のとおりです。
1
関
数
内
容
時刻を初期設定します。 getTimeFunction に時
刻を取得する関数を指定します。
setSyncInterval(interval)
時刻を同期するための時間間隔を秒数で指定します。
timeStatus()
時刻が設定されたか、同期をとったかなどのステー
タスを返します。ステータスには、以下のものが
あります。
timeNotSet:時刻がまだ設定されていません。
timeNeedsSync:時刻の同期が必要です。
timeSet:時刻が設定または同期されました。
year()
西暦で年を返します。
month()
月を返します。
day()
日を返します。
hour()
時間を返します。
minute()
分を返します。
second()
秒を返します。
2
最初の一歩
Arduino
setSyncProvider(getTimeFunction)
のしくみ
Arduino
表4-1-1 Timeライブラリの関数(抜粋)
基本のテクニック
3
スケッチを作る
Time ライブラリのインストールが確認できたら、いよいよスケッチ 4-1-1 を作成し
自由に工作しよう
4
ます。3 章で作ったスケッチをもとに組み合わせます。MAC アドレスと Twitter のトー
クンの設定を忘れずに行ってください。
アンドロイドにつなげよう
5
スケッチ 4-1-1 自宅警備員
// 自宅警備員
// ネットワーク接続に必要なライブラリをインクルード
付録
#include <SPI.h>
#include <Ethernet.h>
#include <EthernetUdp.h>
// Twitter ライブラリをインクルード
#include <Twitter.h>
次頁へ続く
301