はじめに
こんにちは!香月です。
電子工作について、勉強したことのアウトプットとして
ブログで情報発信をしています!
勉強中のみですので、間違っていること等ありましたら
公式ラインに連絡していただけると幸いです。
今回はArduino Nanoを使ってAVRマイコンに書き込みをしていきます!
普段使っているマイコンはマイコンボードといって、書き込み装置とマイコンチップがセットになったものです。
今回のようにマイコン単体に使用できるようになれば、安価にデバイスを作ったりすることが可能になります!
つかうもの
この記事で使っているものを紹介します。
*このリンクは、アフィリエイトリンクです。
こちらのリンクから購入されると、投稿主にインセンティブが発生します。
より良い記事のために、ぜひ購入する際は以下のリンクよりお願いします。。
秋月電子
購入はこちら→ここをクリック
*画像はリンク先より引用
アマゾン
購入はこちら→ここをクリック
*画像はリンク先より引用
アマゾン
購入はこちら→ここをクリック
*画像はリンク先より引用
アマゾン
購入はこちら→ここをクリック
*画像はリンク先より引用
アマゾン
購入はこちら→ここをクリック
*画像はリンク先より引用
アマゾン
購入はこちら→ここをクリック
*画像はリンク先より引用
アマゾン
購入はこちら→ここをクリック
*画像はリンク先より引用
モジュール解説
今回使用するAttiny44aはATmel社から発売されている、マイコンチップです。
このAtmel社は現在はマイクロチップに買収されました。
マイクロチップ社はPICマイコンを製造販売しています。
PICマイコンとAVRマイコンの大きな違いは、書き込み方法です。
AVRマイコンはArduinoマイコンボードを使用することで、書き込みを行えますが、
PICマイコンには専用のライターとソフトが必要です。
AVRのほうが安く扱えますが、PICマイコンにもいいことがあります。
それはGUIで簡単に設定をすることができるところです。
AVRマイコンには、C++でプログラムを書く必要があります。
PICマイコンでは以下の画像のようなGUIで簡単に設定できます。
それでは!実際に書き込んでいきましょう。
準備
まずはArduino studioの設定をしていきます。
今回はArduino Nanoを書き込み装置にしていきます。
まずは、ArduinoNanoに書き込み装置用のコードを書き込んでいきます。
以下の画像を参考に書き込んでください。
「ファイル→スケッチ例→ArduinoISP→ArduinoISP」
開かれたスケッチを書き込んでいきます。
*この時ボードはArduinoNano、ポート番号は接続したポートを選択します。
この際ArduinoNanoには何も接続しないでください。
ジャンパー線等は外しておきましょう(エラーが出ます)
書き込みが完了したらマイコンにインストールするブートローダーを書き込みます。
ブートローダーとは、どのようにプログラムを書き込むかをマイコンに伝えるプログラムです。
こちらはプログラムなので、ある程度の容量を使用します。
ブートローダーを使用しない方法もありますが、特段大きな処理をしないのでブートローダーを使用します。
まずは、ブートローダーをArduinoStudioにライブラリを読み込みます。
http://drazzy.com/package_drazzy.com_index.json
上記リンクをArduinoStudioの「ファイル→基本設定→追加ボードマネージャURL」に貼り付けます。
貼り付けてOKを押したら、ボードマネージャーで「attiny」と検索→「ATTinyCore」をインストールします。
*確認画面が表示されますが、すべてOKまたは完了を押してください。
インストールが完了したら準備は終了です。
次は、NanoとATTiny44aをつないでいきます。
回路図
まずは、Arduino NanoとAVRマイコンをつないでいきます。
以下の画像と回路図を参考にマイコンとNanoを接続してください。
下が回路図になっています。
接続ができたらブートローダーを書き込んでいきます。
「ボード→ATTinyCore→ATTiny44/84[a](Optiboot)→チップ44A→ブートローダーを書き込む」
*以下の画像のように項目を選択して、書き込みを選択してください。
書き込み完了が右下に表示されれば完了です!
それでは、実際にチップを動かしていきましょう!
まずは、プログラムを書き込んでいきます。
プログラム1
以下のプログラムをArduinoStudioにコピペして書き込んでいきます。
void setup() {
pinMode(5, OUTPUT);
}
void loop() {
digitalWrite(5, HIGH);
delay(1000);
digitalWrite(5, LOW);
delay(1000);
}
プログラムの解説は下をクリック
プログラムの解説!
セットアップ関数
ここでは、出力するピンの設定をします。
pinMode関数を用いて、今回は5番ピンを出力とします。
loop関数
digitalWrite関数とdelay関数を使用して、1秒間隔で点滅をさせます。
delayの()の単位はmsです。なので1秒止めたいときは1000
2秒ごとに点滅させたい場合は2000と入力します。
プログラムをコピペしたら以下の手順で書き込みを行います。
「スケッチ→書き込み装置を使用して書き込み」
*まずはきちんとAttiny44aが選択されているか確認してください。
書き込みが完了したら、5VをGNDの配線を残して他の配線を外してください。
回路1
以下の画像を参考に回路を組んでください。
実行1
そうすると、、、
1秒ごとに点滅しました!
これでプログラム1が終わりです。
プログラム2
次は入出力をしてみます!
以下のプログラムをArduinoStudioに貼り付け実行します。
void setup() {
pinMode(5, OUTPUT);
pinMode(4, INPUT);
digitalWrite(4, LOW); // プルダウンの設定
}
void loop() {
int value = digitalRead(4);
if (value == 1) {
digitalWrite(5, HIGH);
} else {
digitalWrite(5, LOW);
}
}
前回同様、「スケッチ→書き込み装置を使用して書き込み」を選択します。
回路2
以下の画像を参考に回路を組んでください。
実行2
ボタンを押すと、、
ボタンを離すと、、、
消灯しました!
これで今回の内容は終了です。
動作しない場合
動作しない場合は、以下の項目を確認して下さい。
プログラム
プログラムの書き込みの際にエラーが発生したら、まずはArduinoNanoが書き込み装置としてISPのプログラムを書き込めたか、またArduinoStudioの設定が間違っていないかを確認してください。
また、ArduinoNanoとattiny44aの接続に間違いがないか確認してください。
回路
プログラムがきちんと書き込めて動作しない場合は、回路が間違っていないか、
ジャンパー線が断線していないか、モジュールが故障していないかを確認してください。
公式ラインに連絡
もし、これらの項目を確認して動作しない場合は公式ラインに連絡ください!
可能な範囲でサポートさせていただきます。
やってほしい企画、解説してほしいモジュール等ありましたら遠慮なく連絡ください!
おわりに
どうだったでしょうか、
今回は、Attiny44aにArduinoNanoで書き込みを行いました!
マイコン単体で使えるようになると、より安価に作ることが可能になり、オリジナルゲーム機なども作れるようになります。
マイコンを使って様々なことをやっていきます!
他のマイコンにも挑戦していきます!
また!次回の記事でお会いしましょう!