- ホーム
- コラム
- YDC Labコラム
- 「Simple Commander」の制作【第1回】

「Simple Commander」の制作【第1回】
Lab研究員 竹島
突然ですが、「Amazon Dash Button」をご存知ですか?
Amazonのサイトにアクセスしなくても、ボタンを押すだけで洗剤や歯磨き粉などのいつものお気に入り日用品を購入できる便利なアイテムです。2016年末に日本でもサービスが開始され、種類の拡充が進んでいますね。
Amazon Dash Buttonは、ボタン1つとLED1つ(2色)というシンプルなインターフェースで、ユーザーの手間を極力省くように設計されています。
しかし、シンプルすぎるために商品を1つずつしか注文できないという欠点も持っています。
今回は、そんなAmazon Dash Buttonの欠点を補うことができる便利アイテム、名付けて「Simple Commander」の制作についてご紹介します。長くなるため、何回かに分けてその過程をご紹介していく予定です。初回である今回は、スタートである「企画」を取り上げます。
■Simple Commanderの企画
企画は、制作するものについてぼんやりとイメージする工程です。今回は思い付きで着手したため、実際は作りながら決めた部分がほとんどでした。本来この「企画」の工程では、「どんなものを作りたいのか?」というコンセプトを決めます。その後、必要な機能を整理して仕様としてまとめていきます。
ということで、今回のSimple Commanderのコンセプトを整理してみました。
【コンセプト】
簡単であり、多少融通が利く入力デバイス
そこにあるボタンをちょっと操作しただけで決まった結果が得られる、というものを目指しました。ですが場所や数量を指定できるといった、多少の融通は利かせたいと考えました。
部品点数をできるだけ少なく
・ボタン1つがあればいい簡単な操作
・数字1桁があればいい単純な表示
を目指しました。部品点数が少なければ制作費もかからず、制作期間も短くて済みます。そこまで大層なものではないため、費用も時間もなるべくかけないこととしました。
実現したいことは単純明快です。では、どのような機能を搭載すれば実現できるでしょうか。
【必要な機能】
今回実現したいことは、Amazon Dash Buttonの機能拡張です。場所(1~9)と数量(1~9)を指定する機器が作りたかったので、下記の機能を実装します。
・1~9の数字を2つ選択できる
・入力を間違えた場合はリセットできる
・設定が完了したら自動的にMQTTサーバへ送信する(入力した値は、JSON形式のテキストに変換)
・相手が認識したら自動的にリセット(認識メッセージは、MQTTサーバからJSON形式のテキストで受信)
・Wi-FiアクセススポットやMQTTサーバはWebベースで設定する
場所や数量を入力して送信、応答が来たらリセット。というシンプルな構造です。ここまでが固まったら、もう少しブレイクダウンして具体的な仕様を考えていきます。
【仕様】
各部の名称
この時点では絵に描いていなかったため、完成写真をもとにご説明します。本来ならばこの企画構想の時点で絵に描いておいたほうがいいでしょう。
1 電源スイッチ
2 LED付き押しボタンスイッチ
3 7セグメントLED
4 LED(インジケーター)
5 リセットスイッチ(ハードウェアリセット)
状態遷移図/表
操作手順をイメージして、状態遷移図を書きます。
この図を、実際の操作に合わせた表にしてみます。
入力仕様
・LED付き押しボタンスイッチ
・押す
数字をカウントアップする
・3秒待つ
次のステータスに移行する
・長押し
リセット
出力仕様
・7セグメントLED
設定①入力状態では、最初の設定値を表示する。
設定②入力状態では、2番目の設定値を表示する。
それ以外では何も表示しない。
・LED(インジケーター)
アイドル状態ではすべて消灯。
設定①入力状態では、LED1のみ点灯する。
設定②入力状態では、LED1とLED2を点灯する。
送信状態では、LED1とLED2とLED3を点灯する。
MQTTサーバと接続している間はLED4を点灯する。
応答待ち状態では、LED1とLED2とLED3とLED5を点灯する。
・JSON文字列
:送信データ {"command":"request","room":"3","count":"7"}
:受信データ {"command":"accept","room":"3","count":"7"}
roomには設定①の値をセットする。
countには設定②の値をセットする。
画面仕様
設定画面の仕様を簡単に決めておきます。
・入力項目
・Wi-Fi SSID
・Wi-Fiパスワード
・MQTTサーバIPアドレス
初期表示では、前回入力値を表示する。
パスワードは文字を"*"で置き換える。
入力チェックなし。
当初、考案していたのはここまでです。制作したかったもののイメージをお伝えすることはできたでしょうか? 改めて文書化すると意外と細かかったな、と自分でも感じますが、実際には文書に起こしていたわけではなく、「こんな感じならできるのでは?」と頭に思い描いていた程度でした。こういったスタートであったため、ここからは試行錯誤の連続となってしまいましたが、そのお話は次回以降でお伝えしたいと思います。
今後の記事の予定はこのようになっています。
第2回 試作:使用を想定している部品の回路を確認
第3回 設計:回路図エディタを使って回路を設計
第4回 部品関連:秋葉原で部品調達
第5回 制作:半田付けとAuduinoのスケッチを作成
第6回 テスト:MQTTサーバに接続してデバッグ
長くなりますが、完成までしばらくお付き合いいただければ幸いです。ここまでお読みいただきありがとうございました。