「修理とか」カテゴリーアーカイブ

壊れた機械を直せる人になりたくて、技術屋になりました

chibi:bit (micro:bit 互換) テスト版 Bボタン不具合の修理

mbed祭り 2016@初夏の札幌 で実物を見てからずっと気になっていた micro:bit の国内向け互換機 chibi:bit 。
基本的なアーキテクチャはそのままに、日本で技適取得済みの bluetooth モジュールを採用し、日本国内での利用を可能にしたデバイスです。

教育用マイコンというと Arduino や raspberry Pi が既に先行していますが、micro:bit は押しボタンや LED マトリクス、加速度センサ、地磁気センサといった子供でもお手軽に使える入出力装置が組み込まれているのが特徴です。特に LED マトリクスは 5×5 の LCD ディスプレイの代わりとして利用することが可能で、標準のライブラリを使えばメッセージをスクロール表示(場末のスナックとかで見かける「い..ら..っ..し..ゃ..い..ま..せ..!」と文字が流れるアレ)させることもできます。あとは外付けセンサー等との接続にワニ口クリップが使えるよう、コネクタの幅が大きめにとってあったりとか、電池をつけるためのコネクタが標準で付いていたりとか、後発ゆえに色々考えられているなあという作りになってます。

スイッチサイエンスさんでは今回の製品化に先駆け、製品化前モニターテストというものを募集していましたが、張り切って応募したものの、残念ながら落選。

そうなると余計欲しくなるのが人情。
さすがスイッチサイエンスさん、良く分かってます(笑)

畳みかけるように Maker Faire Tokyo 2016 のタイミングで chibi:bit テスト版の限定販売を行うと聞き、早速注文。テスト版といっても製品版と機能は同じで、しかし価格は製品版よりも抑えての販売のことで、このあたりにスイッチサイエンスさんの良心を垣間見たような気がしました。

しかし・・・

注文商品発送のお知らせを受領し、到着を今か今かと待っていたまさにその日、一通のメールがスイッチサイエンスさんから届きました。
なんとテスト版の基盤パターンに不具合が見つかり、実装されている B ボタンが動作しないとのこと。

chibi:bitテスト版、返品返金もしくは返品交換をいたします。

何でも B ボタンのパッドが地磁気センサのパターンと被ってしまっているのが原因とのことで「はんだ付けに自信のある方は」という前提で修正方法も公開されていいます。

この問題に対し、スイッチサイエンスさんでは「返品交換」もしくは「返品返金」で対応するとのこと。
それについては素晴らしい対応だと思うのですが、販売価格を抑えた利益の薄いテスト版なのに、返品→修理→交換とかしてたら完全に赤字なんじゃないかと。

さらに言えば今回のは「テスト」と謳った版なわけで、これを理解した上で購入した側としては一定の責任を追う必要があるべきではないかと思うわけですよ。更に踏み込むなら「テスト版デバイスの購入者ならばこの程度の困難は何とかしてくれるはず」というスイッチサイエンス担当者の心の叫びが聞き取れるというか、いやひょっとしてこれはもはやスイッチサイエンスからの挑戦状なのでは・・・!と妄想に妄想を重ねた作者は「返金」でも「交換」でもなく「自分で修理」の道を選択したのでした。
(前置き長くてすみません)

現状確認

基本的には前述の修正方法に乗っ取れば OK な訳ですが、百聞は一見にしかず、ということで自分の基盤をチェック。
おお、確かにパターン被ってる。

chibi_bit_001

作業開始

パターンをカットした上で、接触箇所を避ける形でジャンパーを飛ばせばいいわけですね。
・・・と書いたものの、このパターン、相当細いですよ。0.3mm くらい?
スルーホール部分でようやく 0.7 mm 位でしょうか。
(まだ)老眼とかじゃなくてよかった・・・

chibi_bit_002

スルーホール周辺のレジストをカッターの背で削って銅箔を露出させ、接触箇所のパターンを切ったところです。
レジスト削りよりも、パターンカットの方が怖かったです。隣のパターンを切ってしまいそうで・・・
カット後に導通をチェックして、ボタンのパッド部分との導通がないことを確認しました。

chibi_bit_003

最終的にこんな感じになりました。
手持ちのリード線で一番細いやつ使ったんですが、それでもパターンより太くて難儀しました・・・

先ほど露出させた銅箔にほんの少しだけフラックスをつけ、軽くハンダを乗せた上で、同じく事前にハンダを乗せたリード線を固定して、ハンダごての先で素早く融着させる感じで固定しました。
リードを固定する時に使ったクリップが強力すぎて、被覆が少し潰れているのはご愛敬。(^^;

動作確認

ボタン動作を試す簡単なプログラムを書いて chibi:bit に流し込み、実際に B ボタンが動作することを確認しました。
A/B ボタンいずれかを押すと 5×5 LED マトリクスに「A」または「B」と表示されます。

テストに使ったコードは https://developer.mbed.org/users/iwaita2ya/code/microbit_button_test/ でもシェアしていますが、念のためこちらにも全文貼り付けておきます。

/******************************************************************************
main.cpp

Tatsuya Iwai @ greysound.com
Original Creation Date: Aug 12, 2016
https://github.com/sparkfun/LSM9DS1_Breakout

This simple program tests built-in "A" and "B" button on micro:bit or any
compatible devices (such as "chibi:bit") shows button label on LED matrix
when either button is pressed.

Distributed as-is; no warranty is given.
******************************************************************************/

#include "MicroBit.h"

// Objects --------------------------------------------------------------------
MicroBitMessageBus bus;
MicroBitButton buttonA(MICROBIT_PIN_BUTTON_A, MICROBIT_ID_BUTTON_A);
MicroBitButton buttonB(MICROBIT_PIN_BUTTON_B, MICROBIT_ID_BUTTON_B);
MicroBitDisplay display;

// Function prototypes --------------------------------------------------------
void onPressed(MicroBitEvent e);

// Main  ----------------------------------------------------------------------
int main()
{
    scheduler_init(bus);

    bus.listen(MICROBIT_ID_BUTTON_A, MICROBIT_BUTTON_EVT_CLICK, onPressed);
    bus.listen(MICROBIT_ID_BUTTON_B, MICROBIT_BUTTON_EVT_CLICK, onPressed);

    while(1)
        fiber_sleep(1000);
}

// Functions ------------------------------------------------------------------
void onPressed(MicroBitEvent e)
{
    if (e.source == MICROBIT_ID_BUTTON_A)
        display.scroll("A");

    if (e.source == MICROBIT_ID_BUTTON_B)
        display.scroll("B");
}

あと余談になりますが、chibi:bit を USB 接続した際にフォルダに含まれている MBED.HTM を開くと、mbed コンパイラに mbed HRM1017 として登録されてしまいました。
micro:bit のライブラリを利用する場合、このままビルドすると以下のようなエラーとなってしまいます。

Error: Cannot open source input file "device.h": No such file or directory in "microbit/microbit-dal/mbed-dev-bin/platform.h", Line: 21, Col: 21

これを回避するには https://developer.mbed.org/platforms/Microbit/ から画面右側にある「Add to your mbed Compiler」というオレンジ色のボタンをクリックして、micro:bit をデバイス一覧に追加した上で、ターゲットを micro:bit に変更して下さい。

ASUS Nexus 7 2012 USBコネクタ交換 その2

前回からの続きです。

中国経由で注文した USB コネクタが届いたものの、実は Amazon でUSBコネクタを含むモジュールを購入した方が安いという事実に気がつき、こちらを購入&交換してしまったので、なかなか続きを書くことができませんでした。

しかし今回、交換したケーブルで再度コネクタが破損するトラブルに見舞われ(涙)、もはやこれまでとばかりに重い腰を上げたのでした。

nexus7_2012_connector_fixed1

作業そのものは単純で、4カ所の足をスルーホールに通してハンダで固定し、そのあと端子(5本)をハンダ付けするだけです。
ただし 0.5mm ピッチの端子なので、ハンダごての先端に載せるハンダが多いと、すぐに隣同士の端子がくっついてしまうのでハンダ付け後の導通チェックは入念に行って下さい。最悪ショートさせてしまうと本体が故障してしまいます。

もしくっついてしまった時は、慌てずハンダ吸い取り線で余分なハンダを除去しましょう。
吸い取り線を強く押し当てたり、こすりつけたりすると端子やパターンを痛めてしまうので焦らず慎重に。

nexus7_2012_connector_fixed2

あとは本体とモジュールを繋ぐコネクタの止め忘れにはご注意。
モジュールはコネクタを接続しなくても本体にぴったり収まるよう設計されているので、止めなくてもズレたりしないのでつい止めるのを忘れてしまいます。(自分だけかもしれませんが)

USBコネクタ交換後、無事充電が開始されるようになりました。(^^)

Nexus7 2012 はもうずいぶん前に発売された端末で、LTEに対応していなかったりと旧世代機であることは事実なのですが、保守性が高い設計でかつ故障箇所もある程度絞り込めているので、大事に使えばまだまだ現役で頑張ってくれる端末です。

ASUS Nexus 7 2012 USBコネクタ交換 その1

奥さんに譲ったNexus7 2012年モデルが、なにやら充電できないと相談を受けました。
ケーブルを交換してもダメ、純正チャージャーからつないでもダメ。元々少し調子が悪かったので、分解して調べてみることにしました。

ネットで情報を集めてみると、どうやら2012,2013両モデルで同じ症状が発生しているようで、MOUMANTAIさんの公式ブログでも多くの修理事例が載っています。

分解手順を張り切って解説しようと思ったのですが、デバイス分解の老舗「ifixit.com」にNexus7 2012年モデルの分解方法が載っていたので割愛(おい)します。ちなみにこちらの記事ではカッコイイ専用ツールを使って背面パネルを分解していますが、親指のツメでぐっと押すだけで簡単に開きました。超強力な両面テープなども使われていないので気軽に外せるの設計になっているのが好感を持てます。自分の分解人生を振り返っても歴代1位に輝く簡単さです。

20150214_全体図

裏蓋を外したところです。既にUSBコネクタが下部に見えています。

20150214_ねじを外す箇所

USBコネクタの全面にはスピーカーモジュールがついていますが、こちらは3カ所のねじとコネクタを外せば簡単に取り外せます。

OLYMPUS DIGITAL CAMERA

スピーカーモジュールを外すとUSBコネクタが露出します。USBコネクタはマイクジャックと共通のフレキシブルケーブルに接続されています。こちらは5カ所のねじとコネクタを外せば簡単に取り外せますが、コネクタのロックを外す方向だけ少し注意が必要です。

20150214_コネクタ取り外し

こちらはコネクタのロックを解除した直後の状態です。上図の矢印の報告にロックを持ち上げることでコネクタとフレキシブルケーブルを分離することが出来ます。

20150214_導通チェック

ここからが肝心の充電不良の原因調査です。
かなり強引な方法ですが、5Vの充電器に繋いだ状態のUSBケーブルを取り外したUSBコネクタに接続して導通チェックしてみます。

マイクロUSBコネクタの場合、1番ピンと5番ピンにそれぞれ+5VとGNDが接続されているので、この間の電圧を計って電圧が来ていればOKです。

・・・あれ、電圧出ないな・・・

20150214_コネクタ割れ

ハンダ割れも疑いましたがどうやらそうでもなさそうで、しかし何となくコネクタの端子部分を覗き込んで納得しました。画像では見にくいですが、内部の端子の両側が欠けて半分ほど消失しています。どうやら3歳の息子が充電中に無理矢理ケーブルを引き抜いたらしく、恐らくその際に端子の両端に負荷が掛かって欠けてしまったのではないかと思われます。

Nexus7のコネクタの耐久性が低い可能性もありますが、これってマイクロUSBのBコネクタの構造上の問題のような気もします。しかもトラブルが発生した場合、比較的安価なケーブルよりも機器側が破損してしまうというのはかなり致命的。

そう考えると最近あまり見かけなくなったMini-Bコネクタの方が優秀に思えてきました。ちょっと時代遅れっぽい感じで見ていたのですが、改めます。ごめんMini-B。

たまたま手元に秋月電子で購入したBコネクタがあったのですが、外側の形状が異なるため残念ながら使えそうにありません。やはりNexus7用の交換用コネクタを探す必要がありそうです。

5分くらい悩んで結局Aliexpress.comのこのショップで購入。2個で1,176円は高いですが背に腹は代えられません。

ちなみにMOUMANTAIさんでも1個から販売しているので、中国からの発送という配達スリルがご不要な方はこちらをおすすめします。MOUMANTAIさんはクロネコメール便で無料発送してくれるので、コネクタ1個あたりの単価で考えるとAliexpress.comで購入するのと大差ありません。自分大失敗。

とりあえず気を取り直して、中国からコネクタが到着するまで時間があるので、今日は破損したコネクタだけ外しておくことにしました。

20150214_コネクタカット

まずはUSBコネクタを固定している、4つの羽根のような部分から取り外します。
本来はハンダごてでハンダを溶かしながら、少しずつ持ち上げてやるのが正しいやり方なのかもしれませんが、自分はワイルドにニッパーで切断してしまいました。羽根の残骸はUSBコネクタ撤去後に除去してやればよいので合理的です。

はい、ここまではよかったんです。

20150214_パターン飛ばした

パターンからUSBの端子を外して撤去完了・・・のはずがここで大失敗。
上の写真でお気づきの方もいらっしゃるかもしれませんが、5本あるはずのパターンが3本しか残っていません。そう、両側のパターン飛ばしてしまったのです! orz

こんなことならいっそフレキシブルケールごと購入すれば良かったじゃん・・・と嘆いても後の祭り。アフターフェスティバル。ここから何とかするしかありません。

泣きながらカッターを取り出して、フレキシブルケーブル表面のマスクをカッターの刃の反対部分で少しずつ慎重に削り始めました。そう、ジャンパーするのです。

20150214_マスク削り

両側のマスクを削り終えたところです。

先ほど書いたようにマイクロUSBの両端はそれぞれ+5VとGND。そのためどちらも広い面積で基板上に印刷されているため比較的簡単に作業を進めることができました。まさに不幸中の幸いです。

20150214_ハンダペースト

露出したパターンにハンダペーストを塗りつけてハンダのノリを良くします。
いまさら気がつきましたがプリント基板には使用不可でした。フレキなので多分セーフ。

20150214_ジャンパ

で、最終的にできあがったのがこちら。
写真だと分かりにくいですが、割と綺麗にハンダがのってます。

ひとまず今日はここまで。
中国からコネクタが届いたら、続きます。

2016/06/11 追記
実際にコネクタを交換した時の記事はこちらから