この記事はbenridane(みやまる)のAdventカレンダーArduinoの16日目の記事です。
傘をよく忘れるので、忘れないようにしたい。
とても忘れっぽいので雨の日にLEDを光らせても何の光だったかを忘れて、傘を忘れたりする。
強引に傘を差し出してくれれば、たぶん忘れないだろうという狙い。そこには眠っていたスマホとArduinoがあった。
#そしてできたもの
雨になるとサーボモータが動作して傘をカバンの上に落とす仕組み
朝にドスンとという音とともにカバンに落ちる。
用意するもの
Android端末 (一台ぐらい余ってるでしょう)
taskerアプリ (最初に買った有料アプリ)
arduino UNO (互換品でもいい)
cdsセンサー (なんなら100均のを分解)
10k抵抗
サーボモーター
一番簡単にAndroidスマホとarduinoをつなげる方法
普通はBluetoothだろうけど、もっと簡単に接続する。
今回はコミュニケーションの手段にスマホのライト機能とarduinoのCdsセンサーを使う。
Taskerアプリで、スマホのライトを光らせて、光センサーであるCdsセンサーが検知すると、サーボモータを動かすのだ。
なんとも原始的で技術的にはLチカから脱していないが、単純明快でインターフェイスとしてもすごい汎用性があると思う。なんせ光が出ていれば、アクションを起こせるんですから。
配線がごちゃごちゃして分かりにくいが、Cdsセンサーに抵抗をつなぎ、5VとGNDにつなぐ、抵抗の後をA0ピンにつないでモニタリングする。サーボモータは、5VとGNDにつなぎ、13ピンにて信号線とする。Cdsセンサー とAndroidのカメラのライト部分を外の光が入らないようにガムテープで接着する。
#Arduinoプログラム
#include <Servo.h>
Servo myservo;
int val = 0;
int iPin = A0;
int oPin = 13;
void setup() {
Serial.begin(9600);
pinMode(oPin, OUTPUT);
myservo.attach(9);
myservo.write(90);
}
void loop() {
val = analogRead(iPin);
Serial.println(val);
if(val<10){
// digitalWrite(oPin, LOW);
}else{
// digitalWrite(oPin, HIGH);
myservo.write(180);
delay(10000);
myservo.write(90);
}
delay(2000);
}
ループでCdsセンサーを確認して、閾値を超えると、サーボモータを動かす。
#Tasker設定
1.朝7時にアクションを設定する。
2. HTTP GETにて天気予報を取ってくる。(livedoorAPIを利用)
- weather.livedoor.com/forecast/webservice/json/v1?city=270000
- Variable Search Replaceにて必要な情報に整形
- Variable %HTTPD Search "telop":"temperature"
- Take PhotoでフラッシュをON if %Tenki11 ~R .96e8. (APIがUnicodeエスケープシーケンス。96e8が雨のユニコードでそのまま使う)
まとめ
日常生活にarduinoから光以外のアプローチできた。
おそらく一番簡単なAndroidスマホとarduinoとを繋ぐハック。
これを作ってから雨に打たれることが無くなった。(うまく動作しているか毎日天気を気にするようになった。[重要])
#余談
スマホを使うのは大げさかもしれない。ただ、スマホはWifi、Bluetooth、場合によってはSIMという強力なインターフェースにバッテリーまで持ちつつコンパクトに収まっているし、なんなら画面に表示して確認とかできる。大量に生産されているので、手に入りやすく型落ちスマホは安い。スマホを使う上で、一番ネックになるのはスマホとarduinoをどうやって情報を伝えるかだ。ソフトウェア開発者が日常生活にアプローチしようとすると、時折とんでもないことになる。スマホのBluetoothとarduionoのBluetoothモジュールを繋いで、、待てよ、Bluetoothモジュール買わないと。。Bluetoothとarduionoはどうやって通信する? arduinoにBluetoothをつなぐプログラムをかいて。。Android側はアプリ開発からはじめるのか。。仕様を調べよう。。ヤックシェービング。どんどん物理的なコストと期待していない仕様が増えてくる。時には愚直な選択も必要かと思いました。