Arduino用ブートローダ/スケッチライタの製作(6)

このページをスマホなどでご覧になる場合は、画面を横長にする方が読みやすくなります。
目次へ  前のページへ (1) (2) (3) (4) (5) (6) (7) (8) (9) 次のページへ
2015年06月24日 USBシリアル変換器の出力電圧に関する注意書きを追加。

6-3.ブートローダ書き込み済みのATmage168/328Pにスケッチを書き込む方法

前のページで、ATmega168/328Pにブートローダを書き込む方法を説明しましたが、今回は、ブートローダ書き込み済みのATmega168/328Pにスケッチを書き込む方法を説明します。

以下の手順に従って、スケッチを書き込んでください。ただし、前のページの方法でブートローダを書きこんだ直後にスケッチを書き込む場合は、前のページの手順11と、このページの手順1~4および手順7~8を省略することができます。

【手順1】 CN1にUSBシリアル変換器が接続されていないことと、CN2にジャンパピンが付いていないことを確認する
写真34(再掲)、CN1とCN2に何もつながっていないことを確認
↑ 画像をクリックすると拡大
写真34(再掲)、CN1とCN2に何もつながっていないことを確認

USBシリアル変換器から電源が供給されている状態でジャンパピンの設定を変えると、電源がショートする事があり、故障の原因になります。過電流保護用のポリスイッチを付けているので、簡単には故障しない設計にはなっていますが、保護回路を過信する事は禁物です。

【手順2】 必要ならCN4にジャンパピンを付ける
写真35(再掲)、CN4へのジャンパピンの取り付け
↑ 画像をクリックすると拡大
写真35(再掲)、CN4へのジャンパピンの取り付け

CN4(ENABLE BUZZER)にジャンパピンを付けると、スケッチの書き込み時に、書き込みの様子を音でモニターできます。音が出るとうるさい場合は、CN4にはジャンパピンを付けないでください。

【手順3】 CN5にジャンパピンを6個接続し、CN6とCN7にはジャンパピンが付いていないことを確認する。
写真36(再掲)、CN5にジャンパピンを6個接続
↑ 画像をクリックすると拡大
写真36(再掲)、CN5にジャンパピンを6個接続

注:CN5~CN7は、マイコンの種類の選択用のピンヘッダです。ATmega88/88V/168/168P/328Pの場合は、CN5のみに6個のジャンパピンを付けます。ATtiny44/84の場合は、CN6のみに6個のジャンパピンを付けます。ATtiny45/85の場合は、CN7のみに6個のジャンパピンを付けます。

【手順4】 USBシリアル変換器をCN1に接続し、さらにUSBケーブルでパソコンに接続する。
写真37(再掲)、USBシリアル変換器とUSBケーブルを接続
↑ 画像をクリックすると拡大
写真37(再掲)、USBシリアル変換器とUSBケーブルを接続

使用するUSBシリアル変換器は、5V出力の物をお勧めします。3.3V出力の物でも使えますが、制限事項があります。上の写真に写っているのは、5V出力と3.3V出力を切り替えられる物です。

電源の入ったパソコンにUSBケーブルを接続すると、LED1(POWER)が点灯します。また、LED6(HEARTBEAT)が周期的に明るくなったり暗くなったりします。このようにLED6が周期的に明暗を繰り返すのはArduinoISPのファームウェアが正常に動作している印です。

【手順5】 SW1をTHROUGH側に切り替える
写真44、SW1をTHROUGH側に切り替える
↑ 画像をクリックすると拡大
写真44、SW1をTHROUGH側に切り替える

注:この操作で、USBシリアル変換器からの信号はArduinoISPを介することなく、直接スケッチを書き込むATmega168/328Pに伝わるようになります。その結果、マイコンのブートローダにスケッチの情報を読み込ませることが可能になります。なお、SW1(およびSW2、CN4)は電源が入っているときでも操作して構いません。ただし、ブートローダやスケッチの書き込みの最中には操作しないでください。

【手順6】 Arduino IDEを起動し、マイコンに書き込みたいスケッチを開く

ここではバージョン1.0.5のArduino IDEを使っています。確認はしていませんが、バージョン1.0.1~1.0.4のArduino IDEでも問題なく使えるはずです。

また、下の図では例としてArduino IDEに標準で付いているBlink(D13に接続されているLEDを点滅させるスケッチ)を読み込んでいますが、実際には皆さんがマイコンに書き込みたいスケッチのファイルを開いてください。

図22、Blinkスケッチを開く
図22、Blinkスケッチを開く
図23、Blinkスケッチを開いた後の様子
図23、Blinkスケッチを開いた後の様子
【手順7】 ツール→シリアルポートメニューでUSBシリアル変換器のポート番号(COM番号)を指定する

下の図ではCOM30を選んでいますが、皆さんの環境に合わせて、COM番号を選んでください

図24、シリアルポートを選ぶ
図24、シリアルポートを選ぶ
【手順8】 ツール→マイコンボードメニューでArduinoの種類を選ぶ

下の例ではArduino Unoを選んでいますが、ATmega168/328Pに書き込まれているブートローダのArduinoの種類と合わせてください。(つまり、前のページの手順7で選んだのと同じArduinoを選んでください)

図25、Arduinoの種類の選択
図25、Arduinoの種類の選択
【手順9】 ブートローダのArduinoの種類に応じて、SW2を8Mまたは16Mに切り替える
写真45、クロック周波数の切替え
↑ 画像をクリックすると拡大
写真45、クロック周波数の切替え

ATmega168/328Pを用いたArduinoには、クロックが8MHzの物と16MHzの物があります。ブートローダのArduinoの種類に応じて、SW2のクロック周波数を設定してください。次に主なArduinoのクロック周波数を示します。

8MHz … Arduino Pro or Pro Mini (3.3V, 8MHz) w/ ATmega328、Arduino Pro or Pro Mini (3.3V, 8MHz) w/ ATmega168など
16MHz … Arduino Uno、Arduino Duemilanove w/ ATmega328、Arduino Diecimila or Duemilanove w/ ATmega168、Ardino Nono w/ATmega328、Arduino Nano w/ATmega168、Arduino Pro or Pro Mini (5V, 16MHz) w/ ATmega328、Arduino Pro or Pro Mini (5V, 16MHz) w/ ATmega168など

クロック周波数が正しく設定できていないと、スケッチが書き込めません。

【手順10】 CN3のZIFソケットにスケッチを書きこみたいブートローダ書き込み済みのATmega168/328Pを挿入し、レバーで固定する
写真46、ZIFソケットに挿入する
↑ 画像をクリックすると拡大
写真46、ZIFソケットに挿入する

上の写真を参考にして、ZIFソケット左上のレバーを立てた状態で、ATmega168またはATmega328Pを挿入してください。この際、マイコンの向きを反対にしないように注意してください。

マイコンがZIFソケットに挿入できたら、ZIFソケットのレバーを倒して、マイコンを固定してください。

写真47、レバーを倒して固定する
↑ 画像をクリックすると拡大
写真47、レバーを倒して固定する
【手順11】 スケッチを書き込む

右矢印ボタンをクリックしてスケッチを書き込んでください。CN4にジャンパピンが付いている場合は、スケッチ書き込みの最中に音が出ます。

図26、右矢印ボタンをクリックしてスケッチを書き込む
図26、右矢印ボタンをクリックしてスケッチを書き込む
【手順12】 ZIFソケットのレバーを起こして、マイコンを抜き取る

以上で、スケッチが書き込めました。ブートローダ書き込み済みのATmega168/328Pが複数あり、それらに全て同じスケッチを書き込む場合は、手順10以降を繰り返してください。

広告

6-4.スケッチを書き込んだATmega168/328Pを動かしてみる

ATmega168/328Pにスケッチを書き込んだら、ブレッドボードに回路を組んで、動作確認をしてみましょう。具体的にどういう回路を組むかは、どんなスケッチを書き込んだかによりますが、ここではBlinkスケッチを書き込んだ場合の動作テストの方法について説明します。

ブレッドボードで組む回路図を次に示します。

図27、Blinkのテスト回路の回路図
↑ 画像をクリックするとPDFファイルで表示
図27、Blinkのテスト回路の回路図

U1が、Blinkのスケッチを書き込んだATmega168/328Pです。

X1には、ブートローダのArduinoの種類に応じて16MHzまたは8MHzの水晶発振子を使ってください。(Arduino Unoの場合は16MHz)

EXTERNAL POWER SUPPLYと書いてあるのは、外部電源です。5V出力のスイッチング電源や、出力電圧の安定化された5V出力のACアダプタなどが使えます。ただし、出力を安定化していないACアダプタの場合は、マイコンに高い電圧が掛かって壊れる可能性があるので、注意してください。また、多少電圧が低くなりますが、単3電池や単4電池を3本直列にしても電源として使えます。電源が用意できない場合は、次の写真に示すように、Arduino Unoなどの5V端子とGND端子から電源を取る方法もあります。また、クロック周波数が8MHzの場合は電源電圧を3.3V程度に下げても動作します。

写真48、Blinkのテスト風景
↑ 画像をクリックすると拡大
写真48、Blinkのテスト風景

上の写真は、Blinkのスケッチを書き込んだATmega328Pのテスト回路をブレッドボード上に組んだ様子を撮影したものです。先ほど説明したように、5Vの電源としてArduino Unoを使っています。また、U1にはArduino Unoのブートローダが書いてあり、それに応じてX1は16MHzの水晶振動子を使っています。写真では分かりませんが、LED1が1秒点灯→1秒消灯→1秒点灯→1秒消灯…と点滅します。

Blink以外のスケッチを書き込んだ場合のテスト回路は、次の回路図を参考に作ってください。

図28、Arduino互換機の構成
↑ 画像をクリックすると拡大
図28、Arduino互換機の構成

上の回路図は、Blinkのテスト回路に赤字で解説を入れたものです。U1とその左側の部分が、Arduino互換機を構成しています。U1の右側が、Arduinoに外付けする回路(いわゆるシールド)の部分です。U1にBlink以外のスケッチを書き込んだ場合は、右側の外付け回路の部分を、スケッチに応じた回路に置き換えてください。

このページでは、ブートローダ書き込み済みのATmega168/328Pに、スケッチを書き込む方法と、スケッチを書き込んだATmega168/328Pの動作確認の方法を説明しました。次のページでは、ブートローダを使わずに、スケッチを直接ATmega168/328Pに書き込む方法を説明します。

目次へ  前のページへ (1) (2) (3) (4) (5) (6) (7) (8) (9) 次のページへ

このページで使われている用語の解説

関連ページ

関連製品

Arduino用ブートローダ/スケッチライタキット 商品名 Arduino用ブートローダ/スケッチライタキット
税抜き小売価格 3000円
販売店 スイッチサイエンス
サポートページ
Arduino用ブートローダ/スケッチライタ(完成品) 商品名 Arduino用ブートローダ/スケッチライタ(完成品)
税抜き小売価格 3600円
販売店 スイッチサイエンス マルツ
サポートページ
Arduino Uno用ブートローダスケッチライタシールドキット 商品名 Arduino Uno用ブートローダスケッチライタシールドキット
税抜き小売価格 1440円
販売店 スイッチサイエンス
サポートページ
Arduino 電子工作
このサイトの記事が本になりました。
書名:Arduino 電子工作
ISBN:978-4-7775-1941-5
工学社の書籍の内容の紹介ページ
本のカバーの写真か書名をクリックすると、Amazonの書籍購入ページに移動します。