自分だけのガジェットを作るって、ワクワクしませんか?
世の中にはたくさんの「困った」があって、それに対応する便利なアイテムも星の数ほど存在しますよね。でも、自分の「こういうやつがほしい!」というニーズに完璧にハマるものって、なかなか見つからない。結局、既製品のちょっとした不満を工夫して使ったり、昔ながらのアナログな方法でなんとかしのいだりしているのが、私たちの日常だったりします。
そんな中、私たちの前に現れたのが、ラズパイ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」を使えば、それも夢じゃないかもしれません。さらに、遠くに住む高齢の親に使ってもらえば、さりげない見守りにもつながるかも。
自分で作ったガジェットって、後からいくらでも機能を足していけるのが良いですよね。小さな一歩から始まった今回のガジェット作りですが、その可能性は無限に広がっていると感じています。
開発を陰で支えてくれた、心強い一冊
今回のガジェット作りの基本的な知識やハードウェアの製作についての参考書はこちらの本です。フルカラーで図解が豊富なので、電子工作初心者でもすごくわかりやすくなっています。「何か困っていることを解決したい」「電子工作に挑戦してみたい」「スマホアプリにも興味がある」という方には、ぜひ手に取ってみてほしい一冊です。