arduino自作 ブートローダー書き込みからスケッチ転送まで
はじめに
ちょっと電子工作で作りたいものがあるので、Arduino Uno 3を試しに使ってみた。
https://www.switch-science.com/catalog/789/
ボード単体でLチカはできるし、ブレッドボードを足せばLCDや温度センサなんかも豊富なライブラリで簡単に動かせる。
▲Arduino Uno R3 + 秋月16*2LCD + 空気質センサCCS811でCO2/VOC濃度を表示させる
しかし、組み込みで使うとなると基板の大きさは小さい方がいいし、いちいちボードを買い足すのは面倒くさいしカネがかかる。
そこで、手元にあったATmega328PとUSBシリアル変換器(秋月AE-FT231X)を使ってArduinoを自作することにした。
ブートローダーの書き込み
買ってきたばかりのマイコンはまっさらなので、Arduinoのスケッチを書き込むための下地であるブートローダーを書き込む必要がある。
今回はArduinoをブートローダー書き込み機として使い、ブートローダーを書き込んでみた。
参考にしたページ
壊れたArduinoを修理!ブートローダーの書き換えでArduinoを修理する方法
https://voltechno.com/blog/arduino-bootloader/
Arduino as ISP and Arduino Bootloaders(英語)
https://www.arduino.cc/en/Tutorial/ArduinoISP
From Arduino to a Microcontroller on a Breadboard(英語)
https://www.arduino.cc/en/Tutorial/ArduinoISP
何はともあれブレッドボード上のマイコンをArduinoと接続する。
追加で7pin(VCC)-8pin(GND)間に0.1uFのコンデンサを接続している。
それと大事なのが、書き込み用ArduinoのRESET-GND間に10uFの電解コンデンサを接続すること!
公式サイトに書いてあるのに図に示されていなくて散々苦労した…
ArduinoIDEを起動し、ファイル>スケッチ例>11.ArduinoISP>ArduinoISPを開く
ツール>書き込み装置>Arduino as ISPを選択する
ツール>ブートローダーを書き込むを選択し、しばらくして「ブートローダーの書き込みが完了しました。」というメッセージが出たらOK。
スケッチの書き込み
次はArduinoを動かすスケッチファイルを書き込む。
ここではスケッチ例のBlinkを使ってLEDが1秒毎に点滅するようにする。
参考にしたページ
05. Arduino互換基板を作ろう > 101. 自作Arduino互換回路(ブレッドボード版)
https://sites.google.com/a/gclue.jp/fab-zang-docs/dian-zi-hui-lu/zi-zuoarduino-hu-huan-hui-lu
とにかく部品を配置して配線!配線!
マイコンとUSBシリアル変換器のTXD/RXDを互い違いに接続すること、LEDの極性を間違えないことに注意すれば大丈夫だと思います。
USBシリアル変換器は何でもいいと思います。多分。私はFTDI社のチップが乗ったものを使いました。
▲部品実装図 右側の黄色テープ下に赤色LEDが設置してある。シリアル通信監視用にTXD/RXD端子にLEDと470Ω抵抗をそれぞれ配置した。
いよいよスケッチの書き込み。
ArduinoIDEを起動し、ファイル>スケッチ例>01.Basics>Blinkを開く。
ツール>ボード>Arduino Unoを選択する。(他の設定だとスケッチが書き込めなかった。)
シリアルポートはデバイスマネージャーを参照して使うポートに設定しておくこと。
スケッチ>マイコンボードに書き込むを選択してしばらく待つと、接続したLEDが点滅するはずです。
以上、お疲れ様でした。
次はATmega168PをArduinoで使ってみようかと思います。