概要
Arduino Unoは、ATmega328P(データシート)をベースにしたマイクロコントローラボードです。
14本のデジタル入出力端子(うち6本はPWM出力として使用可能)、6本のアナログ入力端子、16MHzセラミック振動子(CSTCE16M0V53-R0)、USB接続端子、電源ジャック、ICSPヘッダー、リセットボタンを備えています。
Arduinoシリーズでは最もポピュラーなボードで、多くの参考文献があるため、学習には最適なモデルです。
USBケーブルでコンピューターに接続したり、AC-DCアダプターやバッテリーで電源を供給するだけで、すぐに使い始めることができます。
“Uno “はイタリア語で ”1つ” という意味で、Arduinoソフトウェア(IDE)1.0のリリースを記念して選ばれました。Unoボードとバージョン1.0のArduino Software (IDE)は、Arduinoのスタートバージョンでしたが、現在はより新しいリリースに進化しています。
関連ボード
- Arduino Uno Rev3 SMD
- Arduino Uno WiFi Rev2
技術スペック
MICROCONTROLLER | ATmega328P |
OPERATING VOLTAGE | 5V |
INPUT VOLTAGE (RECOMMENDED) | 7-12V |
INPUT VOLTAGE (LIMIT) | 6-20V |
DIGITAL I/O PINS | 14 (of which 6 provide PWM output) |
PWM DIGITAL I/O PINS | 6 |
ANALOG INPUT PINS | 6 |
DC CURRENT PER I/O PIN | 20 mA |
DC CURRENT FOR 3.3V PIN | 50 mA |
FLASH MEMORY | 32 KB (ATmega328P) of which 0.5 KB used by bootloader |
SRAM | 2 KB (ATmega328P) |
EEPROM | 1 KB (ATmega328P) |
CLOCK SPEED | 16 MHz |
LED_BUILTIN | 13 |
LENGTH | 68.6 mm |
WIDTH | 53.4 mm |
WEIGHT | 25 g |
ドキュメント
Arduino Unoはオープンソースのハードウェアです。
以下をクリックし公式サイトよりファイルをダウンロードし自分のボードを作ることができます。
▶電子回路[EAGLE FILE ZIP]
▶電子回路[PDF]
▶ボード図面[.DXS]
▶ATmega328P DataSheet
Pinout Diagram
▶pinout diagramのダウンロードはこちらをクリック (PDF)
プログラミング
Arduino Unoは、(Arduino Software (IDE))でプログラミングすることができます。
IDEで開発を行う場合、メニューの「ツール」→「ボード」から「Arduino Uno」を選択します(ボードに搭載されているマイクロコントローラーに合わせてください)。
Arduino Unoに搭載されているATmega328には、ブートローダーがあらかじめプログラムされており、外部のハードウェア・プログラマーを使用せずにあなたが作った新しいソースコードをUSBを通して簡単にアップロードすることができます。
プログラムの書き込みは、オリジナルのSTK500プロトコルを使用して通信します(リファレンス、Cヘッダーファイル)。
もちろん、ブートローダーを使用せず、Arduino ISPなどを使ってICSP(In-Circuit Serial Programming)ヘッダーからマイコンのネイティブコードでプログラミングすることもできます。
IDEとUSBでの通信にはボードに実装された通信専用のCPU「ATmega16U2(rev1およびrev2ボードでは8U2)」を通して行われます。このCPUのファームウェアのソースコードも、Arduinoリポジトリで入手できます。
ATmega16U2/8U2にはDFUブートローダが搭載されており、以下の方法で起動することができます。
Rev1ボード | ボード裏面のはんだジャンパー(イタリアの地図の近く)を接続してから8U2を再投入する。 |
Rev2以降のボード | 8U2/16U2のHWBラインをグランドに引き込む抵抗があり、DFUモードにするのが簡単です。 |
また、Atmel’s FLIP Software(Windows)またはDFU Programmer(Mac OS XおよびLinux)を使用して、新しいファームウェアをロードするおともできます。
または、外部プログラマでISPヘッダを使用することもできます(DFUブートローダを上書きします)。詳しくは、こちらのユーザー投稿のチュートリアルをご覧ください。
注意事項
Arduino Unoには、コンピュータのUSBポートを短絡や過電流から保護するリセット式ポリヒューズが搭載されています。ほとんどのコンピュータは独自の内部保護機能を備えていますが、ボード側にも念のためにヒューズがついています。
USBポートに500mA以上の電流が流れた場合、ショートや過負荷が解消されるまで、ヒューズが自動的に接続を解除します。
通信部
Unoは、PCとのUSB通信においてFTDI社のUSB-シリアルドライバーチップを使用していない点で、ほかのArduinoボードと異なります。その代わりに、USB-シリアルコンバーターとしてAtmega16U2(バージョンR2まではAtmega8U2)を搭載し、通信専用のプログラムが書き込まれています。
電源部
Arduino Unoボードの電源は、USB接続または外部電源から取ることができます。
電源は自動的に選択されます。
外部電源(USB以外)には、AC-DCアダプターまたはバッテリー等を使用できます。
アダプターコネクタは、2.1mmのセンターポジティブプラグをボードの電源ジャックに差し込んで接続します。電池のリード線は、POWERコネクタのGNDおよびVinピンヘッダに挿入できます。
ACアダプタからの場合、6~20Vの外部電源で動作します。
ただし、7V未満の場合は、5V端子の供給電圧が5V未満となり、基板が不安定になることがあります。また、12V以上を使用すると、電圧レギュレータが過熱して基板が破損することがあります。
推奨範囲は7~12Vです。
電源端子について
Vin | 外部電源を使用しているときのArduinoボードへの入力電圧です。 USB接続やその他の調整された電源からの5ボルトとは異なります。 このピンから電圧を供給することができます。 また、電源ジャックから電圧を供給する場合はこのピンに接続します。 |
5V | ボード上のレギュレーターからレギュレートされた5Vを出力します。 基板への電源供給は、DC電源ジャック(7〜12V)、USBコネクタ(5V)、基板のVIN端子(7〜12V)のいずれかから行います。 5Vや3.3Vの端子から電圧を供給すると、レギュレータがバイパスされるため、ボードが破損する恐れがありまのでお勧めできません。 |
3V3 | ボード上のレギュレータによって生成される3.3Vの電源です。最大消費電流は50mA。 |
GND | グラウンド端子 |
IOREF | Arduinoボード上のこのピンは、マイクロコントローラが動作するための電圧基準を提供します。適切に構成されたシールドは、IOREFピンの電圧を読み取って適切な電源を選択したり、出力の電圧変換器を有効にして5Vまたは3.3Vで動作させることができます。 |
メモリ
ATmega328は32KBのフラッシュメモリと(0.5KBはブートローダが占有)、2KBのSRAM、1KBのEEPROMを搭載しています(EEPROMへのデータの読み書きはライブラリを使って行います)。
入力と出力
ArduinoのピンとATmega328Pのポートのマッピングをご覧ください。
Atmega8,168,328のマッピングは同じです。
Unoの14本のデジタルピンは、pinMode()、digitalWrite()、digitalRead()関数を使用して、入力または出力として使用できます。
これらのピンは5ボルトで動作します。
各ピンは、推奨動作条件として20mAで、20~50kΩの内部プルアップ抵抗(デフォルトでは切断されている)を備えています。
マイクロコントローラーに永久的なダメージを与えないために、どのI/Oピンにも最大40mAを超えないように使います。
その他の特殊な機能を持つピン
Serial | (0)(1) TTLレベルでのシリアルデータの受信(RX)および送信(TX)に使用されます。 これらのピンは、ATmega8U2 USB-TTLシリアルチップの対応するピンに接続されています。 |
外部割込みピン | (2)(3) LOW 、HIGH または LWO立下り、HIGH立ち上がりの変化で割り込みをトリガするように設定できます。 詳細はattachInterrupt()関数をご参照ください。 |
PWM | (3)(5)(6)(9)(10)(11) analogWrite()関数で8ビットのPWM出力として使用できます。 |
SPI | 10 (ss), 11 (mosi), 12 (miso), 13 (sck) SPIライブラリを用いたSPI通信に使用することができます。 |
LED | (13)デジタル端子13で駆動するLEDを内蔵しています。ピンがHIGH値のときにはLEDが点灯し、ピンがLOWのときには消灯します。 |
TWI | A4(SDA),A5(SCL) Wireライブラリを使ったTWI通信に使用することができます。 |
Analog | A0~A5 10ビットの分解能(0~1023)を0~5Vまでで測定します。 AREFピンとanalogReference()関数を使用して、範囲の上限を変更することができます。 |
RESET | LOWにすると、マイクロコントローラーがリセットされます。通常、ボード上のリセットボタンをブロックするシールドにリセットボタンを追加するために使用します。 |
通信機能
Arduino Unoには、コンピュータや他のArduinoボード、他のマイクロコントローラと通信するための機能が多数搭載されています。
ATmega328はUART TTL(5V)シリアル通信を提供しており、デジタルピン0(RX)と1(TX)で利用できます。
ボード上のATmega16U2は、このシリアル通信をUSB経由でチャネルし、コンピュータ上のソフトウェアに仮想COMポートとして表示されます。
16U2のファームウェアは、標準のUSB COMドライバーを使用しており、外部ドライバーは必要ありません。ただし、Windowsでは.infファイルが必要です。
Arduinoソフトウェア(IDE)にはシリアルモニターが含まれており、簡単なテキストデータをボードとの間で送受信することができます。
USB-to-serialチップとコンピュータへのUSB接続でデータが送信されているときは、ボードのRXとTXのLEDが点滅します(ただし、ピン0と1のシリアル通信はできません)。
SoftwareSerialライブラリを使えば、Unoのどのデジタルピンでもシリアル通信が可能で
ATmega328は、I2C(TWI)やSPI通信にも対応しています。
Arduinoソフトウェア(IDE)には、I2Cバスの使用を簡略化するWireライブラリが含まれています。詳細はドキュメントを参照してください。SPI通信については、SPIライブラリを使用してください。
自動(ソフトウェア)リセット
Arduino Unoボードは、IDEからのプログラムアップロード後に物理的にリセットボタンを押す必要はありません。
USBで接続されたコンピュータ上で動作するソフトウェアによって自動でリセットできるように設計されています。
ATmega8U2/16U2のハードウェアフローコントロールラインの1つ(DTR)は、100ナノファラッドのコンデンサを介してATmega328のリセットラインに接続されています。
このラインがアサートされる(LOWになる)と、リセットラインはチップをリセットするのに十分な長さだけLOWとなります。
Arduinoソフトウェア(IDE)はこの機能を利用して、インターフェースツールバーのアップロードボタンを押すだけでコードをアップロードすることができます。つまり、DTRの低下とアップロードの開始をうまく調整できるので、ブートローダのタイムアウトを短くすることができるのです。
この設定には他の意味もあります。
Mac OS XまたはLinuxを搭載したコンピュータに接続した場合、ソフトウェアから(USB経由で)接続されるたびにリセットされます。その後の約半秒間は、Uno上でブートローダが動作しています。
ブートローダは、不正なデータ(新しいコードのアップロード以外のもの)を無視するようにプログラムされていますが、接続が開始された後にボードに送信される最初の数バイトのデータを傍受します。ボード上で実行されているスケッチが最初の起動時にワンタイム・コンフィギュレーションやその他のデータを受け取る場合、通信相手のソフトウェアが接続を開始した後、このデータを送信する前に1秒待つことを確認してください。
Unoのボードには、自動リセットを無効にするためのトレースが含まれています。
このトレースの両側のパッドをハンダ付けすることで、再び有効にすることができます。
これは “RESET-EN “と表示されています。また、5Vから110Ωの抵抗をリセットラインに接続することで、自動リセットを無効にすることができるかもしれません。詳しくは、このフォーラムのスレッドをご覧ください。
リビジョン
リビジョン3では、以下の新機能が追加されました。
- 1.0ピンアウト:AREFピンの近くにSDAとSCLピンを追加し、RESETピンの近くに他の2つの新しいピンを配置し、ボードから供給される電圧にシールドを適応させるIOREFを追加しました。将来的には、シールドは、5Vで動作するAVRを使用するボードと、3.3Vで動作するArduino Dueの両方に対応する予定です。2番目のピンは未接続のピンで、将来の目的のために予約されています。
- より強力なRESET回路。
- ATmega16U2が8U2に置き換わりました。