2016年12月04日

MINI-360 DC-DC コンバータモジュール

別記事でも同じ内容で書いているのだが、独立させた。



aliexpress で 「MINI 360 DC」 で検索すると見つかるのだが、10 個で $3.27 とか超安価な DC DC コンバータ モジュールがある。IC 自体は MP2307。4.5 〜 23V の電源入力レンジ。放熱が十分であれば、連続3A(ピーク 4A) の出力が出来る。ただし、ICの性能であって、モジュールではインダクタとの組み合わせで 上限が決まる。

このモジュールをよくよく見ると、空きパターンがあるタイプがある。多分古いタイプで、空きパターンがない方が来る可能性が高い。


裏面はこんな感じで、なにもない。なお、モジュールのサイズは 17mm x 11mm でかなり小さい。

さて、これは半固定抵抗を使っていて、ある意味危険である。出力電圧の上限を設けるように改造することを推奨する。



出力を 半固定抵抗 150k と 8.2k で分圧して FB に入力している。(FB 電圧 0.925v)。半固定抵抗 とパラレルに 2012 サイズの抵抗を付けるのである。

計算上は、
56k パラ : MAX 5.52v
33k パラ : MAX 3.97v
27k パラ : MAX 3.51v

となる。実際やってみたところ 12V 電源で、5V 系は 5.33V まで。3.3V 系は 3.34V までとちゃんと制限できた。

5V 系は 5.5V 以上になるのは危険だが、厄介なことに、5.0V は嫌で 5.3V とか少々高めにしたかったりするので、上限が低いのも困る。

これらの抵抗値のものは、入手しにくいが、aliexpress だと、例えば この25種 が $1.88 と安価に買える。
15K 18K 20K 22K 24K 27K 30K 33K 36K 39K 43K 47K 51K 56K 62K 68K 75K 82K 91K 100K 120K 150K 180K 200K 220K


また、EN ピンを GND に落とすことで 出力を OFF に出来る。入力電圧でプルアップされているので、実際に使う場合には、トランジスタか FET を介してスイッチするのが良いだろう。



本当に 2A 連続出力可能なのか? テスト。


USB resistor というのを入手できたので、試したみた。1A は問題なさそうに思える。2A の設定で 2.3A とか流れるのだが、しばらくすると一瞬切れてまた 出力されるのを繰り返す。

もともと、モジュールの説明では、 1.8A (3A MAX, can not be prolonged) となっている。本当にそんな感じだったわけである。

良くわからないのだが、インダクタがしょぼい? データシートでは 10uH 4A が例として載っている。MINI-360 は四角いシールドタイプで 7mm 角。スミダの CD75 がサイズが近いのだが、2.3A 。MINI-360 だと 1.5A とかそんなものかも知れない。インダクタが飽和すると、どんどん効率が落ちて発熱がひどいことになるのかも。

CD75 サイズのインダクタを入手して、交換してみたい。でも、交換するには、半固定抵抗も外したうえで、出力の大きいハンダごて 2本が必要だろう。IC を外してみるより嫌かも。( IC の方、恐らく裏面のサーマルパッドはなにも処理してない。基板と接触していない可能性まである。一回外して付け直したいような気がしている。)



このモジュールの使い道だが、アイドル時でもそれなりに電流が流れるようだ。データシートでは 1.3mA 。小電力装置のバッテリー駆動には向かない。

取柄は小さく安いだけかも知れない。1A で良いなら 他にも選択枝があり、さらにコンパクトにできる。今日び 2A 以上のものが求められているわけで、その目的には少々荷が勝ちすぎている。

3A 流せるチップには、MP1584 というのもある。これは 同期整流型ではなく、外付けダイオードが必要。なのだが、周波数が高い。--- 同じ大きさのインダクタでも、より電流を流せる。


aliexpress でも 「MP1584 module」 で検索すれば、$0.60 ぐらいのものも見つかる。サイズは 22mm x 17mm で MINI-360 の面積2倍。アイドル時の消費は 0.1 mA でモバイルにも向いている。大電流もOKで、こちらの方が断然良いのかも知れない。


ただ、最大電圧を変更する改造は、少々厄介なようだ。現物を持っていたので、調べてみたのだが ...

 VOUT -- VR -- FB --- 8.2K --- GND
こう接続されている。VR の空いている足が VOUT につながっているので、抵抗を VR に直付けすれば良いのだが ... 逆にVR の抵抗値が良くわからない。(外さないとわからない)。 出力は 0.8v 〜 20V まで というのを信用すると 200K のはず。
計算上は、62k をパラに付けると 最大 5.40V なのだが...
  62k 5.40v
  39k 3.98v
  33k 3.56v

データシートを見ると、出力電圧に対していろいろと値が変わるのも気になる。外付け部品が多く、それらの変更で特性も変わる。12V → 5.2V で 4.7uH(or 3.3uH) を使い最大の電流を取り出すにはどうしたら良いのだろう? もう少し検討が必要だ。



リポ電池を使う場合、電圧は 3.1 - 4.2v ぐらいの範囲になる。3.3v 系は割と都合が悪い。ただ、3.3v 系も 2.7v - 3.6v と動作電圧範囲が広いものが結構ある。Mediatek のスマホなどは、I/O 電圧を 2.8v にして バッテリーが 3.1v になるまで降圧だけで使う。その他 PMP やタブレットで良く使われている 統合PMIC の AXP シリーズなんかも、降圧だけで使っているような感じ。

別に降圧型だけでいけるとは思うのだが、aliexpress で面白いモジュールを見つけた。
「DD1205UA」で見つかるのだが、
 「1-6V to 5V buck boost DC DC converter Voltage Board for portable Solar Charger」
というもの、IC は1つで、インダクタが2つ付いている。

同じ IC を使った、DD0603SB というモジュールも発見。こちらは、3.3V とか 3.7V 版がある。
posted by すz at 22:04| Comment(1) | TrackBack(0) | PMIC

2016年12月02日

簡易 UPS の検討

電子工作では、いつでも電源をどうするかという点で悩むわけだが、さらにバッテリー駆動したいとなると頭が痛い。定番というものがあれば楽なのだが。カテゴリ PMIC で何が良いか探っていきたい。

さて、最近知ったのだが、ダイソーの300円モバイルバッテリーがあるそうだ。この記事を見ると、FM6316FE というチップが使われていて、充電と 5V 昇圧ができるみたいだ。

aliexpress で検索しまくったついでに、みてみると 20個 $3.1 とかで買える。昇圧用のインダクタは、kicc というショップが安かったり。
 ・https://www.aliexpress.com/store/821060/search?SearchText=CD54+3R3

データシートを見ると、モバイルバッテリー用だけあって アイドル時は、16uA (0.016mA)しか消費しない。5V 出力は 1A とまぁまぁ。

興味がわいたので、買ってみたり。で、どうしよう。




ただのモバイルバッテリーを作ってもしょうがないのである。市販のやつを買えば良い。で、考えたのだが UPS にするというのはどうか? 充電と出力を同時に出来るようにするだけなのだが。


一番簡単なのは、ダイオードで 5V 入力 と 昇圧出力をつなぐ。だが、問題が2つ。ひとつは Vf 分の電圧降下。もうひとつ、5V 入力の電圧が昇圧出力より低いとき、昇圧出力が使われるという点。こうなると、バッテリーへの充放電が同時に起きるから、まずいような。

で、MOS FET スイッチを付けることを考えてみた。5V 入力 の方は、ドレインが出力側。ボデイダイオードがあるから OFF でも電流は流れる。ON にすると 電圧降下が無視できるほど抵抗値が低くなる。昇圧出力側は逆にする。OFF のとき 出力させない。

これの制御をどうしたら良いのだろうか?


考えてみたのだが、 5V入力が 昇圧出力より 0.6V 下がれば PNP トランジスタが ON になるという回路は簡単だ。

PNP が ON になれば、5V入力 側 PCH のスイッチ を OFF にできる。もうひとつ Nch FET を追加して 昇圧出力側を ON にすることも出来る。

これで行けるのだろうか?ちょっと自信がない。

5V入力が切れれば、出力も下がっていって 0.6V 下がったところで PNPトランジスタが ON になり、5V入力 側 PCH のスイッチが切れる。一旦そうなれば、出力からの逆流が起きないから、スイッチが 再度 ON になることはない。

では、ちゃんとスイッチが切れるのか? 昇圧出力も ON になるから、そちらが先だと すぐに回復して 逆流によって 5V入力側が切れないとか? そうなるとまずそうな。

どうも、昇圧出力の ON のほうが条件が良い。これで頑張っても安定して動作させるのは厳しそうな予感。5V_IN の方は、諦めてダイオードでいくしかないのだろうか?



ところで、OPi Zero の回路図に似たような目的の回路がある。目的はなんとなく分かるのだが、最初回路が理解できなかった。後で、カレントミラーだと分かった。
なんとなくの理解:R10 と R12 に同じだけ電流が流れる ... ということは、電圧が 5V_IN = 5V_OUT となってるはずだ。また、5V_IN だけが OFF になれば、Q2 は ON になり、Q6 は OFF 。



結局これで良いのでは?

点線内は、純粋にダイオードの性能を良くする代替回路。こんなもの 5V_IN の電圧を上げれば済む話。でも、そうできない事情もあるだろうし、オプションとして使えるようにする。
回路図で BCM856BS とかになってるが間違い。BCM856DS でないとパターンに合わない。で、かなり高い、30個 $5 とか。digikey だと一個 51円也。 代替品もなさそうだし、無理して組まなくとも良いかという気になってくる。しかし、うまく行くなら結構役に立ちそうだし、ちょっと悩む。

ちなみに、PCH には、AO3415A(20V 5A) を使う。これも aliexpress で安く入手可能。秋月の IRLM6402(20V 3.7A) でも全く問題ない。NCH は、 BSS138 とか。

ひとまず回路は完成。5V 1A では面白くないというのであれば、こんなニコイチ IC を使わずに別々にする。昇圧 2A だと、MT3608 とか SX1308 とか。 (この2つ同じもののような ...) ちなみに スイッチングが起きないと消費は 0.1 mA 。僅かでも 出力を消費すると スイッチングが起きて 1.6mA になる。なお、この回路は、昇圧出力OFFのとき 電流は消費しないので たぶん 0.1mA で済む。ならば、充電回路との切り替えは特に意識しないで良い。


aliexpress で MT3608 を検索すると $0.36 とかの格安のモジュールが見つかる。安いものの形状は2種類だが、いずれも 22uH を使っている。データシートでは 4.7uH 〜 22uH となっているが ... この大きさ (たぶん CD54 or 7mm角シールド付き)では、たいして電流を流せないだろう。 1MHz 1A の FM6316FE ですら 3.3uH 3A なのだから、4.7uH 4A ぐらいのものが必要ではないだろうか?
いや MT3608 は 1.2 MHz だから 3.3uH でも良さそうな。current limit は 4A だから、4A の2割ぐらい小さなものでも大丈夫。 --- CD54 3.3uH 3.7A に交換すれば 2A いけるかも。

SX1308 のモジュールだと、$0.60 と少々高いが 4.7uH を使っている。こちらの方がたぶん目的に近い。


放電時は、アイドルでも少々電流が流れる。1mA ぐらいが目標で、昇圧回路と合わせて 2.5mA ぐらい。(上の回路図の抵抗値は適当なので信用してはいけない。) 。また、0.6V では落ちすぎとかであれば、TL431A を使って、最低電圧を決められるような回路にもできる。こちらも 1mA は必要。UPS であり、この程度は問題がないのであるが、もはやモバイルバッテリーとしては不適切な回路になっている。



さて、バッテリーをどうするか? UPS だから通電のまま放置である。そうなるとリポ電池は嫌。MiMH x3 で良いのではないか。どうせ 常時トリクル充電してるだけである。特に 秋月のやつは、電話子機用だしそういう用途で使えるもの。840mAH とかだが、30分も動作すれば十分だろう。2A 出力なら 15分だが、それでも十分に思える。

ただし、バッテリー動作であること、あとどれぐらい持つのか ... という情報が欲しい。
 ・ 5V_IN 電圧
 ・ バッテリー電圧
も出力するように考えておく。

ひとまずここまで。eagle で 基板設計までしたが保留中。FM6316FE ではやっぱり面白くない。2A が本当にいけるのであれば MT3608/SX1308 + LTC4054(互換品) + TL431A に変更したい。その確認は、くだんのモジュールを入手して実験してみて。... 先が長い話になりそうだ。




とりあえず、 TL431A に変更した回路。

5V_IN が来ている状態では、2.495 x 18.2/10 = 4.54v を上回るので、TL431A が ON になる。そうすると、NCH が OFF になり、PCH も OFF になり、昇圧5V が出力されない。昇圧5V が出力される場合、TL431A は OFF である。このとき TL431A は電流を消費しない。消費するのは R11 の抵抗のみ。こんなところで良さそうだ。

ついでだが、TL431A への入力は外部にも出力している。3.3V 系ならば、デジタル入力で 5V_IN ありなしを判別できる。



ついでなので、SX1308 + LTC4054(互換) を使った 2A 出力に変更した回路。MCP73831 となってるがこれも互換品だから気にしない。

FM6316FE 用を全部流用して単純置き換え。3.3uH 3A と書いてるが、たぶん 3.7A 。後で知ったのだが、aitendo でも CD54 3.3uH を扱っている (10個 100円) 。データシートもあって 3.7A だそうだ。

あ、FB だけは違う。SX1308 の FB 電圧は 0.6v なので、0.6 x 85/10 = 5.1v になるようにしている。




全部流用と書いたところで、FM6316FE と SX1308 + LTC4054(互換) の両方のパターンを載せられると思いつき、基板修正。これなら発注しても良いか。ちなみに基板サイズは、47mm x 36mm 。
 ・mini_ups_2a_v1.0.pdf --- 回路図
 ・mini_ups_2a_v1.0.zip --- eagle ファイル
 ・mini_ups_2a_v1.0-out.zip --- 提出ファイル

ただ、これを作ったとして、どう使うか全然イメージできてなかったり。たとえ 5V 2A 出力可能だったとしても、クラスタボードには使えないし。


大失敗。2A と書いているのにダイオードが小さすぎ。SOD123 とか無理にもほどがある。... と言っても 2A,3A 流せる製品がないわけではない。後で修正はするが、ちょっと検討してみる。

ともかく、aliexpress で買えるものを検索。
どうも 3A 品は、DO-214AA なんてでかいパッケージの SS34 が多いのだが、中には DO-214AC というのが安価にある。 「do-214ac Schottky diode ss34」とかで出てくる中には、100個 $0.99 なんてものも。ボードに適合する 「sod-123 Schottky diode」だと 安価なのは、1N5819HW で 1A 品。値段はやはり 100個 $0.99 がある。この辺を念頭において今後は基板を作ろうと思う。

さて、パターンに載るやつ。digikey で探してみると ON semi の SS34FA,SS36FA というのがあった。しかし、aliexpress にはなかった。ロームの RB50M-2y , RB51M-2y ならある。しかし、30 個で $9 とかそんな価格なのであった。

さすがに価格の差がありすぎなので、パス。頑張ってレジストを削ることにしよう。
posted by すz at 22:31| Comment(1) | TrackBack(0) | PMIC

2016年11月21日

OPi Zero クラスタボード(1)



OPi Zero クラスタボードの回路と部品配置が決まって来た。上のパターンは、INA219 の部分で、なんとか乗せることが出来た。まずは、ここらでスナップショット。 。パターンが出来ると発注したく .... 少々手直しは入れたが我慢できず発注!

 ・回路図:suzbrd_opizero_v0.06.pdf
 ・EAGLEファイル:suzbrd_opizero_v0.06.zip
 ・発注ファイル:suzbrd_opizero_v0.06-out.zip
今回は、ITEAD Studio にした。送料が $6.43 で合計 $21.33 。Fusion PCB(Seeed Studio)より少し安い。
v0.06 の問題点:
 ・ MINI-360 フットワーク の幅が 0.5mm 程狭い。0.35 inch ではダメで 0.37 inch ?

11/22 発注 11/30 発送 12/06 受け取り(予定)
 ・2週間ほどで受け取れるようだ。


時系列で思いついたことを記して来たが、よくわからなくなってきているので、まとめを書いておく。この記事は、変更があったら、訂正を入れる。

ボードについて


サイズは、99.06 x 49.53 mm 。これで FIX 。サイドに 2.54mm の余白を作ったので、PCBレール を使うことが可能。この上に 2つの OPi Zero を取り付ける。そのためには、13pin と 3pin のピンヘッダを取り外し、ピンソケットを下側に付けなければならない。
ピンヘッダを一本一本外すことは容易いが、スルーホールの中のハンダの除去が難しい。

左側の OPi Zero を ノード1とする。右側はノード2。基本的に対等ではあるが、一部違う所があり、普通はノード1がマスターになることを想定している。

ボード上にある3つの長方形は、MINI-360 DC DC コンバータモジュール。DJ ジャックの 12V (〜 20V) を入力し、OPi Zero と ボード上の USB に 5V を供給する。この DC DC コンについても改造が必要。1つは、EN ピンの引き出し。もう一つは、可変電圧になってる所を 確実に 5V にする改造 -- こちらは必須ではないものの、少なくとも 5V に調整済みのうえ取り付ける必要がある。
右側のエリアの前後に USB type-A メスが付く。DJ ジャック側を USB1, コネクタ側を USB2 とする。この2つの USB はそれぞれホストの切り替えが可能である。

この DC-DC コンは、aliexpress で MINI-360 DC DC で検索。
よくよく見ると、空きパターンがあるタイプがある。こちらの方が改造には都合が良い。 まぁ古いタイプみたいだから、写真はどうであれ、空きパターンがない方が来るだろう。

裏面はこんな感じで、なにもない。
IC自体 は MP2307 -- 4.5 〜 23V の電源入力レンジ。放熱が十分であれば、連続3A の出力が出来る。(ピーク 4A) 。だが、このモジュールは インダクタが小さいのでそこまで流せない。2.3 A は流せるが連続は無理であった。連続では 1.8A ということになっている。

電圧の設定は、出力を VR + 8.2K で分圧し FB に接続している。VR を外し抵抗と交換することで、固定電圧にする。
誤差を無視して計算すると、

39k : 5.32v
33k + 470k パラ: 4.98v
22k : 3.41v
22k + 470k パラ : 3.30v

こんな感じ。

上限を指定したうえで調整したいのであれば、VR とパラに 抵抗を入れる。最大出力が 17V であることから VR はおそらく 150k 。
56k パラ : MAX 5.52v
27k パラ : MAX 3.51v

この改造の方が良いかも。


2012 の抵抗を付けてみた。5番ピンがFB でそれが VR の右上に接続されている。だから、これでパラレルに接続したことになる。こういう改造なら、空きパターンのない方でも楽。

確認してみた。12V 電源で、5V 系は 5.33V まで。3.3V 系は 3.34V までだった。まだ回せるかも知れないのだが、だいたいこんなもの。作った 5V 系 は 5.22V に調整してタブレット用に使う予定。3.3V 系は ESP32 ボードに回す。

なお、2012(0805)サイズで、これらの抵抗値を入手するには、例えば この25種 が安価。
15K 18K 20K 22K 24K 27K 30K 33K 36K 39K 43K 47K 51K 56K 62K 68K 75K 82K 91K 100K 120K 150K 180K 200K 220K


2A 連続出力可能なのか?

USB resistor というのを入手できたので、試したみた。1A は問題なさそうに思える。2A の設定で 2.3A 流れるのだが、しばらくすると一瞬切れてまた 出力されるのを繰り返す。どうやら効率が急に落ちて温度が上がりすぎるようだ。データシートによるとサーマル・シャットダウンは 160℃。内部ではそこまで温度が上がってしまうということ。... というわけで少々当てが外れた。

信号線のアサインを後で説明するが、その前に、OPi Zero コネクタの信号線について

26pin CON 13pin CON 3pin CON
3V3(1) 5V (1)5V (1) GND
TWI0-SDA 5V GND (2) U0RX
TWI0-SCL GND USB-DM2 (3) U0TX
PWM1 U1TX USB-DP2
GND U1RX USB-DM3
U2RX IO1 USB-DP3
U2TX GND LINEOUT_R
U2CTS TWI1-SDA LINEOUT_L
3V3 TWI1-SCL TVOUT
SPI1-MOSI GND MIC-MBIAS
SPI1-MISO U2RTS MIC1P
SPI1-CLK SPI1-CE0 MIC1N
GND (26)SPI1-CE1 (13)IrRX

3pin には、シリアルコンソールが割り当てられている。13pin は、USB 2ch と アナログ系など。このうち USB の 4pin分のみ使用する。

26 pin は、デジタル系。すべての信号は、GPIO として使用できるが、専用の機能が割り当てられている。また、これらは 20mA まで電流を流せる。

機能として、2 つの I2C (TWI0,TWI1) 、2つの UART (U1,U2) 、および PWM1 を使用し、後は GPIO として使用する。



信号線の割り当てと機能

ノード1 U0TX - ノード2 U1RX
ノード1 U0RX - ノード2 U1TX
ノード2 U0TX - ノード1 U1RX
ノード2 U0RX - ノード1 U1TX
相手の コンソールを UART1 と接続してある。抵抗を間に入れるようにしており、接続しないことも可能


ノード1 U2TX - ノード2 U2RX
ノード1 U2RX - ノード2 U2TX
ノード1 U2CTS - ノード2 U2RTS
ノード1 U2RTS - ノード2 U2CTS

UART2 は、CTS/RTS も含め、相互に接続。抵抗を間に入れるようにしており、接続しないことも可能。CTS は、自ノード電源でプルアップしている。電源が入ったときに CTS が L レベルなら、ブートしないような制御にしようと目論んでいる。

ノード1 TWI0-SDA - ノード2 TWI0-SDA
ノード1 TWI0-SCL - ノード2 TWI0-SCL
まず、この I2C チャネルを使うために、OPi Zero の改造が必要。これらは、Zero 内で、自ノード電源でプルアップされている。共用して使うため、外さないといけない。プルアップはこのボード内の常設電源に対して行う。

このチャネルは、ボード内の いくつかのデバイスに接続できる。(オプション)。外部にも出力されていて、想定しているデバイスに接続できるようにしている。(後述)


R151,R152 を外すだけなので、比較的容易な改修。

ノード1 TWI1-SDA - ノード2 TWI1-SDA
ノード1 TWI1-SCL - ノード2 TWI1-SCL
ボード内では使用せず、外部に接続する。この I2C チャネルを使うために、OPi Zero の改造が必要で、プルアップ抵抗を外さないといけない。このプルアップの取り外しはリスクが大きく TWI0 のものより困難である。今のところ、どのように使用するか想定していない。

プルアップ抵抗を外さないと、片側が電源OFFのときプルダウンになってしまう。そのため、ボード内のプルアップも必要になる。それでも H が 2/3 VCC で通信が出来ない恐れがある。その上 通常時でも 1/3 の 約 700 Ωを駆動しないといけない。Zero 自体はいけるにしてもデバイス側は無理かも知れない。使えればラッキーというところ。


R153,R154 を外すのだが、横の R16,C14 にダメージを与えないようにしなければならない。特に R16 を飛ばしてしまうと起動しなくなる恐れがある。

PWM1
圧電サウンダを取り付け BEEP として使用することを想定し、トランジスタを介した出力になっている。これは、ノード1、ノード2別個にある。圧電サウンダを使う場合、パラレルに 抵抗もしくはインダクタを入れる。入れなければただのオープンコレクタ出力である。

MOSI(GPIO)
それぞれ相手ノードの電源を ON/OFF できる。Nch FET を介して MINI-360 の EN に接続されており、H にすると OFF となる。強制リセットの代替として使用。

MISO(GPIO)
USB1 を切り替える機能。デフォルトはノード1だが、L にすると、ノード2に切り替わる。共用なので H にしてはいけない。

IO1(GPIO)
USB2 を切り替える機能。デフォルトはノード1だが、L にすると、ノード2に切り替わる。共用なので H にしてはいけない。

CLK(GPIO)
ボタン1:外部にタクトスイッチを接続し、ボタン入力 として使えるが、L にすることで、リモートでのボタン押下にも使用できる。ノード1、ノード2共用。抵抗を入れてあるので、出力がぶつかっても問題ない。

CE0(GPIO)
ボタン2:外部にタクトスイッチを接続し、ボタン入力 として使えるが、L にすることで、リモートでのボタン押下にも使用できる。ノード1、ノード2共用。抵抗を入れてあるので、出力がぶつかっても問題ない。

おまけとして、ダイオードを通した外部出力ピンを持っており、ノード2から引き出したリセットに接続できるようにもなっている。このボードをクラスタではない使い方をしたときに、使うケースがあるかも知れない。(後述)

CE1(未使用)
唯一の未使用ピン。使うとすれば、リブート用。リセット信号を取り出しここにつなぐ。あるいは 割り込み割り当てて L になったらリブートさせる。後者は代替案であり、リセットほど強制力はない。でもリセット信号の取り出しが困難ならば、ないよりはマシだろう。


リセット信号がどこにあるかと言うと、C301 -- すなわち、CE1 の隣であった。CE1 につなぐのはどう見ても簡単。



クラスタ以外での使用方法

USB の切り替えには、NX3DV221 というチップを使用する。これの入手が難しかったりするが、それ以前にあまりに小さいためにハンダづけが困難である。そういう理由もあって、他の利用方法も検討している。

中央右、線が集中しているところが、NX3DV221 のパターン。基板は作れそうだが、実装は無理かも知れない。


クラウド
とにかく、多数の Zero を動かしたいという用途では、USB の切り替えはもとより、増設USB などいらないだろう。相互の再起動の仕組みや、コンソールの接続は有用だろうから、2つの DC DC コンだけ生かす。

こういう使い方では、13pin コネクタの取り外しも必要ない。まぁコンソール接続もいらないという場合は、 3pin コネクタの取り外しもしなくてよい。そういう使い方でも 電源が 2個に1つで済み、12V電源が使えるのはメリットだろう。

開発マシン+開発ターゲット

さらに簡略化して、DC DC コンを1つにする手もある。MINI-360 は、1.8A まで連続で流せる能力があるので、ノード1本体のUSB から ノード2の USB OTG に給電する。( ちなみに OPi Zero は ‘Armbian IoT settings’ だと アイドル状態で 110mA とかそのレベルらしい。)

相互接続も ノード2コンソール程度にしておく。運用ではあまり有用ではないのだが、1台を主に実験用に使うならば意味がある。

こういう用途でのみ、ノード2リセット信号の取り出し→ボタン2への接続を利用する。


I2C デバイス

EEPROM (1010xxx : 1010000 外付け / 1010001 内蔵)
クラスタを設計する場合、わずかな容量であっても共有ストレージが必要だろう。そのために EEPROM を接続する。接続可能なのは、正副2系統。幸いなことに、RTC + EEPROM モジュールが格安で手に入る。これを外付けにして正系とする。副系は、ボード内に付けられる。

正系が外付けなのは、このボード自体を交換する場合を想定してのこと。交換したらすべての情報がなくなるのであれば、復旧に手間がかかる。回路などないに等しいのだが、一応 DC DC コンが壊れる可能性がある。 また、このボード自体が実験用である。改修して交換みたいなことはするだろう。

... ということにしておく。実際の装置でも EEPROM をケーブルで接続し筐体に貼り付けるようなことをするそうだ。それがないと、ボード自体を交換したとき困るのは本当らしい。

この RTCモジュールは aliexpress で DS1307 を検索

DS1307 (1101000)

RTC モジュール。まぁあったほうが良いだろう。幸いなことに、必須とした EEPROM モジュールのおまけで使える。

スタンドアロンで使うものではないから、いらない場合も多いだろう。そういう場合は、正系 EEPROM も使えないから、ボードの副系のみで運用する。

追記:実は高精度のDS3231版のほうが安価だったり。

INA219 電圧・電流計( 1000x0x )
(1000000 NODE1, 1000001 NODE2, 1000010 USB1, 1000011 USB2)
オプションで、ボード内に4つ接続することを計画している。付ける場所は、Zero の電源入力に2つ。USB1,USB2 に2つ。

常時測定するような使い方はしないかも知れない。そして、INA219も小さいのである。ハンダづけが難しい。それ以前にアートワークが厳しく、パターンが入れられない可能性がある。
入手は、aliexpress で INA219 SOT23-8 を検索。

なお、安いモジュールもある。わざわざボード上に常設はしないが、測定したいという場合に使える。その場合も ボードに R100 -- 0.1Ω は付けておく。平行に仮付けして 0.05 Ωで計測。
こちらは CJMCU INA219 で検索。

SSD1306 ( 011110x )

表示デバイスが一切ないのは、実験用としても問題だろう。格安の OLED モジュールを接続することを検討。SSD1306 を使ったモジュールには、単色、2色、フルカラーがあるようだ。青+白2色を予定している。

aliexpress で oled module あるいは SSD1306 で検索

この 表示デバイスは、マスターとなったノードが使用し、運用に使う。デバッグにも必要であれば、TWI1 の方を使用する。


SPI-Flash

本体の裏に SPI-Flash を接続できるようになっている。これはブートも可能。クラウドなんかでは有用だろう。どうせ別に NAS がある。クラスタにおいても、USB ストレージを付けるのであれば、OS はそこに入れれば良いのだ。ノードダウンして切り替えるならば、もう一台が OS ごと引き継ぐ。スタンバイ側は、ストレージがないわけだが、マスターをNASとして使えばよい。こうすることで、micro SD が空く。

なんというか、本体が安すぎるせいで、micro SD が高価なものに思えてしまう。SPI-Flash の価格は、8MB が 10個で $4 ぐらい。4MB はもっと安く $4 も出せば 20 個買える。16MB は少し高く 5 個で $5 を超える。これらのうち標準的なサイズは 8MB である。1MB は U-boot で使うので、残り 7MB にカーネル+initrd を入れる。4MB でも良いとは思うのだが、足りなかったときどうにもならない。SPI-Flash を付けるのは比較的簡単だが、付け替えは厳しい。8MB にしておくのが無難。

ちなみに、ブートできないような状態になってしまっても、micro SD からのブートは可能で、いわゆる文鎮化は心配しなくて良い。

入手は、aliexpress で、25Q64FV, 25Q128FV あるいは W25Q32 を検索。



PCBレール

(aliexpress で PCB guide rail で検索)

PCB をマウントするものを探してはみたが、ピンと来るものが1つだけ見つかった。長さは 86mm で少し大きい。このボードを入れてもロックの位置にすらこないので、当て板が必要。

当て板は 2mm 厚 まで。長さは、おそらく 25mm ぐらいで端まで行く。外付けモジュールを付けるなら、もう少し大きく作って そこにマウントすれば良いと思う。

クラスタの場合、裸の 2.5in HDD もレールを付ければいけるのではないかと思う。そう出来れば割とすっきりまとめられるかも知れない。

で、これを何に取り付けるか? L アングルで良さそうな気も。


ケース

(aliexpress で aluminum box 105 で検索 、SZOMK AK-C-C69a:w105 h40 d92)

ケースなど必要なのか?という疑問はあるが、見つかったので書いておく。基板は入るが、高さがギリギリである。

イーサの HUB とか USB Disk とかを 組み合わせて 使うものだから、全体で様にならないと意味がないと思うのだ。でもまぁ一応。


そういえば、よくある安物の5ポートHUB 。こいつのサイズが、97 x 67 x 25 mm だそうだ。


他に、w105 h55 d150 というのも見つかる。これも溝があるので入れられそうだ。これぐらいの大きさになると、HUB と DISK も入れられて良いのではないだろうか。

ちなみに、100mm の基板は入るが、下のでっぱりと干渉しそうな。注意が必要。

100mm で思い出したが、100mm x 72mm の Pico-ITX のボードはギリギリまで部品が配置されてるものが多く(普通)入らない。これらのケース内幅は 98mm ぐらい。また、3.5 inch HDD は入らないが、HDD 用マウンタにも合わない。HDD は 101.6 mm だが、このケースは 106mm 。さらに、2.5 inch HDD は、作ったボードを入れると、タテにもヨコにも置けない。長さが 100.45 mm なので、重なるように配置しないといけない。なんとも中途半端ではあるが、100mm幅の板が丁度合うのは利点。2.5 inch HDD なら、板にマウントしてつりさげるような配置ができる。

ちなみに、Pico-ITX の SBC EspressoBin


ヒートシンク

( banggood で入手 )

一応書いておくと、ちょっと背の高いのが欲しかったので、40x40mm 11mm高のを 切りだして使おうかと。aliexpress でも heatsink 40mm*40mm*11mm で検索すると見つかるが、banggood のやつが具合が良い。フィン 13枚なのは同じなのだが、切り目?が 10本のが良いのだ。

追記:とか書いておきながら 35mmx35mmx17mm のタイプも買っていたり。


こちらは、aliexpress で 「heatsink 40mm 11mm」で検索すると見つかるタイプ。なにしろ安いので気軽に消費できる。
これを 図示したとおりにカットできた。道具は、万力+金のこ。飛び出している部分は wifi チップにかぶせる。これのマウントの方法だが、H2+ SoC に 両面テープ。そのままでは wifiチップも SDRAM も浮くので、0.5mm厚の放熱シート(シリコンシート または αGEL)を挟む。

ちなみに、フィンの数は 13 だが、削った方の切れ目が 8本のタイプと 10本のタイプがある。今回は 8本の方を使った。(2) で切りだした部分も、wifi にかぶらせる突起部がないだけで使える。というか、うまくやれれば 同じ形状を2個取り出せる。(1) と (2) を切り離さないようにすれば良い。あるいは、(3) の切り方を工夫するとか。

35mmx35mmx17mm も同じような形状を切り出せた。背が高くなってもかまわないなら、こちらの方が良いかも。



チップ抵抗の取り外しは、2本のハンダごてを使うと書いたが、ふと USB solder iron を検索してみたところ、$4 ちょっとで買えるようだ。

昔にあったタイプとは違い、こて先が交換可能になっている。(こて先も売っている)。 それだけ実用的に使えるということか?ちなみに、5V 8W で 15秒で使え 30秒で冷めるそうだ。キャップも付属していて、携帯するのに配慮されている。--- 携帯などしないが、すぐ仕舞えるのは便利。今はタブレットの普及で USB AC アダプタも高出力なものが多く使い勝手が良くなって来ているのかも知れない。

ちなみに昔のタイプを所有している。熱量は少々足りない印象だった。形状のせいか、つい先に触ってしまい痛い思いをした。さて、新しいタイプはどうなのだろう?

追記:新しいタイプが来た。早速電流を測定してみると 5.1v で 1.78A : 9W ほど。旧型も火を入れて見たが 1.0A 程度で 5W 。差は歴然で これなら使えるような印象。


ピンヘッダの外し方

戦々恐々としていたわけだが、そう難しいものではなかった。
簡単に言えば、一本づつ、ハンダごてを当ててラジペンで引き抜くだけである。問題は、基板とラジペン両方に力がかかること。両手を使ってしっかりとやらないといけないわけだが、その上でハンダごてを正確に当てる必要がある。ハンダごてを机に置いても出来るが、万力などで固定したほうがやりやすいだろう。

後処理は、はんだ吸い取り線を軽く使った後、無理そうなのは 0.8mm φ のピンバイスで力をかけずにえぐる。私は、ダイソーにあった「精密ハンドドリル」を使用した。

とか書いてみたが、実は練習での話。本番では、はんだ吸い取り線はあまり上手くいかず、だいたいは「精密ハンドドリル」のお世話になった。USB 顕微鏡で見てみると 一部ランドにダメージがあった。大丈夫だとは思うが、それほど完璧にできたわけではなかった。


posted by すz at 03:13| Comment(0) | TrackBack(0) | 日記

2016年11月04日

Orange pi zero



存在がリークされていた、Orange pi zero が発売された。価格は 256MB 版が $6.99 送料込みだと $10.1。512MB 版は +$2 の $8.99。
スペックは

SoC Allwinner H2(+) quad core Cortex A7 @ 1.2 GHz
Memory 256 / 512 MB
micro SD card slot
100M Ethernet
WiFi (802.11 b/g/n)
USB 1x USB 2.0 host
micro USB OTG port

26-pin コネクタ (Raspberry Pi B+ 互換、SPI1, UART1, UART2, TWI0, TWI1 )
13-pin コネクタ (2x USB 2.0, TV out, lineout, microphone, IR receiver )
3-pin コネクタ (serial console)

Power Supply 5V 2A via micro USB port (or optional PoE)
Dimensions 52 x 46 mm


HDMI がない代わりに イーサ も Wifi も付いている。それでいてお安い SBC (某 Zero とは違って複数買いも可能)。特筆すべき機能としては、PoE も一応可能という点。一応というのは、ジャンパしなければいけないのと、5V でないといけないという点。なんの保護もないから、5V以上を付加すると、5V系にすべてその電圧がかかる。ジャンパの箇所は、裏面左下の R29,R358 。

PoE は使ったことがないので知らないんだが、ここに件の DC-DC コンバータをつなげれば、電圧はある程度自由になる(かも)。あと、SPI Flash のパターンもある(SPI0)。ここからのブートも可能らしい。NAS を使い microSD を空けたい向きには朗報か?




回路図(pdf)
回路図を見ると Core 電圧は、1.1v と 1.3v の切り替えが可能。 3.3V 系の電源は、3 系統あって、SYSTEM,CORE,SDRAM を加えると 6 系統もある。(One もそうだが)チープではあっても、電源回路はちゃんとしている印象。あと、Oneの回路図にしか載っていないが USB の 5V 出力は、SY6280 という電流制限つきのスイッチICが使われている。Zero も同じかも知れない。 :間違い、後述。

さて、このブログでは使い方などには触れない。なぜ取り上げたかというと、その基板サイズ --- 5cm x 5cm に収まってるわけで、なにか基板を作ってみたかったり。

arduino ユニバーサル基板で示すと、多分こんな感じ。イーサ と USB がだいぶ背が高い。52 x 46 mm らしいが、コネクタがはみ出てる分が込みになっている。現物が来れば分かることだが、1.9 x 1.8 (inch) ではないかなぁ。


実は、NanoPi NEO という 少し前から発売されてた SBC もある。こちらも 256MB/512MB があって、$7.99 , $9.99 (ただし送料は $10) 。こちらの方が 40mm x 40mm と小さい。専用のヒートシンクとか ケースとかもあって、悪くない。何故 OPi Zero を選んだのか? というと、512MB が $5.9 で出るものとばかり 思ってたため。まさか Wifi が付いて、$3 も予定より高くなるとは! でも Wifi は $3 では買えないし、まぁいいかというノリ。あと、5cm x 5cm というのも基板的にでかい。4cm x 4cm では、入れられる回路が少なくなる。

作りたいものというと ...2台使ってアクティブ--スタンバイ クラスタにする基板 -- とか。
 1) シリアルを相互に接続。
 2) お互いの電源を OFF できる回路 (リセットがあると良いのだけれどない)
 3) USB host を切り替える 回路。
 4) 電源回路
 5) 表示用ディスプレイ(I2C)

3) は無理かと思ったんだけれども、例えば NX3DV221 -- これが aliexpress でも買える。だいぶやる気になってきた。XQFN10 というパッケージなんだが、0.5mm ピッチで サイドまで電極がある。ハンダづけは一応可能そうだ。
4) 電源は 2A では足りない。USB とも 別にして 3 つ DC-DC コンが必要か? 12V 2A (かそれ以上)から供給すれば良いだろう。件の DC-DC コンを使うとして、EN ピンを 引き出して GND にショートすれば OFF にできる。

件のDC DC コンバータとは、これのこと。前の記事で紹介した。

ちなみに、micro USB の VBUS が 5V ということになっていて、ピンヘッダの5Vピンと直接つながっている。となると ... ピンヘッダに5Vを供給する場合に、USB device として使うには? ... 無理かな。

1) のシリアルはどうしたものか? console 用が UART0, その他 UART1,2 がある。console を含めて接続してしまうかどうか? そうした場合、外部との接続はどうする?
console を接続しておくと、panic したときのログが取れるのである。通常時はどうにでもなる --- USB OTG ですら使えるはずだ(使えればの話だが)。... となると console ⇔ UART1 とか。UART2 同士も接続して おいた方が良いか。network を通したりするかも知れないので、CTS/RTS もある UART2 が都合が良い。

5) の I2C は共用で良いのかなぁ。まぁ基板上に置いても見えないわけで。そんなことより、I2C の RTC -- これを共用する。メモリエリアがあるタイプを選べば、状態を通知しあえる。I2C も2つあるから、1つは外部デバイスを接続できるようにしよう。
生きてさえいればシリアルで状態を通知できるが、死んでいると状態が分からない。最終状態を書き込んでおければ、起動して良いものかどうかが判断できるだろう。こういう重要な役割を担わせるのであれば、外部に出さない方が良い。そうなると I2C 2つとも使うことに。

ディスプレイは、こんなやつがある。OLED 0.96 in で 128x64 。サイズは 29.3mm x 27.57mm 。これはバックライトは必要ないが、別途 バックライト制御用の信号線が必要かも知れない -- メモ。

追記:RTC はヤメて I2C EEPROM にするかも。DS1307 が RAM もあって良いのだが、バッテリーを置く場所がない。電気二重層を使おうとも思ったが、それも無理。逆に EEPROM がやたら有用な気がしてきた。秋月で単価 20円のやつが 64kbit の容量がある。装置固有の情報を置いたり、ログを取ったり、相手装置からも読めるわけだし。RTC が必須の装置でなくなれば、外部I2Cにつないでも良いし。


ところで、1列のピンヘッダは上部に実装されてしまっている。これを下向きに実装しなおさないと。抜くのは1ピンづつやれば良く可能だろうが、穴を綺麗にするには? なんだか自信がないぞ。ダメそうなら、作成基板の下に付けないといけない。考慮しておかないと。

考慮といえば、コネクタの方向。イーサを後ろ向きだとして、DC入力や、USB はイーサと同じ向き。そうなると、micro USB や micro SD はフロントということに。USB disk と一緒に、ケースに入れたとして、基板のフロント側はアクセス性が悪い。メンテナンスの時のみアクセスするという位置づけで使いたい。

USB disk だが、例えば 左のケーブルから基板を取りだし、自分で配線することで、コンパクトに収まるかも。USB コネクタも付けずに直接配線すれば、接触不良のトラブルが起きにくくなる。あるいは右のケース。同じようにケーブルを直接配線したうえで、ケース上にこの基板をマウントするとか。
ただ、どちらの例も古いものなので、512B セクタの HDD しか使えない(だろう)。ところで、右のケースで USB 3.0 対応のものもある。その場合、付属のケーブルを使い コネクタを介さないと無理。USB コネクタの向きはよくよく考えないと。


これは、3.5inch ベイ用のマウンタだが、幅が 101mm 。上部にこの基板がマウントできそうだ。随分とチープな仕上がりになりそうだが、それも良いかも。

後は I2C ディスプレイ、フロント側にコネクタを出す。そういえばボタン。付いてないような。GPIO が余ってるだろうか?

26pin CON 13pin CON 3pin CON
3V3(1) 5V (1)5V (1) GND
TWI0-SDA 5V GND (2) U0RX
TWI0-SCL GND USB-DM2 (3) U0TX
PWM1 U1TX USB-DP2
GND U1RX USB-DM3
U2RX IO1 USB-DP3
U2TX GND LINEOUT_R
U2CTS TWI1-SDA LINEOUT_L
3V3 TWI1-SCL TVOUT
SPI1-MOSI GND MIC-MBIAS
SPI1-MISO U2RTS MIC1P
SPI1-CLK SPI1-CE0 MIC1N
GND (26)SPI1-CE1 (13)IrRX

使い道が決まってないのは、SPI1 の5本と PWM1,IO1 の計7本で、システムで必須な GPIO が相手の電源 OFF と USB 切り替え2本 。ボタンは付けられるとして2つぐらい。
どうしても足りないなら、I2C をひとつにしても良いが ... ボタンのスペース自体も足りない。

いろいろ考えるといきなり基板を起こすのは無理がありそう。件の DC-DC コンは 使えるのかどうかテストしないといけないし、USB device が使えるかどうかもテストがいる。USB スイッチも別途テストしたいし。なかなかに前途多難。本当のところは、基板を設計したいだけだったりするのだが。


ところで、クラスタにしてどうする? という話があるかも知れない。単に複数動かすのではなく、アクティブースタンバイ クラスタを意識した構成。まぁ実用上はたいした性能ではないし、堅牢かというと、そうでもない。ちゃんとしたものは恐ろしく高価なわけだから、手軽に実験ができる学習用という位置づけを狙う。USB 2.0 disk なら、まだ切り替えられるものを作れそうだが、USB 3.0 やSATA はお手上げ。この辺が落としどころかなと思う。

そういえば、Wifi も付いているのであった。これを外部とのアクセス用と決めれば、イーサの方はクロスケーブルで直結して、インターコネクト専用とすることも出来る -- メモ。
ただし、技適問題があるから、あくまで実験用と考える。あるいは、逆に Wifi をインターコネクト専用とする。アンテナを一か所に集めてシールドしてしまうのはどうか?。--- これなら、技適問題をクリアできるかな?


SPI Flash について。

 ・http://linux-sunxi.org/Bootable_SPI_flash
ここ見ると、U-boot を起動させるものらしい。SD boot が失敗したら SPI Flash からブートするとのこと。network boot が可能なんだろうと推測されるが、容量があれば、カーネル+initrd も入れておける。

U-boot だけなら、1MB で済む。カーネル+initrd が、7MB 以下になるなら 8MB を使える。SPI Flash は、16MB までの製品があり入手は容易。4MB のものは、中途半端らしい。

入手するには、aliexpress で、25Q64FV, 25Q128FV を検索。


OPi シリーズの Wifi モデルに共通の いかにもチープなアンテナ。いくらぐらいするもの?と思ったので aliexpres で調べてみた。



ようやく見つけたのが左端。同じショップで 他に違うタイプのを扱っている。これらは、5個で $11 〜 $12 だった。 日本で買うと 1つ 500 円ぐらい。結構するのであった。コストが上がるのであれば、Wifi などいらないとも思うのだが... Wifi なし 512MB バーションが安く出るといいなぁ。

感度は、3DBi と書いてある。真ん中の FPC タイプは、よく目にするが、こいつと同じぐらい。


USB OTG について

 ・http://forum.armbian.com/index.php/topic/1426-connect-orange-pi-one-through-usb-otg-with-a-computer/

ここ見ると OPi ONE で使えているようだ。ドライバーは問題なさそう。後は電源回り。

ONE/Lite は、電源入力として使えないと書いてある。Zero は 電源入力。回路も違う。
ONE/Lite では、HOST として使った場合、SY6280AAC を通して電源を供給する。そのための信号線は、USB0-DRVVBUS で出力電流は 680mA に制限される。ID ピンは、USB0-IDDET に接続され、デバイスが接続されたことを認識できるようになっている。DEVICE として使った場合は、VBUS は何も利用されない。ついでだが、標準タイプの USB の VBUS は、5V と直結されていて、電流制限はない。

さて、Zero の方、ID ピンは、USB0-IDDET に接続されている。ということは、デバイスとして使える。問題は、ピンヘッダから 電力を供給して、VBUS にも電圧がかかった場合。Pch MOS FET (AO3415A) が間に入っていて何か回路がある。どうも VBUS の電圧が高いと ON になって 内部に電流を取り込むが、VBUS の電圧が低い場合に電流が出力されないようにする回路に見える。要するに HOST として使う場合の方が問題がある。標準タイプの USB の VBUS は、5V と直結されていて、電流制限はない。

ちなみに、OPi PC と 最近発売された OPi PC2 -- これらは、USB すべてに SY6280AAC が入っている。ただし2段になってるポートは、合計での制限。電流制限は 1.1A 。micro USB は、One/Lite と同じで 680mA 制限。

さて、USB デバイスとして使う場合、g_ether を使えば、ネットワークも通せる。HOST 側には g_ether を使うドライバもあるわけで、HOST 用ケーブル+通常ケーブルで 通信経路としても使えるはずだ。
この SBC で最速のインターフェイスは、USB である。これに network が通るということは ... インターリンクには最適ということでもある(かもしれない)。ケーブルは自作してスマートなものにすることもできそうだ。
USB は、オーバヘッドが大きそうで、実際は最適というわけではなさそう。パケットは 512B までだし、性能的にも怪しい。

あと、g_ether は、標準の USB イーサ。Windows からも使える(はず)。ちゃんと使うには、ルーティングがネック。仮想マシンなどと同じ設定で良いわけだから設定レベルだとは思うのだが、私は良くしらない。
追記:Windows10 マシンと接続する場合、標準機能の「モバイルネットワーク」を使うそうだ。

ところで、SPI Flash でブートできて、USB デバイスになる --- ということは、なにか USB 装置を手軽に作れるわけだ。こういう役割を Rasberry pi zero に期待したんだが、買えないなら仕方がない。256MB もメモリがあるボードが $6.99 (数量を買うときは、送料分 +$1.75) で買えるわけだから、ベアメタル・プログラミングしてみるのも面白いかも知れない。まぁ initrd にアプリを突っ込んで、専用機に仕立てるほうが簡単そうだが。
実をいうと、自分で中途半端と書いた 4MB の Flash をなにこれ安いで買ってしまった。20個で $3.41 。そのときは知らなかったわけだが、8MB でも 10個 $4.2 程で買えるのであった。initrd + kernel で 3MB しか使えないので、どうなることやら。

ベアメタル・プログラミングとか書いたが、おそらくはカーネルドライバですべてを行う方が簡単。ダウンロードして insmod するアプリをでっちあげて arduino もどきの出来上がり ... とはいかないだろうか。

こうやって使うとき、背の高い部品は邪魔。外したからと言って消費電力が減るわけではなさそうなんだが、なんかすっきりしない。部品を外したり、壊しそうなことも含めて、いろいろやってみたい。


制御線案

SPI1-MOSI : H で相手ノードの電源を OFF (デフォルト は電源 ON) 
SPI1-MISO : L で USB1 をノード2に割り当て (デフォルト は ノード1)
 (入力) H マスターノード=ノード1、L マスターノード=ノード2
SPI1-CLK : L で USB2 をノード2に割り当て (デフォルト は ノード1)
SPI1-CE1 : H で 自ノード LED を点灯、

TWI0-SDA,TWI0-SCL : 内部用, ノード1,2ともに接続 I2C-EEPROM
TWI1-SDA,TWI1-SCL : 外部用, ノード1,2ともに接続

PWM1 :未定 ビープぐらいは欲しいし、圧電サウンダを付けられるようにしようかと
12Vも使えるわけだが、うるさいと困るし 5V で駆動可能に。

IO1 : ボタン入力専用
CON
|
+-- (pullup)
|
 IO1 --- R -+- R --- IO1

SPI1-CE0 :ボタン入力専用
|
SPI1-CE0 --- R -+- R --- SPI1-CE0

U0TX --- R --- U1RX
U0RX --- R --- U1TX

U1TX --- R --- U0RX
U1RX --- R --- U0TX

U2TX --- R --- U2RX
U2RX --- R --- U2TX
U2RTS --- R --- U2CTS
U2CTS --- R --- U2RTS

注意:SDA,SCL は、ピンを直結するわけだから、出力がぶつかるような使い方をしてはいけない。これは当然として、USB 切り替えも同じタイプの接続なので要注意。
それ以外でポートが壊れたりはしないように考慮はする。直結を避けて抵抗を入れるだけではあるが、接続したくない場合もあるだろう。こういうジャンパ的に使える抵抗は、裏面にもっていこうと思う。


リセットについて

OPi Zero は、ボタンが一切ないが、他のボードも リセットがないものがある。一体どうなってるのか?と思って調べてみた。



だいたいの回路図は、こうなっていて、C301 と R346 がパーツ名に使われている。回路的には、VCC-IO の立ち上がりを遅延させているようだ。 C301 と R346 が接続されている所を GND に落とせばリセットがかかる。


Zero で言えば、左上のココ。C301 と R346 が見える。

まぁこのボードでは、電源 OFF/ON するつもりだから、リセットをジャンパすることは、考えない。
CE1 を使わないことに決めたのだが、CE1 は写真で言うと C301 の隣のパッド。これにリセットをつなぐのは容易なので考え直すことに

それは良いのだが、ブートしたときの動作を変えるには、どうしたら良いのだろう?

考えてみたのだが、起動を止めておくという指示だけは欲しい。信号線は相互に接続されているが、U2CTS かな。Lは起動待ち。相手が存在しないときもあるし、確実にプルアップしておくことにしよう。

普通タブレットは、電源があれば起動してしまう。電源OFFであればバッテリーの充電制御をしながらブートするのをスタンバっている。で、電源ボタンを押したら起動するが、音声ボタンの状態で動作を変える。U2CTS は、電源ボタンの役割というわけだ。音声ボタンの役割は、2個のボタンを使ってもいいし、EEPROM に何か書き込んでもいい。



GPIO について。

すべての I/O は、GPIO にもなると勝手に思っていたが、確認しないといけない。Zero は H2 なのであるが、どうやら I/O 系は H3 と互換性がある模様。H3 のデータシート と Zero の回路図を見比べて確信できた。

PA0/UART2_TX/JTAG_MS0/PA_EINT0 (IO-2)
PA1/UART2_RX/JTAG_CK0/PA_EINT1 (IO-0)
PA2/UART2_RTS/JTAG_DO0/PA_EINT2 (IO-6)
PA3/UART2_CTS/JTAG_DI0/PA_EINT3 (IO-3)
PA4/UART0_TX/PA_EINT4
PA5/UART0_RX/PWM0/PA_EINT5
PA6/SIM_PWREN/PWM1/PA_EINT6 (PWM1)
PA7/SIM_CLK/PA_EINT7 (IO-1)
PA10/SIM_DET/PA_EINT10 (SPI_CE1)

PA11/TWI0_SCK/DI_TX/PA_EINT11
PA12/TWI0_SDA/DI_RX/PA_EINT12

PA18/PCM0_SYNC/TWI1_SCK/PA_EINT18 (IO-5)
PA19/PCM0_CLK/TWI1_SDA/PA_EINT19 (IO-4)

PA13/SPI1_CS/UART3_TX/PA_EINT13 (SPI-CE0)
PA14/SPI1_CLK/UART3_RX/PA_EINT14
PA15/SPI1_MOSI/UART3_RTS/PA_EINT15
PA16/SPI1_MISO/UART3_CTS/PA_EINT16

PG6/UART1_TX/PG_EINT6
PG7/UART1_RX/PG_EINT7

26- pinheader に接続されているピンの初期状態はすべて Hi-Z 。またこれらの絶対定格は 20mA 。これらの GPIO は、UART といった機能の選択の1つとして、IN または OUT を選べる。さらに割り込み機能も選ぶことが出来る。全部選択なので排他的に使用する。また、これらのピンには、pullup/down 機能はないようである。

UART2 は JTAG を兼ねる。SPI1 は、UART3 にもなる。TWI0 は DI_TX,DI_RX の機能もある。
なお、JTAG を実際に使用するには、PIN 機能の切り替えが必要。H2/H3 には、JTAG_SEL0,JTAG_SEL1 というピンが他にあって外部から有効化できそうなのだが、残念なことに無接続。どうやって使うかというと、ブートローダが起動したときに設定しておくのだろう。

H2/H3 には、RTC の機能があるが、32KHz 水晶用のピン X32KO,X32KI が無接続。ただし、OPi ONE のみ PAD が出てるかも知れない。でも、バックアップ電源のない RTC にどれだけ意味があるかという話があるか。

なお、13pin の方に出ている信号線は、すべてが GPIO に使えない。

この情報を元に回路図をみなおしてみよう。


RTC モジュール


なんか見つけてしまった。RTC の DS1703 に 4KB の I2C ROM (AT24C64)が付いたモジュール。$0.4 とか分けがわからない値段。

これで良いじゃないか。これを接続できるようにしませう。注意点としては、VCC が 5V でないといけないということ。I/O は 3.3V でいけるらしい。 多分 SDA,SCL が 5V でプルアップされてそうだから外さないといけない。

I2C ROM の容量が減ってしまったが、まぁいい。I2C ROM は普通に 1Mbit とかの製品があるし、必要なら付けられるようにしておこう。




もはや、本題とは関係ないのだが、いろんなモジュールが安く買えるようだ。左は 6-axis センサの mpu6050 モジュール I2C 接続 $1.3 ぐらい。右は、NEO 6M gps モジュール $4 ぐらい。シリアル、PPS 出力あり。
 --- まぁ GPS は時刻取得に使えるし一応は関係あるか。


ではこれはどうか? INA219 を使用した 電流・電圧計。$1.7 ぐらい。
R100 だから 0.1 Ω これに 2A 流すとすれば、0.2w だから 1/4 W 品が必要で 1206 (3.2mm x 1.6mm) を使わないといけない。この基板では 1206 より一回りでかい。INA219 が豆粒に見える。

結構悩ましい。IC 自体の値段にちょっと上乗せするだけでモジュールが買えてしまう。IC を付けるスペースも厳しいから、まぁモジュールを買うとして、何を測定したいのか? 自機の消費電力? あるいは USB 出力? なんでもかんでも測定しようとすると、コストもかかるし、ボードがたこ足になって配置に困ってしまう。

スペースさえ確保できれば、パターンだけ入れておこうかなぁ。アドレスが4つからの選択だから 1つのバスに 4つまで。スペース的には USB が余裕がある。あと2つなら、zero の消費電流 か。

データシートを見たら、なんと 16 通りもあった。A1,A0 しかないんだが、SDA,SCL と接続することで選択できるようだ。まぁ4つしか付けないことにして、VCC,GND の組み合わせから選ぶ。

とりあえず、接続予定なのは、次のリスト

INA219 10001x0x
DS1307 1101000
EEPROM 1010xxx
SSD1306 011110x

EEPROM は、DS1307 モジュールにも乗っている。多分 1010000 だから、基板に付く方は、1010001 にしようと思う。

ちょっと、忘れないようにメモ。
INA219 は、おまけなので別につけなくても良い。極小のチップだから付けるの面倒だし。USB の切り替えも別に必要ない使い方もあるだろう。NX3DV221 もハンダづけできない可能性があるわけだし。だから、ジャンパして接続を固定にできるようにしておかないと。この場合、一筆書きに出来るだけ近くなるよう配慮する。


もう、実機を受け取った人がいる

気が付かなかったが、LED とか付いている。--- LED は、わざわざ付ける必要なかったか。外してしまおう。
回路図を確認

PL10/S_PWM/S_PL_EINT10 (PWR-LED)
PA17/SPDIF_OUT/PA_EINT17 (STATUS-LED)

また console 用ピンヘッダが付いている。忘れていたが、どうしようか。

案としては、arduino で良く見るスタッカブルのやつを使う。console 用は下がソケット。13 pin の方は、どうしようか。切って使えるタイプでないと、短いピンソケットを縦に並べるのは厳しい。切って使えるタイプで スタッカブルは見たことがない。USB のみ スタッカブルで、後は ピンヘッダを立てておくことにしよう。26 ピンの方は、普通にソケットを下向き。スタッカブルは必要ないし無理だろう。あと、SPI1-CE1 を使わないと決めてしまえば、24 pin が使える、これも考慮しよう。

要するに 3pin と 4pin のスタッカブルが必要で、8pin を切って使うと丁度いい。... となると、基板に使わない穴を開けなくともよいか。ピン間に通せるのは、表裏2本なので、配線が厳しいのだ。

しまった。USB に スタッカブルは使ってはいけない。4 ピンのソケットを下向き。

そういえば、通常のピンヘッダ+ピンソケットを連結すると、11mm 。だが、11mm のスペーサはない。何故なんだろう?

ついでに回路図を確認したところ、TWI0,TWI1 が、それぞれの 3.3V にプルアップされていた。R151 - R154。これを外さないといけない。場所は確認できた。R151,R152 は、TWI0 で 表右上。取り付け穴のとなり。R153,R154 は TWI1 用で、裏左下。少々ごちゃごちゃしてる。TWI0 が圧倒的に簡単だから 重要な方に割り当てる。

    クラスタとして使わず 1台をホスト、1台を 開発ターゲットとして使うことも考えておきたい。

    26 pin を一切接続しないという場合、開発ターゲットの電源は USB → USB OTG で取れる。USB から電源を取れば、消費電流も測定可能だから便利かも知れない。3pin のコンソールは 必要があればつなぐし、なければつながない。13pin の USB は必要ないだろう。単にボードを固定できる台という感じだが、電流供給能力があるのが利点か。

    リセットが欲しい場合もあるだろう。その場合は、リセット用信号を取り出して、ダイオードを通して、ボタン用のコネクタに接続すればいけるか。タクトスイッチを押してもいいし、リモートで操作もできる。 一応パッドだけ作っておくか。

    他の使い方としては、多数の Zero を稼働させる場合に便利か。電源が1つで2台分。しかも外部からリブートさせる手段がある。この場合 増設した USB は使わないだろう。 だが、今の設計では、DC DC コンが3つ必要。なにに使っているかというと、RTC 用電源。これだけだから、ちょっと考えておこう。

    もうひとつ検討しておきたいのは、この基板自体のマウント方法。レールつけてスライドさせるとか良いんじゃないか? 良くは分からないがフチを作って部品を置かないようにしておこう。

    なんかこういうものがあった。ロックさえできるようだ。”PCB Guide Rail” 。
    とにかく、フチさえあれば、なんとかなるのだろう。

    この製品、全長が 86mm 。ネジがある方 13mm ぐらいは溝がないから ぴったりになる基板サイズは 73mm ぐらい。ロックにぎりぎり引っ掛けられるサイズは 60mm ぐらいかな。少し大きいが、当て板をすれば、どうにでもなる。そんなことより、これに近いようなものが見つからない。ベストかつ唯一という気がしてきた。

    取り付け方法がピンと来ないが、簡易的には、アルミアングルに横にならべていくとか。それを木の側板に取り付けて出来上がり --- みたいな。

    クラスタとして、HDD ありの場合も、HDD に小さい アルミアングルを取り付けてマウントできるか。


    あと注意しておきたいこと。多数の Zero が、同時に起動すると同じタイミングで、ひとつのリソースにアクセスすることになって、あまり嬉しくないことが起きるかもしれない。ブートローダでブートをランダムな時間遅らせるとかしたほうが良いかも。クラスタにしても、マスターを決める手順があるから、時間差があった方が問題が起きにくいだろう。

    ついでに電源の話。12V と書いてきたが、ノートPC用の 19V とかでも良い。100W クラスの ACアダプタを使えば、分岐させて 10台ぐらいいけるんじゃないか。多分もっといけるだろうが、どういう使い方をすると、どれぐらいという情報を集めないといけない。その手段として INA219 を付けておくのは有効かも知れない。


    11/12 私のところにもキター。

    起動確認とかより、まずはサイズの確認。
     1.9 x 1.8 (inch) = 48.26 x 45.72 (mm)
    これで合ってる。横は余白がなく隙間なしに並べられる印象。

    取り付け穴の間隔は、42.5 x 40 ぐらいで リングの外径は 5mm ぐらい。作ったライブラリは、 42.26 x 39.72 --- 合ってそうな気がする。あと、コンソール 3pin の位置も合ってるようだ。

    基板からの高さは、USB が 14mm で、RJ45 が 12.8mm ぐらい。基板からのはみ出しは 約 3mm 。

    フチの計算。基板を 0.1 in 空けて並べ、両脇に 0.1 in のフチを作ると、99.06 mm -- OK 。縦は、基板+余白 0.025 in で 49.53 mm にしよう。


    さて、部品の付け外しの可否。
    ピンヘッダを外せる自信はある。しかしスルーホールをどうにか出来るかどうかは不明。細いドリルで空けなおすのだろうか?
    秋月のFT232R モジュールのピンヘッダを外したことはあるが、このときは吸い取り線だけでなんとかしようとした。一応は出来たものの、かなり基板を痛めてしまった。

    PoE 用のジャンパは問題なさそうだが、DC-DC コンを付けるために線を引き出せるかどうかというと、かなり怪しい。... 5V も GND も一緒に引き出すのは難しいが、+PoE だけなら、あるいは簡単かも。
    R151,R152 は出来る自信がある。R153,R154 は厳しい。となりの R16 も一緒に行きそう。R16 はパワーオンのためのプルアップ 47K。外すと起動しなくなりそうだ。これだけ付け直せるかというと、あまり自信がない。--- でもハンダごて2本ならいけるかも。CR なんかは、両端に同時に熱を加えれば簡単に外せるとのこと。ちなみに、右隣りの C14 は、VCC-IO の パスコンのひとつで 1uF --- これは飛ばしたとしても、どうと言うことはなさそう。
    USB は外せそう。RJ45 は無理そう。とても厳しい印象。
    SPI-Flash は付けられる自信があるが、付け替える自信はない。周りの部品がいってしまいそう。
    付け直せないなら、やはり最低 8MB にするべきか。3M でカーネル+環境というのは可能だと思うんだが、相当な面倒が待っていそうで嫌になって来た。

    リセットを引き出すのは出来るかもしれないが、リスクがでかい印象。失敗したとき 周りの CR を付け直せる自信が全くない。
    ... とか最初思ったのだが、未使用の CE1 に接続してみることにした。CE1 は C301 のとなり、D18 のカソードからCE1 につないでも良い。... なんか簡単そうなのであった。

    まだテスターを当ててないので、多分なのだが、赤い点のどれかを、赤いリングのところにつなぐだけなのだ。なんか楽勝に見えるんだが。

    以上は私の話であり、世の中には全く問題としない人も居るのである。可能性の話を書いておくのは意味がある。

    まぁこれで、ディメンションは FIX 。基板設計を進められる情報は得た。


    ケースについて

    ケースなんて飾り・・・とは思っているのではあるが、一応探してみたところ1つ、ぴったりなのか、はたまた微妙に入らないのか ... というのを見つけた。

    aluminum box 105 で検索して見つかったものだが、サイズは、w105 h40 d92 -- SZOMK AK-C-C69a というものらしい。



    これを見ると、幅は問題ない。99.06 mm であるから ケースのガイドにきっちり入る。問題は高さ。厚みは 2.5mm だから空間は 35mm 。さて、このボードに Zero を載せると、14mm + 1.6mm + 11mm +1.6mm = 28.2mm 。 基板の下は、6.8mm 以下でなければならないが、どうだろう? ギリギリアウトの場合、Zero の USB がなければ、セーフになるんじゃないか? あるいは、短メスを使い 低くするとか。(部品の高さがあるので、それが可能かどうかは不明)。はたまた浮くのを気にせずにパネルを自作するか。USB の分ケースを削ってしまうという荒業もあるかも知れない。

    奥行は、92mm もある。micro SD は、ケースを空けないとアクセスできない。内部の LED も見えない。I2C の OLED は入る。

    折角だから、検討項目としよう。

    ところで、こんなケースに入れた場合、排熱はどうする? 一応 35mm のファンはある。これを PWM に接続することは、可能。しかしクラスタであるから、2個付けるのだろうか? それはともかく、物理的に付けられるようになっているか? ファンの写真を見ると、向かって右が+。この基板は逆になっている。その上、ピンが並んでたりするので、コネクタが干渉する。--- これだけ L 型ピンヘッダを基板の裏側に付ける。-- 一応 OK としよう。

    さて、排熱という話になるとヒートシンク。これをどうしよう。ケースはアルミだから、そこに熱を逃がすことが出来れば、ファンなどいらないではないか。


    そうなると、これを横向きに付けるのかなぁ。幅16x高さ25x奥行16mm ということなので、どうつけるにしても底面は、25mm x 16mm 。サイズ的には DRAM も覆って良い感じなのだが、周りの部品と干渉する。特に DRAM 横の コンデンサは、絶縁しないとダメ。また DRAM は H2 より背が低い。結構頭がいたい。さらに、16mm 高となると、一番背が高い部品になる。2〜3 mm ケースに合わせて削らないと。すごく面倒な予感。


    探してみると、厚いシリコンパッドがある。Heatsink Conductive Pad でいろいろ見つかる。1mm のものが多いが、3mm のものまであった。切れ目を入れてあるものも多い。とりあえず 25mm角にカットした 1mm のものを heatsink の下に引いて、ケースに接触するように上にも置くことを考える。絶縁は問題ないが、ヒートシンクがしっかり固定されない。でも絶縁することの方が重要だから、それは別途検討しよう。逆にそうなると、ヒートシンクの形状より高さの方が気になる。11mm ぐらいが丁度よいのかも。H2 の厚みが 1mm として シートの 1mm 加えると 13mm 高ぐらいになる。この上にさらにシートを置くのである。40mm角で 11mm というのが安価に出てるんだが、切って使うか。 

    私の皮算用では、これで 26 mm x 18mm ぐらい。まぁ秋月のと大差ない。高さを調整できるなら、秋月の方が良いと思うが、絶対に綺麗に仕上げられない自信がある。私には無理。40mm のを切った場合、汚いのは2辺の下側だけ -- 目立たないように出来るだろう。なお、切るのにクラフトのこを使うつもり、2.2mm ぐらいならいける。
    Zero の写真の赤枠に置くつもりなわけだが、いくつかメモ。SDRAM 横のコンデンサは、SDRAM より背が高く本当に絶縁注意。大き目の2つのインダクタは、絶縁の問題はないとは思うが、力を加えたりすると欠ける恐れがある。結局は触れないようにしないといけない。触れて良いのは、パルストランスのみ。ここに引っ掛けるようなことを考えても良いかも知れない。

    さて、どうやって固定するか? 弾力性があって、ネジのところで止められそうなもの --- まさか輪ゴム? 確かにシリコンの輪ゴムは、売っている。silicone rubber rings で見つかったので、試しに 60mm のをひとつ買ってみる。... あまり考えないで買ったが、60mm というと、Zero の外周ぐらい。1本をうまく引っ掛けるわけか。
    amazon でも耐熱輪ゴムという名称で同じものを売ってた。 「通常のアメゴムは3倍程度伸びますが、本製品は2倍程度まで伸びます。耐熱性と伴に対候製もあり、直射日光、雨、風の当たる場面でも使用可能です。」 とのこと。やっぱりパッキンじゃなくて輪ゴムだったのか。

    これ、太さが 3mm もあって ネジに引っ掛けるのは無理。1mm か 1.5mm ぐらいの やつを探してみた。
    色々あるのだが、OD 28mm 1.5mm φ が安かったんで選択。o ring の材質は NBR っぽい。多分延ばさない状態で 4 cm ぐらい。これをクロスして掛ければ良いんじゃないか? まぁ延びるものかどうかさえ良くわからないんだけども。

    追記:40x40mm 11mm厚のヒートシンクは、新たに買うまでもなく持っていた。別件で banggood で買ったのだった。これを切ってみた。道具は百均で買ったクラフトのこもどき。先に見つかったので。

    簡単というほどでもないが、切りだすのは、たいして苦労はしなかった。スジを深く掘って折るのみ。ただ、フィンが多少曲がってしまった。修正は最後の最後。
    だいぶ慣れたところで書いておくと、掻き出すようなイメージでゆっくりと引くのがいい感じ。


    まぁこんな風に置きたいわけだ。意外とインダクタとの干渉が少ない。--- あぁ予定と違うところを切ったのか。まあいいや。後は、どうやって切り取るか?
    ついでに書くと、パルストランスに引っ掛ける案も破棄 --- とどかないだけでなく、実際に引っ掛けると足と接触する恐れがある。


    副産物の切れ端の方がしっくり来る。少し整形して、(熱伝導性)両面テープで貼るほうが良かったりして。

    整形は、ダイアモンドシャープナー #150 ってのを使った。ハンドグラインダー用の円盤で割と安価。適当に削って マジックで塗っておしまい。削るのは切るより大変。途中でめんどくさく ....

    やっと気が付いた。aliexpress で良くあるやつと banggood で入手しておいたのは別物。いや正確には加工が別物。14-5 mm で切りだすには、banggood のやつが具合が良いようだ。

    結論:切れ端の方を貼る。これでいいや。

    ケースに入れる場合、ヒートシンクを向かい合わせにして、ブロック状にする。そのときに、フィンどうしを接触させるように詰め物をする。詰め物は、1mm のシリコンシート。ブロックにしたときの高さは、ちょうど良いかんじ。上面にシリコンシートを置いてケースに接触させる。

    大きい方は、SDRAM との段差を埋めるのがめんどくさい。SoC だけ両面テープで貼って 段差の分はシリコンシートとかでも良いような気がするが、厚みが合わないと本末転倒になるような気がしてきた。

    ところで、両面テープ付きのヒートシンクなんかで、良く 3M のロゴを見る。良く見れば 9448A と書いてあったり。どうもこれ、ただの両面テープではないのか? 両面不織布粘着組織テープ 0.15mm ぐらいの説明しか見つけられない。薄いのが特徴? とりあえず、3M9448A で見つかる 14mm 角のものを注文してみた。


    ESP32 関係で探していたら、良さそうなショップを見つけた。
    Top Electronic Company というショップなのだが、MINI 360 DCDC コンバータや、CP2102 モジュール を初めとして、ここで紹介したほとんどのモジュールを扱っている。値段も最安クラス。RTC モジュールも、高精度の DS3231 + EEPROM が $0.5 とか。

    このショップ探検するだけで楽しいかも。
     https://www.aliexpress.com/store/1266255/search?SearchText=MINI+360
     https://www.aliexpress.com/store/1266255/search?SearchText=CJMCU
     https://www.aliexpress.com/store/1266255/search?SearchText=NEO-6M
     https://www.aliexpress.com/store/1266255/search?SearchText=OLED
     https://www.aliexpress.com/store/1266255/search?SearchText=DS1307
     https://www.aliexpress.com/store/1266255/search?SearchText=DS3231
     https://www.aliexpress.com/store/1266255/search?SearchText=INA219
     https://www.aliexpress.com/store/1266255/search?SearchText=mpu6050

    ほとんどではなく、全部あった。
     https://www.aliexpress.com/store/1266255/search?SearchText=MICRO+USB
     https://www.aliexpress.com/store/1266255/search?SearchText=infrared
     https://www.aliexpress.com/store/1266255/search?SearchText=ESP-32
     https://www.aliexpress.com/store/1266255/search?SearchText=ov7670
    きりがないから、そろそろ辞めるが、まぁいろいろあるものだ。

    あぁ、まだまだある。
     https://www.aliexpress.com/store/1266255/search?SearchText=9G+SG90
      Pan/Tilt Camera 台とか。
     https://www.aliexpress.com/store/1266255/search?SearchText=4WD
      4WD Smart Robot Car -- エンコーダ付いてる!
     https://www.aliexpress.com/store/1266255/search?SearchText=bluetooth+receiver
      BT アンプとか。


    NX3DV221 を見つけて USB 2.0 までなら切り替えられると喜んでいたわけだが、CBTL01023GM という上位互換(たぶん)のチップがあった。digikey で単価 138円とあまり高くない。同じ XQFN10 アナログスイッチなのだが、性能が違い SATA 6 Gbit/s が通せる。SATA などケーブルで接続するような規格だし、意外と電子工作で扱えるかも知れない。

    とりあえずメモだけしておく。
posted by すz at 18:54| Comment(0) | TrackBack(0) | 日記

2016年10月26日

ESP32について(開発ボード設計)


banggood で プレセールスのESP-32S モジュールを発注した。次はこれを使うためのボード。

前記事で、だいたいのことは説明した。ここでは eagle を使って基板を発注するところまで。

eagle 7.7
以前は eagle 5.6 を使っていた。久しぶりの使用になる。基本は同じだが忘れてしまっているので、結構苦労した。なにやらファイルフォーマットも変わっているようだ。もう 5.6 には戻れない。

Eagle用DRUファイル と CAMファイルは、スイッチサイエンスさんのところから入手。

作ったのはこれ
 ・suzbrd_wroom32-v1.0-out.zip 発注ファイル
 ・suzbrd_wroom32-v1.0.zip eagle ソース
v1.0 の問題点
 ・ MINI-360 ボードの幅が 0.5mm ほど合ってない(フットプリントが狭い)。
 ・ HX1001 を使う場合、インダクタのフットプリントが小さく CD43 は厳しい。




スイッチサイエンスさんのとこに発注すると、1,389円+1080円で作成することが出来る。だが、今回は久しぶりに Fusion PCB を使ってみることに。$9.9 + 送料 $6.13 - 0.99(10%off) だった。

ところで、気が付いたのだが、10cm x 10cm が意外にも安い。5 枚 $18.9 ,10 枚 $21.9 。以前もそうだったのかも知れないんだが、5cm x 5cm に拘らなくとも良いような気がしてきた。

suzbrd_wroom32-v1.0

ちょっとボードの説明。モジュールは裏に付けることにした。理由は配線の問題。ADC があるピンを A0-A5 に割り当てたかった。左下にある長方形は、DC/DC モジュール。これを使わずに、DC/DCコン IC の HX1001-GES を載せることも出来る。普通に使う分には、どちらでも良いとは思うのだが、RTC もあることだし、バッテリー駆動での消費電流に差が出るものなのかどうか見てみたい。

4pin コネクタは、SPI Flash 書き込み用。DTR - 470Ω - IO0 , DTR - 0.1u - EN という接続にしてみた。DTR を L にすれば、IO0 が L になり、 EN が L → H となるはず。

 ・http://www.espressif.com/en/products/hardware/esp32/resources

ここにある Flash Download Tool には Python 版もあるので、タイミングの問題でダメだったりするのであれば対応できるかも。

http://iot-bits.com/esp32/esp32-flash-download-tool-tutorial/
から抜粋

Pull GPIO0 LOW by pressing the "program" button on your development board. Reset the ESP32 by pressing the EN button momentarily while holding down the IO0 button.

というわけで、IO0 を L にして、EN を↓↑ ... 行けそうな気がする。

ついでにメモ

0x1000: bootloader.bin
0x4000: partitions_singleapp.bin
0x10000: .bin

bootloader というものが 0x1000 にあるわけだから、こいつ次第で、どこからでも -- Wifi や BT からでも -- プログラムを download できると思われる。で、download を指示するには、io0 は使えないわけで、違うボタンがあると良いかも知れない。



Arduino との関係

この基板、5cm x 5cm で作るという条件のため、arduino のシールドがそのままでは、使えない。

ユニバーサル・シールドで言うと、赤い部分がこの基板のコネクタの位置になる。ユニバーサル・シールドの内側に接続して、外側にピンソケットを付けると言った変換基板を作らないといけないのだ。

あるいは、割り切って普通のユニバーサル基板を使うとか。ただし、秋月C基板をタテには付けられない。昔の P-00189 でも一列足りないのだ。ヨコになら付けられる。まぁ、すなおに P-06877 とかを使っておけば良いか。

基板製作の価格について

そういえば、Fusion PCBITEAD があるのだった。送料もある程度するのだが、分からないので価格だけメモ。
      5cm x 5cm  5cm x 10cm  10cm x 10cm
Fusion PCB $9.9     $18.9     $21.9
ITEAD      $9.9     $14.9     $19.9

いずれも 10枚の価格。Fusion PCB は、5 枚だと、$9.9 ,$15.9 ,$18.9

DC-DC コンバータ


5V → 3.3V にこのモジュールを使えるようにしている。サイズは、17 x 11 mm で、ピン間は 長辺 0.6 in , 短辺 0.35 in 。aliexpress で "Mini 360 Step Down Module" で検索すると見つかるのだが、10個 で $3.5 とか冗談のように安い。banggood では 10個660 円 -- それでも安く感じる。

なにか問題があって安いのか?と不安になったりするのだが、写真見る限り、不安なのは半固定抵抗ぐらい -- 経年変化や振動で電圧が変わるのは困る。基板の写真も新旧2つのバージョンがあって、バッタ品とかというものではない模様。(古いのは、分圧抵抗用のパターンあり。)

Input voltage: DC 4.75V-23V
Output voltage: DC 1.0V-17V (Adjustable)
Output current: Rated current 1.8A (3A MAX)

スペック的には、12V 入力も出来て 1.8A 出力 。しかも電圧を設定できる。--- 使いでのありそうなモジュールだ。採用チップは、MP2307 -- データシートも入手できるが、それによると 連続 3A ピーク 4A とのこと。

半固定抵抗を取り外し、抵抗を付けることが出来れば、固定出力にすることは可能。FB は 5番ピンで 、FB 電圧は 0.925v。OUT - R1 - FB - R2 - GND として、 3.3V にしたければ、R1 = 26.1k, R2 = 10k が推奨だそうだ。ただ、写真を見ると R1 = 8.2k(822) が使われている。例えばこれを外して 1608 の 27k に付け替え、半固定抵抗を取ったあとのパターンを利用して 10k を付ける。(ただし、1% 品を使用しないといけない。)

データシートの回路図を元に分かったことを加えるとこういう感じ。ちなみに、左の抵抗は、01D で 100k のことらしい。青で書いたのは、スィッチングダイオードの追加で、5V 入力 3.3V 出力のような、低電圧入力・高電圧出力のときに効率を上げるとのこと。ところで、無負荷時の消費電流は多めらしく 15mA ぐらい常時流れるようだ。すなわちバッテリー駆動には向いていない。

ついでだが 12V 入力で 5v + α にしたい場合、R1 に 47k を使えば 5.27V -- タブレットの充電では、少し電圧を上げた方が具合が良いのである。AC アダプタだと調整出来ないから、こういう用途にも使える。このモジュールは小さいので、うまくすれば、 USBシガープラグに仕込めるはず。過電流保護があるから、ヒューズは取ってもかまわない。Thermal Shutdown 機能も一応付いている。

とか書いたものの、ダイソーの USBシガープラグも変わっているようで、300円のやつ(2.1A)とか 100円の新型 の分解記事がみつかった。特に 300円のやつは、5.3V 付近で 2.2A 流せている。すなおにこれを使えば良いかな。

USB シリアル


"CJMCU CP2102" で検索すると見つかるモジュール。banggood では 240円だが、aliexpress などでは $0.99 のものも。これ使っておけば良さそう。... というか、$1 なら、5V 電源 コネクタとして使っても安い。上記の DC-DC コンバータと合わせて使うとブレットボードの応用でも便利そうに思える。
追記:micro USB の DIP アダプタは、10個で $1.13 だった。 5V 電源 コネクタははるかに安かった。


aliexpress で たまたま、お安いカメラモジュールを発見。ov7670 というセンサを使ったもので、ピンヘッダで出力されている。お値段は $3.5 。

これを扱ってるのは、Top Electronic Company というショップなのだが、ESP32 関係もいろいろと扱っている。さらには、MINI 360 DCDC コンバータや、CP2102 モジュールも。このショップ探検するだけで楽しいかも。

さて、本題。カメラモジュールを扱うデモのソースコードが公開されている。ターゲットは ov7725 ではあるが、ov7670 もデータシートがあるので、扱えるだろう。
 https://github.com/igrr/esp32-cam-demo

かなり楽しみ。


11/17 基板がキター。予約した、ESP-32S は既に到着済み --- もっとも来たのは WROOM-32 だったが。早速と言いたいところだが、先に OPi Zero のほうをやりたい。

追記 2017/5/8

電源電圧について

WROOM-32 は、2.2V 〜 3.6V となっているが、SPI FLASH が GD25Q32 というチップで 2.7V 〜 3.6V らしい。低電圧で使うのは問題があるかも。

カメラモジュールを使う場合、ov7670 は安くて良さそうなのだが、これの電源電圧は 〜 3.0V 。3.3V は定格を超えるので注意。ov7725 は、画像が綺麗なうえ 3.3V で使える。2M ピクセルの ov6240 というのもあるが、Orange pi 用が $5.9 で最安のようだ。ただし、ESP32 ではバッファできるだけのメモリがなく、使うのが難しい。

以上のことを踏まえると、3.3V 固定の HX1001-GES は望ましくなく、抵抗が必要な 可変電圧のタイプ - SY8009B などを使えたほうが良さそうだ。

    SY8009B は、Orange pi で良く使われており、出力が大きいうえに、HX1001 より安い。10個で $1.83 とか。供給電圧が低い場合、duty が 100% まで行くので、供給電圧がドロップした場合に FET の抵抗分だけになる。非常に良さげな DC-DC コンバータ IC 。

OTA について、

ESP32 は、OTA (On The Air) でファームウェアを更新できる(ようにすることが可能)そうだ。最初の書き込みには、シリアルが必要だが、一回 OTA の仕組みに乗ってしまえば USB シリアルなどは不要になる。付けなくて正解だったようだ。ただ OTA を指示するボタンが欲しいところ。

新基板

さて、基板製造を検討したところ、最近は 5cm x 5cm 以内に収めなくともよさそうで、Elecrow などは、10cm x 10cm が 送料込みで $12.86 (1500円ほど) だと分かった。そこで、Arduino UNO の ディメンジョンを参考に少し大きくすることに。

    基本価格は、5cm x 5cm が $9.5 + 送料 $4.8 , 10cm x 10cm が $13.5 + 送料 $10.2 なのであるが、Special Offer で 10cm x 10cm が $9.5 + 送料 $3.36 というのがある。ちなみに Fusion PCB は、10cm x 10cm が $4.9 + 送料 $14ぐらい。

まずは、ピンソケットを正規の位置に付けられるようにコネクタを一列追加。取付穴も UNO と同じ位置にして、そこまで下を広げる。部品も下にずらして、アンテナを飛び出さないようにする。

回路の変更としては、SY8009B を使えるように、出力を分圧して FB に入れる。HX1001-GES を使う場合は 0Ωが必要。また ボタンを付けた。ただし、どのピンを使うのが良いのか決めかねたので、パターンのみ。



 ・suzbrd_wroom32l2_v1.1e-out.zip 発注ファイル
 ・suzbrd_wroom32l2_v1.1e.zip eagle ソース

    発注は 5/6 (土)
    2017/05/10 13:08 引受 CHINA
    2017/05/11 11:10 国際交換局から発送 GUANGZHOU CHINA
    2017/05/14 22:33 国際交換局に到着
    2017/05/15 09:00 通関手続中
    2017/05/15 10:42 国際交換局から発送
    2017/05/16 13:59 到着 配達予定日:5月17日
    もう、到着。
posted by すz at 02:06| Comment(0) | TrackBack(0) | ESP32

ESP32について(IO関係)

さて、ESP-WROOM-32(ESP-32S) というモジュールを入手したとして、どうやって使うのだろうか?開発用基板を作るつもりなので、それに最低限必要なことを整理していきたい。

I/O ピンの機能について
I/O ピンは、IO0 〜 IO39 がある。この I/O ピンの機能を、いくつかから選択する(IO MUX)。その中には GPIO もあるし、そのピンにだけ割り当てられた機能もある。 GPIO を選択すれば、GPIO に割り当て可能な機能から選べる(GPIO Matrix)。GPIO に割り当て可能な機能は、なんと 229 種類もある。

それとは別に boot の動作に必要なピン、SPI Flash に接続されたピンがある。これらの使用には制限がある。

使えない機能・使わない機能
まず、イーサネットを使いたいとは思わないので無視する。次に SPI Flash に接続されたピンが必要な機能は使えないと決め打ちしてしまおう。

SPI Flash に接続されたピンは、SD1 とか SD 関係のようで、調べてみると SD slave が使えないようだ。それ以外だと、Parallel QSPI という機能が使えないようだ。HS1_DATA7 とかの信号名があるので、8bit までのSPI らしいが、使うとは思えないので無視しよう。

しかしこれらの機能はどうやって使うものなのだろう? HOST との接続が前提で 常に download boot を使うのだろうか?気にはなるが、他の機能の把握が先なので忘れてしまおう。


ピンの割り当てが決まっている機能

SD host
 IO2 SD_DATA0
 IO4 SD_DATA1
 IO12 SD_DATA2
 IO13 SD_DATA3
 IO14 SD_CLK
 IO15 SD_CMD

JTAG
 IO12 MTDI
 IO13 MTCK
 IO14 MTMS
 IO15 MTDO

いきなり SD host とぶつかっている。と...なると JTAG はどうやって使うのだろうか?それはともかく、無視したのを除くと、これとアナログ系。

IO32 32K_XP, (32.768 kHz crystal oscillator input)
IO33 32K_XN,(32.768 kHz crystal oscillator input)

RTC 機能があり、Deep-sleep mode (RTC timer + RTC memories) で 20 uA。センサーからの入力で起動する設定だと、25 uA だそうだ。

IO36 SVP
IO39 SVN

60dB gain の ADC だそうだ。

IO25 DAC_1
IO26 DAC_2

8bit DAC が2つある。(10bit かも?)

IO0,IO2,IO4,IO12,IO13,IO14,IO15,IO27,IO32,IO33 TOUCH0-9

タッチパネル 10個まで。

IO34 ADC1_CH6
IO35 ADC1_CH7

上記のアナログ関係のピン以外で ADC があるのはこの2つ。ADC は、12bit SAR だそうだ。

後はすべて、制限なしに GPIO として使えるのかというと そうでもない。

IO0 1=SPI Flash Boot , 0=download Boot (with IO2=0)
IO2
IO12(MTDI) 0=Voltage of Internal LDO (VDD_SDIO) 3.3V
IO15(MTDO) 1=Debugging Log on U0TXD During Booting
IO3(U0RX) download Boot
IO1(U0TX) download Boot

これらが、重要な制限。
IO0 , IO3(U0RX), IO1(U0TX), と EN の4つを使って Arduino 的な使い方が出来る。

GPIO に割り当て可能な機能

SPI (master,slave) x2
UART x3
I2C (master,slave) x2
PWM x4
LED PWM (16ch)
RMT(IrDA, 8ch)
I2S x2 (+LCD,camera)

詳細までは把握できてない。... が、一番分からないのが RMT(IrDA) 。IrDA のために設計されて 38kHz フィルタも内蔵されたものなのだが ... 何故 8ch もあるのか? なにやら気になる。



以上を踏まえて、開発用ボードを作ることを検討してみる。

基本は、ピッチ変換ボードに 3.3V電源 を付けたようなものを考えている。あと回路を少々付加。でもUSB シリアルを内蔵するのは、やめようかと思う。今 SPI Flash 書き換えには必要なんだが、いずれは、他の手段が充実して来るだろう。使うとしても (ラズパイのような) Linux SBC で開発するなら USB 変換は不要だったりする。

電源回路
Wi-Fi Tx 使用時で 260mA と書いてある。それだけで済むとは思えないので、余裕を持った電源回路を組み込もう。
最近は、DC/DCコン モジュールが安く買える。MP2307 採用の これなどは、10 個で 659円。

その他、中華PMP を色々調べたときによく使われていた、中華IC の HX1001-GES も使ってみたい。これは、aliexpress で安価に入手できる。

形状
USB シリアル付きで ピンが両サイドに出ている開発ボードが多いが、どうも使いにくそうな。Arduino 的な形状でピンソケットを付けるのが良さそうだと思える。
以前 5cm x 5cm の基板にしたものを作ったので、それをベースにしようかと。
ピン割り当て
A0-A5 , D0-D13 までは決まった。

A5 IO36 SVP
A4 IO39 SVN
A3 IO34
A2 IO35
A1 IO32 32K_XP
A0 IO33 32K_XN

D0 IO23
D1 IO22
D2 IO21
D3 IO19
D4 IO18
D5 IO5
D6 IO4 SD_DATA1
D7 IO2 SD_DATA0

D8 IO15 SD_CMD
D9 IO13 SD_DATA3
D10 IO12 SD_DATA2
D11 IO14 SD_CLK
D12 IO26 DAC_2
D13 IO25 DAC_1

付加回路

32k 水晶 パターンだけ付ける
USB
 USB D- IO16
 USB D+ IO17
電源コネクタとして MICRO USB を使うが、D-/D+ に一応 IO を割り当ててみた。使えるようになるかも知れない。逆に ピンコネクタ側から電源を供給して HOST として使えないかとも思っている。

SPI Flash 書き込み
ボタン EN,IO0
IO3(U0RX) download Boot
IO1(U0TX) download Boot

DTR L での EN ↓↑ IO0 L

正規の回路が別にあるのだが、DTR + RTS が必要で利便性に欠ける。ちょっと使えるかどうか自信がないが DTR のみのやつを付けてみた。もしこれが上手くいくなら、IO0 のボタンを他の IO に変えられるよう工夫も入れる。

LED(L で点灯) IO27,IO10(SD3)

SD3 は、SPI Flash の /WP に接続されたピン。書き込み時に光るかも。ダメだとしても /WP なら適当に使っても大丈夫そう。


RMT(IrDA, 8ch) について。

ちょっと説明を見てるのだが、波形を生成できる機能のようだ。
メモリ上の 32bit ディスクリプタで、ON 時間(1 - 32768 clock) と OFF 時間(1 - 32768 clock) を指定する。それが最大 512 エントリの配列になっている。clock には、APB_CLK が使用でき 80MHz も可能。

そして、受信の方は ON 時間/OFF 時間 を測定するわけだ。

うまく使えば ΣΔ DAC にもなりそうだし、USB 受信で フレームを取り込むのにも使えるかも知れない。(low speed だと、1フレームの最長は 109bit )
posted by すz at 02:00| Comment(0) | TrackBack(0) | ESP32

ESP32について

ESP8266 というチップをご存じだろうか? Wifi が自由に使える マイコンで、arduino IDE を開発環境として使える。しかも 技適ありのモジュールが秋月で 500円だかで安価に購入できる。まぁ素晴らしいものだとは思うが実はあまり興味を引かなかった。ところが、ESP32 という次の世代のチップが最近出てきた。調べていくと、なにかと凄いのである。実に興味深い。

なにを凄いと感じたか書いてみよう。

1)Bluetooth をサポート。
自由に BT 装置を作れる --- そんなマイコンは初めてのような。しかも、技適取得も期待できる。Wifi だけだと消費電力が大きそうだが、BT だとバッテリー駆動もできそう。また、BT には、プロファイルというものがある。それに従った装置ならば、既存のOS、既存のアプリと組み合わせて使えるのだ。無線のUSB みたいなものと思えば、色々出来そうではないか。

2) I/O ピンが多い、メモリが多い。
ESP8266 は、I/O ピンが少なくてがっかりしたのだが、かなり増えて、ざっと見 30 ぐらいはある。メモリについても SRAM 520 KB と実に多い。プロトコルスタック用に ROM を448 KB 積んでいて、使える RAM を圧迫しないように工夫もされている。

AVR では、あまりのメモリの少なさ、それに対して出来ることの多さに驚いたものだが、そのノリで使ったら、余りまくりそう。かと言って Linux 動かすほどの メモリ量ではない。だが、逆にそれも良い。Linux が載るなら載せてしまうだろう --- 自由なようでそうでもないのだ。

まぁ Linux が載る Rasberry pi みたいな SBC も、それはそれで興味はある。ただ、Linux が動くだけでは面白くない。PC の Linux では出来ないこと − そういうものを見つけたらトライしてみたいとは思っている。


3) ペリフェラルの多さ、I/Oマッピングの自由度。
機能について、こんな風に列記されていたりするのだが。。。

capacitive touch
ADCs (analog-to-digital converter)
DACs (digital-to-analog converter)
I2C (Inter-Integrated Circuit)
UART (universal asynchronous receiver/transmitter)
SPI (Serial Peripheral Interface)
I2S (Integrated Interchip Sound)
RMII (reduced media-independent interface)
PWM (Pulse Width Modulation).

RMII があるのは驚きだが、これでも全然説明が足りない。なんと CSI カメラインターフェイスや (24bit バラレルまでの)LCD インターフェイスがI2S の機能のなかに含まれていたりする。列挙されていないが、SD Host 、SD Slave もある。AVR なんかでは、タイマー機能の確認は真っ先にするものだが、これも記載されていない。調べてみた限りでは、64bit タイマーが 4本あるようだ。他には IrDA もある。地味ではあるが、便利かも知れない。

実に沢山あるわけだが、いくつかのものは、完全に自由に I/O ピンに割り当てられる。AVR では、ピンアサインをどうするか頭の痛い問題だった。PIC32MX なんかでは、選択ができたが、入力と出力でルールが違い、かえって混乱した。こいつは、I2C 、UART 、SPI 、I2S 、PWM を完全に自由に割り当てられる。なにの機能が同時に使えるかすぐ把握できるのは非常にありがたい。

性能とかの観点で見れば無駄とも思える機能ではある。しかし、こいつは 40nm のプロセスルールで作られている。 40nm というと、普通は GHz クラスの CPU を作れるのだが、160 or 240 MHz に抑えてこういうものにリソースを振り分けている。なんとも素晴らしい無駄遣いではないか。

4) USB が ... ない。
多くの人が欲しがると思われる USB がない。組み込もうと思えば簡単に組み込めただろう。あえて外して見せて、「無線で出来ることを有線でやらなくも良いだろう」と言ってるようにも思える。それに乗ってみるのも悪くはない。

ただ、既存の USB装置を無線化することを考えると、あって欲しかったとも思う。これについてはソフトUSB の可能性がある。ESP8266 で実装した人がいる。ESP32 は デュアル Core なので、実行クロック数がコントールできず 無理かと思っていたが、そうでもないかも知れない。少なくとも RAM については、バンクが競合しない限りウェイトが入らないとか。

というわけで、かなりのインパクトを受けた。値段もあまり高くないようだし、しばらくこれで遊んでみたい。

入手性について


遊んでみたいわけだが入手できなければ話にならない。

中国国内では、チップ単体ですら入手できるようだが、日本で使う限り技適は無視できない。となると少なくともモジュールになったものを入手しないとならない。

現時点で購入可能なモジュールはいくつかある。
Ai-Thinker ESP3212 Module
真っ先に入手が可能になったモジュールで Seeed Studio で $7 で販売していた。だが、ESP-32S に切り替わるそうで既に Ghost だそうだ。

Ai-Thinker ESP-32S Module
Banggood でプリセール中 $9 。これは、今だ出ていない 正規版モジュール ESP-WROOM-32 の互換品。技適はない。


ESP-WROOM-32
ESP8266 の ESP-WROOM-02 は技適を通してきたから、これも期待できるのだが、今だアナウンスがない。予定では9月のはずだったのだ。
10/25 olimex で 6 EUR で発売開始。ただし、写真では技適はおろか FCC/CE マークも見えない。


というわけで、ESP-WROOM-32 待ちではあるが、ESP-32S で試作が出来るのが現状。

色々と書いてきたが、現時点では、
 ・http://esp32.net/
 ・http://www.espressif.com/en/products/hardware/esp32/resources
ここに情報が整理されているようだ。興味が湧いたならチェックしてみて欲しい。
2016/12/04 追記

ついに、技適マークが付いたモジュールになった。もうすぐ秋月で販売されるだろう。


注意:現時点で、開発環境は使えるものの、完成していない。Bluetooth は未だらしい。ドキュメントも作成途中のようで、十分な情報が公開されていない。ちゃんと使えるようになるまで、時間がかかる。

さて、入手したとしても、物理的な問題においても、すぐに使えるわけではない。 --- ピッチ変換基板をなんとかしないと。次回はこれについて考察してみよう。
posted by すz at 01:53| Comment(0) | TrackBack(0) | ESP32

2015年07月05日

Android リモコン

Android で使えるリモコンについての覚書。

最近は、Android 関係に興味があって、いろいろ調べたり、買ったりしている。今回は、まず買ってしまった変なものの紹介から。


aliexpress で これを見つけて、説明文すら読まずに飛びついてしまった。変な本体とリモコンが2つ、なんだろうこれ? $10.98 と高いものではないし、ハンドルに付けるリモコンが良い感じ。bluetooth という文字が見えたので。

説明文を読めば、本体は、A2DP で Android と接続するもので、FM トランスミッタでカーオーディオに飛ばす装置だと分かる。microSD の音楽を鳴らしたり、ハンズフリーで電話することも出来る。2つのリモコンは 赤外線。

私は車は持っているのだが、カーオーディオはない。Android タブレットで良いかと思って付けなかった。だから FM トランスミッタ があっても仕方がなかったのであった。

ただ、ハンドルに付けるリモコンだけ使いたい。

イヤホンジャックを使ったリモコン



 ・https://source.android.com/accessories/headset-spec.html
 

ここに、ちゃんとした定義が書いてある。ボタンA は Short Press/Long Press/Double Press に対応した 多機能キーで、ボタンB/C は Vol+/Vol- 。

こんな単純な回路でいくつかの制御が出来ることになっている。それに加えて機能をカスタマイズするアプリがあるようなのだ。

ひとつは、Headset Button Controller(Trial) まさにそういう目的のアプリ。これは有料版とトライアル版がある。

もうひとつは、iKey/Pressy といった Aボタンのみのものを 制御するアプリ。KeyCut というアプリは、1-9 Short Press/1-3 Long Press に対応している。(ただし、Long Press は動作が怪しそう)

9 Short Press など人が押すものではないと思ったが、機械で押すのなら話は別である。-- そう、「赤外線リモコン → イヤホンリモコン変換器」が作れそうなのである。AVR だと学習リモコン用のソースコードがありそうだから、多分作るのは簡単だろう。

BlueTooth Shutter を使ったリモコン



そういえば、カメラシャッターというリモコンもあった。Aliexpress でも安価なものがある。これにもカスタマイズするアプリがあるようだ。Blue Genius というアプリは、6 つの機能を割り当てられるようだ。ボタンを押すだけの操作だから、BlueTooth 化も簡単そうなのである。

機械で操作するには、種類がすくないのだが、もし自分でアプリが作れるようになったら、もっと増やせそうではある。可能性があるということで覚えておこう。

MIC端子からの電源供給


MIC端子には、2.2V に 2.2 kΩのバイアス抵抗が接続されているようだ。供給電力は少ないが、IC を駆動できる可能性がある。赤外線受光ユニットだけでも動かせれば、第三の選択がある。

 ・http://s2jp.com/2012/11/make-soundir-receiver/

なにやら、Android 単体で 赤外線受信を成功させた人がいるのである。感度が悪すぎて諦めたようだが、もし赤外線受光ユニットが動作するのであれば、実用的に使えるかも知れない。アプリが作れなければ絵にかいた餅であるが、一応記しておこう。

ちなみに、
 ・http://www.jonki.net/entry/20120725
ここの人は、ELECOMのMPA-IP353M3 を分解しているが、なにやらICが入っている。そうであれば電源を供給しているはず。回路図を起こしてみれば、どうやっているか具体的に分かるのではないか?

 ・http://jp.blog.reinforce-lab.com/2010/11/iphone.html
さらに詳しく考察している人がいた。マイク端子からは1.8V 0.3mAが得られるとのこと。イヤホンに出力して電力を取る方法もあるそうだ。こちらを採用すると 1mA ほど取れるらしい。

コメントからたどると、Hijack というものが... これはなんと、トランスを使って音声出力を整流している。

この情報をもとに、秋月の受光モジュールを眺めてみる。
GP1UXC41QSだと MAX 0.6mA (typ. 0.3mA) 。電源電圧は、2.7V 〜となっている。一番消費電流が少ないが、ちょっと厳しい感じ。

おわりに


今回はこれだけ。もともとは、HID で制御しようかと思っていたのだが、もっと汎用性がある方法もあった。作るのも簡単そうである。自分でも作りたいとは思っているが何時になるか分からない。この記事はネタ・フリーである。これは!と思った方は是非作ってみて欲しい。
posted by すz at 10:39| Comment(0) | TrackBack(0) | 日記

2015年06月28日

USBee AX pro

Dealextreme で $9.99 の 安いロジアナ(SKU:148945)を買ってみた。



EZ-USB FX2LP CY7C68013A に入力バッファを付けたもので、USBee AX pro clone として 色々と出回っている。例えば、aliexpress の これなどは、$5.90 で売っている。



Dealextreme にしたのは、レビューに色々書いてくれているから。だが、良く読めば aliexpress のでも良かったような気がする。


これがよく見る内部写真。実際に来たものは、CY7C68013A が QFN に変更になっていた。他の部品配置・パターンは全く同じ。
入力との間に集合抵抗が入っている (101 - 10Ω)、8pin のIC は、I2C ROM 24C02 (256B)。入力バッファは、HC245。



アプリの選定


さて、問題の1つはアプリ。一体何を使うのだろう? レビュー見て混乱してたのだが、どうやら3つの選択枝があるらしい。

1) USBee 公式サイトで アプリを購入。

使えるらしい。が、レジストするのに $49.9 もするようだ。高いのでパス。

2) VID/PID を (0925/3881 に?) 書き換えて、SALEAE 24M_8CH 用のアプリを使う。

VID/PID の 書き換えのために 開発キットを導入するとか面倒そう。で、アプリが有償で高価だったりすると、試す気もなくす。これ以上、調べないでパス。
 ・https://www.saleae.com/downloads
とは、書いたがここから、公式アプリがダウンロードできる。一応メモ。

3) sigrok/pulseview を使う。

なんと、オープンソースのアプリがあるのであった。プロトコルも開発されているようなので、これを使うしかないだろう。それが結論であれば、何を買ってもなんとかなりそうだ。git の tree を見ると android 版もあるようだ。この pluseview は、色々なハードに対応している。あの ZEROPLUS LAP-C もリストに入っている。とても興味がわいてきた。

あるいは、CY7C68013A ボードで 入力バッファがない代わり I2C ROM が 16KB の これ なんかでも良いのではないか?



さらに言えば、FTDI のチップを使って、SYNCBB あるいは 単なる BitBang で取り込むのも 改造すれば可能ではないか! HI-SPEED 対応の FT232HL とか。FULL-SPEED でも FT232X が バッファが少し多くなっていて 往年の FT232RL より有利になっている。取りこぼしがどれぐらいあるかで、どこまで使えるのか? というのが不安材料。あと、ライブラリ。WinUSB(libusb) + libftdi という組み合わせになりそうで、やや不安。

ハードウェアの問題


これもレビューから。
USBee AX pro clone は、3.3V 専用で 5V トレラントではない。

 ・100 Ωを直列に入れる。
 ・74LCX245 に交換すると 5V トレラントに出来る。

という解決策が提示されている。

消費電流が多いため、バスパワーの HUB では、うまく動作しない場合がある。AC アダプタを付けるタイプの HUB を使うこと。

Windows版 インストール


ここに書いてあることをやってみる。

1) Zadigのダウンロードと実行

これは、WinUSB などにデバイスを登録するツール。USBee AX pro clone を接続して実行する。操作は簡単なものだが、他のデバイスも置き換えてしまうこと出来るので、注意。


Windows 8.1 で試したが、最初 "Install WCID Driver" を押す。そうすると USB のリストが出る。VID/PID も自動で設定されて、WinUSB に登録する。

今回は関係ないが、WinUSB 以外に libusb-win32 と libusbK (って何?) に対応している。

2) pulseview-NIGHTLY-installer.exe のインストール


インストールするだけで、設定などほとんどない。デバイスもちゃんと認識された。おわり。ちなみに、sigrok-cli-NIGHTLY-installer.exe は CUI 版。Linux で使う場合は、こっちも便利に使えそう。

アンドロイド版


Android でも動くらしいが、OTG に対応した端末でないと当然ダメだろうし、OTG と言っても HI-SPEED に対応していないと意味がない。そして、消費電流が多いというのが気になる。相当端末を選ぶのではないか? しかし、ちゃんと動くのであれば、面白い。

ここに apk などが置いてあるが、スクリーンショットを見るに、フルセットのようだ。

ソースコードもビルド可能なようだ。電子工作品を Andriod 対応させる場合に相当参考になるのではないか?

おわりに


今回の記事は、紹介記事に見えるかも知れないが、単なる覚書き。インストールしただけで、使ってはいないし、お勧めなのかどうか、判断できていない。

今回は、オープンソースの Android 版を知っただけで、かなりの収穫だと思っている。Android のアプリを作ってみたいのである。外付けデバイスを扱うアプリのソースコードが手に入ったわけで、調べてみたい。

なにか進展があれば、いつものように追記するかも。

aliexpress のアレ


$5.90 で売っている。aliexpress の これも買ってみた。



写真では隠れているが、Salae logic Analyzer (24MHz 8CH)互換。VID/PID も 0925/3881 ... ということは、アレが使える可能性が。それはサテオキ、sigrok/pulseview は、当然のように認識した。



そして、中のバッファは、LVC245 だった。こっちの方が上等で、高速+5V トレラント!。抵抗は 12Ω、ROM は 24C02 -- 同じようなもの。なお、写真にあるように、CLK の端子がある。ただし、これが使えるかどうかは不明。
posted by すz at 11:04| Comment(1) | TrackBack(0) | 日記

2015年06月10日

RDA5871

突然の更新。ちょっとメモ。
android タブレットを買った関係で、いくつか aliexpress で BTキーボード を購入した。いろいろ問題があって分解したり。その過程で面白いものを発見したのでメモしておく。


RDA5871



購入したのは、このキーボード。"Bluetooth Keyboard" と表示され、Bluetooth 3.0 には対応していない。要するに古いタイプ。
これは、キートップに特徴がある。数字キー2 のところに、虫眼鏡のマーク。

おそらく、赤札天国の これも同じではないかと思う。今の為替レートだと 国内で買った方が良いかも知れない。



中の基板。シルクが入っていて分かりやすい。なにやらライターを接続できそうなコネクタ・パターンがある。さらに RXD/TXD のテストパッドも。8pin のチップは L24C64 -- I2C ROM である。メインのチップには、RDA 5871 とマークされている。

この RDA5871 とは、どんなものなのか調べてみると、こんな説明が。

Features
1. On-chip support for common keyboard and mouse interfaces eliminates external processor
2. Bluetooth HID profile version 1.0 compliant
3. CMOS single-chip fully-integrated radio and baseband
4. Integrated battery charger
5. Compliant with Bluetooth 2.1 specification
6. ARM7-based microprocessor with on-chip ROM and RAM
7. Meet class 2 and class 3 transmitting power requirementr
8. Supporting 26MHz DCXO /TCXO
9. Low power consumption
10. Minimum external component
11. Internal 32k LPO.
12. Support for EEPROM
13. Build-in code patching which supports up to 16 KB patching code
14. Built-in four 8-bit resolution ADC channels
15. Programmable keyscan matrix interface, up to 8 × 18 key-scanning matrix

注目したのは、16KB の EEPROM にパッチ・コードを書くことで、機能を変えられるということ。I2C ROM だから、データさえあれば書き換えは容易。

そうは言ってもプログラミングなど出来るはずがない。... と思ったわけだが、rda5871-sdk なんてものが公開されている。

 ・https://code.google.com/p/rda5871-sdk/
ここに行くと、こっちを見ろと誘導される。
 ・https://5871e.codeplex.com
中を見てないが、確かに SDK らしい。SDK をビルドすると SPP と HID のサンプルプログラムが出来るらしい。

また、先の URL には、評価ボードとその回路図が。


キーボード基板は、ほぼ全ピン出力されているようだ。
開発ボードも作ってる。写真のシルクをチェック

ROW0 GPIO0_0
:
ROW7 GPIO0_7
COL00 GPIO1_0
:
COL07 GPIO1_7
COL08 GPIO2_0
:
COL15 GPIO2_7 (COL11-14 : AGPIO)
GPIO3_0 GPIO3_0
:
GPIO3_3 GPIO3_3
COL16 GPIO3_4
COL17 GPIO3_5

どうやら 8bitポートが4つあって、30 本の GPIO がある。自由に使えるが、キーボードスキャンの機能を使う場合は、ピンの割り当ては決まっているということらしい。COL のうち4本は、ADC に接続されていて、AGPIO となっている。

AB1112



RDA5871 のキーボードとほとんど同じに見えるが、よく見ると 虫眼鏡マークは、数字キー1のところ。接続すると "Bluetooth 3.0 Keyboard" と表示される。



中の基板。(裏面はシルクがないので省略)。チップは AB1112A とマークされていて違うもの。チップは違うが、同じように I2C ROM が載っている。説明は見つけた。



RDA5871 と同じようなものではあるが、こちらは情報がない。とは言え解析すれば キーマップぐらいは変えられそう。

ちなみに、最初の基板になぜか AB1107-xxx と印刷されているが、AB1107 は AB1112 の電池駆動版。このチップを搭載した キーボードも安価であるようだ。ひょっとしたらポケモンキーボードは AB1107 じゃないかという気もしている。

確認するために、中古を購入してしまった。これに載っているのは BCM2048 。カセット側にはホスト・コントローラが載っているが、BCM2070 。どちらも ワンチップ。

キーマップ


ローカルな信号名で作成したので、ちょっとややこしい。シルクとの対応表も載せたが、

ピンとのマップ (+シルク信号名)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
1 2 3 4 5 6 7 8 9 a b c d e B C D E F G H I J f
C00 C02 C04 C06 C12 C10 C09 R0 R2 C15 R6 R7
C01 C03 C05 C13 C11 C14 C07 R1 R3 R4 R5 C16
キーマップ
ESC 1 2 3 4 5 6 7 8 9 0 - =
B5 C5 C6 C7 C8 B8 B9 C9 Ca Cb Cc Bc Ba

TAB Q W E R T Y U I O P DEL
E5 D5 D6 D7 D8 E8 E9 Db Da D9 Dc Ee

CAPS A S D F G H J K L ; ENTER
E6 G5 G6 G7 G8 I8 I9 G9 Ga Gb Hc Gc

LSFT Z X C V B N M , . RSFT
E3 H5 H6 H7 J8 J9 H9 Ha Hb Jc He

FN CTRL ALT WIN SPACE / \ UP
G1 B4 E2 I1 IF Ec Ea Id

LEFT DOWN RIGHT
Jd JF Jf

C00 C01 C02 C03 C04 C05 C06 C13 C12 C11 C10 C14 C09 C07 C15 C16
1 2 3 4 5 6 7 8 9 a b c d e F f
R0 B CTRL ESC 5 6 = -
R1 C 1 2 3 4 7 8 9 0
R2 D Q W E R O I U P
R3 E ALT LSFT CAPS T Y \ / DEL
R4 G FN A S D F J K L ENTER
R6 H Z X C N M , ; RSFT
R5 I WIN G H UP SPACE
R7 J V B . LEFT DOWN RIGHT
1 2 3 4 5 6 7 8 9 a b c d e F f
C00 C01 C02 C03 C04 C05 C06 C13 C12 C11 C10 C14 C09 C07 C15 C16
(目視でのみ作成:未チェック)

製品としてのレビュー


忘れてた、一応書いておこう。
このキーボードは、剛性が全くない。古いタイプは裏のアルミ板がさらに薄い。3mm厚ぐらいの木板を張り付けると、その問題は解消し、手にもって使っても使えるレベルにはなった。

打鍵感は、悪くない感じがする。一応パンタグラフで、ポメラキーボードと全く同じ構造のようだ。キーの配置で気に入らないのは、Fn キーとの同時押しが必要な ESC ぐらい。

耐久性については非常に疑問。中のフイルムの印刷だけの問題だが、簡単にダメになるかも知れない。

おわりに


面白いと思ったので紹介したが、試すのであれば、電波法に引っかからないような使い方でお願いする。 -- bluetooth は、屋外に電波が届かないような気がするが。
面白いと思ったのは、HID 。単純なイベントを android ホストに送るには HID が便利なのではないかと思うのだ。車のハンドルに付けるリモコンを改造したり出来たら良いなぁと思っている。他には、お気に入りのキーボードを bluetooth 化するとか。

キーボードに使われている IC は、I2C ROM を使っているものが多い印象。キーマップのカスタマイズ程度ならば、意外と障壁が低いようだ。いずれ弄繰り回してみたい。
posted by すz at 02:21| Comment(0) | TrackBack(0) | 日記