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) | 日記