Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
社会の窓締め忘れ通知バックルを作った話epsode2
Search
Yoshiaki110
April 23, 2018
1.1k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
社会の窓締め忘れ通知バックルを作った話epsode2
Yoshiaki110
April 23, 2018
More Decks by Yoshiaki110
See All by Yoshiaki110
リモートお酌システム.pdf
yoshiaki110
0
570
Featured
See All Featured
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
200
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
71
40k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
570
Git: the NoSQL Database
bkeepers
PRO
432
67k
Marketing to machines
jonoalderson
1
5.4k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
200
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
380
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
540
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
Transcript
None
自己紹介
「遠隔お酌」ご存知ですか センサー付きの徳利を傾けると 離れた場所にあるお酌装置がお酒を注ぐ • 実家のお父さん、お母さんと • 田舎のおじいちゃんと • 単身赴任の旦那さんと •
海外留学の友達と 離れていても いっしょに飲んでいる気分♪ ♪ ネットのつながりを 心のつながりに 「遠隔お酌」でググってね 懇親会でデモします
三年前のある日 • 京浜東北線の車内 • 昼間なので空席多い • 私の前に立つ人が • 膝が付くぐらいぴったり、座りたい?隣の席は空いている のに
本題にいきます
三年前のある日 • 変な奴!でも、かっこいい、みっちーに似ている、私よりちょっと若い • 私の顔の前で、自分の股間を指さした(自慢したいのかな?) • 知らん顔していたら、隣に座って、ピッタリ寄り添ってきた • 気持ち悪りっ!!て思った瞬間、左手を私の膝に、右手は私の股間に ピンチ!!
私のチャックが全開でした • そうです、みっちーはチャックが開いているのを 人に知られないように 一生懸命私に教えてくれてたのです • それを、気持ち悪りって、いけない私... • ということで、締め忘れを通知する (ベルトの)バックルを作ることにしました
1年前に作ってIoTLTで発表しています • 市販のBLEセンサの磁気センサ を利用 • チャックにつけた磁石が離れる とスマホから警告音 • それでも、チャック上げないと 電話がかかる
Qiitaにも書いた
湿度で尿漏れ通知 • 湿度センサもついてる • 年とると、切れが悪くなる • ブツをしまった後にタラーッと • ズボンにシミが •
センサの位置を下に(股に)設置 ついでの機能
若い女性にも使える? もしかして、湿度センサは • ジジ・ババ以外につかえるかも • 準備OK • パートナーにそっとおしらせ
LINEで確認 実証実験してません • 恥ずかしがり屋の 草食男子には便利?
昨年の装置は、大きな問題が!! •チャック忘れるような人は、高齢のかたで スマホもっていない
他人のスマホを使っちゃえ と、ゆうことで •LINEビーコン •お友達になっていれば、ペア リングなしでBLE通信できる • アドバタイジングパケットに データを入れられる
社会の窓チャンネル • 近くにある、ビーコン付きバックル の状態を検知、チャックが開いてい る場合 • 「近くにチャックあけているかたがい ます、教えてあげてください」 • 恥ずかしい場合、電話で教えること
もできる
構成はこんなかんじ • BLE Nano(Arduino)に磁気ス イッチ • チャックにつけた磁石が離れる と近くのスマホにメッセージ • メッセージのへ返答で電話をか
けることも可能
デモ • 3分枠なので • 懇親会でデモします
人が教えてあげるって よくない? • すべて機械でやるのは、いいのか? • やさしさ、つながり、を考慮すべきでは? • つまらない時代、つまらないアプリになってしまう • 遠隔お酌のコンセプトと同じ「つながり」
湿度センサの追加機能 ところで 誰だ? どこだ? • 電車の中で準備OK • 席立てなくて、乗り過ごす学生続出?
技術情報
BLE NANO 2 • Mbed電源でもArduinoでも開発可能 • 今回は、慣れている、Arduinoを使用 • スイッチサイエンスで2192円 •
USBライターが必要、本体とセットで3888円
状態 LED ビーコン信号 電源投入時 ゆっくり点滅 ー 磁石が近くにある (チャックが閉まっている) 消灯 ー
磁石が近くにない∴チャックが開いている (磁石が離れてから、10秒間) 早く点滅 ー 磁石が近くにない∴チャックが開いている (磁石が離れてから、10秒以上経過) 点灯 発信
#include <nRF5x_BLE_API.h> #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); } }
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); }