全部 HTTPS 対応にしてリダイレクトかけるようにしました。

cho45.stfuawsc.com は既に HTTPS にしてありました。こちらは nginx に letsencrypt の証明書を入れた構成だったのですが、これを機に HTTPS のフロントを h2o にして、nginx は HTTP だけを配信するようにしました。これで HTTPS は HTTP2 に対応になりました。

このサイトは割と複雑な URL の rewrite ルールをしいているので、バックエンドのアプリケーションに直接ディスパッチせず、一旦 HTTPS でも nginx を経由するようにして設定し、徐々に h2o で全リクエストを処理するように置き換えていきました。www.lowreal.net も同時に HTTPS 対応しましたがそれぞれのドメインの構成は以下の通りです

  • cho45.stfuawsc.com
    • h2o → static file
    • h2o → backend
  • lowreal.net
    • h2o → static file
    • h2o → backend
  • www.lowreal.net
    • h2o → static file (accept-language を mruby で見てる)

証明書以外にやったこと

一応 mixed content を回避したり、push してみたりしたくていろいろやりました

  • はてなスターのスキーム変更
  • スター画像のホスト元 (フォトライフ) のドメイン変更 (cdn-akナントカに)
  • tumblr のスキーム変更
  • facebook ボタン廃止
  • twitter ボタンのスキーム変更
  • Amazon 画像のドメイン変更 (過去に遡ってエントリ内の画像URLを変更)
  • バックエンドアプリケーション (ブログシステム) へ Link: rel=preload を簡単に吐ける機能を追加

h2o での server push の確認方法

h2o は server push したコンテンツのヘッダに x-http2-push: pushed を含めてくれるので、ちゃんと push されてるか確認する一番簡単な方法はこれを見ることっぽいです。

  1. トップ
  2. tech
  3. lowreal.net のHTTP2/HTTPS 化を実施

このサイトのHTTPS化にあたって nginx で書いていた rewrite のルールを h2o の mruby で処理するように変える必要がありました。

しかしベタで書くのも面倒なので、そこそこ機械的な置換ですむような書きかたができるようなライブラリを書いてしのぎました。

mruby.handler

    paths:
      "/":
        proxy.reverse.url: http://localhost:5001
        proxy.preserve-host: ON
        mruby.handler: |
          require "/srv/www/rewrite_rules.rb"
          lambda do |env|
            RewriteRules.rewrite(env) do
              rewrite '/favicon.ico', '/images/favicon.ico', :break
              rewrite '/apple-touch-icon.png', '/images/apple-touch-icon.png', :break

              rewrite %r{^/2005/colors-canvas\.xhtml$}, '/2005/colors-canvas.html', :permanent
              rewrite %r{^/2005/colors-canvas$}, '/2005/colors-canvas.html', :permanent

              rewrite %r{^/logs/latest$}, '/', :permanent
              rewrite %r{^/logs/latest.rdf$}, '/feed', :permanent
              rewrite %r{^/logs/latest.atom$}, '/feed', :permanent
              rewrite %r{^/latest\.rdf$}, '/feed', :permanent
              rewrite %r{^/blog/index\.(rdf|atom)$}, '/feed', :permanent
              rewrite %r{^/logs(/.+?)(\.(rdf|atom))$}, '/feed', :permanent

              rewrite %r{^/logs(/.+?)(\.(x?html|xml|txt))?$}, '\1', :permanent
              rewrite %r{^/blog(/.+?)(\.(x?html|xml|txt))?$}, '\1', :permanent
              rewrite %r{^/photo$}, '/photo/', :permanent

              rewrite %r{^/(\d\d\d\d/\d\d(/\d\d)?)$}, '/\1/', :permanent
              rewrite %r{^/\d\d\d\d/$}, '/', :redirect

              rewrite %r{^/view-img(/.+?)$}, '\1', :permanent
            end
          end

h2o の path はディレクトリの指定しかできないみたいなので (自動的に末尾スラッシュがついたりする)、rewrite で同時にパス決め打ちのディスパッチも行っています。

rewrite_rules.rb

class RewriteRules
	class RewriteRulesException < Exception
		attr_reader :response
		def initialize(response)
			@response = response
		end
	end

	attr_reader :env
	attr_reader :path

	def self.rewrite(env, &block)
		self.new(env).run(&block)
	end

	def initialize(env, &block)
		@env = env
		@path_orig = "#{env['SCRIPT_NAME']}#{env['PATH_INFO']}"
		@path = @path_orig.dup
	end

	def run(&block)
		begin
			instance_eval(&block)
			if @path != @path_orig
				return [ 307, { 'x-reproxy-url' => path }, [ ] ]
			else
				return [ 399, {}, [ ] ]
			end
		rescue RewriteRulesException => e
			return e.response
		end
	end

	def rewrite(regexp, replace, flag=:continue)
		if @path.gsub!(regexp, replace)
			case flag
			when :redirect
				raise RewriteRulesException.new([ 302, { 'Location' => @path }, [ ] ])
			when :permanent
				raise RewriteRulesException.new([ 301, { 'Location' => @path }, [ ] ])
			when :break
				raise RewriteRulesException.new([ 307, { 'x-reproxy-url' => @path }, [ ] ])
			when :continue
				# nothing
			else
				raise "unsupported flag: #{flag}"
			end
		end
	end
end
require 'rspec'

describe RewriteRules do
	it "should treat :permanent as 302 redirect" do
		env = {
			'PATH_INFO' => '/logs/latest'
		}
		expect(RewriteRules.rewrite(env) {
			rewrite %r{^/logs/latest$}, '/', :permanent
			rewrite %r{^/logs(/.+?)(\.(x?html|xml|txt))?$}, '\1', :permanent
			rewrite %r{^/foobar/}, '/bazbaz/'
		}).to eq( [301, {"Location"=>"/"}, []])
	end

	it "should treat :redirect as 301 redirect" do
		env = {
			'PATH_INFO' => '/logs/piyo.html'
		}
		expect(RewriteRules.rewrite(env) {
			rewrite %r{^/logs/latest$}, '/', :permanent
			rewrite %r{^/logs(/.+?)(\.(x?html|xml|txt))?$}, '\1', :redirect
			rewrite %r{^/foobar/}, '/bazbaz/'
		}).to eq([302, {"Location"=>"/piyo"}, []])
	end

	it "should treat as internal proxy by default" do
		env = {
			'PATH_INFO' => '/foobar/baz'
		}
		expect(RewriteRules.rewrite(env) {
			rewrite %r{^/logs/latest$}, '/', :permanent
			rewrite %r{^/logs(/.+?)(\.(x?html|xml|txt))?$}, '\1', :permanent
			rewrite %r{^/foobar/}, '/bazbaz/'
		}).to eq([307, {"x-reproxy-url"=>"/bazbaz/baz"}, []])
	end

	it "can write logic in dsl" do
		env = {
			'PATH_INFO' => '/foobar/baz',
			'XXX' => true,
		}
		expect(RewriteRules.rewrite(env) {
			if env['XXX']
				rewrite %r{^/foobar/}, '/bazbaz/'
			end
		}).to eq([307, {"x-reproxy-url"=>"/bazbaz/baz"}, []])

		env = {
			'PATH_INFO' => '/foobar/baz',
			'XXX' => false
		}
		expect(RewriteRules.rewrite(env) {
			if env['XXX']
				rewrite %r{^/foobar/}, '/bazbaz/'
			end
		}).to eq([399, {}, []])
	end
end

ところで

rewrite ルールが ruby で書けるということは、すなわち自由にテスト可能であることを意味します。Apache の RewriteRule や nginx の rewrite をテストするのはかなり面倒なので、かなり強力で嬉しい感じがします。

  1. トップ
  2. tech
  3. nginx の rewrite ルールっぽく h2o の mruby でリクエストの rewrite を行う

NHK Eテレの番組はそれぞれ対象年齢が設定されていて、「いないいないばぁ」は0〜2歳、「おかあさんといっしょ」は2〜4歳、「みいつけた」は4〜5歳あたりらしい。

うちの子供はまだ2歳になっていないので「みいつけた」はまだ早いことになるが、見せてみると特に嫌がらずに見ていたりする (オフロスキーは嫌いみたいだけど)。「いしゅ、いしゅ」と言うぐらいには見る。

「いないいないばぁ」と「おかあさんといっしょ」は大人が見ても面白いとはいえない感じだけど (というか無駄に元気がよくて、疲れる)、「みいつけた」は大人が見てもゆるくて面白い。

  • 害になるような人物が出てこない
  • 不愉快ができことが起こらない
  • 現実にはありえない日常を過ごす
  • 説教臭い内容ではない

あたりを考えてみると、日常系アニメと似たようなジャンルに思える。

コッシー

椅子のキャラクターでコッシーというのがいて、スタジオ内で結構自由に動くんだけど、どうやって動いているのかさっぱりわからない。謎の技術。ひっくり返るシーンとかもあって、足の裏が見えたりするけど、車輪がついていたりするようにも見えない。謎

びっくりしたのが声をあててる声優で、高橋茂雄 (サバンナ) とクレジットされている。ブラジルの皆さんじゃないほうの人・ザッカーバーグに似てるほうの人だけど、アメトークとかにしか出てないイメージだったのでびっくりした。エンディングの作詞とかもやってて余計びっくりする。全然違和感がない (喋る椅子に対して違和感もクソもない気もするけど) し聞きやすい声質だし、謎の才能。

歌の作曲が星野源だったり、この番組に限らないけどEテレの子供向け番組は凝ったキャスティングされていることがあって面白い。「おかあさんといっしょ」でもつんく作曲の歌がちょいちょいある。

「伝送線路トランス」という言葉が一般的な用語かどうかよくわからないのですが、トロイダル・コア活用百科ではこのような用語になっていました。一応 transmission-line transformer で検索すると使われており、Amidon のドキュメントでも出てきますが……

それはともかく、伝送線路トランスは一見奇妙な感じがして面白いです。とりあえず LTSpice で等価回路を書いて試してみました。

位相反転回路

GND のとりかたが入力側と出力側で逆なので位相が反転します。

この回路、L1 と L2 が結合しているため、これらで1つのコモンモードチョークとして働いてアイソレーションされるために位相反転ができているのですが、なんとかく不思議な感じがします。

自分の中では「コモンモードチョーク」はノーマルモードに影響を与えないイメージなのですが、「コモンモードチョーク」があるおかげでノーマルモードの位相反転ができているのです。ぱっと見だと結線されていない GND 経由 の電流 (すなわちコモンモード) が阻止されることを強くイメージする必要があります。

ところで、結合係数を減らすとどうなるか見てみます。

これはつまりコモンモードチョークとしての機能が失われている場合です。高い結合が得られていない限り機能しなくなくなることがわかりました。

インピーダンス変換器

1:4 のインピーダンス変換器もシミュレーションしてみました。

純伝送線路トランス

伝送線路トランスを2つ使い、入力を並列、出力を直列にすることで、出力電圧を倍にできる (出力電流は半分) という回路です。単純に、それぞれの入出力がアイソレーションされていると考えると動きそうだなというイメージはできます。

が、やはり一見奇妙に見えます。

伝送線路的トランス

入力信号にトランスの出力を重合する形で出力電圧を倍にする回路です。広域が犠牲になる代わりに純伝送線路トランスよりコアの数を減らせるメリットがあります。実際の回路だとこちらのほうが良く見ます。

ぱっと見だと完全に意味不明ですが「重ねあわせる」ことを意識すると理解できるようなできないような感じがします。

通常のトランスとの違い

通常のトランスは、一旦電気エネルギーを磁気エネルギーに変換して再度電気エネルギーに変換するという動作をします。なので、高い結合係数と低いコア損失を同時に実現できなければいけません。

伝送線路トランスはコモンモードのアイソレーションによって実現されており、磁気エネルギーはメインのエネルギー伝達に使われていないので、結合係数が高ければコア損失が多少あっても問題になりません。

  1. トップ
  2. tech
  3. LTSpice で伝送線路トランス

トロイダル・コア活用百科の応用の章にある10MHz帯用2ポールバンドパスフィルタのうち、挿入損失1dBのもので T50-6 を使ったものを作ってみました。

改訂新版 定本 トロイダル・コア活用百科 —トロイダル・コイルの理論・製作と応用回路 (定本シリーズ) - 山村 英穂

山村 英穂

5.0 / 5.0

回路と実装

4pF が手元にないので3.9pF で代用しました。また、AWG #22 のワイヤーがなかったため、φ0.4mm で代用しています(なのでコイルのQは多少下っているはずです)


特性

書籍内でのこのグラフだと(2)に相当します。

実際にスペアナで同じ範囲を表示すると以下のようになりました。(多少トリマで調整した状態で、完全に追いこめてはいません)

挿入損失が 2dB になってますが、おおむね近い特性が再現できました。

ついでに 50MHz までのグラフです。綺麗に下降せずに盛りあがっています。

ここからさらに広げていっても、ほとんど減衰量は増えていませんでした (スクリーンショットを撮り忘れましたが)

  1. トップ
  2. tech
  3. 10MHz バンドパスフィルタ

10MHz バンドパスフィルタ | tech - 氾濫原 の続きです。挿入損失 6dB バージョンの定数を変更してみました。コイルはそのままです。

定数変更

実装の関係で、書籍内の定数とすこしずれています。

評価

書籍内のグラフと範囲をあわせたものです。やってて気付いたのですが、書籍のグラフは中心周波数が10MHzではないんですね。狭帯域だからかアマチュアバンドの中心?にあわせてあるのかな。手元の調整は10MHzを中心としてやっています (かなり繊細な調整が必要でした)。

帯域内は約-9dBの挿入損失になっています。

300MHz までの範囲です。100MHz ぐらいまでは -70dB ぐらいまでの減衰があります。

  1. トップ
  2. tech
  3. 10MHz バンドパスフィルタ2

あたりの続きです。

ちょっと飽きてきたというか疲れてきたので、とりあえず使えるレベルを目指すという意味でケースに収めることを優先することにしました。

発注した基板そのままでは収めることができなかったので、いろいろ試行錯誤して収めました。本来基板を設計する段階でケースまで決めてしまえればいいんですが、今回そこまで気をまわすことができませんでした。おかげでだいぶ苦労しましたがなんとか入りました。

Bluetooth モジュール用基板

Bluetooth モジュールは別途基板を自分で掘って載せるようにしました。場所がないので2階建です。

切削はそこそこ上手くいったのですが、ほとんど肉眼で確認できないのにGNDと導通があったり、実際実装してみると見えない部分で半田がショートしたりと、なかなか厳しい状態になりました。3回ぐらいモジュールの半田づけをやりなおしたのでパターンが剥れたり、ついでに勘違いからRX/TXが逆配線になっていると思ってリワークまでしたけど元々の配線であってたり、、、みたいないろんな思い出があります。

ケースの加工

CNC でやりましたが、プラスチック(ABS) の加工はものすごく苦手意識があります。アルミと違ってプラスチックは溶けるので早く動かしすぎてもダメだし遅く動かしすぎてもダメだしで「安全方向にふる」という運用が通用しないのです。

今回は以下ぐらいでやるとすくなくともエンドミルに溶けたプラスチックが固着して折れるということはなくなりました…… (2本折りました)

  • φ1mm 2枚刃 エンドミル
  • F500 (割と早い) Z送り50 (かなり遅い)
  • 回転数 50% 約5000rpm
    • S500 指定だが、最大1000を最大の電圧として500だけ電圧をかけるという意味で、500は回転数ではない (最大の50%の回転)

タコメータをつけてないので回転数が正確にわかってません。

インターフェイス

見ての通りですがインターフェイス的には

  • 電源スイッチ
  • LED (Bluetooth の接続状況: 接続待ちは点滅・接続済みは点灯)
  • BNC コネクタ

しかありません。これは最初からこうするつもりで作っていて、Bluetooth 経由で接続したスマートフォンから全ての操作を行うという設計です。

というのも、アナライザを作るなら、まず絶対に Bluetooth などで無線化したいという思いがありました。なぜかといえば、実際にフィールドでアンテナの調整を行う場合、給電点と調整点というのは必ずしも一致しておらず、既存のアンテナアナライザーだと給電点と調整点をいったりきたりする必要があって面倒だからです。例えば7MHz帯の半波長逆Vダイポールをフィールドで一時的に立てようと思うと、給電点と調整点では10mぐらいの距離があってしんどいのです。

今後

これでとりあえず使えるぐらいにはなりました。しかし、かなり問題があります。

  1. Android 側のアプリケーションの完成度がいまいちなのをなんとかする
    • ソフトウェアだけなのでおいおい
  2. インピーダンスのグラフが波うつ
    • どっかで反射の影響が起きていると思うけどどこかわかってない
  3. RFアンプの設計からやりなおす
    • というか面倒なのでMMIC使うとか
  4. 低消費電力化
    • RFアンプに常時電源供給してしまっているのをやめる
    • RFアンプの再設計
    • AD9851 と Bluetooth デバイスの消費電力がデカいのでできることは限られる
  5. ケースに組みこんだら計測にノイズが乗るようになった
    • NiMH 2本を電源にしたいと拘ったため、DC/DC で 5V まで昇圧しているが間違いなくノイズ源になっている
    • Bluetooth モジュールとADC部が近い
  6. もっと小さく作りたい
    • MCU が無駄にでかい

単三電池2本の電源内蔵するのも今回なぜかこだわっていたのですが、どうせDC/DCで昇圧するならモバイルバッテリ使えるようにして、電池は内蔵しないほうがコンパクトかつ総合的には荷物が減って良さそうです。

  1. トップ
  2. tech
  3. アンテナアナライザーをケースに収めた

:processDebugResources FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':processDebugResources'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Users/cho45/Library/Android/sdk/build-tools/23.0.1/aapt'' finished with non-zero exit value 1

こんなエラーで死んでしまいました。gradle 経由で実行されてるんですが、gradle へのコマンドラインオプションの渡しかたがわからず……

cordova clean したり rm -rf platforms/android しても解決しなかったのですが、Dropbox に入れておいたせいで、ソースツリー内に「www/src/app (xxxx 競合コピー 2016-03-30).js」のようなファイル(特に心あたりなし)ができており、これを削除したら解決しました。稀な例だと思いますが…

  1. トップ
  2. tech
  3. cordova run android --device でエラー

朝に悪心で眼が覚め、すこしすると連続した水下痢に。断続的に下痢が出続ける。

悪心もあるので寝ていようとしたが、寝ると夢の中でも下痢をしており、ケツから漏れるという夢を見て「ガタッ!!」と起きること数回、「夢は見るものではなく実現するもの」と言わんばかりに夢じゃなくなったので履いていたパンツは捨てて新しいのし、ズボンは漂白に。

一通り落ちついてきたので一旦会社に行ってしょぼいタスクをやって、やっぱキツいので帰宅して寝ていたが、不用意に寝ると漏れる夢を見るので落ちつかず。

最近子どもが胃腸炎だったので伝染ってきたようだ。妻も胃腸炎で死んでおり、家庭が崩壊している。なお子どもはもう割と元気。

驚異の防臭袋 BOS(ボス)Sサイズ大容量200枚入り 赤ちゃん用 おむつ 処理袋 (袋カラー:ピンク) - BOS

BOS

5.0 / 5.0

パンツ捨てるときはこれに入れた。ほんとこの袋は死ぬほど便利だ

あたりの続きです。

シリアル接続を 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 - 氾濫原 の基板ができあがったそれです。


ガーバー提出

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検索(よくあるご質問)|キヤノン

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 の精度向上とか比較的優先度低いだろというのも一緒に入ってて謎。


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