Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

自己紹介

Slide 3

Slide 3 text

「遠隔お酌」ご存知ですか センサー付きの徳利を傾けると 離れた場所にあるお酌装置がお酒を注ぐ • 実家のお父さん、お母さんと • 田舎のおじいちゃんと • 単身赴任の旦那さんと • 海外留学の友達と 離れていても いっしょに飲んでいる気分♪ ♪ ネットのつながりを 心のつながりに 「遠隔お酌」でググってね 懇親会でデモします

Slide 4

Slide 4 text

三年前のある日 • 京浜東北線の車内 • 昼間なので空席多い • 私の前に立つ人が • 膝が付くぐらいぴったり、座りたい?隣の席は空いている のに 本題にいきます

Slide 5

Slide 5 text

三年前のある日 • 変な奴!でも、かっこいい、みっちーに似ている、私よりちょっと若い • 私の顔の前で、自分の股間を指さした(自慢したいのかな?) • 知らん顔していたら、隣に座って、ピッタリ寄り添ってきた • 気持ち悪りっ!!て思った瞬間、左手を私の膝に、右手は私の股間に ピンチ!!

Slide 6

Slide 6 text

私のチャックが全開でした • そうです、みっちーはチャックが開いているのを 人に知られないように 一生懸命私に教えてくれてたのです • それを、気持ち悪りって、いけない私... • ということで、締め忘れを通知する (ベルトの)バックルを作ることにしました

Slide 7

Slide 7 text

1年前に作ってIoTLTで発表しています • 市販のBLEセンサの磁気センサ を利用 • チャックにつけた磁石が離れる とスマホから警告音 • それでも、チャック上げないと 電話がかかる Qiitaにも書いた

Slide 8

Slide 8 text

湿度で尿漏れ通知 • 湿度センサもついてる • 年とると、切れが悪くなる • ブツをしまった後にタラーッと • ズボンにシミが • センサの位置を下に(股に)設置 ついでの機能

Slide 9

Slide 9 text

若い女性にも使える? もしかして、湿度センサは • ジジ・ババ以外につかえるかも • 準備OK • パートナーにそっとおしらせ

Slide 10

Slide 10 text

LINEで確認 実証実験してません • 恥ずかしがり屋の 草食男子には便利?

Slide 11

Slide 11 text

昨年の装置は、大きな問題が!! •チャック忘れるような人は、高齢のかたで スマホもっていない

Slide 12

Slide 12 text

他人のスマホを使っちゃえ と、ゆうことで •LINEビーコン •お友達になっていれば、ペア リングなしでBLE通信できる • アドバタイジングパケットに データを入れられる

Slide 13

Slide 13 text

社会の窓チャンネル • 近くにある、ビーコン付きバックル の状態を検知、チャックが開いてい る場合 • 「近くにチャックあけているかたがい ます、教えてあげてください」 • 恥ずかしい場合、電話で教えること もできる

Slide 14

Slide 14 text

構成はこんなかんじ • BLE Nano(Arduino)に磁気ス イッチ • チャックにつけた磁石が離れる と近くのスマホにメッセージ • メッセージのへ返答で電話をか けることも可能

Slide 15

Slide 15 text

デモ • 3分枠なので • 懇親会でデモします

Slide 16

Slide 16 text

人が教えてあげるって よくない? • すべて機械でやるのは、いいのか? • やさしさ、つながり、を考慮すべきでは? • つまらない時代、つまらないアプリになってしまう • 遠隔お酌のコンセプトと同じ「つながり」

Slide 17

Slide 17 text

湿度センサの追加機能 ところで 誰だ? どこだ? • 電車の中で準備OK • 席立てなくて、乗り過ごす学生続出?

Slide 18

Slide 18 text

技術情報

Slide 19

Slide 19 text

BLE NANO 2 • Mbed電源でもArduinoでも開発可能 • 今回は、慣れている、Arduinoを使用 • スイッチサイエンスで2192円 • USBライターが必要、本体とセットで3888円

Slide 20

Slide 20 text

状態 LED ビーコン信号 電源投入時 ゆっくり点滅 ー 磁石が近くにある (チャックが閉まっている) 消灯 ー 磁石が近くにない∴チャックが開いている (磁石が離れてから、10秒間) 早く点滅 ー 磁石が近くにない∴チャックが開いている (磁石が離れてから、10秒以上経過) 点灯 発信

Slide 21

Slide 21 text

#include #include "setting.h" BLEDevice ble; uint8_t sid[] = {0x6F, 0xFE}; uint8_t sdata[] = {0x6F, 0xFE, 0x02, 0x01, 0xDE, 0xAD, 0xBE, 0xEF, 0x7F, 0x00}; uint8_t hwid[] = HWID; int cnt = 0; void advertising() { ble.init(); ble.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED | GapAdvertisingData::LE_GENERAL_DISCOVERABLE); ble.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_16BIT_SERVICE_IDS , sid, sizeof(sid)); ble.accumulateAdvertisingPayload(GapAdvertisingData::SERVICE_DATA , sdata, sizeof(sdata)); ble.setAdvertisingType(GapAdvertisingParams::ADV_NON_CONNECTABLE_UNDIRECTED); ble.setAdvertisingInterval(160); // 100ms; in multiples of 0.625ms ble.setAdvertisingTimeout(5); // 単位は秒 ble.startAdvertising(); ble.waitForEvent(); ble.stopAdvertising(); ble.shutdown(); delay(150); } void setup() { Serial.begin(9600); NRF_POWER->DCDCEN = 0x00000001; pinMode(LED, OUTPUT); pinMode(D2, INPUT_PULLUP); memcpy(&sdata[3], hwid, 5); for (int i = 0; i < 10; i++) { // 10秒間ウエイト digitalWrite(LED, HIGH); // LED ON delay(500); digitalWrite(LED, LOW); // LED OFF delay(500); } }

Slide 22

Slide 22 text

oid loop() { int data = digitalRead(D2); if (data) { if (++cnt & 0x1) { digitalWrite(LED, HIGH); } else { digitalWrite(LED, LOW); } if (cnt > 30 ) { // 3秒間 digitalWrite(LED, HIGH); advertising(); // チャックが開いている時だけ通信 } } else { cnt = 0; digitalWrite(LED, LOW); } Serial.println(data, HEX); delay(100); }