娘の誕生日プレゼントを作る 5歳
前回の4歳の誕生日プレゼントよりデジタル解禁となりました。5歳の誕生日ではデジタルもアリになって自由度が広がってるので悩みます。ここは思い切って本人に聞いてみようということに。
父「誕生日プレゼント何を作って欲しい?」
娘「うーん、ボタンを押したら時間が出るやつがほしい」
ん?これってなんのことですかね。多分、「出る」っていうのは画面に表示されるみたいなニュアンスだと思います。そして「時間」というのは今の時刻のことだと思います。それって時計?AppleWatch?
とにかく腕時計サイズで自作するのは難しい上に既視感しかない。超劣化版のAppleWatchを作るのはちょっと避けたいところ。ここは仕事でもよくやる「逆提案」しかないと思いました。
クライアントへの逆提案
共創的な仕事も増えてきた今日ですが、やっぱり要望通り実現する仕事も多いです。そして、娘の依頼でプレゼントを作るのも同じく「実現する仕事」でしょう。しかし、クライアントである娘の依頼があまりにもシンプルすぎるのでここはスパイス的になにか要素を変えていくことで面白さと作りやすさの両立を狙いたいと思います。(制作時間はいつも3日ぐらいしかとれないので)
提案1 「感熱紙プリンタ」
感熱紙プリンタっていうのは、要はレシートプリンタです。あの既視感のあるレシートのフォーマットになにか別のものが出るのって結構ワクワクするもので。何を隠そう昔友人と感熱紙プリンターを使った作品を作ってるので、その魅力はよくわかってます。
これが昔作った感熱紙プリンタを使った時計です。そうです、娘の要望ってこれですよね。「スイッチを押したら時間が出る」文字通り出てきます。
ただ、昔作ったものを再現するのもあれなんで、ここは新規に作ります。そして、当時使ってた感熱紙プリンタは日本製で業務用のを買ってるので高かったです。数万したと思います。でも今回はadafruitで買うのでわずか数千円です。なんか可能性を感じずにはいられません。
こんな感じの感熱紙プリンタ。我らギークが大好きadafruitで売ってます。
提案2 「新しい機能を追加」
多機能を良しとする思考では決してないのですが、時計として正確な時刻を印字するためには、インターネットに繋ぐか、RTC(時計モジュール)を内蔵するかのどちらかになります。意外とマイコンやパソコンで正確な時間を知るのは難しいです。インターネットに繋ぐと、ネット経由で時刻を修正する機能があるので、正確な時間がわかるのですが、それを使わないとしたら、腕時計とかと同じクオーツを使った時計モジュールを内蔵するしかないです。そして後者の場合は、時刻をセットするという操作も必要になり、スタンドアロンで動くデバイスとしては開発の難易度が高くなります。
RaspberryPiを使うというのはなんとなく心に決めていたので、自宅のWiFiにつないでIoTデバイスにするのが一番手っ取り早いです。ネット経由で時刻を知るという方に決めました。
でも、せっかくネットに繋がるんだから、例えば「天気予報」とか出せちゃうんだよなーって思ってしまいました。
父「天気予報が出るボタンもつけない?」
娘「それいいね!」
一瞬で仕様が提案どおりに決定。気持ちいい。
仕様決定からデザイン確定
ということで、
1. 時刻を表示
2. 天気予報を表示
の2つの機能が内蔵されることになりました。
2つというのはなんかあれなんで、3つボタンをつけることに。きっとなにか思いつくだろうということで、3つのボタンを秋葉原で購入。デザインを決めました。
Rhinoで設計しました。ボタンが結構大きいですが、見た目が良くて一応今後のために光らせられるスイッチを採用。ロール紙が内蔵できて、制御基板等も内蔵し、RaspberryPi3も内蔵できそうな感じに。
MDF加工
上記の写真は同時期に作った別のものですが、作り方が似てるので写真を。
MDFで箱を作る作業になるんですが、CNCで板を切り出しつつ、それをトリマーという道具で45度の彫り込みをしていきます。この作り方できれいに箱が作れると気がついたので、それを試したいという勢いもあり、一気に作り始めます。基板をどう内蔵するかとか、結構アバウトなまま、勢いで作りました。
組み立て
誕生日前日かそこらだった気がします。とにかく組み立ててしまいたい。でも収まらない。。みたいなそんな感じで。。
RaspberryPi ZeroWが当時まだ出てなかったので、RaspberryPi3を内蔵しないとWiFiモジュールがついてないので、WiFiドングル刺すにもZeroだとUSB-Microから変換しないと刺さらないのでどうにもイマイチで、RaspberryPi3で作ってました。でもRaspberryPi3ってUSBのポートや有線LANとかでかいのがいらないんです。。なので、半田でそれら不要パーツを取り去りました。。でとりあえず押し込むように組み立てました。(時間がない!)
コーディング
たしか事前にプリント部分と天気予報取得部分はスタディしておいた気がします。Pythonでちゃちゃっと書けたはずです。天気予報はフリーのOpenWeatherMapを使います。天気予報結果のアイコンもフリーの素材をダウンロードして使います。プリントアウトもadafruitのサンプルとかがあって簡単でした。
期日に完成ならず
朝になり娘の誕生日当日になりましたが、まだ完成してませんでした。。外装とか配線は完了してたので、とりあえず、iPhoneからコマンドを送って、「お誕生日おめでとう」というのをタイミングよく印字してレビューはごまかし、幼稚園に行っている間に続きを作りました。。。
完成
幼稚園から戻るまでにはなんとか完成しました。
1. 時刻表示
2. 今日、明日、明後日の自宅付近の天気予報印刷
3. PrintBoxとロゴを印字(ルビ付き)
3が苦しいです。
本当は、本当はですよ、なんか親から送ったメッセージを印刷する機能をつけたかったんです。メッセージを受信したらスイッチが光って、それを見て「あ、メッセージきてる」ってスイッチを押すと印刷される。という。
でも、全然時間も足りなくて、ハード的にもLEDを光らせるパーツを内蔵できてないし、、ソフトもそこまで実装するにはあと1~2日ほしい。。
ということで、機能拡張は後日ということで、上記の状態で無事納品完了。
クライアントの娘は喜んでくれました。印刷されるのが超遅いですが、それもまた楽しいみたいです。あと要望の品が完成したというクライアントの醍醐味を味わったのかもしれませんね。