ATmega8マイクロコントローラーをArduino IDEでプログラミング:ステップバイステップガイド
必要なパーツと用品
| パーツ | 数量 |
|---|---|
| Arduino UNO | 1 |
| Microchip Technology ATmega8A-PU | 1 |
| CH340G USB-TTLコンバーター | 1 |
| 16 MHz 水晶発振子 | 1 |
| コンデンサ 22 pF | 2 |
| 抵抗 10k Ω | 1 |
| タクトスイッチ 12mm | 1 |
| ブレッドボード | 1 |
| ジャンパーワイヤー | 12 |
| オス/メス ジャンパーワイヤー | 4 |
プロジェクト概要
「Arduino UNO用に書いたコードを、ATmega328以外のAVRマイクロコントローラーに書き込めるか?」これはArduino愛好家から最もよく寄せられる質問の一つです。理由は様々です:
- より安価なAVRマイクロコントローラーを使用したい
- ATmega328より多い、または少ないピン数のAVRが必要
- 手元にATmega328以外のAVRしかない
このチュートリアルでは、ATmega8をArduino IDEでプログラミングする方法を学びます。この手法はATmega8に限定されず、MCUDudeのGitHubで公開されている他のコアにも応用可能です。2部構成で解説します:
- パート1: ATmega8にArduinoブートローダーを書き込む
- パート2: Arduino IDEとUSB-TTLコンバーターを使ってATmega8をプログラミングする
パート1:Arduinoブートローダーの書き込み
このパートでは、Arduino IDEにATmega8のサポートを追加し、ブレッドボード上でATmega8をArduino UNOに接続します。
ステップ1:ボードマネージャーでATmega8サポートを追加
MCUDudeのGitHubリポジトリには様々なコアが公開されています。ATmega8にはMiniCoreを使用します。対応マイクロコントローラー:
- ATmega8
- ATmega48
- ATmega88
- ATmega168
- ATmega328
以下の手順でMiniCoreをインストールします:
- ファイル メニュー → 環境設定
- 追加のボードマネージャーのURL に以下を入力:
https://mcudude.github.io/MiniCore/package_MCUdude_MiniCore_index.json - ツール メニュー → ボード → ボードマネージャー
- 検索ボックスで「MiniCore」を検索し、最新版をインストール
ATmega8のピン配置は以下の通りです:
ステップ2:ArduinoをISP(In-System Programmer)としてプログラミング
ブートローダーを書き込むには、Arduino UNOをISPとして動作させる必要があります。Arduino IDEの組み込みサンプルにArduinoISPというスケッチがあります。以下の手順でArduino UNOをISPとしてプログラミングします:
- ファイル → スケッチ例 → 11.ArduinoISP → ArduinoISP を開く
- このスケッチをArduino UNOにアップロード
ステップ3:ブートローダーの書き込み
ArduinoとATmega8を以下のように接続します:
Arduino ATmega8
SCK / Pin 13 → SCK / PB5
MISO / Pin 12 → MISO / PB4
MOSI / Pin 11 → MOSI / PB3
SS / Pin 10 → RESET
- ツール → ボード で ATmega8 を選択。クロックタイプと周波数もツールメニューで設定可能
- ツール → 書き込み装置 で Arduino as ISP を選択
- ツール メニュー → ブートローダーを書き込む をクリック
成功すると「Done burning bootloader」と表示されます。おめでとうございます!完了です。
パート2:Arduino IDEとUSB-TTLコンバーターでATmega8をプログラミング
ここでは、Arduinoブートローダーを書き込んだATmega8を使用します。ArduinoボードにはUSB-TTLコンバーターが搭載されており、マイクロコントローラーとArduino IDEの橋渡し役を果たします。ここではCH340 USB-TTLコンバーターモジュールを使ってスケッチをATmega8にアップロードします。
ステップ4:接続のセットアップ
以下のように接続します:
CH340 ATmega8
VCC → VCC
GND → GND
Tx → RX / PD0
Rx → TX / PD1
ステップ5:スケッチのアップロード
- リセットタクトスイッチを押したままにする
- IDEの「マイコンボードに書き込む」をクリック
- ステータスバーに「書き込み中…」と表示されるまでスイッチを押し続ける
- 書き込みプロセスが始まったらスイッチを離す
理由: アップロードプロセス開始時にマイクロコントローラーがリセット状態である必要があるためです。
注意点:
- アップロードが失敗する場合、マイクロコントローラーのVCCとGNDの間に100nFのコンデンサをできるだけ近くに配置してください。
- 一部のUSB-TTLコンバーターモジュールにはDTRピンがあります。お使いのモジュールにDTRピンがある場合、それをATmega8のRESETピンに接続すれば、タクトスイッチで手動リセットする必要がなくなります。
回路図
製造プロセス
- Firebase経由で2台のArduino間を温湿度データで連携するIoTチュートリアル
- Arduinoデジタルダイス: LCD表示の乱数ジェネレーター自作
- スマートホーム連携向けマルチポジション温度センサーシステム
- DIY Arduino USBゲームコントローラー - 高性能ゲームパッドを自作
- MotionSense: ArduinoとESP8266で作るスマート侵入検知システム
- 3Dプリンター火災予防:スマートセンサーセーフティシステム
- Arduino超音波センサーとProcessingで作るリアルタイム距離測定ソナー
- Pixel Chaser: Arduino Nanoで作るワンタップLEDゲーム
- Bolt IoTとArduino UNOでLED輝度をシームレス制御
- Arduino、Yaler、IFTTTでWeb対応IoTゲージを構築する
- ArduinoとProcessingで作るリアルタイムデジタルコンパス