2015年11月06日

今、ワンボタンの IoT デバイスが面白い

はてなブックマークに登録

米アマゾンが 2015年3月31日に発表した「Amazon Dash Button」はボタンを押すだけで所定の日用品のオーダーを可能とする小さなデバイスです。電池交換は不可。アイテムごとに専用のデバイスが用意されています。

Dash Buttonはただの通過点、アマゾンが真に狙うは家電すべてとの連携ショッピング:ギズモード・ジャパン
当初 Dash Button の利用は招待制でデバイスは無料で配布されていました。その後$4.99 での販売に変更され、2015年9月に米アマゾンは Dash Button ビジネスの拡大方針を決定しています。好調のようです。

なお、今のところこのサービスの日本での開始はスケジュールされておらず、米アマゾンから Dash Button 単体を購入することもできません。

2016-12-22 追記:
Amazon.co.jp は 2016年12月5日に日本国内で Dash Button サービスを開始しました。これに伴い関連する以下の記事を当ブログに追加しています。

ワンボタンデバイスのメリットと応用例

Amazon Dash Button は事業形態としても面白そうですがこの記事ではデバイス本体に注目します。Dash Button の実体はマイコンと無線 LAN モジュールを主要素とする乾電池駆動の IoT デバイスです。

       
http://mpetroff.net/

Dash Button は独立した装置なので必要な折にスマートフォンアプリ等よりも素早く使用することが可能。ボタンひとつの単機能であることが手軽さと即応性をさらに高めています。 この迷いようのないユーザインターフェイスは、その素朴さとは裏腹に、関係者が消費者への効果的なアプローチを模索する過程において綿密に戦略を練った結果と想像されます。一見「誰でも思いつきそうなこと」はそれが本当に実現されればしばしば斬新です。手軽さといえばスマホばかりに目が向けられる現状においてあえて専用ハードの形態を選んだ発想には学ぶべき要素があるように思います。

このデバイスのアイディアはビジネス用途以外の IoT においても広く活用することが可能でしょう。「物理ボタンの押下」という手間がかからず誰にでもできる簡単な操作をトリガーにどのような処理を行うかはアイディア次第であり、その便宜と魅力に気づいた向きがこの安価な Dash Button を本来の目的以外のことに利用し始めています。以下にいくつか例を挙げます。

  • How I Hacked Amazon’s $5 WiFi Button to track Baby Data (2015ー08ー10) - medium.com
    おそらくこれが最初の Dash Button 転用例。Edward Benson 氏は自宅で乳児の排泄日時を手早く記録・管理する手段を探す中で、夜中にスマホを操作する煩わしさもなくボタン押下のみで完結する Dash Button の長所に着目した。
    "using your smart phone at night disrupts sleep. I want a simple button I can stick to the wall and push to record"

    Amazon へのオーダーを行う上で本来必要な初期設定を意図的に保留。デバイス本体をハックするのではなく、ボタン押下〜デバイス起床時に LAN 上に流れる ARP パケットに注目し、当該デバイスの MAC アドレスを検出すればそれをトリガーに PC で処理を実行する手法によって要件を実現した。


    https://medium.com/
    「The Internet of Things is already here.」という結語が印象に残る。デバイスのコストを事実上度外視して Button を供給しているアマゾンにとってはあまり歓迎できない試みと思われるが、本体を改変しているわけではなく意味的には単に「未登録」の状態に過ぎない。この手の転用が拡がれば何らかの対抗措置を敷かれる可能性が皆無ではないものの、現時点ではこうした行為に対し直接クレームをつけることは難しいだろう。

  • Amazon Dash — It’s Dinner Time! (2015ー08ー27) - theappslab.com
    Raymond Xie 氏は Dash Button のコストパフォーマンスの高さに大喜び。稼働中に熱を持つ PiTFT をコードを抜かず簡単に ON/OFF する目的にさっそく利用していたところ奥方からもっと実用的なことはできないの?と聞かれ、ヘッドホン装着率の高い二階の子供たちを夕食時にいちいち呼びに行く代わりに Dash Button で子供部屋の フィリップス ヒュー を点滅させることを思いつく。Button は台所の奥方の手に。

  • PizzaDash (2015ー09ー12) - github.com/bhberson
    前出の Benson 氏の記事に触発された、と Brody Berson 氏は Dash Button をドミノピザの宅配オーダーに利用(無論アマゾンとは無関係)。ボタン押下をトリガーに Raspberry Pi が ドミノピザ公式 API を叩いて注文成立。
    2015-11-25 追記:
    英国ドミノピザが公式にワンボタンのオーダーサービスを開始する旨の情報あり (2015-11-23) "PizzaDash" からの影響の有無は不明だが、dominos 社はこれまでに独自の様々なオンラインオーダーシステムを確立しており IT 活用にきわめて積極的

  • Amazon dash button automation silliness. (2015ー09ー26) - www.youtube.com
    Michael Donnelly 氏による Youtube への投稿動画。玄関の照明を点灯/消灯したり、ガレージの車の内部が一定の温度になったらクラクションを鳴らしたり。

  • Dash Hacking: Bare-Metal STM32 Programming - learn.adafruit.com
    Adafruit 社TONY DICOLA 氏による正面からの Dash Button ハックの試み。ファームウェアを書き換え本体の LED を自作のコードで制御。"this guide didn't touch on the Dash's WiFi module yet" とのこと。

また、米アマゾンウェブサービス(AWS)は 2015年10月の AWS IoT ベータ公開にあわせ、Amazon Dash Button と同一のハードを使った AWS IoT Button (beta)を発表しました。10月6〜9日にラスベガスで開催された「AWS re:Invent 2015」の会場では参加者へ AWS IoT 体験用に配布されています。ボタンを押すと AWS IoT サービスへ通知され利用者の記述した処理を実行できるしくみです。
        

さらに、クラウドファンディング発の次のようなオリジナルのボタン製品も登場しています。またこれからも新しいものが出てくることでしょう。

このように「ボタンひとつ」の IoT デバイスの有用性がいま注目されています。

工作と実験

こういった事情を背景にワンボタンデバイスを自作する向きもあり例 1例 2、試みに手元でも手近な材料を使って作ってみることにしました。装置が形になればそこにどのような処理を絡めるかは自由ですが、まずもっとも身近な題材のひとつとして自分あてのメール送信機能を組み込みました。

  • 今回の「ワンボタンメーラ」は試作上の題材ではありますが、実用を想定すると以前手がけた高齢者世帯安否確認のしくみと併せ、遠隔世帯からの手間いらずの ping 的定刻連絡やナースコール的な使い方ができそうです

試作の動作の様子 (動画:30秒)

    

装置について

試作した装置の材料と構成は以下の通りです。Arduino IDE for ESP8266 プロジェクトのリソースを使用し ESP8266 Wi-Fi モジュールをスタンドアロンのマイコンとして制御しています。
(価格は 2015年10月時点)

  • ESP8266 モジュール CDP-ESP8266 - Cerevo ¥842(税別)
  • バッテリー RW-111(電話機用:3.6V 800mAh) - ロワジャパン ¥780(税込) amazon
    ※説明欄の「単三電池三本の形状」の記述は「単四電池三本」が正しい
  • ブレッドボード EIC-15010 - スイッチサイエンス ¥216(税込)
  • ジャンプワイヤ・抵抗・タクトスイッチ・赤 LED
  • タッパ・ペーパータオル

     

     

メモ

  • タクトスイッチはペーパータオルをクッションにタッパ蓋のたわみを利用して操作。チープながらこの中敷きは装置を保護し外観を和らげ LED のシェードの役割も
  • ロワのバッテリーは手元の固定電話機 (ユニデン社製 UCT-002 用にストックしていたもの。定格もサイズもぴったりだが充電には電話機への装着が必要。充電器の有無を同社へ問い合わせるとやはり「本体充電のみ」とのこと
  • バッテリー消費抑制のため ESP8266 モジュールは平時はディープスリープ状態で待機させる。ボタン押下でリセットをかけると起床して必要な処理を行いふたたびスリープへ
    • ディープスリープ中の ESP8266 の使用電流は公称 10μA、手元の実測で 11μA
    • ESP8266EX の Operating Voltage は 3.0〜3.6V、Operating Current(Average value) は公称 80mA(下図)、今回の実験でボタン押下〜再スリープまでの実測では LED 点灯分を含めおよそ 60mA。処理完了までの所要時間は 10秒前後

                  ESP8266EX Datasheet Version 4.4 (2015-08-01) Page 8
                      (クリックで可読大表示)

    • バッテリー駆動可能期間を大まかに試算してみる。
      条件として、使用者が 1日に 2回、起床時と就寝時にボタンを押すものとする。この場合、前掲の値を当てはめると 1日のうち 2 × 10秒間が 80mA、残りの 86380秒間が 11μA(0.011mA)であり、平均をとるとおよそ 0.03mA。 自然放電特性を加味せず www.digikey.jp の 電池寿命カリキュレータで単純計算すると今回のロワの 800mAh のバッテリーの場合は次の結果となる
      800mAh / 0.03mA * 0.7 ≒ 18666.67 時間 ≒ 777.78 日 ≒ 25.1 月 ≒ 2.1 年

    • ちなみに Amazon Dash Button は 米エナジャイザー社Ultimate Lithium 乾電池 単4形(二次電池ではない)1本を内蔵している。アルカリ電池に比べ「最大 9倍長持ち」を惹句とする現時点でおそらく最強の乾電池。下記記事の Button 分解写真にこの電池の様子も写っている。電極がタブ付けされており電池交換は想定されていない模様
      Amazon Dash Button Teardown - mpetroff.net
      AWS IoT Buttonを分解してみた - Developers.IO
      ※プラス極側の黒地に白文字の「12-2034」「12-2035」等の表記は未使用時の品質保持期限を示す。20年!

      http://mpetroff.net/
    • データシートによると エナジャイザー Ultimate Lithium AAA は "Max Discharge: 1.5 Amps Continuous, 2.0Amps Pulse (2 sec on / 8 sec off)" と高容量であり、Dash Button のように間欠的に電力を使用する機器においては後者のメリットを最大限に享受できるものと想像される
    • 上の mpetroff.net の記事に次の記述がある。内部で 3.3V に昇圧しているとのこと
      "The Dash Button operates at 3.3 V boosted from the battery’s nominal 1.5 V, drawing 200–300 mA from the battery when on and 2.3 μA when in sleep."
      現時点では Dash Button の battery life に関する公式の記述は見当たらず
    • エナジャイザーの Ultimate Lithium 乾電池は性能相応に高価い。バッテリーだけをみても Dash Button の$4.99という価格設定への興味を誘われる
      Energizer L92BP-Energizer Ultimate Lithium AAA Battery (4-Pack) - www.amazon.com $7.99
      エナジャイザー リチウム乾電池単4形 4本パック - www.amazon.co.jp ¥1250
  • ブレッドボードを使わなければ配線部分をもっと小さくできるが全体のサイズは実験用としては手頃か

プログラムについて

メールの送信には「SendGrid」を利用しています。その方面ではメジャーなサービスであり、国内に正規代理店株式会社 構造計画研究所があり日本版の公式サイトも運営されています。濫用防止のためサインアップの際には使用目的等の詳細説明が求められアカウント発行可否は人間によって審査されます。

フリープランで 400通/日の送信が可能であり手元での利用にはまず十分そうです。ドキュメント・API も充実しています。 今回は単純明快でくみしやすい初版のほうの Web API を利用することにしました。 ところで、多くのクラウドサービスがそうであるように SendGrid Web API の利用にも HTTPS が必須です。 Arduino IDE for ESP8266 プロジェクトは 2015-08-31 より TLS 1.0/1.1 への対応を始めており利用者の一人として大いに期待しているのですが、この記事を書いている 2015年11月初旬の時点ではなお活発に開発が進行中で、stable になるまでにはまだ多少時間がかかりそうです。 そうした事情もあり、先だって「ESP8266 モジュールの AT コマンドに SSL クライアント機能を追加する」の試みで Espressif 社によるサンプルプログラムをもとに構成した HTTPS クライアントコードに手を加え、当面 Arduino IDE でライブラリとして使うことにしました。もちろんメールサービス以外の用途にも利用できるでしょう。
※手元の Arduino IDE for ESP8266 のバージョンは現時点で stable な
 2015-07-23 リリースの「1.6.5-947-g39819f0」なのですが、この版に
 同梱されている Espressif ライブラリを使ってスケッチをビルドすると
 SendGrid の API サーバ である https://api.sendgrid.com/ への接続
 要求時に異常終了の発生を確認しました。同ライブラリ群の配置された
 packages/esp8266/hardware/esp8266/1.6.5-947-g39819f0/tools/sdk/lib/
 配下の *.a を現時点で最新の esp_iot_sdk_v1.4.0_15_09_18 に
 含まれる一式に差し替えたところ問題の解消が見られました。

以下にソースコードを掲載します。ライブラリ「EspHttpsClient」はファイル一式をローカルのライブラリフォルダ下の EspHttpsClient/ 下へコピーして使います。

ライブラリ:EspHttpClient

EspHttpClient.h - GitHub

EspHttpClient.cpp - GitHub

スケッチ:OneButtonMailer

OneButtonMailer.h - GitHub

OneButtonMailer.ino

また、多少遅延が発生する可能性はあるものの、専用のサービスの代わりに手近に IFTTTMaker Channel を利用する選択肢もあるでしょう。目的がメール送信であれば下図の例の要領でレシピを作成しておきます。 (クリックで可読大表示)

     

このレシピを呼び出すスケッチです。

OneButtonMailer_IFTTT.h - GitHub

OneButtonMailer_IFTTT.ino

付録

Espressif 社のドキュメントより ESP8266 のスリープモードに関する記述箇所を以下に抜粋します。
(クリックで可読大表示)

ESP8266EX Datasheet Version 4.4 (2015-08-01) 」より

   

ESP8266 SDK API Guide Version 1.4 (2015-09-18)」中の system_deep_sleep() および system_deep_sleep_set_option() のリファレンス

   


(tanabe)
klab_gijutsu2 at 14:46│Comments(0)TrackBack(0)IoT | cloud

トラックバックURL

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔   
 
 
 
Blog内検索
Archives
このブログについて
DSASとは、KLab が構築し運用しているコンテンツサービス用のLinuxベースのインフラです。現在5ヶ所のデータセンタにて構築し、運用していますが、我々はDSASをより使いやすく、より安全に、そしてより省力で運用できることを目指して、日々改良に勤しんでいます。
このブログでは、そんな DSAS で使っている技術の紹介や、実験してみた結果の報告、トラブルに巻き込まれた時の経験談など、広く深く、色々な話題を織りまぜて紹介していきたいと思います。
最新コメント