自作武器を作ろうず

<!--リトルカブにC90のエンジン積んで,ペットボトルロケットでロケットランチャーを作り,ChromebookでETロボコン出て,Arduinoでロケット花火ランチャー搭載ラジコン戦車作る沖縄の大学生のブログです-->


【ArduinoIDE1.8.x】ATmega328PでArduinoを作る(内蔵8MHz使用)

スポンサードなんとか

サイトによって書いてること違いすぎ。

  当たり前ですが,手法 (Arduinoブートローダーを焼くか否か) や,ArduinoIDEのバージョンによってやり方がバラバラで,本当に自分に必要だった情報を見つけるのにクソ手間取ったため忘備録として残しときます。

  結論から言うと,Arduino に最初っから刺さってる ATmega328P は抜く必要が無かったです。



目次




今回の目的
  • AVRマイコン"ATmega328P"に,ArduinoのLチカプログラムを書き込んでLチカさせる。
  • クリスタル (水晶発振子) などは使わずATmega328Pに内蔵されている8[MHz]クロックで動作させる。

  要するに1個250円のATmega328PだけでArduinoを作り放題しようというお話です。

f:id:teppodone:20171214015258j:plain
真ん中の黒いのがATmega328P。秋月で250円。



必要なもの (環境とパーツリスト)
  • ArduinoUNO
  • ArduinoIDE 1.8.5
  • ATMega328P
  • ブレッドボード&ジャンパケーブルその他


  ATmega328P は秋月で250円で売ってます。
AVRマイコン ATMEGA328P−PU: マイコン関連 秋月電子通商 電子部品 ネット通販*1


※手元にフレッシュな新品ATmega328Pがなかったんで,今回は一度クリスタル外付けで16MHzで動くようにブートローダーを書き込んだやつを使いました。しかし,どうせ8MHzできれいまっさら上書きするんだから関係ないかと思います多分*2



手順

1. 内部クロックで動かす用パッケージをインストールする。
  Arduino - ArduinoToBreadboard*3のページ真ん中ぐらいまでスクロールしたら "Minimal Circuit(Minimal Circuit (Eliminating the External Clock)"って章があります。そこにあるリンク"breadboard-1-6-x.zip"をクリックしてダウンロード。
f:id:teppodone:20171213015107p:plain
https://www.arduino.cc/en/Tutorial/ArduinoToBreadboardより,2017-12-12閲覧*4



  breadboard-1-6-x.zipを展開したら,中に”breadboard”というフォルダが出来ます。これをArduinoのインストールされているフォルダの中の"hardware"フォルダに置きます。僕の場合は C:\Program Files (x86)\Arduino\hardwareに”hardware”フォルダがありました。

”hardware”フォルダがなければ作ります。
f:id:teppodone:20171213015123p:plain


  ArduinoIDEを起動して,”ツール->ボード->ATmega328 on a breadboard (8 MHz internal clock)” という項目が確認できればインストール成功です。

f:id:teppodone:20171213015744p:plain
パッケージのインストールに成功したら,ボードに”ATmega328 on a breadboard (8 MHz internal clock)”が追加されます。





2. ArduinoUNO に ArduinoISP を書き込む
   ArduinoUNO に スケッチ”ArduinoISP”を書き込むことで,ArduinoUNO を ATmega328P の書き込み装置として使うことが出来ます。”ArduinoISP”はサンプルスケッチに用意されています。

  普通にスケッチを ArduinoUNO に書き込むとき同様に,ArduinoUNO とパソコンをUSBケーブルでつなぎ,"ファイル -> スケッチ例 -> 11.ArsuinoISP -> ArduinoISP" を開き,そのまま ArduinoUNO に書き込みます。

※この時,”ツール -> 書き込み装置” に有る書き込み装置の設定は”AVRISP mkⅡ” (フツーにArduinoUNOにプログラムを書くときの設定) で書き込みを行いました。
f:id:teppodone:20171213214508p:plain



3. ブレッドボードに配線する
  こんな感じで配線します。
f:id:teppodone:20171213015120p:plain
Arduino - ArduinoToBreadboardより,2017-12-11閲覧*5
f:id:teppodone:20171213115335j:plain




4. ATMega328P にブートローダーを書き込む
  ”書込装置” (ツール -> 書込装置) を,”書込装置 : Arduino as ISP”に設定し,”ブートローダを書き込む” (ツール -> ブートローダを書き込む)をクリックしてブートローダーを書き込みます。
f:id:teppodone:20171213015110p:plain



5. ATMega328P に プログラムを書き込む
  これ。これが上手くいかなくて小一時間悩みました。


  試しに,Lチカのサンプルスケッチ ”Blink” を書き込んでみます。

  1.   Lチカ (ArduinoUNOのDigital 13番ピンが1秒おきに点滅する) のサンプルスケッチ ”Blink”
    (ファイル -> スケッチ例 -> 01.Basics -> Blink) を開く。

  2.   配線はブートローダーを書き込んだ時のままで
    "書込装置" (ツール -> 書込装置) が”書込装置 : Arduino as ISP”になっていることを確認する。

  3.   ”書込装置を使って書き込む Ctrl+Shift+U” (スケッチ -> 書込装置を使って書き込む Ctrl+Shift+U) をクリックしてスケッチを書き込む
f:id:teppodone:20171213021607p:plain
いつもの矢印ボタンじゃなくて,”書込装置を使って書き込む Ctrl+Shift+U”であることに注意


  いつものArduinoUNOにスケッチを書き込むときの矢印ボタンじゃなくて,”書込装置を使って書き込む Ctrl+Shift+U)”点に注意してください。

  これで,あとは書き込むのが終わるまで待ってコンソールに「ボードへの書き込みが完了しました」と表示されればOKです。



6.実際に動くか試してみる。
  ATmega328P のピンは,ArduinoUNOにこのように対応しています。
f:id:teppodone:20171213015114p:plain
Arduino - PinMappingより,2017-12-13閲覧*6

  と,言うことで,こんな感じでATmega328Pの19番ピン (ArduinoのDigital 13ピン) からLEDと抵抗繋いで,LEDがチカチカなってるのを確認できれば成功です。

f:id:teppodone:20171213214510j:plain
13番ピンからLEDを1秒おきに点滅させる回路図
www.youtube.com



  5[V]の直流電源さえ有れば,当然ArduinoUNO無しで自立稼働も出来ます。
f:id:teppodone:20171214102757j:plain
www.youtube.com



  これで1個250円で無限にArduino作り放題です!ひゃっほーーー!!*7







ATMega328PのArduino化には成功したけど…

  今回ネットに転がってた方法を真似して,ATMega328P にスケッチを書き込む段階で「いつものArduinoUNOにスケッチを書き込むときの矢印ボタン (マイコンボードに書き込む)」をクリックして書き込もうとしたんですが,エラーばっか出て全然書き込めませんでした。

  そこで,試しに「書込装置を使って書き込む」で書き込んだらアッサリ書き込めたんですよね。もちろんちゃんと動きました。

  でもググってもこのやり方をやってるページが無いので,今回の方法はもしかしたら「書き込めるけどちゃんとした書き方じゃない」のかもしれません。メロスにはわからぬ。まぁでも書き込めれば良かろうなのだ。



参考サイト








■日記パート。
  「当ブログは5周年を迎えました!」の次の記事が「警察から電話きましたんで記事非公開にします」って即落ち2コマかよ。たとえ便所の落書きでもお巡りさんは見てます。責任の持てることだけ便所に落書きしましょう。二度とこんなこと無いように気をつけます。

*1:AVRマイコン ATMEGA328P−PU: マイコン関連 秋月電子通商 電子部品 ネット通販,2017-12-13閲覧

*2:でも試したわけ無いからなんとも

*3:Arduino - ArduinoToBreadboard,2017-12-11閲覧

*4:Arduino - ArduinoToBreadboard,2017-12-12閲覧

*5:Arduino - ArduinoToBreadboard,2017-12-11閲覧

*6:Arduino - PinMapping,2017-12-13閲覧

*7:オタクはすぐ「無限に」を使う