2021.8.3 ATmega328にブートローダを書き込む

本日のトピック

今回は、市販のAVRマイコンのATmega328を、Arduinoとして使うための処理をします。

ATmega328とは、Arduinoに搭載されているマイコンチップです。

Arduinoは、定価で買うと大体3000円程度。基板も大きいので実装には不向きです。

そこで、ATmega328を単体でArduinoとして使うようにします。

ATmega328は、通販サイトで結構売られています。

ただ、最近は半導体不足によりATmega328の表面実装や、ATmega328P-PUなどは手に入りにくい状況です。

今のところ、まだ在庫はありそうです。

RSコンポーネンツで一つ323円です。つまり、Arduinoの10分の1の価格で小サイズのArduinoが使えるわけです。

RSコンポーネンツ ATmega328-PU 通販ページ

今回は、このICにArduinoとして使うためのブートローダを書き込みます。

そもそも、ブートローダとは何でしょうか。

 

ブートローダとは

ブートとは、コンピュータなどでOSなどの基本ソフトウェアを起動することを意味する俗語。ブートローダとは、このときに、OS本体や「OSをロードするためのソフトウェア」をメモリに読み込むための小さなソフトウェアを言います。このプログラムは、ATmegaマイコンを動かす上の基礎てきなソフトです。初期設定みたいなものなので、一度書き込んでしまえば、ずっと使えますし、ソフトも何回も書き換えれます。

 

ブートローダを書き込む準備

ブートローダを書き込むためには、純正品のArduinoを用意してください。ATmega328とSPI方式で通信する必要があり、そのために純正のArduinoが必要になります。

純正のArduinoは基本的になんでも構いません。私は、ブレットボードに刺せるArduino Nanoを使いました。

Arduino Nano
ATmega328PU

 Arduino NanoとATmega328PUの配線図は下図の通りです。

要するに、ArduinoNanoとATmega328でSPI通信を行いたいため、お互いのMISO、MOSI、SCKと+5V、GNDを接続します。あとは、ArduinoNanoが指定するタイミングで、328のResetをかけるため、NanoのD10と328のResetを接続し、6.8kΩの抵抗でプルアップしています。

あとは、ATmega328もクロック無しでは動かないので、16MHzの水晶発振子と定番のコンデンサ22pFを入れています。

ブートローダを書き込む接続図

実際にブレッドボードで配線しました。

ブレッドボードで配線

ArduinoIDEの設定

次に、Arduinoの書込みソフトの設定をします。

まず、書き込むICが ATmega328P-PUと、ATmega328PU(部品表記;ATMEGA328 U)では、ブートローダの書込み方が違います。これは、ATmel社がMicroChip社に変わってから、廉価版として発売されたATmega328PUは、書き込むバリアントが違うためです。

 

ATmega328P-PUのブートローダを書き込む

まず、ArduinoIDEを起動します。Arduinoのソフトのインストールは下記のリンクから行ってください。

ArduinoIDEのダウンロード

ArduinoIDEが起動したら、「ファイル」→「スケッチ例」→「11.ArduinoISP」→「ArduinoISP」を開きます。

Arduino IDEを起動
Arduino ISPを起動

まず、ArduinoNanoにArduinoISPのソフトを書き込みます。これで、ArduinoNanoを書き込み機として使えます。

その後、「ツール」を押して、ポート「Arduino Uno」、シリアルポート「ArduinoNanoを接続してるCOMポート」、書込装置「Arduino as ISP」を選択し、一番下の「ブートローダを書き込む」を押して、ブートローダを書き込むことが出来ます。

ArduinoNanoにArduinoISPのソフトを書き込む
ブートローダを書き込む

 

ATmega328PUにブートローダを書き込む

上記で、ArduinoISPをArduinoNanoにISPのソフトを書き込むところまでは同じです。

Arduinoに初期から入っているボードマネージャーでは、ATmega328は書き込めません。

「ツール」→「ボード」→「ボードマネージャー」を開き、MiniCoreと検索し、インストール。

ボードマネージャーを起動
MiniCoreをインストール

Arduinoを再起動して、「ツール」→ボード→「MiniCore」→「ATmega328」を選択します。

ボードはATmega328を選択
シリアルポート、書き込み装置を選択

あとは、「ブートローダを書き込む」を押すと書き込まれます。

これでブートローダの書き込みが完了します。

 

今日はここまでです。

おすすめ記事