月刊I/O 2022年5月号『Raspberry Piで作る電子工作』に記事を掲載して頂きました!

Arduino UnoやNanoを使いArduino Pro Miniにスケッチを書き込む方法!

先日、Arduino Pro Miniの使い方をご紹介しました。
Arduino Pro MiniはNanoよりさらに小型なボードで、製作物に組み込んだりする際に便利に使えそうなArduinoボードとなります。

Arduino Unoと同じマイコンチップATmega328Pが使われているためテスト環境では使いやすいUnoで回路やスケッチを作り、組み込みの際に小型なPro Miniを使うといった事も出来ます。

【Arduino】Arduino Pro Miniを使ってみる。小型で電子工作用途の組み込みに便利に使えそうですね!

このようなテスト回路を組んでみましたが、Arduino Nanoではハーフサイズのブレッドボードでは2列ほど足りなくなるのですがPro Miniを使うと組むことも出来ます。

小型で他のArduinoボードよりも安価で入手することが出来るArduino Pro Miniですが、他のArduinoボードと比べ少し仕様が異なっています。
一番の違いと言えば、USB-シリアル変換を行うためのチップが搭載されていないことです。

Arduino UnoではPCと接続しスケッチの書き込みを行う際にボードに搭載されたATmega16U2チップがUSB-シリアル変換器として機能するためスケッチの書き込みを自由に行うことが出来るのですが、Arduino Pro Miniでは小型化するためにこのUSB-シリアル変換器が搭載されていません。

そのためスケッチの書き込みを行う場合、Pro MiniではUSB-シリアル変換モジュールを別途用意する必要があります。
小型化するためにArduino UnoからUSB-シリアル変換器をカットした小型版Arduino Unoという感じですね。

上記記事ではFTDI FT-232シリアル変換モジュールを使ってArduino Pro Miniにスケッチを書き込む方法などをご紹介しました。
これがPro Miniのスケッチ書き込みの通常?の手順になるかと思います。

今回は上記記事に書ききれなかった、USB-シリアル変換モジュールを使わずにArduino UnoやNanoを使いPro Miniにスケッチを書き込む方法をご紹介したいと思います。

Arduino UnoやNanoを使いPro Miniにスケッチを書き込む方法!

通常Arduino Pro Miniのスケッチの書き込みには、このようなUSB-シリアル(USB-TTL)変換モジュールを接続して行います。

今回はこのようなモジュールを使わずArduino UnoやNanoを使ってPro Miniにスケッチを書き込んでみたいと思います。

USB-シリアル変換モジュールが手元にない時に他のArduinoボードを使ってPro Miniにスケッチを書き込むことが出来るわけですが・・・実際にはUSB-シリアル変換モジュールを使った方が接続がシンプルでスマートに出来ますよね。

じゃあ、なぜこんな記事を書いているかと言うと・・・最近シリアルでのやり取りが理解できてきたので備忘録的に残しておこうと思います。
通常のシリアルでのやり取りではTX(送信)→RX(受信)、RX→TXのように対になるように接続します。

【Arduino入門編㉖】UARTシリアル通信の基礎知識!Arduino間でのデータのやり取りなどをやってみる!

しかし今回のようなArduinoボードを介した接続ではその接続が変わってくる場合があります。(RX→RX、TX→TX)

分かってしまえば非常に簡単な事なんですが、以前同様な方法でArduinoボードに接続したBluetoothモジュール(HC-05/HC-06)の設定変更をやっていたのですが、接続が上手くいかずATコマンドを受け付けてくれない・・・かなりハマってしまいました。

Arduinoを使いBluetooth通信をやってみる!HC-05/HC-06 Bluetoothモジュールの使い方!

そんな事で今回は、USB-シリアル変換モジュールを使わずにArduino UnoやNanoを使ってArduino Pro Miniにスケッチを書き込む方法を見ていきたいと思います。

USB-シリアル変換モジュールを使った通常の?スケッチの書き込みに関してはこちらの記事をご覧ください。

【Arduino】Arduino Pro Miniを使ってみる。小型で電子工作用途の組み込みに便利に使えそうですね!

今回は上記記事の追記的な内容となります。
USB-シリアル変換モジュールを使わず、Arduinoボード(こちらではUNOとNanoを使ってみます)を使ってArduino Pro Miniにスケッチを書き込んでみたいと思います。

接続に必要な端子の確認

まずArduino Pro Miniのスケッチの書き込みの際に使う接続ピンの確認です。
Arduino Pro MiniはオリジナルとなるSparkFun社製のボードと互換ボードではスケッチ書き込みの際に使用するピンの配列が異なっている場合があります。

こちらはSparkFunのArduino Pro Miniです。

そして手元にあった互換ボードでは端子の配列が異なっています。
単にピンの並びが反転しているだけなので問題ないかと思います。

スケッチ書き込みの際に必要となる端子は、データのやり取りを行う信号線(TXO/RXI)、電源供給用のVCCとGND端子、スケッチ書き込み時にリセットをかけるDTR(GRN)端子となります。
この5本の端子をArduino Uno(Nano)に接続してスケッチの書き込みを行ってみます。

Arduino Unoとの接続

まずは接続です。
Arduino Unoとはこのような接続になります。

Arduino UnoArduino Pro Mini
TXTXO
RXRXI
5VVCC
GNDGND
RESETDTR(GRN)

ここで冒頭でお話したTXとRX端子の接続の話ですね。
通常のシリアルでのやり取りではTX-RX、RX-TXといった対になるような接続になりますが、ここではTX-TX/RX-RXといった接続になっています。

理屈は非常に簡単です。
この接続ではArduino Unoボードに搭載されているUSB-シリアル変換器(ATmega16U2)にArduino UnoのATmega328P(マイコンチップ)とArduino Pro MiniのATmega328Pが並列に接続された状態となっています。

接続を簡略化するとこのようになります。

Arduino Unoのシリアル変換器は、自身のATmega328PとPro MiniのATmega328P両方に(並列に)繋がっているということですね。
今回Pro Miniの方にスケッチを書き込みたいわけですから、Arduino IDEの設定を変えてあげればPro Mini側のATmega328Pの方にスケッチを書き込むことが出来るようになります。

ボード&シリアルポートの設定

Arduino IDEの[ツール]からまずターゲットとなるボードを選択します。
Pro Miniにスケッチを書きたいわけですから[ボード]は[Arduino Pro or Arduino Pro Mini]を選択し、プロセッサは今回5V/16MHzタイプのPro Miniを使っているので[ATmega328P(5V,16MHz)]を選択します。

そして経由するシリアルポートはArduino Unoなので[シリアルポート]は接続しているUnoを選択します。

この状態でスケッチの書き込みを行うと、Arduino Unoのシリアルポート(ATmega16U2チップ)を経由してPro Mini側のATmega328Pにスケッチが書き込まれるということです。
理屈が分かってしまえば非常に簡単なことですね!

MEMO
TX/RXを繋いだシリアルでのやり取りなので、Arduino Uno側は空スケッチを書き込んでおくのがいいと思います。
例えばSerial.beginなどシリアル通信の設定がスケッチに書かれているとTX/RXに接続された状態なので上手くスケッチの書き込みが出来なくなります!

ちなみにArduino Nanoを使った場合も接続&手順は同じです。

接続はこのようになります。
スケッチを書き込む際の[シリアルポート]の設定もArduino Nanoを指定すれば同様にPro Mini側にスケッチを書き込むことが出来ます。

最後に!

理屈が分かってしまえば非常に簡単なことなんですが、これまで疑問に思っていたことなのでスッキリしました。

先日BluetoothモジュールのATコマンドモードになかなか上手く接続されず多くの時間を割かれた苦い思い出があり・・・Arduino Pro Miniのスケッチの書き込みに同様な方法(接続)で出来るので備忘録的に書いてみました。

今回こちらの記事を参考にさせて頂きました。

参考 Arduino UNOでArduino ProMiniにプログラムを書く方法new_western_elec

これまでArduinoを使っていてシックリこない(理解できていない)ことだったので、解決して非常にスッキリとした気分です!
ということで今回は・・・!

コメントを残す