インタラクティブ・カウントダウンタイマー:LEDマトリクス表示とBluetooth音声操作
必要なパーツと用品
| パーツ | 数量 | 備考 |
|---|---|---|
| Adafruit NeoPixel 8×8 RGB LEDマトリクス | 1 | 64個のフルカラーLED |
| SparkFun BlueSMiRF Silver(Bluetoothモジュール) | 1 | シリアル通信置換用 |
| ピエゾブザー | 1 | タイムアップ通知用 |
| オス-オス ジャンパーワイヤー | 1式 | |
| メス-オス ジャンパーワイヤー | 1式 | |
| Arduino UNO | 1 | メインコントローラー |
| ミニブレッドボード | 1 | |
| モバイルバッテリー(5V出力) | 1 | 携帯用電源 |
| ヘッダーピン | 1式 | LEDマトリクス用 |
| Lumina 635(Windows 10 Mobile端末) | 1 | 音声認識用 |
必要な工具
- はんだごて(汎用)
使用アプリ・オンラインサービス
- Microsoft Windows 10 IoT Core
- Windows Virtual Shields for Arduinoアプリ(Windows Phone上で動作)
プロジェクト概要
はじめに
6歳の娘にはまだ時間感覚がありません。「あと2分で夕食だよ」と言っても、30秒で来たり10分経っても来なかったり。電子レンジのタイマーを使っても、遊び部屋からは見えないし、寝室からはブザーが聞こえません。そこで、彼女の傍らに置けて、視覚的に時間の経過がわかるポータブルタイマーを作ることにしました。
最初は16×2 LCDで数値カウントダウンを試みましたが、面白みに欠け、数字の大小でも時間の感覚はつかめません。次に8×8 LEDマトリクスで砂時計アニメーションを試しましたが、8×16以上ないと砂時計らしく見えませんし、砂時計自体が魅力的ではありません。
娘と相談し、最終的に「時間経過とともにカラフルな雫が落ちて溜まっていく」デザインに決定。カウントダウン間隔の1/64ごとに1粒ずつLEDが点灯し、全64個点灯でタイムアップ。全LED点滅とブザーで知らせます。カウントダウン時間は1分、2分、5分などから選択可能。さらに、Windows Phoneに向かって話しかけるだけでBluetooth経由で時間設定ができ、タイムアップ後も追加時間を音声で指定できます(Bluetooth範囲内なら同室でも別室でもOK)。
核心パーツはArduino Uno、NeoPixel 8×8マトリクス、Bluetoothモジュール。NeoPixelは制御ピン1本で済むため、他機能用にピンが余ります。Windows Virtual Shields for Arduinoアプリを使えば、スマホの音声認識・通知機能をArduinoスケッチから利用できます。
初心者向けプロジェクトで、高度なスキルは不要。Arduino経験者なら30〜45分で完成。初めての方は入門動画を数時間視聴してから取り組むことを推奨します。
前提条件
- ArduinoをWindows Virtual Shields用にセットアップ(手順はこちら)
- Windows PhoneとPCをWindows Virtual Shields用にセットアップ(手順はこちら)
※Windows 10とVisual Studio 2015が未導入の場合、前提条件の完了に2〜3時間かかります(大半は無人インストール時間)。
必要なもの
パーツ
- Arduino Unoと標準USBケーブル(A/B)
- NeoPixel 8×8 RGB LEDマトリクス
- Bluetoothモジュール
- ピエゾブザー
- オス-オス/メス-オス ジャンパーワイヤー
- ミニブレッドボード
- Lumina 635またはWindows Phone 10対応端末
- オプション:直角ヘッダーピン(オス/メス)
- オプション:5Vモバイルバッテリー
工具
- はんだごてとハンダ
製作手順
ステップ1:LEDマトリクスをArduinoに接続(約15分)
シールド型マトリクスはピンを全占有し、Bluetoothと併用時にRX/TX(D0/D1)競合で動作しませんでした。NeoPixelマトリクスなら制御ピン1本、競合なしで完璧です。
まずLEDマトリクスに3ピンヘッダーをはんだ付け(直角かストレートは取り付け方次第、手持ちで決定)。Arduinoとの接続は3本のみ:
- Arduino 5V → ブレッドボード電源レール → LEDマトリクス 5V
- Arduino GND → LEDマトリクス GND
- Arduino デジタルピン9(D0/D1以外なら任意) → LEDマトリクス DIN
※5V、GND、DINの順序はメーカーによって異なるため、基板表記を確認してください。
ステップ2:LEDマトリクスの動作テスト(約5分)
Adafruit純正ライブラリもありますが、Nulsom製ライブラリの方が安定しました(クリア時の消灯確実性、Virtual Shieldsとの相性)。Nulsomサイトからライブラリをダウンロードし、Arduino/librariesフォルダに配置。IDEのサンプルスケッチを書き込んで動作確認。
ステップ3:Bluetoothモジュール接続(約5分)
BlueSMiRF Silverはシリアルケーブルの置き換えとして動作。ピンヘッダーをはんだ付け後、ブレッドボードに挿して配線:
- 電源レール(5V) → モジュール VCC
- Arduino GND → モジュール GND
- モジュール TX → Arduino RX (D0)
- モジュール RX → Arduino TX (D1)
※BluetoothのTX/RXが繋がっているとスケッチ書き込み不可。書き込み時は外し、完了後に再接続してください。
ステップ4:ピエゾブザー接続(約5分)
ブザーの「+」ピンをArduinoデジタルピン3、「-」ピンをGNDに接続。ブレッドボード上で配線。
ステップ5:コードのダウンロードと書き込み(約10分)
GitHubからコードを取得し、Arduino IDEで開く。BluetoothのTX/RXジャンパーを外して書き込み、完了後に再接続。Virtual Shieldsアプリを起動し、スマホとBluetoothモジュールをペアリング。Arduinoのリセットボタンを押して再起動。スマホに向かって「1分」「5分」などと話しかければカウントダウン開始。
ステップ6:ポータブル化(約5分)
モバイルバッテリー(5V出力)にArduinoのUSBケーブルを挿すだけ。壁コンセントを探さず、屋外にも持ち出せます。事前にバッテリーを満充電しておきましょう。
コード
GitHubリポジトリ:
https://github.com/peejster/Countdown-Timer
回路図
Fritzingファイル:countdown_timer.fzz
製造プロセス
- ポータブルRaspberry Pi RetroPieハンドヘルドの製作 – パート1
- Arduino UNOとMAX7219で作るUFOアタックゲーム – レトロなドットマトリクスシューティング
- ウォッチドッグタイマーを理解する:マイコンのハングアップを防ぐ仕組み
- SparkFun 7セグメントディスプレイで作る信頼性の高いArduinoカウントダウンタイマー
- 車両配線の基礎知識:信頼性の高い自動車性能のためのキーポイント
- 555モノステーブルマルチバイブレータの構築:ステップバイステップガイド
- 電気回路図における配線接続規約:明確なガイド
- ネットワークとバス:デジタルシステムにおける配線の明確なガイド
- ジャンパワイヤを排除:BreadShieldでArduinoをブレッドボードに直接接続
- チタンワイヤ:種類、特性、産業用途
- VHDLで信頼性の高いタイマーを構築:クロックサイクルカウントで時間を計測