ミニ USB ホストシールド

Arduino を USB ホストにする Pro Mini 専用のシールドです (購入時価格: ¥850)。シールドとしては Pro Mini 専用ですが、ブレッドボードに挿して使えば他のボードからも使えます。

ピンヘッダやピンソケットは付属していませんので、別途調達する必要があります。

今回は普通のピンヘッダを使います。



問題点の整理

このボード、通常サイズの USB ホストシールドと違ってちょっと困ったちゃんなのです。まずは問題点を挙げてみましょう。

ちょっと面倒ですね。

Pro Mini と ミニ USB ホストシールドをどのように接続するのか?

シールドと言うからには重ねるのは重ねるのですが...ミニ USB ホストシールドには、USB ホストシールド同様、GPIO が出ています。


これを活かすにはミニ USB ホストシールドが上の方が都合がいいので Pro Mini は下となります。ミニ USB ホストシールドには下の画像のような感じでピンヘッダとピンソケットを取り付けておきます。上部のピンヘッダとピンソケットを先に取り付けないと、ハンダ付けが困難になりますので注意。


Pro Mini に普通のピンソケットを立て、上にミニ USB ホストシールドを乗せるとブレッドボードに挿せないし、合体時に Pro Mini の信号を引き出せないので秋月の長いピンソケットを使います。


合体させるとこうなります。これならミニ USB ホストシールドの機能を余すところなく使えますし、ブレッドボードに挿して Arduino の GPIO を使う事もできます。


単体でブレッドボードに挿して他のボードから使う事もできますね。

Pro Mini は 3.3V 駆動でなくてはならない

このシールドを使うには 3.3V 版Pro Mini が必要です。5V 版を 3.3V で動作させても動くかもしれませんが、(定格でない) 16MHz 動作になるのでやめておいた方がいいでしょう。

Pro Mini の FTDI ヘッダの VCC に 5V をかけてはいけない

Pro Mini の記事中の 3.3V 版での注意点 を参照してください。FTDI ヘッダに 5V をかけるとミニ USB ホストシールドに 5V が流れてしまいます。

ミニ USB ホストシールドの USB コネクタには 3.3V しか供給されない

これが最大の問題です。USB ホスト機器は VBUS 5V (4.75~5.25 V) で動作するのですが、ミニ USB ホストシールドの VBUS には 3.3V しか供給されません。このため、動作しない USB 機器が出てきます

オリジナルでの解決方法は、

  1. VBUS ジャンパをパターンカットする (下の画像のオレンジ色の箇所)
  2. RAW <-> VBUS 間にジャンパを飛ばす
  3. RAW に 5V を供給する

つまり、このシールドをマトモに動作させるには (内部的に) 5V / 3.3V の二つの電源が必要になるという事です。

オリジナルと異なり、ミニ USB ホストシールドの互換ボードには VBUS ジャンパがないので、パターンカットするしかありません...まぁどちらもパターンカットですけどね。

ボードサイズの都合上、レギュレータやレベル変換が載せられなかったからだろうとは思いますが 3.3V 動作を要求しておきながら 5V が必要という。

...そういう事なので、上記改造を施した上で、整流化された 5V を RAW から供給すればコンパクトに使えそうです。

See Also:



最終的には

最終的にはこうなりました。5V を別電源で取る方法と、USB<->シリアルモジュールから取る方法です。

テストの方法など、ソフトウェアに関する事は通常サイズの USB ホストシールドと全く同じです。Bluetooth な PS3 コントローラももちろん動作しました...Arduino でリモコンを作るのが捗りますね (^^;A



Pro Mini 以外で使うには?

Pro Mini 以外への結線は以下の通りです。Pro Mini / Pro Micro は 3.3V 版を想定しています。MAX3421E の説明を読む限り、SPI は 5V トレラントではないので、5V 系のボードと接続するには工夫が必要です。

USB ホストシールド Pro Mini Pro Micro ESP-WROOM-02 ESP-WROOM-32
VBUS (5V) RAW (5V) (5V) (5V)
3V3 VCC (3.3V) VCC (3.3V) VCC (3.3V) VCC (3.3V)
GND GND GND GND GND
RST RST RST EN? EN?
INT 9 9 IO5 IO17
SS 10 10 IO15 IO5
MOSI MOSI (11) MOSI (16) MOSI (IO13) MOSI (IO23)
MISO MISO (12) MISO (14) MISO (IO12) MISO (IO19)
SCK SCK (13) SCK (15) SCK (IO14) SCK (IO18)

ピンアサインの詳細に関しては USBCore.h を確認してください。シールドの RAW ピンはどこにも繋がっていないので、ここに 5V を供給しても意味はありません。5V は USB ホストシールドの VBUS に直接供給しましょう。

MOSI / MISO / SCK がどのピンに該当するのかは各ボードのピンアウトを調べるなり、以下のスケッチを実行するなりしてください。

void setup() {
  Serial.begin(115200);
  while(!Serial);

  Serial.print("SCK : "); Serial.println(SCK );
  Serial.print("MISO: "); Serial.println(MISO);
  Serial.print("MOSI: "); Serial.println(MOSI);                       
  Serial.print("SS:   "); Serial.println(SS  );                       
}

void loop() {
}

See Also:



Pro Micro との最小構成

Pro Micro 3.3V / 8MHz と組み合わせると、とても小さいモジュールになります。

本来 Pro Mini 用のものを Pro Micro へ流用するのですから、ちょっとした工作が必要となります。

  1. Pro Micro 3.3V / 8MHz を用意します。
  2. Mini USB ホストシールド を用意します。
  3. ミニ USB ホストシールド の VBUS ラインをパターンカットします。
  4. (細)ピンヘッダを用意します。12、9、1 本を用意し、12本のものは右から 3 本目のピンを抜いておきます。
  5. ミニブレッドボードにミニ USB ホストシールドを乗せ、その上からヘッダピンを刺して固定します。まだハンダ付けはしません。
  6. Pro Micro を重ね、ピンがある所だけをハンダ付けします。ブレッドボードに直接ピンヘッダを立て、その上に Pro Micro を置いてハンダすればいいのではないかとお思いでしょうが、この方法でないとピンヘッダがハの字になってしまって後でうまく合体できなくなる事があります。
  7. Pro Micro とミニ USB ホストシールドを一旦分離します。
  8. ミニ USB ホストシールドの VBUS と RST (MAX_RESET) にリード線をハンダ付けします。セロハンテープ等で固定してからハンダ付けすると楽です。
  9. 画像のように並べ、VBUS を Pro Micro の RAW、RST (MAX_RESET) を RST にハンダ付けします。
  10. リード線を挟まないように気を付けながら、Pro Micro とミニ USB ホストシールドを再度合体させます。
  11. ピンのある箇所をハンダ付けします。ピンに余分なハンダが付着しないよう、ポリイミド (カプトン) テープで保護して作業するといいでしょう。

完成品はこちらになります。とてもコンパクトですね。

裏面に飛び出ているピンヘッダを短く切り揃えるかどうかは後で考えましょう。この状態だと (ギリギリですが) ミニブレッドボードに挿せますから。

Pro Micro だと microUSB コネクタから電力供給できますので、Pro Mini との組み合わせよりも扱いやすいかもしれませんね。

See Also:



ここにある情報が役に立って、「調べる手間が省けたからオマイに飯でもおごってやるよ」 というハートウォーミングな方がいらっしゃいましたら、下のボタンからどうぞ。

メニュー: