RではなくL
前回までのお話
魔法使いの弟子: 「師匠、師匠、師匠〜」
魔法使いの師匠: 「どうした、弟子よ」
魔法使いの弟子: 「ロケットを見つけました」
魔法使いの師匠: 「ほほう、イーロンの落とし物かね?」
魔法使いの弟子: 「RではなくLのロケットです」
魔法使いの師匠: 「月森蓮1くん、彼はRenではなくLenだ」
魔法使いの弟子: 「訳のわからないこと言わないでください」
【公式】東京ディズニーシー25周年“スパークリング・ジュビリー” | 東京ディズニーリゾート
ロケットを懐中時計にする
RではなくLのロケット、つまりカパッと開けると写真やカメオが入っているという、欧米文学によく出てくるロケットペンダント。
せっかくですので、カパッと開けると32k水晶発振子を組み込んだ時計が見えるようにしましょう。
(厳密に言えば懐中時計とは服のポケットに入れるものですので、常に外から見える場合はペンダントウォッチまたはロケットウォッチです)
- 蓋側に磁石を組み込みホールICで検出し、蓋を開けると時刻が表示されるようにする
- 時刻は12個のRGB LEDで表示する(分針は色を変えることでmod 5を表現)
- LIR2032(またはCR2032やLiPo)で動作する
- 時刻合わせはスマホを用いて行う(人間が「今は9時32分なので9に合わせて...」という操作をしないで済むようにする)
- 32kHz水晶発振子搭載
レシピ
材料
| 品名 | 数量 | 1台あたり金額 |
|---|---|---|
| 東京ディズニーシー25周年 “スパークリング・ジュビリー” ロケット ベースパーツ | 1 | 2500 |
| 東京ディズニーシー25周年 “スパークリング・ジュビリー” ロケット イヤーパーツ | 1 | 600 |
| AVRマイコン AVR16EB14T-I/ST | 1 | 140 |
| ボタン電池基板取付用ホルダー(金属フレーム) CR2032用 | 1 | 50 |
| シリアル制御フルカラーチップLED WS2812C-2020 | 12 | 240 |
| PchチップMOSFET IRLML6402(20V3.7A) | 1 | 33 |
| 照度センサー(フォトトランジスター) 590nm NJL7502R | 1 | 30 |
| ホールIC S-5716ACDH0-M3T1U | 1 | 60 |
| 表面実装型クリスタル(水晶発振子) 32.768kHz | 1 | 40 |
| 表面実装用スライドスイッチ 1回路2接点 横向き | 1 | 80 |
| 表面実装用タクトスイッチ TVAF06-A020B-R | 2 | 44 |
| ネオジム磁石 丸型 φ3×1mm 金メッキ | 1 | 84 |
| EEMB LIR2032 充電式電池 | 1 | 200 |
| JLCPCB PCB基板 | 1 | 100 |
| JLCPCB 3Dプリント 電池カバー | 1 | 150 |
| チップ抵抗・コンデンサ(千石の地下で購入)など | ||
| 合計 | 約4000円 |
基板
JLCPCBにお任せです。
このロケットの裏蓋は3時方向にある固定金具で本体側に固定されます。
この金具も3Dプリントで作成してもいいのでしょうが、今回はXHコンタクトの金具をカットして使いました。
蓋の磁石
11時と12時のLEDの中間にホールICがあるので、その対面付近に磁石を固定します。
電池側ケース
3Dプリントしたケースを背中に乗せて、電池を保護します。
ソフトウェア
こちらのgithubにあります。
開発
アイデア
まず最初に検討したのは、自分で基板を作らずに既存のモジュールを組み込むことでした。
いくつか検討しましたが、サイズを測ってみるとなかなか厳しい、RTCを搭載して電池を長持ちさせるのも厳しい、と判断して機能を最小限に絞って自作することとしました。
STM32のライブラリダイエットで苦労したので、今回もAVRを使うことにしました。
今回はかなり小さいサイズとなるため、ATtiny1616よりさらに小さいAVR16EB14を使います。
32kクリスタルを接続でき、スイッチや1Hzの割り込みでwakeするDeep Sleepが可能です。
先行事例としては、
があります。
こちらと同様、マイコンRGB LEDは消灯時もかなり電気を消費しますので、ボタン電池稼働のためにP-ch MOSFETでRGB LEDへの給電も制御することにします。
時刻合わせを自動化することとしました。
我が家にはNTP時刻合わせのESP32の7セグメント時計があります。ひとたびこういった装置に慣れてしまうと、時刻合わせを人間が手作業でやるというのは無理な相談です。
生成AIと相談した結果、スマホまたはPC側でwebブラウザから画面を明滅させて時刻データを送るという方式を採用しました (web/clock.html) 。
1990年代にあったTimex DataLinkや、2010年代にあったDaisy.siと同じ方法ですね。AVR側ではフォトトランジスタで検出して時刻信号を受け取ります。
この辺りも含めて、プログラムは生成AIエージェントに作成してもらいました。
もちろん、「それでは動かないはずだ」「xxではyyを使ったほうが効率的」といった指示は人間が行います。
この指示をうまく出せるかどうかは、まだまだ人間の知や経験に依存ですね。
PoC基板
ブレッドボードでコンセプトを確認します。
表面実装基板に実装
ノギスで現物のサイズを測り、KiCadでグリグリしてJLCPCBに依頼します。
フォトトランジスタの抵抗には1MΩを使っていますが、実際に組み込んだ時に感度を調整可能なように0Ωもつけておきました。
実際にPCBが届いてから組み込み後に抵抗値を調整することはせず、1MΩのままでソフトウェア的にADCで動的に閾値を変更する方法となりました。
電源としてはCR2032/LIR2032, LiPoの双方に対応できるような基板としました。LiPoの場合は保護のためにポリヒューズを通します。
ただ、残念ながらCR2032でも動くのですが、安定性が今ひとつでした。
LED駆動電圧や点灯時のピーク電流に対してCR2032の内部抵抗が大きく、電圧降下が発生したためと思われます。
電源のコンデンサやP-ch付近の抵抗など、もう少し調整が必要そうです。
12個のLEDの場所はKiCad pcbのスクリプトコンソール機能で計算・配置します (kicad/plot.py)。
TSSOPや2020サイズのLEDですので、手作業リフローではルーペ、あるいはスマホの拡大鏡機能のお世話になります。
作成中はUPDIやGNDなどに抵抗の足をつけておくと作業がしやすいですね。
なお、このロケットの透明部分はアクリルのようです。アルコールなどが付くと変性してしまいますので、気をつけましょう。
ケース作成
KiCadでPCBの3Dモデルを吐き出せるので、Autodesk Fusionにインポートしてグリグリし、やはりJLCPCBに依頼します。
マウンティングホールをM2で作ってしまったのでかなり細い部品となってしまい、「0.8mmより細いので失敗するかもしれないがいいか」と質問される状態になりました。
もう少し大きな穴で作ったほうが良かったかも、と後の祭り。
しかし完成品はピッタリでした。JLCPCBすごい!
終わりに
今回はAIに全面的に依存した作成となりました。
もちろん自分でも作成はできる訳ですが、そうなると相当に時間がかかったことでしょう。
「人間でも時間はかかるができることを、機械にやらせたら短時間で終わった」という意味では、まだパラダイムシフトとまでは言えないのかもしれません。
しかしながら少し前までは「生成AIにプログラムを書かせることはできるか、既存のプログラムを改良してもらうにはまだ足りない」という状態だったことを思い出すと、短期間でかなりの変化が起きたということを実感します。
- 本記事は正規に購入した市販品を用いた、個人による私的利用を目的とした電子工作の記録・技術共有です
- 完成品および改変物の頒布・販売・商用利用は一切行っておりません
- 本記事および制作物は公式企業(株式会社オリエンタルランド/ウォルト・ディズニー・カンパニー等)とは一切関係のない個人のファンメイドです
- GitHubで公開している情報はすべて自作部分(内部基板・電池カバー)に関するものであり、公式グッズの3D計測データ等は含まれません
- 本プログラム・記事の一部は生成AIを使用して作成しています











