Edited at
IoTLTDay 24

社会の窓締め忘れ通知装置を作った話

このお話は、IoT縛りの勉強会! IoTLT vol.25 @freeeでLTした内容です。

ウケ狙いでLTしたため、技術的なことは喋りませんでした、ここに書いておきます。


LTの内容(SlideShare)

スライドの説明で不十分な個所について、捕捉します。

thumbnail


CC2650STK(センサタグ)

今回は、BLEセンサーとして使っていますが、センサ付きマイコンとしても使うことが可能です。


BLEセンサーとして使う場合


スマホアプリで使う


ネイティブアプリ

下記に純正アプリがあります


EvothingsStudio


  • 今回利用しました。Cordovaの開発環境(JavaScript)です

  • https://evothings.com/

  • いわゆるPhoneGap(Cordova)の開発環境 

  • PC上でJavaScript書くとiPhone/Androidで実行できる

  • スマホとはワイヤレスで接続、USBケーブル不用

  • センサータグ専用ではないが、センサータグのライブラリがあり、簡単にBLEのプログラム書ける

  • スマホ上に実行環境アプリをインストールする必要あり

  • 無料でも使える(プロジェクト数などの制限あり)

  • CC2650のサンプルあり


yagitsawa さんのページが参考になります。


Raspberry piで使う


  • nodeで使えます(npm install sensortag)

  • Pythonも使えるようですが、私はうまくいきませんでした。


マイコンとして使う場合(DEVPACKの購入が必要\2000弱)


Energia


Code Composer Studio(CCS)


CCS Cloud


プログラムの解説

imagel


サンプルをコピペ

Evothings のサンプル「TI SensorTag CC2650 & CC2541 Sensors」ほとんどそのまま利用しています。


Evothingsで音を鳴らす

チャックが開いていることを検知すると、警告音を鳴らします、

Evothingsで音を鳴らすには、wav形式などの音声(音楽)を再生します、ファイルでなくても大丈夫で、今回のように短い音の場合メモリ上に置くことも可能です。

isseium さんのページを参考にしました

function beep()

{
var base64 = "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"
var sound = new Audio("data:audio/wav;base64," + base64)
sound.play()
}


EvothingsでHTTP通信

警告音が鳴っても、チャックが開いている場合、Twillioを利用して電話をかけます。Twillioへはhttpでpostしますが、Evothingsでは「cordovaHTTP.post()」を使用します。

function twilio(sex) {

var url = 'http://内緒.co.jp/call_boy'
if (sex === 'girl') {
url = 'http://内緒.co.jp/call_girl'
}
var item = ''
console_log("twilio call item: " + item)
cordovaHTTP.post(url,
item,
{ },
function(response) {
console_log(response.status)
try {response.data = JSON.parse(response.data)
console_log(response.data.message)
} catch(e) {
console_log("JSON parsing error")
}
},
function(response) {
console_log(response.status)
console_log(response.error)
}
);
}


CC2650とEvothings

¥4,000-で10種類のセンサが、簡単に利用できます。

ちょっとした試作や、ハッカソンでの実装などのとき便利ですので、使って位はいかがでしょうか?