0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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プリントしたケースを背中に乗せて、電池を保護します。

JLCPCBから届いたパーツ

ケースを取り付ける前の剥き出しの電池

ケースを取り付けた後

ソフトウェア

こちらの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) 。

光学同期のweb画面

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付近の抵抗など、もう少し調整が必要そうです。

KiCad回路図

12個のLEDの場所はKiCad pcbのスクリプトコンソール機能で計算・配置します (kicad/plot.py)。

TSSOPや2020サイズのLEDですので、手作業リフローではルーペ、あるいはスマホの拡大鏡機能のお世話になります。

PCBに部品を実装

作成中はUPDIやGNDなどに抵抗の足をつけておくと作業がしやすいですね。

なお、このロケットの透明部分はアクリルのようです。アルコールなどが付くと変性してしまいますので、気をつけましょう。

ケース作成

KiCadでPCBの3Dモデルを吐き出せるので、Autodesk Fusionにインポートしてグリグリし、やはりJLCPCBに依頼します。

マウンティングホールをM2で作ってしまったのでかなり細い部品となってしまい、「0.8mmより細いので失敗するかもしれないがいいか」と質問される状態になりました。
もう少し大きな穴で作ったほうが良かったかも、と後の祭り。

Fusionの画面

しかし完成品はピッタリでした。JLCPCBすごい!

終わりに

今回はAIに全面的に依存した作成となりました。
もちろん自分でも作成はできる訳ですが、そうなると相当に時間がかかったことでしょう。

「人間でも時間はかかるができることを、機械にやらせたら短時間で終わった」という意味では、まだパラダイムシフトとまでは言えないのかもしれません。
しかしながら少し前までは「生成AIにプログラムを書かせることはできるか、既存のプログラムを改良してもらうにはまだ足りない」という状態だったことを思い出すと、短期間でかなりの変化が起きたということを実感します。

  • 本記事は正規に購入した市販品を用いた、個人による私的利用を目的とした電子工作の記録・技術共有です
  • 完成品および改変物の頒布・販売・商用利用は一切行っておりません
  • 本記事および制作物は公式企業(株式会社オリエンタルランド/ウォルト・ディズニー・カンパニー等)とは一切関係のない個人のファンメイドです
  • GitHubで公開している情報はすべて自作部分(内部基板・電池カバー)に関するものであり、公式グッズの3D計測データ等は含まれません
  • 本プログラム・記事の一部は生成AIを使用して作成しています
  1. 月森蓮 (つきもりれん)とは【ピクシブ百科事典】 ↩

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?