自分だけのガジェットを作るって,ワクワクしませんか?
世の中にはたくさんの「困った」があって,それに対応する便利なアイテムも星の数ほど存在しますよね。でも,自分の「こういうやつがほしい!」というニーズに完璧にハマるものって,なかなか見つからない。結局,既製品のちょっとした不満を工夫して使ったり,昔ながらのアナログな方法でなんとかしのいだりしているのが,私たちの日常だったりします。
そんな中,私たちの前に現れたのが,ラズパイPico W/2W。簡単なのに高性能,そしてお財布にも優しい,まさに無敵の救世主! Wi-Fiだってサクッと繋がっちゃうんですから驚きです。
これを使えば,電子工作ド素人の私だって,自分だけのオリジナルガジェットが作れるかもしれない! そんな期待に胸が膨らみました。
ラズパイPico W/2Wとは?
ラズパイPico W/2Wとは,Raspberry Pi Foundationが開発する小型のマイコンボードです。いわゆる電子工作を楽しむためのキットとして,多くのファンを獲得しています。
計算処理や制御処理を行うマイコンチップや無線LANの仕組みを搭載しており,LED・液晶表示器・センサーなどを接続してプログラミングすることで,自分のアイデアを実現する作品を生み出せます。
ラズパイPico 2W(ボードに搭載した様子)
「もし,こんなガジェットがあったら……」から始まった
さて,一体何を作りたかったのか? それは,ズバリ,お薬の飲み忘れを防いでくれるマシンです!
もちろん,アナログな対策だってあります。「○月○日朝」なんてメモを貼ったり,曜日や時間ごとに薬を小分けできるケースを使ったり。でも,正直,メモなんてしょっちゅう書き忘れるし,小分けにするのも結構面倒くさい。「薬を飲み忘れてるよ!」って,さりげなく教えてくれるガジェットが欲しい!
操作はできる限りシンプルに。ボタンがいっぱい付いていると,どれを押せばいいか迷ってしまいます。何も考えずに「ポチッ」と一回押すだけでOK,そんなのが理想です。
シンプルこそ最強!徹底的にこだわった設計
それなら,アラームやタイマーの仕組みを応用すればいけるんじゃないか? そう考えました。
具体的には,一日の服薬タイミング「朝・昼・夜・寝る前」に合わせて,それぞれの締め切り時間(7:00,13:00,21:00,23:59)を設定。そして,小型の液晶ディスプレイには,現在の時間と,一番近い締め切り時間を分かりやすく表示します。
薬を飲んだら,ユーザはただボタンを一度押すだけ。すると,表示されている締め切り時間が,次の服薬タイミングへと自動的に切り替わるという仕組みです。もし,設定時間を過ぎてもボタンが押されなかったら,LEDをピカピカ点滅させて「飲んでないよ!」と教えてくれます。点滅中にボタンを押せば,LEDは消えて,次のタイミングに進む,というわけです。
時刻合わせの手間をなくすために,Wi-Fi経由でNTPサーバーに接続して,常に正確な時間をゲット。起動したときには,現在の時間以降で一番近い締め切り時間を,初期値として表示するようにしました。これらのアイデアは,外食先のレストランで,紙ナプキンに落書きしながら考えました。
紙ナプキンにアイデアを書き出す
必要最低限だから扱いやすい。厳選したハードウェアたち
ガジェットの部品選びは,参考書で紹介されていた,初心者にも扱いやすそうなものを中心にセレクトしました。表示部分には,小さくて省エネなI2C接続の液晶ディスプレイ「AQM0802」。
通知用のLEDは,パッと見て分かりやすい青色を選びました(しかも抵抗内蔵型なので,配線がちょっと楽なんです)。
操作ボタンは,押しやすいように,一般的なものより少し大きめのものをチョイス。これらの部品たちを,ブレッドボードを使ってラズパイPico 2Wに接続しました。
さらに,すべてのGNDピンをGNDラインに繋ぎ,念のためパスコンも2個投入。これで誤動作対策もバッチリ…のはず!
頼れる相棒!AIとの二人三脚によるソフトウェア開発
プログラミングについてもど素人の私。そこで,「Geminiくん,助けて!」とお願いすることにしました。
「こんな条件で動くプログラムを書いて」と,ざっくりとしたお願いをしてみたところ,それらしいコードを吐き出してくれました。…が,もちろん一発で完璧に動くわけもなく(やっぱり欲張りすぎましたか)。
こういうときは,焦らずに,少しずつ機能を追加していくのがセオリーですよね。参考書を片手に,自分で書けるところは書いて,分からないところはGeminiくんに教えてもらいながら,少しずつ進めていきました。
具体的なステップとしては,①現在の時刻を液晶に表示する,②締め切り時刻を設定して表示する,③ボタンを押すと締め切り時刻が更新される,④締め切り時間を過ぎたらLEDを点滅させる,⑤ボタンを押すとLEDが消えて次の締め切り時刻になる,⑥日付が変わる時の誤作動を防ぐ,といった具合に機能を分割して,一つずつ動作確認をしてから次の機能を追加していきました。
以下の動画は,0700を締切とし0659からの一連の動作を記録したものです。ご覧のように0700の時間になると左上の青いLEDが点滅,ボタンを押すとLEDが消灯,次の締切(1300)が表示されています。
大きめのボタンを使ったせいか,ボタンを押したときの信号が何度もON/OFFを繰り返してしまうチャッタリングという現象に悩まされ,締め切り時間が一気に数回分も進んでしまうこともありましたが,それもなんとか解決! ついに,ガジェットは思い描いた通りに動作するようになったんです。やったー!
小さな一歩が,無限の可能性へ
とりあえず,最初の目標は達成! でも,実際にこのガジェットを使ってみるうちに,「もっとこうなったら便利かも」という新しいアイデアがどんどん湧いてきました。
「ボタンを押した時間を記録して,スマホから確認できたら,もっと便利になるかも」。
スマホアプリがブロックプログラミングで簡単に作れる「MIT App Inventor2」を使えば,それも夢じゃないかもしれません。さらに,遠くに住む高齢の親に使ってもらえば,さりげない見守りにもつながるかも。
自分で作ったガジェットって,後からいくらでも機能を足していけるのが良いですよね。小さな一歩から始まった今回のガジェット作りですが,その可能性は無限に広がっていると感じています。
開発を陰で支えてくれた,心強い一冊
今回のガジェット作りの基本的な知識やハードウェアの製作についての参考書はこちらの本です。フルカラーで図解が豊富なので,電子工作初心者でもすごくわかりやすくなっています。「何か困っていることを解決したい」「電子工作に挑戦してみたい」「スマホアプリにも興味がある」という方には,ぜひ手に取ってみてほしい一冊です。