AliexpressでArduino Pro Mini互換機を購入しました。
USBシリアル変換アダプタ(CP2102)付きで1セット4ドルちょっとという破格のお値段でした。
何よりもArduino Pro Mini初体験ということで、色々とはまりどころもあったのでメモしておきます。
駆動電圧は2種類存在
まずArduino Pro Miniには5V版と3.3V版が存在します。
これは使用されているマイコンATMEGA 328Pの仕様として、最大動作速度が供給電圧に依存していることに起因しています。データシートを確認すると4.5V以下の電圧で使用する場合は最大動作速度が線形に変化することがわかります。
今回私が入手したのは5V版ですが、供給電圧を3.3Vに変更することと、スケッチの「ツール」メニューから「Arduino Pro or Pro Mini (3.3V, 8 MHz) w/ ATmega328」を選択すること以外は特に利用方法は変わりません。
プログラム書き込みにはUSBシリアル変換アダプターが必要
Arduino Pro Miniの最大の特徴がこれで、Arduino UNO等には標準で装備されているデータ書き込み用Micro USBコネクタが存在しません。このためUSBシリアル変換アダプターを本体のTX/RXピンに接続して、アダプタ経由でプログラムを書き込むことになります。
ちなみにこれはVCCとGNDを接続するのと同じく必要最低限の準備であり、実際には後述するデータ端末レディ(通称DTR。シルク基板上にはGRNと表記)ピンを接続しておかないと、プログラム書き込み時に毎回リセットボタンを押す事になります。
プログラム書き込み時には毎回リセットが必要
今回自分がつまづいたのがここでした。Arduino UNOと同じ感覚でスケッチをArduino Pro Miniに描き込もうとすると、実行時に「マイコンボードに書き込もうとしましたが、エラーが発生しました」というメッセージが表示されます。
avrdude: Send: 0 [30] [20] avrdude: Send: 0 [30] [20] avrdude: Send: 0 [30] [20] avrdude: ser_recv(): programmer is not responding avrdude: stk500_recv(): programmer is not responding avrdude done. Thank you.
原因はプログラム書き込み直前にArduino Pro Miniをリセットしないと書き込みが許可されず、結果としてタイムアウトしてしまうというものでした。
当初はこちらのサイトを参考にして上記ログが出力される直前にArduino Pro Mini本体にあるリセットボタンを押してリセット信号を手動で送出していましたが、毎回押すのが面倒な上に、タイミングが結構難しいので何度も失敗するとストレスがたまります(笑)
この問題の解決策は、プログラム書き込み時に使用するUSBシリアル変換アダプターのDTR信号ピンを、Arduio Pro MiniのGRNピンに接続してやることです。Arduino Pro Mini用と謳われているUSBシリアル変換アダプター(例えばスイッチサイエンスさんで販売しているこちらの商品とか)であれば、このあたりのお約束は特に意識する必要がないと思いますが、自分が入手したCP2102チップを用いたUSBシリアル変換アダプターには実はこの信号がCP2102チップから引き出されていなかったために、結果として変換アダプタを改造してやる必要がありました。
このCP2102のUSBシリアル変換アダプタの顛末については次回詳細に述べたいと思います。→書きました
[…] ← 前へ […]