あたりの続きです。

シリアル接続を Bluetooth にして、スマートフォンから接続して測定して結果を表示するようにしています。

Bluetooth モジュールは RN42 を使っています。基板上に載せることもできるようにしたのですが、コントロール側の基板が無駄に大きく、別途作りなおそうかとも思っているので、ひとまずブレッドボードで接続しています。

アプリケーション側

ネイティブで書く気はさらさら起きないため Apache Cordova を使っています。HTML + CSS + JS でアプリを書くやつですがいろんなところで実績があるので割と安心して使えそうです。何度か触ってますが Hello, World までしかやったことがなかったので、Cordova でまともなアプリケーションを作るのは初めてです。

Bluetooth SPP を使いたいので、cordova-plugin-bluetooth-serial を使っています。

全体的なフレームワークとして Polymer を使っています。とはいえレンダリングは canvas なので今のところあんまり Polymer 的機能はつかっていません。

割と普通に書いたら動いたので、それほどハマりどころはありませんでした。

その他

コードはそのうち公開します。

これでとりあえず、

  1. いくつかの設計候補からの設計方針の決定
  2. 実際の回路図起こし (Eagle)
  3. 基板のアートワーク・基板発注 (Eagle, PCB Way)
  4. 手実装
  5. ファームウェアの開発 (mbed)
  6. ソフトウェア開発 (Cordova, Polymer)

までを一通り一つのプロジェクトとして、ほぼ独りでできる見通しになりました。

自分で作ったハードウェアを自分で書いたソフトウェア、特にインターフェイス部分は HTML/CSS/JS という高レイヤーまで一通りできたぞという実感がようやく沸いてきたので嬉しいです。

  1. トップ
  2. tech
  3. 自作アンテナアナライザーのBluetooth化とアプリケーション

Ruby の serialport gemで Bluetooth SPP を使おうとすると Errno::EBUSY がでてうまく通信できず、なんでだろう、となりました。接続先の Bluetooth モジュールは Microchip の RN42です。

結論からいうと sleep するしかなさそうです。

begin
	@port = SerialPort.new(
		"/dev/tty.RNBT-68BF-RNI-SPP",
		115200,
		8,
		1,
		0
	)
rescue Errno::EBUSY
	sleep 1
	retry
end

今回のケース

  1. MCU と RN42 の TX/RX/GND を接続し、RN42 に 3.3V を供給 (接続はこれらのみ)
  2. この状態で Mac から RN42 をペアリングする。
    • /dev/tty.RNBT-68BF-RNI-SPP みたいなファイルができる。
  3. Ruby のプログラムで serialport gem を使って通信する

したがって MCU と RN42 の間にはフローコントロールはありません。

  1. トップ
  2. tech
  3. Ruby の serialport gem で Bluetooth SPP を使おうとすると Errno::EBUSY

なんか一時期 elecrow のサイトがさっぱり見れなかったので、PCB Way というのを使ってみました。

[tech] 簡単かつ安く高精度なアンテナアナライザーを自作したい | Sun, Mar 20. 2016 - 氾濫原 の基板ができあがったそれです。


ガーバー提出

PCB Way は

  • ファイルを提出
  • レビューをうける
  • 支払い

というフローになっていて、レビューが通らないと支払いができません。

今回ちょっと微妙なケース(外形には2枚の基板に見えるが実際は繋がっていて1枚)のガーバーファイルを提出しましたが、1日以内にメールがきて「ここはどうするのか?」と聞かれました (英語です)。普通に回答して返信したらレビューを通してくれました。

あと支払い終了後に支払い失敗という表示になってあせりましたが、PCB Way上で再度確認するとトランザクションは完了してて、とりあえず問題なさそうでした。

リードタイム


DHL がデフォルト発送業者になっていますが、PCB本体よりも送料が圧倒的に高くなるので Hongkong Post での発送にしました。Hongkong Post だとリードタイム最大30日と書いてあってヒヨりますが、とりあえず急いでいないのと、さすがにそこまでかからないだろうという気持ちがあります。

発注から発送開始までは3日ぐらいでした。詳細なプログレスが表示されるのでなんかすごい感じがします。プログレスのビューにある Finished Time は中国時間のようなので、JST-1 です。

Delivery になってからも実際の Hongkong Post のサイトでトラッキングできるようになるまで3日かかりました。Delivery となっても実際投函しているわけではなく、ある程度溜ったのを一括で投函している?ようです。

Hongkong Post で引受状態になると日本郵政でもトラッキングできるようになります。ただ、国内に入るまでは Hongkong Post のサイトでトラッキングしたほうが詳細情報が見れます。引受状態になってから、実際に自宅にくるまでは4日でした。

ということで、発注から9日ぐらいで届きました。

価格

最大 10cm x 10cm のプラン5枚で本体が $13、送料が$9で、$22でした。

仕上がり

一部、細かいところでソルダーマスクが剥れている部分がありましたが致命的ではありませんでした。シルクの綺麗さも特に問題を感じるようなものではないと思います。

Elecrow と比較して

ぶっちゃけ好みな気はしますが、任意の色のソルダーマスクで10x10cmを作る場合は PCB Way のほうが安そうです。

値段以外だと PCB Way は作業状況がちくいちウェブで見れるのは面白いです。一方で Elecrow は発送時に写真をとって送ってくれるのは嬉しいサービスです。が、いずれにせよPCB本体には特に関係ありません。

サイトのできは PCB Way のほうがモダンで良くできている感じがします。支払いでエラーになったのがアレですが……

  1. トップ
  2. tech
  3. PCB Way を使ってみたよ

DIP だと思ったら 2mm ピッチでブレッドボードで使えなかったので PCB Milling で変換基板を掘りました……

変換する基板も売ってますが不必要に高いので雑に掘りました。

削るところを少なくするためにもベタGND にしたいので単純な変換基板ではなく GND がベタに繋がるようになっています。1pin のマーキングのためどこにも繋がらないViaを設置しました。

回路図はひかず Eagle のボード画面だけをCADとして使っています。

スルーホールができないので変換基板は工夫が必要です。細ピンヘッダを無理やり押しこんで片側によせています。ハンダ付け時にハンダをつけすぎるとブレッドボードに刺さらなくなるため結構気をつかいます。

気付いたとき失敗したなあと思いましたが接続状況がでるLEDがついてるのはとりあえずテストするには便利なのでこれはこれでいいと納得すうことにします。

  1. トップ
  2. tech
  3. 間違えて RN-42 の 2mmピッチ基板のやつを買ってしまった

以下、試さないで書きましたが、試してみたら全くダメでした。OS 10.11 対応とはなんだったのか? マジでムカついてます……

CaptureOnTouch Lite だとうまくいくことが判明。つまり Auto を On にして出てくる画面のソフトならいける。想像するに CaptureOnTouch DR-P208II は修正漏れなんじゃないか?


キヤノン:Q&A検索|【ドキュメントスキャナー】OS X v10.11(El Capitan)対応状況(ドキュメントスキャナー)

Canon ドキュメントスキャナ imageFORMULA DR-P208II -

3.0 / 5.0

DR-P208II を使っているんだけど、El Capitan に OS をアップデートをしてからずっと使えない状態だった (固まる。正常にスキャンできない)。

3月15日付けで上記ページが更新されて「対応済み」に変わった。

ダウンロードページを見てみると確かに 3月14日付けで対応版がリリースされているようだ。

まだ試してないけど、ようやくかという感じすぎる。

El Capitan は 2015-06-09 にデベロッパープレビュー、2015-09-30 に正式リリースだが、2016-03-14 に対応されるまで数ヶ月もかかってる。

しかも「動かない」という致命的な不具合でこれだけかかっていて不思議。普通に考えたら、とりあえず動くバージョンをなんとかしてQAに通すと思うんだけど、リリースノート見ると OCR の精度向上とか比較的優先度低いだろというのも一緒に入ってて謎。


動かないハードウェアは、場所をとるという所有コストを払っている分の損を生み出している。