2021.8.3 ATmega328にブートローダを書き込む
今回は、市販のAVRマイコンのATmega328を、Arduinoとして使うための処理をします。
ATmega328とは、Arduinoに搭載されているマイコンチップです。
Arduinoは、定価で買うと大体3000円程度。基板も大きいので実装には不向きです。
そこで、ATmega328を単体でArduinoとして使うようにします。
ATmega328は、通販サイトで結構売られています。
ただ、最近は半導体不足によりATmega328の表面実装や、ATmega328P-PUなどは手に入りにくい状況です。
今のところ、まだ在庫はありそうです。
RSコンポーネンツで一つ323円です。つまり、Arduinoの10分の1の価格で小サイズのArduinoが使えるわけです。
今回は、このICにArduinoとして使うためのブートローダを書き込みます。
そもそも、ブートローダとは何でしょうか。
ブートローダとは
ブートとは、コンピュータなどでOSなどの基本ソフトウェアを起動することを意味する俗語。ブートローダとは、このときに、OS本体や「OSをロードするためのソフトウェア」をメモリに読み込むための小さなソフトウェアを言います。このプログラムは、ATmegaマイコンを動かす上の基礎てきなソフトです。初期設定みたいなものなので、一度書き込んでしまえば、ずっと使えますし、ソフトも何回も書き換えれます。
ブートローダを書き込む準備
ブートローダを書き込むためには、純正品のArduinoを用意してください。ATmega328とSPI方式で通信する必要があり、そのために純正のArduinoが必要になります。
純正のArduinoは基本的になんでも構いません。私は、ブレットボードに刺せるArduino Nanoを使いました。
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が起動したら、「ファイル」→「スケッチ例」→「11.ArduinoISP」→「ArduinoISP」を開きます。
まず、ArduinoNanoにArduinoISPのソフトを書き込みます。これで、ArduinoNanoを書き込み機として使えます。
その後、「ツール」を押して、ポート「Arduino Uno」、シリアルポート「ArduinoNanoを接続してるCOMポート」、書込装置「Arduino as ISP」を選択し、一番下の「ブートローダを書き込む」を押して、ブートローダを書き込むことが出来ます。
ATmega328PUにブートローダを書き込む
上記で、ArduinoISPをArduinoNanoにISPのソフトを書き込むところまでは同じです。
Arduinoに初期から入っているボードマネージャーでは、ATmega328は書き込めません。
「ツール」→「ボード」→「ボードマネージャー」を開き、MiniCoreと検索し、インストール。
Arduinoを再起動して、「ツール」→ボード→「MiniCore」→「ATmega328」を選択します。
あとは、「ブートローダを書き込む」を押すと書き込まれます。
これでブートローダの書き込みが完了します。
今日はここまでです。