9
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

IoTLTAdvent Calendar 2017

Day 24

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

Last updated at Posted at 2017-12-23

このお話は、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種類のセンサが、簡単に利用できます。
ちょっとした試作や、ハッカソンでの実装などのとき便利ですので、使って位はいかがでしょうか?

9
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?