NeuG USB Device を STM32 Nucleo F103でみんなで作ろう

皆さんもご存知のとおり、8月8日はHappy Hackingの日ですが、今年は乱数を生成させるデバイスを作り、大変な同盟国の活動にも備えられるようにしましょう(なんのこっちゃ)。

力武健次さんから教わった STM32 Nucleo F103RB というボードを使います。

以前、 Gnuk USB Token を STM8S Discovery Kit で友達の分も作ろう という記事を書きましたが、STM8S Discovery Kitの入手性も悪くなりましたので、この記事の今日のバージョンです。

できあがり写真

この写真では Dongle の ST-Link/V2-1 部分は分離していませんが、出来上がったら分離します。 (分離しなくても動かせます。)

STM32 Nucleo F103 for NeuG

必要となる工具など

  • ハンダごて
  • ニッパー
  • カッターナイフ (分離する場合)

部品

部品 値段 (JPY)
STM32 Nucleo F103RB 1500
USB ケーブル (comonのAM-MBなど) 250
8MHz 水晶 150
1.5kオームの抵抗、ワイヤ、ハンダなど alpha
合計 1900 + alpha

作り方

(1) 8MHz 水晶(X3)の接続 (表面)

STM32 Nucleoには水晶が付いていませんので部品を差し込み、裏面でハンダ付けします。

R35, R37 のところですが 0オームの表面実装部品を接続するように基板では準備されてます。 ここをハンダブリッジでも良いですし、もしくは、余った水晶の足の線などを使い接続します。

僕は R34 も勢い余って接続してしまいましたが支障ありません。

C33, C34にコンデンサを付けるのが正式な回路ですが、なくても動作します。

水晶は最近だと表面実装部品の方が入手しやすい感じですが、僕は、千石通商の地下で購入しました。

STM32 Nucleo F103 front side

(2) USBケーブルの接続 (表面)

USBケーブルは赤5V, 緑D+, 白D-, 黒GNDですが、これを CN10 に接続します。

赤5Vは接続されていない(NC)、CN10の第10pinに繋ぎます。外部電源E5Vに接続して使います。

緑D+ は、PA12 (USB DP)の CN10の第12pinに繋ぎます。 白D- は、PA11 (USB DM)の CN10の第14pinに繋ぎます。

黒GNDは、GNDの CN10の第20pinに繋ぎます。

このケーブルは、通常のPCのマザーボードなどで使うものですが、僕は、千石通商で購入しました。

(3) 残りの配線 (裏面)

裏面で、USB DP を 3.3V にプルアップします。また USBの5Vを外部電源E5Vに接続します。

CN10の第12pinに1.5kオームの抵抗を繋ぎ、抵抗の別の端子をCN6の第4pinに繋ぎます。

CN10の第10pinをCN7の第6pinに接続します。

僕は写真を撮るために太いワイヤを使いましたが、こんなに太いワイヤでなくてOKです。

STM32 Nucleo F103 back side

(4) ファームウェアの書き込み

Dongle側を別のUSBケーブルで PC に接続し、NeuG USB DeviceのファームウェアをOpenOCDなどで書き込みます。

(5) JP5の設定の変更

JP5を E5V の設定に変更し、USBから電源を得るようにします。

実は...

Dongle部分もSTM32F103です。ここもNeuG USB Deviceにすることができます。これは読者への宿題とします。

天才剣崎がギャラクティカマグナムだけでなくギャラクティカファントムも同時に開発していたことが思い起こされます。

ご注意 (特に日本語の学生さんへ)

この製作記事のハードウェアは、確かに動きますが、ハードウェアの観点からはあくまでも間に合わせです。人間の尊厳を無視した(もしくは脅かす)諜報活動を断じて認めない、という目的には合致し、「もの」はできますが、ハードウェアの観点からは「これでよい」、とは考えないでください。

ハードウェアの製作記事は、かつては、出版社を経由する(つまり、少なくとも編集者のレビューを受ける)ものが主流でした。製品も出荷までに何段階かの検証を通過するのが一般的でした。しかし、今では、Web記事や「やってみました」というレベルの製品など、いろいろと玉石混交の度合いが強いと思います。

僕自身の経験ですが、日本語でこういった関連の情報があるものは、僕を含め、年寄りのものが多く、年寄り故のあなたがはまりやすい陥穽があるかもしれません(たとえば、そんな「常識」は知っていて当然と年寄りは考えがちです)。いや、あるでしょう。あなたの空間を日本語のそれに閉じないよう、お願いします。また、日本の「秋葉原」はこの文脈では、マーケットとして、確実に年寄りがターゲットでしょう。

「秋葉原」に観光に行くよりも、Shenzhenに行きなさい。そこでは年寄りではなく、若者が主役です。

ハードウェアとして考えるのであれば、量産の製品としての設計を念頭に置き、少なくとも以下の点に気をつけましょう。

  • 発振の安定のためにコンデンサ C33, C34 を付ける。老眼だから無理、なんて言わない。
  • USBケーブルのこの形態の利用は合格ではない。ケーブルのシールドとFG (Frame Ground)の処置をするのが推奨される。USB DP+, DP- の信号線には直列に抵抗を入れる(USBの電気信号としての推奨回路を参照する)。USB 5Vを直接 E5V とするのは乱暴。電磁波放射、安全性の観点の処置もする方が望ましい。