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

2013年04月20日

基板カッター

古い古い記事の焼き直しなのだが、秋月で 380モーターを取り扱うようになったのを記念して。

リュータで切断砥石を使って基板を切ったことがあるのだが、割れやすい切断砥石を高い回転数で回すのは結構怖い。それだけでなく粉塵がけっこう出る。さらに ちょっと基板が大きいと 垂直に当てられない。(ナナメになるとまっすぐ切れないばかりか、切断砥石が割れるおそれがある) ... などという問題があった。

で、どうにかならないかと考えて作ってみたのがこれ。



電動飛行機用のギアダウンユニット -- GBX400/GBX400NG に、ダイソーの 32mm 切断砥石をつけるのだ。適合モーターは RS−385PH−4045

結構調子が良かったのだが、GBX400は音がうるさかった。(ナイロンギアの GBX400NG なら 少しは静かかも。) 以前は 安物リュータから取り出した 3.6 V 用の モーター を 5V で回してたりしたので 焼けたかなにかで使えなくなって 使うのをやめてしまった。

    写真のまま素手で使っていた。ギアがむき出しなのでちょっと怖いが、注意すれば巻き込まれることはない。へたに軍手など使うと却って危険だと思う。手袋するなら革製?

    たしか、ギアに指が擦れるのはままあった。皮が厚いのが幸いしたのかどうということはなかったが。

    もちろんカバー付けるとか工夫すれば危険は減るのだが、良い案を思いつかず。まぁもともとスライダーとか付けてちゃんとしたものを作りたかったのもある。こちらも良い案を思いつかず。

秋月で 380モーターを取り扱うようになって思い出して記事にすることにした。記事にするにあたって 今でも買えるのかどうか調べてみた。

GBX400/GBX400NG は、まだ大丈夫。ググれば在庫があるところがある。

    ちかごろは、三相ブラシレスモーターをギアなしで使うのがはやりらしく、過去の遺物のようになっているとのこと。いつか買えなくなる時が来るかもしれない。

    なら、ブラシレスモーターを使えば良さそうなものだが、直径が大きい上に 外周が回転する(タイプが多い)ので具合が悪い。

    京商 380ギヤダウンユニット というのもある。多分この 2種類。

消耗品の 切断砥石がキモだったりする。直径 32mm というのは重要。これぐらいないと垂直に当てられない。ちびたら 小さい基板にしか使えない。また穴径が 3mm φ でないと具合がわるい。(リュータ用は普通 1.8mmφとか)。ついでに書くと、厚みが 1.2 mm もあって 切断するには無駄が多いのだが、その分丈夫で割れそうにないのがメリット。

    で、調べてみたら ミニルーター用切断砥石(4枚組) として売っていることが分かった。以前は 1枚だったのでなんと コスパ4倍。

    ほかにダイヤモンド砥石、回転のこぎりをセットにした 3枚組もあるらしい。回転のこぎりは危険そうだし、ダイヤモンド砥石も直径が小さく具合がわるいので、4枚組のほうが良い。

    ダイソーと同じタイプのものが売っているかどうか確認できてない。ダイソーが取り扱いをやめたらどうやって入手するのかという問題がある。

さて、モーターのRS−385PH−4045は通常在庫品なので、焼けようが問題はなさそう。問題は電源のほう。負荷時 2.7 A と書いてある。5V 2A の ACアダブタだとギリギリかもしれない。

5V 4A の 5V4A STD−05040U が良さそうな気がする。

    AC アダプタ直結でも良さそうな気はするけれども、出力を調節できるようにした方が望ましい。
    写真を見ればわかるが、モーターが直接手に触れる。熱くなれば焼ける以前に使えない。無駄にパワーを浪費させるのは具合が悪い。

    Tiny13A あたりで PWM すれば十分なはず。操作にボタンしか付けられないが、2 つでなんとかなるだろう。例えば UP/DOWN に割り当てて、同時押しで スタート・ストップとか。

    モータードライバ -- 例えば BD6211F−E2 なんて ボリュームだけで制御できて使いやすそうなのだが、残念なことに 1A まで。そのほかのやつも 1A までが多い。Nch MOSFET とかで組むほうが良いと思う。

    制御には、MC34063A も使えそう。MC34063A も最大 1.5A で 出力電流が足りないが Tr を 外付けできたはず。

    あまり自信がないのだが、実は 1A で 十分かも知れない。ちゃんと切れている分にはパワーがあり余ってたような気もする。
posted by すz at 00:10| Comment(2) | TrackBack(0) | 日記

AE-FT232HL



秋月から FT232HL 採用のモジュール AE-FT232HL が出ている。以前記事を書いた UM232H と互換。ピンだけじゃなくて、回路やサイズまで互換のようだ。値段も 1200 円と安くなって お薦めだとは思う。

ただ、単にシリアルを使いたいという向きには、オーバースペック。それだけでなく (5.0V トレラントではあるものの) 3.3V 固定 というデメリットもある。(例えば 1.8V で I/O したい場合レベルシフタが必須になる)。また、2ch ある FT2232H なんかと比べると機能が劣る。微妙な面もあるのでツボを押さえた使い方をしたいところ。

    機能差のほかに、バッファの量が少ない。できる限り性能を引き出したいという場合には不利だったりする。

このモジュールのメリット

    足がハンダ付けされてない

      これは地味だけども メリットだと思う。最初からハンダ付けされていると そのまま使うしかない。自由度が高くなるのは嬉しい。

        細ピンのピンヘッダでも 丸ピンソケットに挿すのは厳しい。アイテムラボのピッチ変換基板用連結ピンを使うと 背を低くした上で 丸ピンソケットに挿せる。

      2個ある 2mm ジャンパも自分でハンダ付けする。バスパワー前提ならジャンパピンを使わずにショートしてしまった方がすっきりする。

      上向きにソケットを付けることさえできる。 JTAG アダプタとかしか(今は)思いつかないが、Arduino 的な使い方ができるかも。

    片側のピンだけで使える

      ADBUS が片側に寄っていて、3V3 と GND がある。ブレッドボードで便利そう。最初から片側にしか足を付けないというのもアリだろうし、L型の ピンヘッダで 縦に挿すことさえアリだと思う。

      別の基板に取り付ける場合でも、片側のみなら 基板スペースを有効に使える。ぐらぐらしないようにしたいなら GND,5V0 の 2ピンだけ付けるとか変則的な使い方もありだろう。

      ACBUS は 使えないわけだが、シリアルを使うのがメインなら割り切ることはできそう。

    SYNC Bitbang を使う場合のメリット

      FT232R と比べると Bitbang がはるかに高速。AVRライタレベルだと 速度が出ないという不満は出ないはず。ただ、ライタソフトも対応が若干必要になるので そこの確認は必要。

      対応として必須なのは、USB の ID の対応。あと 必須ではないが望ましい対応としては、ビットクロックの上限の変更と バッファ量(読み書き単位)の 増大ぐらいか。

      忘れてた。API で デバイスをチェックできる。これも対応が必要な場合がある。

    MPSSE を (BitBang として)使う

      FT232Rを PIC32MXライタに の記事で書いたのだが、MPSSE もまた SYNC Bitbang のように使える。プロトコル体系が違うから単純に比較はできないが、最大の違いは (速度低下のペナルティなしに)入出力を切り替えられること。 これを使うと 頻繁に 入出力を切り替えるようなプロトコルにも対応できる。PIC32MX の ICSP 対応はいけたので AVR の TPI/PDI にも対応できそう。

      SYNC BitBang では 8bit しか使えなかったが、うまく使えば 16 bit までいける。これもメリット。

    JTAGKEY cloneもどきにする

      USB の ID が違うという問題はあるが、JTAGKEY もどきにはできるんじゃないかと思う。このモジュールを使えば、お安く作れるとか コンパクトなものが作れるというメリットがある。

      JTAGKEY clone にする場合 EEPROMの 設定を変えないといけないと思われがちだが、MPSSE は SYNC BitBang と同じで単なるモード。問題なのは、シリアルと MPSSE では 入出力の方向が逆になるピンが出ること。具体的には 出力がぶつかる ADBUS2 の RTS (MPSSE TDO)が問題。

      JTAGKEY clone にする場合、レベルシフタ目的に バッファを入れるが、ADBUS2 に 抵抗を直列に入れてやれば、EEPROM を書き換えなくとも 安心して使えるように思う。

        回路図例を見ると ADBUS2 は Tri-State 制御してないケースもある。設定を書き換えない場合は要注意。

        直列に入れる抵抗の値はいくつが適切なのだろう。3.3V の電圧差で 4mA とかなら 82Ω? 。あまり抵抗値が大きいと高クロックにできないし 壊れないと思えるぎりぎりの値で良いとは思う。

        これは MPSSE 共通の問題。シリアルも使いたいなら抵抗は忘れずに。

      あとは、OpenOCD で使えるかのチェック。MPSSE といっても完全には互換ではない。FT2232H とかと ちょっと違う部分があるが、普通に使う分には関係ない。大丈夫だと思うが未確認ではある。

      ググっただけだが、OpenOCD は、0.6.0-rc2 以降で対応?

FT232H 応用メモ

このモジュールが発売されたおかげで MPSSE が身近になった。MPSSE が使えると便利な 応用は何だろう?。まず MPSSE は高速だというのが最大のメリット。入力と出力を頻繁に切り替える BitBang も使える。FT232R と違って EEPROM に設定することでシリアル以外の様々な機能も使える。

    MicroSD アクセス

    FAT を使う .. だけなら 意味はない。だが、情報を読み取ったり、パスワードを付けたり、書き込みロックをしたり するなら 汎用のものでは無理。FT232R や AVR を使っても良いのだが 速度の点で不満が出るケースもありそうだ。あと、ターゲットは マイクロコントーラだとしても プロトタイプはこれで作ってみるのも良さそう。

    I2C アクセス

    実用として使うのは疑問だとしても、プロトタイプを作ってみたりするには良いかも知れない。FT232R では 付加回路が必要だが、これだとそれも不要。AVR など マイクロコントーラではいちいち書きこまねばならないし、結果の出力も悩ましい。お試しなら PC でダイレクトに操作するのもありだと思う。

      FT232R での 付加回路について記しておくと ... 多分 デジトラ 1個が余分に必要なだけの話。... なんだが、まぁ単純なほうが良いとは思う。

    パラレル通信

    FPGA を使うメリットのひとつは高速処理。だが、PC と通信するのに難がある。PC の持つ高速インターフェイスを直接接続するのは荷が重い。MPSSE が高速だと言っても 30M bps 程度で 4MB/sec にも届かない。パラレル通信は高速らしく 60MB/sec とかいう数字を見たことがある。単純なインターフェイスでここまで性能が出せるものはあまりない。

    ちなみに、途切れなく読み(書き)続けるのは無理。ロジアナもどきとかフレームバッファもどきにするのは難しい。

    CPU スタイル FIFO

    よく分からないのだが、こういうのもある。8bit の LCD なら直結できそう。通信 オーバヘッドが減って嬉しいような気もするが EEPROM を書き換えて 専用機を作るときぐらいしか役に立たないような気もする。

ピン配置



パーツメモ

    FT232HL チップ単体でも入手できるし、パーツについてメモしてみた。ただ、Hi-Speed だしモジュールで済ませた方が楽で良さそう。

    BLM18PG600SN1D フェライトビーズ(FB)

      これは、オリジナル UM232H と同じように入っている。

    FA238V-12MHz

      ひょっとして、このモジュールに合わせて 12MHz も販売するようになったのだろうか? それはともかく、FA232 の 12MHz が入手できるようになったのは喜ばしい。

    12KΩ (1%)

      REF に接続する抵抗で 1% 精度指定。入手が面倒。これは FT2232H なども同じ。

    PGB1010603

      USB の D+/D- に入れる パルスガード。オリジナル UM232H と同じ。データシートにも載っている。デジキーだと入手できるものの結構高い。類似っぽい、ESD9B も使えるのかどうか? (こちらは安い)

      あるいは、FT2232H と同じようになしで済ませられたりしないのだろうか? さらには回路図の記号の通りツェナーダイオード直列ではどうなんだろう?

        ちょっと見た限りでは、両方とも IEC61000-4-2 とは書いてある。だが、ESD9B の方は寄生容量が 15pF と大きい。多分超高速インターフェイス向けではないのだろう。となるとツェナーダイオード直列も無謀か。ところで、D+/D- は直列に 0 Ωの抵抗が入っているんだが、なんのためだろう? PGB1010603 を使わないなら 信号線用の FB でも入れるのかな?

        ... と思ったら ムラタの資料(pdf)に Hi-Speed(HS) では FB を使うと波形が崩れるからダメと書いてあった。使うのなら コモンモードチョークコイルだとか。

        FT2232H のデータシートと見比べてみたが ESD プロテクションは同レベルのようだ。なら無理していれなくとも良いのかも。

    93LC56B

      これは、B でないとダメだとか。16bit モードを持っているかどうかが重要らしい。

      なしで済ませるのも可能そうだが、シリアル がベースになり パラレルとか試せなくなる。付いている LED も 点灯できなかったり。高いものではないが、これも入手が面倒。

    こんな風にパーツの選定と入手が面倒でおっくうになってしまう。

おまけ TXS02612

    デジキーで SDIO を検索したところ TXS02612 というものが見つかった。

    これは、SDIO ポートエクステンダというもので、1 つの インターフェイスで 2 つのデバイスを使えるようにするスイッチ。 QFN-24 パッケージがあって、200 円以下。

    データシートをひもといて見ると... 2つのポートは、それぞれ別電圧にすることが可能。(ただし、1.1V 〜 3.6V の範囲) 。(CLK 以外の)信号線 はアナログスイッチのような 双方向。

    オーバースペックだが、下は 1.1V まで対応しているし JTAG 用の レベルシフタとして使えるような気がする。実際に使おうとするならちゃんと調べないとダメだが気になっている。

おまけ FTDI の FIFO バッファ量

    RX TX
    FT2232H 4KB 4KB
    FT232H 1KB 1KB

    FT231X 512 512
    FT230X 512 512
    FT232R 128 256

    FT232H は 1KB と FT2232H と比べれば全然すくない。これだけ違うと BitBang でのピーク性能にだいぶ差がでるかも。

    改めて調べてみたら、FT232R は結構少ない。12Mbps 版の新しいチップ FT231X/FT230X では 512B と増えている。性能的に変わらないかと思っていたが、ちょっと変わってくるかも。

     FT231X : SSOP 20 pin と小さくなった。シリアルのピンは省かれておらず、CBUS も 0-3 があり CBUS4 だけが省かれた。
     FT230X : SSOP 16 pin 。シリアルが 4つ省かれて TXD/RXD/CTS/RTS だけに。あとは同じ。
     共通: VCCIO 3.3V まで (5Vトレラント)。USB D+/D- に 27Ωが必要。VID 6015 に。
posted by すz at 00:06| Comment(0) | TrackBack(0) | 日記

2012年11月03日

A13-OLinuXino

ストロベリー・リナックスから、Olimex の A13-OLinuXino-WIFI というボードが発売になった。(在庫あり! 6,300円)

    Mouser でも取り扱っている。5916 円であまり安いわけではないようだ。


これは、Allwinner A13 という ARM Cortex-A8 (1GHz)採用の Android 向け SoC を採用したボード。Raspberry Pi や BeagleBone の仲間である。

    写真では、WIFIが載っていないが、3 つの USB ポートがある 右、SSOP-28 の GL850G があって その更にすぐ右のコネクタに USB タイプの WIFI が載る。写真では NAND Flash は空きスロット だが、ここに4GB のものが載る。(無印は NAND Flash もない)

    JTAG ポートがあるみたいだが、JTAG 必須ではない。JZ47XX のように USB からブートできる(はず)。あと MicroSD からも ブート可能だったはず。

    メモリは、512MB で 実用可能なレベル。Ubuntu や Android が出ているかどうかは調べていないが、出ているような気がする。

私は、ARM に手をださない方針で blog では ARM 関係は言及してこなかったのだが、これは例外。そして 例外 とした 理由は はっきりしている。

    Allwinner A13 は、電子工作可能 (QFP) な SoC という条件を付けると (おそらく) 最速。今は BGA ばかりだから 新しいチップとしては、希少な存在なのだ。これ以上のものはもう出て来ないのではないかという気までする。そして、 A13-OLinuXino は 回路図まで公開しているボードなのだ。

    要するに 電子工作という観点で気になる存在なのだ。

私は、まだ手をださない。私の目標は MIPS の QFP な SoC -- Ingenic JZ4725B あるいは JZ4755 で 電子工作することで、それは変わらない。だが、人に薦めるならば、Allwinner A13 ではないかと思う。

    電子工作で使うにしても 単にボードを利用する目的だと 薦められるかどうかは分からない。GPIO が沢山あって ピンヘッダも普通の 2.54mm ピッチだから Raspberry Pi では満足できない人には良いかも知れない。

    電子工作ではなく、Ubuntu や Android を使うのが主目的の人には 薦められるかどうかは怪しくなってくる。メモリは 多いほうではない。性能が高いとも言えない。-- Android Stick でも 1GB のものはある。
    VGA 出力というのが特徴で これはメリットにもデメリットにもなりそう。他のメリットがあるとすれば、情報がオープンなこと。製品寿命が長そうなこと。ソフトがメインであっても いじるのが目的ならば 悪くはない。

    そもそも A13 は、Android としてはローエンド向けのチップ。同じ Allwinner でも A10 の方がまだ魅力がある。A10 には、SATA インターフェイスがあり、こういったボードが出るなら SATA を付けてくるはずだからだ。

    以前 『49ドルのARM開発ボード Cubieboard』というのが紹介されていた。今どういうステータスかは良くわからない。入手可能で、ちゃんとソースコードが出てくるならば、こちらの方が良いだろう。あと A10 は、Android タブレットに多数採用されているが、Android Stick , Android TV Box なども製品が沢山ある。Android ではなく Ubuntu を動かしたいと考えているならば、改造している人がいる製品を探すと良いかも知れない。

    Mele A1000 ($92.6), Mele A1000G ($107.1) , Mele A2000G ($106.0) あたりは、Android TV Box のなかでは有名な方(だったと思う)。

    ここまでにしておこう。-- このブログは 電子工作がメインなので、これ以上は掘り下げない。

    と書いたものの、Wandboard なるものが出るらしい。ひょっとして、これは良いもの?

    追記: ストロベリーリナックスから A10 採用の pcDuino が出ている。7350 円。RAM が 1GB もあって良さそうではある。ただ SATA はないみたいなのが少々残念。末永く売ってくれそうだし、これも良いかも知れない。

おわりに

JZ47XXのリファレンスデザインから』、『taobao でジャンク基板(2)』といった 記事を書いている過程で、A13 のボードのことを知った。Ingenic の MIPS SoC は 自分の趣味だが、電子工作可能なものは どういったものがあって、Ingenic のチップは、どういう位置づけなのかは押さえておきたい。そういう意味で A13 に関して興味をもった。

A13-OLinuXino 自体は、Raspberry Pi ほど大量には売られないだろう。ただ、長期にわたって売られる可能性があるし、自作できる可能性さえ残っている。趣味で開発コストを投入するなら、こういうのも楽しみがあって良いのではないかと思う。

なお、新しい情報を得たらここに追記していくつもり。

リンク

おまけ: ARM に手をださない方針について

    不思議に思う人がいると思うのでコメントしておく。

    私は、OS など基盤系が趣味なのだ。(基板ばっかり作っているけど typo にあらず)。 沢山の人が参加している ARM よりも 誰も手をださないものに挑戦したいだけなのである。特に MIPS はちょっとした思い入れがあるし、Ingenic SoC の情報も手に入ったので 強い興味を持っているが、人には薦められる状況ではない。

    今後も、趣味としては ARM には手をださないつもり。実用として使うなら別だけど PC 自体を電子工作の対象とはしないのと同じ事。ただ Allwinner A13 だけは興味が出てきた。手をださないまでも、ウォッチはしていきたい。

メモ

    A13 と JZ4755 の違い

      どちらも 0.4mm ピッチ QFP176 なのだが、決定的に違うのは、まずメモリインターフェイス。

      A13 は、DDR2/DDR3 対応で大容量のメモリが使えるのに対し、JZ4755 は、旧来の SDRAM しか使えない。安価に買える SDRAM チップは 32MB (16M x 16bit) でこれを 2 つ使って 64MB あたりが妥当な容量。これで Android や Ubuntu を動かすのは不可能。だから根本的に使い方が違う。

      CPU 性能も大きく違う。A13 は、二次キャッシュ (256KB) 付きなので、クロック以上の差がある。4 - 5 倍ぐらい違うはず。

      USB HOST -- JZ4755 も USB HOST 機能はあるのだが 12 Mbps の Full-Speed 。Hi-Speed はデバイス専用。A13 は、HOST + OTG どちらも Hi-Speed のようだ。Hi-Speed が 1つあれば、いろいろな目的に使える。SATA はないが、USB DISK も それなりの性能で使えるわけだ。

      これだけ違うなら、別のものとして捉えた方が良さそうだ。

      といっても、JZ4755 がダメなチップだとは思わない。これは、高速な 組み込み向けチップで、A13 は ローエンドの Android チップ。もちろん A13 を 組み込み向けとして使うことはできるのだが、Android がまともに動くなら割り切れないのだ。それに、A13 は電子工作で扱えるギリギリではあるが、多分メモリの周波数が高い分だけ扱いにくい。随分とレベルが上がらないと扱えないだろう。

    回路図から

      ちょっと目についた範囲で簡単に

      VGA は、LCD のデータを 自前のDAC で アナログ RGB に変換している。ALVC244 を多数使い 6bit DAC を抵抗で組んでいる。HYNC, VSYNC は、FET(BSS138) でドライブ。さらに出力はすべて ダイオード(BAT54S) を使ってクランプしている。抵抗値の選択は参考になりそう。

      ボタンは、例によって ADC を使っている。QFP176 でもピン数を節約したいようだ。

      RTC は、I2C 制御のデバイス(PCF8563T) を外付け。

      電源回路は、メインが AXP209 というチップ(QFN48)。このチップは たしか taobao で購入可能だったと思う。回路図と Linux ソースコード が入手できれば、データシートがなくとも 扱えるかも知れない。憶えておこう。

      この AXP209 という電源 IC は、LDO が 4 つに スイッチング が 3 つ。それに加えて USB HOST の VBUS 用 スイッチなどもある。さらには バッテリーチャージャーも。これらの機能を I2C で制御している。

      しかし、これでも機能が足りないらしく単機能の スイッチング 電源IC がさらに 4 つ使われている。電源周りは、予想以上だった。
posted by すz at 15:35| Comment(0) | TrackBack(0) | 日記