2015年2月7日土曜日

もう一度 Arduino (3)arduino の自作

 arduino の基本構成は一言でいえば左図に示すようにパソコンとのインターフェース(ここでは USB adapter )と ATMEGA328P のような AVR マイクロチップ) を RESET、TXD、RXDの三本の線で結んだものです。

 TXD線は USB adapter の TX 端子からAVRの RXD 端子へ 、RXD線はAVRの TXD 端子から USB adapter の RX 端子へ信号をそれぞれ送る働きをします。この2本は所謂クロス接続になっており、配線の際よく間違えるので要注意です。

 そしてRESET線は USB adapter の DTR 端子から 0.1μFのコンデンサーを介してAVRの RESET 端子へパソコンで作成した arduino のプログラム(スケッチと呼ぶ)を転送するスタート信号を送る arduino 独特のものです。 この発想は大変ユニークなのですが、 DTR 信号をこのように使うのは多少クリティカルなようで、自作の場合は要注意です。

 USB adapter については右上写真に示すような「FT232RL FTDI 3.3V 5.5V USB to TTL Serial Adapter Module for Arduino Mini Port」なるものを ebay で入手しました。はるばる香港からの配達でも送料込みで1個¥400未満というのは大変魅力ですが、ナニブンかの国のこととてオウン・リスクにて、、、、

というのはここで使っている FT232RL というチップは多機能で性能もよく、ニセモノまで登場する始末とかで、業を煮やした製造元がディバイス・ドライバーに手を入れたため本物でないと作動しなくなったようです。  

 あらためて USB adapter を使った  Skeleton Arduino の回路図を示します。これによって、直接USB端子に接続でき、電源もUSBからもらうことができ、軽快になりました。

 注意事項としては、RESET線に入る 0.1μFのコンデンサーはセラミック・コンデンサーでなくフィルム・コンデンサーを使うのがよいとされています。
 また、図中の赤線で囲ってあるダイオードは最近の Arduino ボードには必ず装着されているものです。

 左写真は DTR からのRESET信号を観測したものです。+5V から 0V に落ちる信号で Arduino ボードが動き始めるわけです。
 右写真は左写真中の白線で囲った部分を拡大し、さらに 0.1μFのコンデンサーの後の信号(実際のAVRに対する RESET 信号)を黄色で表示したものです。
 ダイオードの効果は一目瞭然!!ピークで約10Vあったスパイクがきれいに取れています。  ちなみにAVRの絶対最大定格最大動作電圧は6.0Vです。

 いよいよ組み立てです。今回はハンダづけなしで作るため、左図のようにブレッド・ボードを使いました。
 クリスタル発振子は16MHzのものを使います。

 右写真はとりあえずの完成で、小さなブレッド・ボードに USB adapter と ATMEGA328P を載せ、動作チェックのために19番ピン( Arduino では13番)にLEDが接続してあり、いわゆる「Lチカ」ができるようにしてあります。
 またこのLEDは正しくブート・ローダが書き込まれていれば、RESETボタンを押したとき応答点滅で答えてくれます。

 以上、簡単な Arduino の自作について述べてきましたが、先回の最後に書いたように、AVRにブート・ローダをいかに書き込むかが悩みの種となります。(まさに「鶏と卵」問題です)

 ・ 一番容易な方法は、先達にお願いすることです、道具さえあれば簡単なので、、、、
 ・ もう一つはブート・ローダ書き込み済みの ATMEGA328P を購入することです、やはりニーズがあるようで、AMAZONでも売っています。

 ・ 何もこんなことで悩まずに、正規の Arduino UNO rev3 を購入してももちろんOKです。ただしこの場合は ATMEGA328P にこのブログとおなじDIP(ムカデ・タイプ)搭載のものを選ぶといいです。

 ・ 正規品でないものも市場には多く出ています、もちろんかの国製で、数百円のものもありますが、DIPタイプの ATMEGA328P が搭載されていることはもちろんですが、 USB adapter の部分に要注意です。
 最新版はここに ATMEGA16U2 が使ってありますが、 FT232RL はまだ良いとして、前述した FT232RL 問題から CH340 というチップを使ったものを最近多く見かけますが、私なら遠慮したいところです。

 その他については arduino で検索すれば驚くほどたくさんの知識があふれています、もちろん私もその恩恵にあずかっていますが、、、、先ずは一歩踏み出してみることだと思います。

0 件のコメント: