MiniCore前提の内部発振で動作するメインボード。
UnoNano(うのなの)
Arduino Unoの水晶外部発振回路を外しNano要素を取り入れた、UnoとNanoのハイブリッドでなんとなくなAruduino互換ボード。
Nano的ではなくUno的構成なのは以下の点
- L1ランプの接続をポート直接ではなくオペアンプのボルテージフォロワ出力で駆動することでICSPで使用するSCKへの干渉を避ける
- メインの電源をDCジャックからの電源(VIN)を5Vレギュレータからの降圧供給とUSBのバスから供給との競合処理を内部3.3VとVINの電圧を比較した結果でMOS-FETスイッチを使って切り替え
- TX/RX通信表示LEDをUSB〜シリアル変換ボード上のものだけでなく、メイン基板上にUno同様に実装
省略・変更したのは以下の点
- ATmega328の16MHz外部発振回路を省略(内部8MHz発振器動作のため)
- 外部水晶発信子のピン(PB6/PB7)が通常のI/Oとして使えるようになったので外部接続のためのヘッダピンへ引き出し
- ATmega16U2周辺一式を省略(FT232に代替してTX/RX/DTRを接続するNanoと同様構成)
- USBからの電源ライン、AVCCにフェライトビーズを使ったノイズフィルタを省略
- 内部3.3Vの生成を手持ち部品活用のためLP2985-3.3からLT1117-3.3に変更(NanoはFT232の3.3V出力から供給されているが今回はモジュールからの給電は使用しない)
- USBと内部5Vの電源ラインを切り替えるPch MOS-FETはFDN340P(60mΩ)から手持ちの2SJ681(160mΩ)へ変更
- 電圧検出のLMV358I(SOP)を手持ちのLMC6482P (PDIP)に変更、分圧している検出電圧が5.7V程度あったため入力保護に4.7Vツェナーダイオードを追加
- I2Cの信号ピンはデジタルのピンヘッダに出さずVCCとGNDをセットにしたヘッダピンで接続できるように追加
電源周りやL1周りを思いっきり省略すればNano相当になり、かなり簡単になります。
ブートローダーをボードにNanoとして書き込んでも32p-QFPにあって28p-DIPには無いADC6(A6)/ADC7(A7)を使用しなければ内部アーキテクチャは同じなので問題は生じないでしょう。通信のデバイスを最近の中華互換機に使用されているCH340などを使っても良かったかもしれません。
しかしこれだけの配線をするのであれば基板を起こした方が早かったかも。
それでなければ通常のArduino互換基板のキットを水晶発信子を実装せず使用すれば良かったかもしれませんが、そこはそれ、製作するのが目的ですので細かいこと無しで結果オーライです。
Arduino IDEを使っていくつかスケッチ例を書き込んでテストしました。普通ににUSB〜シリアル経由で書き込めるのでブートローダーも正常に動作し、デバイスのプログラム書き換えが行える事を確認しました。
実際にMiniCoreのブートローダーを書き込んだATmega328Pを使うだけであれば、かなりの周辺回路を省略できます。USB〜シリアル変換も省略し外部に持たせてTXD/RXD/DTR/VCC/GNDを接続するようにすればターゲットの電源もUSB経由で給電し、そのままブートローダー経由で書き込みも行うことができてさらに簡便になります。
さらに3.3Vも使用しない、もしくは3.3V動作にする(BODを使用する場合はブートローダー書き込み時に1.8Vや2.7Vに設定する必要あり)のであれば3.3Vのレギュレータも不要になります。
本体基板にFT232モジュール基板を装着しているためシールドを使う場合のシールド側ピンソケットの足は15mmは必須です。10mmですと基板の底がFT232モジュール基板に接触してしまいます。モジュールを壊さない・壊れないという前提でソケットを使用せずにヘッダから直付けすれば10mmでも対応可能です。