= Arduino Duemilanove = [http://arduino.cc/en/Main/ArduinoBoardDuemilanove 原文はこちら] [[Image(http://arduino.cc/en/uploads/Main/ArduinoDuemilanove.jpg)]] == 概要 == Arduino Duemilanove (「2009」)は、ATmega168([http://www.atmel.com/dyn/resources/prod_documents/doc2545.pdf データシート])を使用したマイコンボードです。 デジタルI/Oが14本(このうち6本はPWMとして使えます)、アナログ入力が6本あります。 クロックは16MHz。その他USB接続(デバイス側)、電源コネクタ、ISPコネクタ、リセットボタンを装備しています。 マイコンを使用するのに必要な物が全てそろっています。 単純に、USBでパソコンに接続するか、ACアダプタまたは電池を接続するだけで使えます。 「Duemilanove」は、イタリア語で2009を意味します。 ちょっと早いですが、リリースの年を意味しています。 Duemilanoveは、現時点で最新のUSB接続型Arduinoです。 以前のバージョンとの比較については、[http://arduino.cc/en/Main/Boards Arduinoボードの一覧]を参照してください。 == 回路図およびリファレンスデザイン == EAGLE形式の設計図:[http://arduino.cc/en/uploads/Main/arduino-duemilanove-reference-design.zip arduino-duemilanove-reference-design.zip] 回路図:[http://arduino.cc/en/uploads/Main/arduino-duemilanove-schematic.pdf arduino-duemilanove-schematic.pdf] == 仕様一覧 == || マイクロコントローラ || ATmega168 || || 動作電圧 || 5V || || 入力電圧 || 7~12V || || 入力電圧(限界) || 6~20V || || デジタルI/O || 14本(うち6本はPWMとして使用可能) || || アナログ入力 || 6本 || || デジタル出力の最大負荷 || 40mA || || 3.3V出力ピンの最大負荷 || 50mA || || フラッシュメモリ || 16KiB(うち2KiBはブートローダに使用済み) || || SRAM || 1KiB || || EEPROM || 512B || || クロック周波数 || 16MHz || == 電源 == 電源の供給は、USB接続または外部電源によって行います。これらは自動的に選択されます。 外部電源にはACアダプタまたは電池を使用します。 接続は、中心電極の太さ2.1mmの、中心がプラスのコネクタを使用します。 電池からの電源供給は、4個あるピンヘッダのうち「POWER」コネクタの「Gnd」ピンと「Vin」ピンに裸電線を差し込んで行うこともできます。 入力電圧の範囲は6~20Vです。しかし、7V以下の場合、5Vであるべき導線の電圧が5Vを下回り、動作が不安定になる可能性があります。 また、12V以上の場合、搭載する電源レギュレータが加熱し壊れる可能性があります。 推奨する入力電圧の範囲は、7~12Vです。 「POWER」コネクタのピンは以下の通りです。 '''Vin''' (USBコネクタやその他の安定化電源からの5Vではない)外部電源の入力です。 外部電源は、このピンに供給してください。 また、電源ジャックから供給している場合は、供給されているそのままの電圧がここに出力されています。 '''5V''' ボード上のマイクロコントローラやその他の部品に供給されている安定化された5V電源の導線です。 この導線の電圧は、電源ジャックまたはVinからの電圧をボード上の電源レギュレータによって安定化したもの、またはUSBコネクタからの5V電圧です。 また、外部の安定化電源からの5V電圧を、このピンに供給することもできます。 電源ジャック、Vin、5Vピンから供給された電圧がUSBコネクタに逆流することはありません。 '''3V3''' ボード上のFTDIチップが生成した3.3V電源です。このピンの最大負荷は50mAです。 '''GND''' グラウンドです。 == メモリ == ATmega168には、プログラムコードの格納用として16KiBのフラッシュメモリがあります(このうち2KiBはブートローダ用に使用されています)。 さらに、1KiBのSRAM、512バイトのEEPROMがあります。 EEPROMは、[http://www.arduino.cc/en/Reference/EEPROM EEPROMライブラリ]を用いてプログラム中から読み書きすることができます。 == 入出力 == 14本あるデジタルI/Oピンは、入力または出力に切り替えて使用することができます。 切り替えには[http://arduino.cc/en/Reference/PinMode pinMode()]関数、出力には[http://arduino.cc/en/Reference/DigitalWrite digitalWrite()]関数、入力には[http://arduino.cc/en/Reference/DigitalRead digitalRead()]関数を使用します。 入出力の動作電圧は5Vです。 出力として使用する場合の最大負荷は40mAです。 入力として使用する場合、20~50KΩのプルアップ抵抗が接続されます。 一部のピンには、特有の役割があります。 '''シリアル通信:0番(RX、受信)、1番(TX、送信)''' シリアル通信の送受信に使います。 これらのピンは、FTDI USB~TTLレベルシリアル通信変換チップの対応するピンに接続されています。 '''外部割り込み:2番、3番''' 設定により、これらのピンの値LOW、LOW→HIGHのエッジ、HIGH→LOWのエッジ、いずれかの方向の値の変化によって割り込みをかけることができます。 詳細については[http://arduino.cc/en/Reference/AttachInterrupt attachInterrupt()関数のページ]を参照してください。 '''PWM:3番、5番、6番、9番、10番、11番''' [http://arduino.cc/en/Reference/AnalogWrite analogWrite()]関数により、8ビットのPWMでアナログ電圧を出力することができます。 '''SPI:10番(SS)、11番(MOSI)、12番(MISO)、13番(SCK)''' SPIによる通信に使用することができます。 SPIはハードウェア的にはサポートされていますが、現時点ではArduino言語ではサポートしていません。 '''LED:13番''' 13番ピンは、ボード上に搭載したLEDにも接続されています。 値がHIGHの時に点灯し、LOWの時に消灯します。 Duemilanoveには、アナログ入力が6本あり、それぞれ分解能は10ビットです(つまり、1024段階の値を取ることができます)。 デフォルトでは0~5Vの範囲を計測しますが、AREFピンおよびハードウェアレベルのプログラムをいくらか行うことによって、範囲の上限を変更することができます。 アナログ入力用のピンの一部には、以下の特殊な機能もあります。 '''I^2^C:アナログ4番(SDA)、アナログ5番(SCL)''' [http://wiring.org.co/reference/libraries/Wire/index.html 「Wire」ライブラリ](解説はWiringのウェブサイトにあります)を使用すると、I^2^C(TWI)による通信を行うことができます。 この他、ボード上には以下のピンがあります。 '''AREFピン''' アナログ入力ピンで入力を行う際の参照電圧を印加します。 このピンに印加された電圧を参照電圧として使用するかどうかは、[http://arduino.cc/en/Reference/AnalogReference analogReference()]で設定します。 '''Reset(リセット)ピン''' このピンへの入力電圧をLOWにすると、搭載しているマクロコントローラをリセットすることができます。 シールドを搭載するとDuemilanove上のリセットボタンを覆い隠してしまうため、このピンを使ってシールド上にリセットボタンを装備するのが普通です。 [http://arduino.cc/en/Hacking/PinMapping168 ArduinoとATmega168チップの入出力ピンとの対応]を参考にして下さい。 == 通信 == Arduino Duemilanoveには、コンピュータ、他のArduino、あるいは他のマイクロコントローラと通信を行う機能があります。 ATmega168はTTLレベル(5Vレベル)のUARTによるシリアル通信機能を持っていますが、この機能はデジタル入出力ピンの0番(RX、受信)および1番(TX、送信)で利用することができます。 Duemilanoveが搭載するFTDI FT232RLチップはこのシリアル通信をUSB上の通信に変換し、[http://www.ftdichip.com/Drivers/VCP.htm FTDIドライバ](Arduinoソフトウェアの配布物に同梱してあります)によって、パソコン上では仮想COMポートとして認識されます。 Arduinoソフトウェアにはシリアルモニタ機能があり、これを使うとArduinoボードが送信するデータを表示し、またArduinoボードに対してデータを送信することができます。 [http://www.arduino.cc/en/Reference/SoftwareSerial ソフトウェアシリアル通信ライブラリ]を使用すれば、0番1番以外の任意のデジタル入出力ピンでもシリアル通信を行うことができます。 ATmega168は、I^2^C(TWI)およびSPIによる通信の機能をも持っています。 Arduinoソフトウェアには、I^2^Cによる通信を簡単にするWireライブラリが含まれています。 このライブラリの詳細については、[http://wiring.org.co/reference/libraries/Wire/index.html Wiringのウェブサイト]を参照して下さい。 SPIによる通信の機能は、現状のライブラリでは提供していません。 SPIの使用方法については、ATmega168のデータシートを参照してください。 == プログラミング == Arduino Duemilanoveにプログラムを書き込むには、Arduinoソフトウェア([http://arduino.cc/en/Main/Software ダウンロード])を使用します。 詳細については、[http://arduino.cc/en/Reference/HomePage リファレンスマニュアル]および[http://arduino.cc/en/Tutorial/HomePage チュートリアル]を参照して下さい。 Arduino Duemilanove上のATmega168には、あらかじめブートローダを書き込んであります。 このブートローダにより、外部の書き込み装置を使わずにプログラムを書き込むことが可能になっています。 書き込みの際の通信は、アトメル社が開発したSTK500プロトコル([http://www.atmel.com/dyn/resources/prod_documents/doc2525.pdf リファレンス]、[http://www.atmel.com/dyn/resources/prod_documents/avr061.zip Cのヘッダファイル])です。 ブートローダを使用せず、ICSPヘッダ(In-Circuit Serial Programming、ISPとも呼ぶ)を使用してATmega168に書き込むこともできます。 [http://arduino.cc/en/Hacking/Programmer 書き込み方法については、このページを参照して下さい。] == 自動リセット(ソフトウェアリセット) == プログラムを書き込むにはリセットする必要があります。 Duemilanoveは、ボード上のリセットボタンを物理的に押さなくても、パソコン上のソフトウェアからリセットすることができます。 FT232RLチップが備えるハードウェアフロー制御信号線のうちの1本(DTR)を、0.1μFのコンデンサを介してATmega168のリセット信号線に接続してあります。 DTR信号を有効にすると(LOWレベルにすると)、一定時間の間リセット信号線がLOWレベルに維持され、これによってATmega168がリセットされます。 この機能により、Arduinoソフトウェアのウィンドウ上のアップロードボタンを押すだけでプログラムを書き込むことが可能になっています。 プログラムの書き込みの直前にDTRをLOWレベルにするだけでいいので、ブートローダのタイムアウト(リセット直後にプログラムの書き込みを待つ時間)を短く構成できています。 こういった構成にしてあることにより、さらに注意すべき点があります。 Duemilanove がMac OS XまたはLinuxが動作しているコンピュータに接続されている場合、コンピュータ上のソフトウェアが(USB経由の)シリアル接続を開くたびに、Duemilanoveはリセットされます。 そのため、その直後の0.5秒程度の間、Duemilanove上ではブートローダが動作します。 ブートローダはプログラムを書き込むための通信データ以外のデータを無視するように作ってあるため、シリアル接続が開かれた直後に到着したデータは捨てられてしまいます。 Duemilanove上のスケッチ(プログラム)がコンピュータ上のソフトウェアから何らかのデータを受け取って動作するようにする場合には、コンピュータ上のソフトウェアはシリアル接続を開いてから1秒以上待ってからデータを送信するようにしてください。 Duemilanoveのボード上の「RESET-EN」とマークしてある部分のパターンをカッター等で切断すると、この自動リセット機能を無効化できます。 切断場所の左右にはパッドを近接して配置してあるので、切断した場所をまたぐようにハンダを盛り上げてハンダ付けを行えば、再び自動リセット機能を有効にできます。 == USBの過電流保護 == 誤使用にでショートまたは過電流が流れた場合にコンピュータのUSBポートを壊してしまうのを防ぐため、Duemilanoveにはリセッタブルヒューズを搭載してあります。 たいていのコンピュータのUSBポートには過電流保護機能がありますが、リセッタブルヒューズはそれとは異なる保護を行います。 USBポートのパスパワーからDuemilanoveに500mA以上の過電流が流れると、過電流の状態が解消されるまで、リセッタブルヒューズにより電源が切断されます。 == 物理的形状 == Duemilanoveの大きさは、USBコネクタおよび電源ジャックをのぞいて、横2.7インチ×縦2.1インチです。 ボードをケース等にネジ止めするための穴が3個あります。 デジタル入出力ピンの7番と8番の間の距離は、160mil(0.16インチ)であり、他のピン間の100mil単位とは異なることに注意して下さい。 == 名前の発音を聞いてみて下さい == 「Duemilanove」はイタリア語です。 正しい発音の仕方がわからない方のために、音声ファイルを用意しました。 ぜひ聞いてみて下さい。 [http://arduino.cc/en/uploads/Main/Arduino_Duemilanove.wav WAV] [http://arduino.cc/en/uploads/Main/Arduino_Duemilanove.ogg OGG] [http://arduino.cc/en/uploads/Main/Arduino_Duemilanove.mp3 MP3] [http://arduino.cc/en/uploads/Main/Arduino_Duemilanove.flac FLAC] [http://arduino.cc/en/uploads/Main/Arduino_Duemilanove.wma WMA]