お知らせ:この記事はJLCPCBの提供でお送りしています。
みなさんこんにちは。今回は8月19日に開催されたオンラインイベント「分解のススメ #17」に登壇した際の内容と、その中で少し言及したJLCPCBのAssembly Parts Library(スライドではPart Libraryとして紹介)の活用法について紹介したいと思います。
なお、当日のスライドはこちらに、動画は分解のススメ #17のページにあります。私以外にも3名の方が発表していて、それぞれ別々の切り口でなかなか面白い発表でしたので併せてぜひご覧ください。
Tamagotchi Uniを分解してカスタムファームを動かす
詳細は分解のススメ本編の動画やスライドに譲りますが、今回の分解の対象はバンダイから7月に発売されたTamagotchi Uniという、最新のたまごっちです。このTamagotchi Uniには通信機能があり、AWS IoTを使っているというニュースも流れており、おそらくWiFi搭載マイコンを搭載しているだろうと話題になっていました。私も例に漏れずその話題に乗っかり、Tamagotchi UniをAmazonで事前に予約していたのですが、残念ながら発売日から数日遅れての入手となりました。1
そんなわけで、私がTamagotchi Uniを入手した時には、おもちゃ屋さんなどでいち早く入手されたみなさんによって、以下のような情報が判明していました。
- 搭載されているマイコンはESP32-S3のモジュール(ESP32-S3-WROOM-1)であること
- ねじを外せば比較的簡単に分解できること
- 基板上にテストパッドが出ていて、UARTにアクセスできそうなこと
このような事前情報のおかげで、写真の通り私も入手後すんなりと分解することができました。
しかし、ESP32-S3のUARTに接続し、ファームウェアを読み書きするモードに遷移させようとしてもうまくいきませんでした。電源投入時にUARTに出力されるメッセージを見ると、Secure Bootの有効化と、UART Download Modeの無効化が行われているようでした。ESP32-S3の中にはAWS IoTへの接続情報やたまごっちのキャラクターの画像データなど、保護すべき情報が入っているはずなので、当然の対応ではあるかと思います。
ここまでの解析結果により、最初から実装されているESP32-S3のファームウェアを書き換えて遊ぶことは難しいことが分かったので、Secure Bootなどが無効な状態のESP32-S3に換装して遊ぶ方向に作戦を変更しました。カスタムファームウェアを動かすためには、ESP32-S3の周辺の部品の仕様も確認する必要があるので、気を取り直して周辺のICの品番の特定を始めました。ただ、これも今回一緒に登壇した山崎 @tomorrow56さんやどうやら海外(カナダ?)勢のSlinky Ramune @GMMan_BZFlagさんなどにより大半が特定されていました。
部品が特定できた後はESP32-S3とそれらの部品の接続関係を、プリント基板上のパターンを追うことで確認していきました。両面基板なので、顕微鏡とテスターを組み合わせて追っていくことができました。ESP32-S3と周辺部品の接続関係はこちらのスプレッドシートにまとめてあります。主要な接続関係が分かったところで、後ほどのカスタムファームウェア実装の参考情報とするためにLCD用のSPIバスの通信と、オーディオDAC・加速度センサの制御用のI2Cバスの通信をロジアナでキャプチャしました。
ロジアナでの波形キャプチャが終わったところで、リフロー用のホットプレートにTamagotchi Uniの基板を載せ、ESP32-S3のモジュールを取り外しました。部品は片面にしか載っていないので、比較的難易度は低いと思います。
ESP32-S3を換装した後は、UARTのテストパッド経由でカスタムファームウェアを流し込み、LCD、スピーカー、加速度センサを制御できるようになりました。加速度センサについては品番が特定できなかった2のですが、I2Cバスの通信内容からあたりをつけて何とか動かすことができました。テストに使ったカスタムファームウェアのソースコードは後日公開予定です。
分解とJLCPCB Assembly Parts Libraryで使用部品のレパートリーを広げる
さて、今回分解したTamagotchi Uniですが、電池で何週間か動作することが求められる一方、比較的消費電力が大きくなりがちなWiFi対応マイコンが載っているということで、いったいどんな電源構成になっているのか?というのが関心事の一つでした。しかし(文字通り!)蓋を開けてみると、DCDCコンバータICなどは使わず、Torex SemiconductorのLDO、 XC6210B332MR-G を使ってLiPo電池の電圧を降圧しているだけでした。
電源がLDO一発3であることは予想外だったのですが、ここで使われているTorexのXC6210B332MR-GというLDOは、
- 700mA以上流せる
- パッケージが小さい(SOT-25など何種かある)
- 高速応答型でパスコンに積層セラミックコンデンサが使える
という特徴があり、ESP32シリーズでちょっと遊ぶ際にはなかなか使い勝手がよさそうだということに気が付きました。このように、他の人の設計から知見を得て、今後の自分の回路設計にフィードバックできるのも分解の楽しさの一つだと思います。
さて、この XC6210B332MR-G ですが、Mouserなどでも販売されているので素直に通販で買ってしまってもよいのですが、最近は部品実装までJLCPCBでやってもらうことが多いので、今回はJLCPCB Assembly Parts Libraryで部品を発注しました。
JLCPCB Assembly Parts LibraryはPCBA発注チュートリアルなどでも紹介している、JLCPCBでPCBAを行う際の部品のライブラリです。PCBAの発注時に、このAssembly Parts Libraryから部品を指定して発注することもできますが、事前に部品を自分用の在庫としてストックしておく使い方もできます。ただし、ストックした部品を部品のみで発送してもらうことはできず、必ずPCBA用の部品として使うことになります。ただ、小さいチップ部品であれば自前で手付けする機会はそうそうないですし、何より部屋が散らからないメリットもあるので、その他の通販で部品だけ買うよりも便利なのではないかと思います。
Asssembly Parts Libraryのトップページの検索窓にパーツの型番を入力して検索すると、このような画面になります。最近は提供されている部品の種類もかなり増えてきています。今回Tamagotchi Uniで見つけたTorexのXC6210B332MR-Gもばっちり取り揃えています。価格も2023年8月31日時点ですが、Mouserなどよりかなり安いです。
部品型番をクリックすると、部品詳細ページに移るので、”Add to My Part Lib for Assembly”をクリックすると、部品がカートに入ります。
右上のカートアイコンを押してカートに移動すると、先ほど追加した部品が表示されます。そこで左側のチェックを入れたうえで”Secure Checkout”を押すと決済ページに遷移し、PCBAの発注と同様の流れで決済を行えます。なお、決済完了後しばらくすると注文した部品がJLCPCBに到着した旨のメールが届きます。おそらく、海外の部品販売業者からの部品手配システムと共通になっているため、今回のようにAssembly Parts Library内の在庫を購入した場合でもそのようなメールが届くのだと思います。
これまでに注文した部品は右上のメニューから”Parts Manager”を選択すると確認できます。注文しておいた部品をPCBAで使用する場合は、注文していない部品をPCBAで実装するときと同様に部品番号を指定してやれば、注文済みの在庫から優先的に使用してくれます。
Assembly Parts Libraryの部品の在庫は結構潤沢にあるように見えますが、Digi-KeyやMouserなどでも在庫が切れがちな部品などを確実に確保しておきたいというような場合は、今回のように事前に注文しておくとよいかと思います。
以上、今回は分解のススメ #17で発表した、”Tamagotchi Uni”の分解の内容と、そこで見つけた部品をJLCPCBで活用する方法について紹介しました。皆さんもガジェットの分解で面白い部品を見つけたら、Assembly Parts Libraryでも検索して、自分のPCBAでも活用してみましょう!
- Amazon、予約商品が当日に届かない時があるんですよね…
- テカナリエさんのレポートではばっちり品番特定されています。購読している方は見てみましょう!
- チャージャーICとロードスイッチは別についていますが