FabTinyISPの製作

image Summary:

このFabTinyStarは切削したPCBとインベントリにあるような既成のコンポーネントを使ってfablabで作ることができる別バージョンのAVR ISPプログラマです。 このプロジェクトは色々な人が協力してできています。FabTinyStarに貢献した人の歴史を知るにはZaerc's FabTinyStar pageを見てください。

ステップ:

イントロダクション

このバージョン(Zaerc's version 0.3(Bas) を少し修正した"FabTinyISP Minimal")には少し修正を加えています。

リセットスイッチとターゲットパワースイッチを削除しています。 リセットスイッチに関しては、ソフトで簡単にリセットができるため、スイッチが部品としてコストがかかるためISPプログラマとして利便性が低いためです。 ターゲットパワースイッチは、そもそもプログラミングポートを通じての電源供給を推奨されていないため、削除しました。この意味がわかっている方にはぜひスイッチを使用してFTSデザイン(?)の一つを作成して欲しいです。

共通の大きいグランドではなく、各部品にグランドを持つように変更しました。銅の面積が狭くなり、初心者がはんだ付けしやすいようにしています。全ての部品を2つの明確に定義されたパッドに対してはんだ付けをします。 USBデータラインに接続する余分なラインをカットしました。このバージョンは、汎用のtiny45ボードではなく、ISPプログラマに特化したものにしています。

PTCのサーミスタが取り外されました。よく使われる部品ではないため、ほとんどのユーザーが0Ωの抵抗をこの部分に使うでしょう。電力の選択肢がなくなったので、PROMを利用する場面がないはずです。 (※この部分正しく訳せていないかもしれません) As the option to provide target power has been removed, it should be much more difficult to create a condition where the polyfuse would be needed.

Makefileも変更されました。Attiny45のフューズを書き込む部分が追加されました。オリジナルのMakeFileはWindowsなどの大文字小文字を区別しないシステムでも問題を起こします。 このページではボードの製作、プログラム、テストやデバッグの方法を解説します。

ノート

説明の中で混乱する可能性がある部分は、これからつくるボードがAVRプログラマーになるというところですが、その過程で、すでに動作しているAVRプログラマーが必要です。あなたのボードはあなたが作っている新しくプログラマーにするものになります。プログラマーはあなたのボードを初期化するためのすでに動作しているプログラマーです。このチュートリアルを最後まで実施すると、あなたのボードプログラマーになります。

PCBの製作

基板(配線)部と外形のPNGファイルをダウンロードします:

基板部(1000 dpi)
外形 (1000 dpi)

Altiumのソースを編集して、デザインを変更することもできます。

異なるマシンで異なる製作のプロセスがありますが、ここでは説明しません、あなたのラボにある機材に適切なリファレンスを参照してください。

出来上がったPCBはこのようになります:

FabTinyStarMin PCB photo

どの程度オフセットして切削したかにもよりますが、USBコネクタの端の部分に銅がのこっている場合があります。5回オフセットさせれば、全ての銅を取り除けるかもしれませんが、時間がかかってしまいます。もしオフセットの回数が少なければ(上の写真は3回オフセットしたものです)、カッターなどを使って取り除くことができます。必ず取り除く必要があるのは、コネクタの一番恥にある部分です。側面の銅はそのままでも大丈夫です。

scalpe photo

PCBの組み立て

コンポーネントの入手:

Parts

  • 1x ATtiny45 または ATtiny85
  • 2x 1kΩ 抵抗
  • 2x 499Ω 抵抗
  • 2x 49Ω 抵抗
  • 2x 3.3v ツェナーダイオード
  • 1x 赤 LED
  • 1x 緑 LED
  • 1x 100nF コンデンサ(キャパシタ)
  • 1x 2x3 ピンヘッダ

LEDとそこに付いている抵抗は必須な部品ではありません。赤のLEDはターゲットのボードに電源が供給されていることを表し、緑のLEDはプログラマがターゲットと通信をしていることを示します。

下の回路図と配置図を見ながら、部品を基板にはんだ付けします。一番取り付けが難しい部品(ATtiny45)からはんだ付けをしましょう。ISPヘッダは大きくて邪魔になるため一番最後に付けましょう。

pcb drawing

schematic

正しい方向につける必要があるコンポーネントは以下の通りです:

  • ツェナーダイオードは回路図にもパッケージにもマーキングがしてあります、カソード(グランド)側に線があります。
  • LEDのカソードは回路図ではドットと細い線でマーキングされています。パッケージのマーキングは製造会社によって異なりますが、通常はエポキシレンズのカソード側に黒または緑のラインが入っています。 LEDによっては、パットのカソード側に銅がのっているものもあります。回路図の記号に対応した小さな矢印を表示しているものもあります。不安な場合は、テスターのダイオードチェックモードで赤のプローブをアノード、黒のプローブをカソードに繋いで確かめてください。これは色をチェックするのにも役立ちます。
  • ATtiny45にはパッケージの1ピン部分にドットがエッチングされています。回路図の1ピンにも同様にドットが書かれています。

finished programmer

はんだを使ってISPヘッダ付近のJ1ジャンパにブリッジをつくります。これはtiny45にプログラムするために一時的にISPピンヘッダのVprogVCCに繋げるためのものです。 プログラムされる側のボードはこのピンに電圧を供給することでプログラマがそれを感知します。プログラム(ファームウェア)を書き込み終わったら、プログラムされた側をプログラマにするためにこのブリッジを取ります。

solder jumpers

はんだのジャンパがある場合と、ない場合です。

USBコネクタの改良

多くのポートに、そのままの基板では薄くて動作しません。USBの通信を確保するために、2つの改良をすることをおすすめします。

1つは、USBコネクタの部分にはんだを追加して盛ることです。パッドを温めてハンダを流しこみ、こて先を動かして広げます。充分にはんだが行き渡ったら、均一な面にするためにパッド上でこて先を均一に動かします。はんだが均一にならない場合、フラックスがもっと必要です。こて先をスポンジなどで綺麗にして、少しはんだを追加して流し込み、こて先をパッド上で動かします。余分なはんだがこて先に付くはずです。(上にある完成品の画像を参考にしてください)

ほとんどの場合、上記の対策をすることでうまくいきますが、基板の底に何か接着することでもう少し厚みを増したいと思います。 プラスチックのブリスターパックの小さい破片が良いでしょう。

事例では、CA glueと呼ばれる瞬間接着材を基板裏のUSBコネクタの部分に少しだけ垂らして、プラスチックの破片を着けています。その後、余分な部分をカットしています。 (ボードの残りの部分、特に反対側(基板側)のUSBコネクタに接着剤がつかないように気をつけてください。)

動作確認

まだ何もしていないのに、デバッグをするのは早いと思うかもしれませんが、常に、電源を入れる前にボードをチェックするのが懸命です。数分実施するだけで今後の頭痛に悩まされずにすみます。

  • 作成したボードを回路図や配置図のイメージと照らしあわせて、正しいコンポーネントが正しい位置と方向でつけられていることを確認します。
  • 視覚的にボードを確認します。コンポーネントはボードに水平に取り付けられていること、ピンが空中に浮いていないこと。はんだがスムーズに、パッドとピンと両方に流れていること。はんだの量が充分でなく、銅の露出が多すぎる場合、あるいははんだを盛りすぎて、こて先を離したところまで引き上げられている場合、きちんと接続されていないことが多いです。温め直して、はんだを少し足すか、フラックスを別で追加し付けなおします。 また、基板とピンの間の余分なはんだブリッジを探して除去してください。
  • テスターでVCCGNDがショートしていないか確認してください。

ソフトウェアのインストール

ファームウェアをあなたのボードに書き込む前に、開発環境を整える必要があります。AVRのプログラムをするクラスにはすべてこの設定を使います。プラットフォームによって少し導入の仕方に違いがありますが、インストール後は同じように動作するはずです。

ターミナル上のコマンドラインシェル(bash)を使って以下のすべてのコマンドを実行します。もしコマンドラインに慣れていなかったら、このチュートリアル(英語)を見ることをすすめます。

For Ubuntu and other Debian-based distributions, enter the following command, followed by your password when prompted:

sudo apt-get install avrdude gcc-avr avr-libc make

MacOS

CrossPackをインストールします。

Windows

Windowsのツールチェーンのインストールは少し複雑です。インストラクションを別に(英語)用意しています。

ファームウェアの入手とビルド

ファームウェアのソースをダウンロードして、zipファイルを解凍します。(Linuxの場合 unzip firmware_45.zip)。

makeコマンドを入力します。これはATtiny45をプログラムされるhex(16進)ファイルを生成(ビルド)します。コマンドが通ると、fts_firmware.hexが作成されます。エラーが出る場合、ツールチェーンのインストールに失敗しています。エラーメッセージを調べてデバッグに役立ててください。

ATtiny45へのプログラム

まず、これからボードへ書き込むために使うプログラマの種類によってMakefileを編集します。このMakeFileはデフォルトでは、usbtinyファミリー(例えば他のFapISPボード)を使うように想定されています。違うプログラマを使う場合は、avrdude(プログラムに使うソフト)がなんと認識するかをまず調べてください。

これらは一般的なAVRプログラマです:

小さな青い半透明のプログラマ: avrisp2
大きい青い半透明のプログラマ: jtag2isp
外側に青い線のある白い箱状のプログラマ: atmelice
ATtinyを搭載した自分で製作したプログラマ: usbtiny

Makefileというファイルを編集してください。プログラマが対応しているテキストエディタで編集することが重要です。ノートパッドやワードパットなどは余計な情報を付加して認識できなくなります。Linuxでは、gedit (GUI) や nano (command line)が良いでしょう。WindowsユーザーはNotepad++を使うと良いかもしれません。MacOS標準のテキストエディットも良いでしょう、保存するときにRTFフォーマットではなくプレーンテキストを選んでください。Sublime Textはマルチプラットフォームで使える新たな選択肢です。一般的にHTMLを編集するためのエディタは大丈夫でしょう。

ファイルの上の方にこのような行があると思います:

PROGRAMMER ?= usbtiny
このusbtinyの部分をあなたが使うプログラマに変えてください。

次に、あなたのボードをUSBポートにさします。USB3.0ポートでなく2.0ポートを使ってください。また、直接コンピュータのポートにさすのではなく短いUSB延長ケーブルまたはUSB2.0のハブを使ってください。USBポートが逆になっている場合は特にそのようにしてください。そうすることで、歪みがなくなりコンピュータのUSBポートが破損する危険性がなくなります。

FTS on extension cable

赤いLEDを実装していた場合、光ります。もし光らない場合は、はんだのジャンパがきちんとブリッジされていることを確認してください。コンピュータ上でデバイスの電源供給が多すぎると表示されている場合は、ボードをポートから抜いてショートがないか確かめてください。

あなたのボードのISPヘッダにプログラマを接続してください。接続できる方向は2つありますが、1ピンの場所に合わせることが重要です。回路図にドットでマークされているところで、MISOの信号のポートです。 プログラマのケーブルの1ピンコネクタ部に、小さな矢印、ドット、あるいは製造元のマーキングがしてあるのを確認してください。ケーブルの方向を決める強制規格のようなものはないので1ピンの場所を頼りにしてください。

そして、make flashを実行してください。これはターゲットのチップを除去して、フラッシュメモリにビルドした.hexファイルを書き込みます。チップを消去し、ファームウェアが書き込まれ、検証するまでにavrdudeが表示するプログレスバーを確認してください。

もしどこかの過程がうまくいかない場合、ここを確認してください:

  • プログラマーの1ピンがボード上の1ピンに接続されている
  • ボードがしっかりUSBポートに繋がっている
  • ATtiny45が正しい方向で実装されている
  • ATtiny45とISPヘッダがしっかりはんだ付けされている(コネクタの下の回路部でもショートは起こりえます)

    上記のすべてをチェックしてもボードをプログラムできない場合は、テスターを使用してチップ上のピンとISPヘッダの間に連続性があること、およびそうでないはずの場所に連続性がないことを確認します。(隣のピンや回路部にショートがないかも)

フラッシュメモリに書き込みできたら、fuseの設定を段階的にしていきます:

  • まず、マイクロコントローラがクロックソースを取得する場所を制御するヒューズを設定します。 (USBはPLLから来るクロックを必要とし、8分周されません)。これにより、ボードがUSBデバイスとして機能することを確認できますが、他のボードをプログラムすることはまだできません。
  • USBが機能することを確認した後にのみ、リセットピンを無効にして通常のGPIOピンに変えるヒューズを設定します。これはチップが他の基板を書き込むときのにリセットピンを使用することを可能にしますが、このチップが再びプログラムされる能力を無効にします。これは簡単には元に戻せないので、他のすべてが最初に機能することを確認してから実施したいです。

  • make fusesコマンドを実行します。これはリセットピンを無効にする以外の全てのヒューズを設定します。make flashの時同様、avrdudeのプログレスバーをいくつか確認できます。この手順が失敗して前の手順がうまくいった場合は、どこかに断続的な接続(?)がある可能性があります。

    USB機能のテスト

    プログラマーとして使用できるようにするためのヒューズを切る(設定する)前に、ボード上のUSBが機能することを確認します。ボードをUSBポートから外し、プログラマーを外してからUSBに差し込みます。ボードのプログラミングに使用していたプログラマもコンピュータに接続されていないことを確認してください。

    Linux

    Type lsusb in the terminal, which will list USB devices. If you see a "Multiple Vendors USBtiny" device, it worked! If it didn't, the dmesg command might provide more info on what went wrong. You want to see a message about a "New low-speed USB device" without any further errors. (Note that sudo dmesg -c will clear the messages after printing them out, which is useful to do before plugging in your board so you'll be able to tell exactly which messages are a result of plugging it in). If you don't see the "new low-speed device" message, check the pull-up on the USB line (the 1kΩ and 499Ω resistors, R1 and R2, in series between VCC and D-) for correct values and good connections (the computer uses these resistors and their values to detect what type of USB device has been connected). If you do see the "new low-speed device" message, but there are other errors after, try the following:

    • Sometimes it's just a bad connection with the port; try unplugging and replugging. Check to make sure that the USB contacts are clean, and have even amounts of solder on all of them, and that the surfaces are smooth.
    • USB 2.0 ports are more likely to work than USB 3.0 ports. If you don't have any USB 2.0 ports, try plugging in through a USB 2.0 hub.
    • Check the traces and components between the USB data pins and the microcontroller. Make sure the zener diodes are in the correct orientation, that the series termination resistors (R3 and R4) are the correct values (49Ω) and that the connections are good. Measure continuity between the resistors and the USB contacts, and the resistors and the microcontroller pins that they connect to (pins 2 and 3). Check for shorts between microcontroller pins 2 and 3, and to other nearby traces.
    • Try plugging into a computer that you know has worked with someone else's board, or try plugging someone else's known working board into your computer. This will help you narrow down whether you have an incompatibility with your USB ports or a problem with your board.

    MacOS

Appleのシステムプロファイルを開きます(アップルメニュー > このマックについて > システムレポート)。左のメニューからUSBを選択します。右側にUSBTinyが表示されているはずです。されない場合、前の章に書いてあるデバッグインストラクションに従ってください。(MacOSにはdmesgコマンドはありません。近しい機能はコンソールアプリケーション(?)で見れるはずです。)もしこれらを確認しても変化が見られない場合、作成したISPをLinuxコンピュータにつなぎ、dmesgコマンドで"new low-speed device"が表示されるかどうかを見てください。

Windows

Windowsの場合デバイスマネージャー上でUSBデバイスが表示されます。(スタートメニュー > コントロールパネル > システム > デバイスマネージャー),正しいドライバーがインストールされるまで表示されません。USBデバイスは"デバイスとプリンター"または"ハードウェアとサウンド""にも表示されます。WindowsでUSBtinyデバイスが認識されているのか曖昧な場合は他の人が持っているLinuxあるいはMacで確認させてもらうことをおすすめします。

リセットフューズを切る

おめでとうございます、ここまでくればプログラマーとしてほぼ動作しています。ボード上のAttiny45のコードが正しくロードされ動いています。他のボードに書き込みができるプログラマにするために残りの2ステップを実施します。

1つ目は、ATtiny45 のリセットピンをGPIOピンに変更するためにbitを変える必要があります。これを一度するとATtiny45に再度プログラムするということができなくなるので、これまでの過程がすべてうまく動作してから実施してください。作成したISPプログラマを再度コンピュータに繋げてmake rstdisblを実施してください。これはmake fuses と同じことをしますが、今回はリセットを切るビットも含まれます。実行後のプログレスバーを確認してください、その後avrdudeはISPヘッダを通じてこのチップとは2度と会話ができなくなります。

2つ目は、はんだのブリッジを除去しVCCとISPヘッダのVprogピンの接続を切ることです。余分なはんだがこて先についていないことを確認し、はんだ吸い取り線でジャンパ部のはんだを取り除いてください。

作成したプログラマのテスト

これであなたはあなたが作った動作するISPプログラマを手に入れました!しかし、これで終わりにする前に、一度作成したボードで他のボードへの書き込みを試してください。

Original tutorial by:

Brian Mayton

Updated by:

Craig Hobern | Fab Lab Wgtn | v1.0 | 2017-02-17 | Converted to Markdown

  • 日本語訳 Asako Okazaki ,Fab Lab Kamakura 01.2019

Creative Commons
Attribution-NonCommercial-ShareAlike 4.0 International License