LGT8F328P使用格安NANO

LGT8F328P使用の格安NANOを購入しました。本家ArduinoNANOのMCUには、ATmega328Pが使用されています。また、多くの互換機では、ATmega328PBというMCUが使用されています。しかし、新たに購入したNANO互換機では、LGT8F328PというMCUが使われています。このNANO互換機、使い物になるでしょうか?
LGT8F328Pの素性
型番からも、ATmega328Pの互換品であることが、何となくうかがい知れます。製造元は中国のメーカー、Logic Green Technology社です。しかし、同社のホームページは一部を残して削除されています。ランディングページであるlgtic.comはProdesign Semiconductorにリダイレクトされています。
LGT8F328Pの主要スペックは以下のとおりです。

このMCUは、ATmega328Pのクローンです。しかし、デッドコピーではなく、機能強化されている部分が結構あります。まずは、ADCの分解能です。ATmega328Pでは10bitです。しかし、LGT8F328Pでは12bitに強化されています。さらに、ATmega328Pには無いDACが追加されています。DACの分解能は8bitしかありません。しかし、ATmega328Pでは、PWM出力を使って、疑似的なアナログ出力しができませんでした。しかし、LGT8F328Pなら、分解能は限定的ですが、アナログ出力ができます。
併せて、ADCとDACのリファレンスとして、4種類の基準電圧源を内蔵しています。
また、一部のデジタル出力が最大80mAに強化されています。強化されたのは、PD1,PD2,PD5,PD6,PE4,PE5です。しかし、NANOで利用できるのは、D2,D5,D6に限定されています。
その他、最大クロック周波数が32MHzに向上しています。しかし、外付け水晶発振を使用する場合、安定性確保のため、20MHz以下での動作が推奨されています。
到着したLGT8F328P搭載NANO互換機
いつものように、Aliexpressで購入しました。購入時の価格は181円と激安でした。

マイクロUSBとUSB-Cの二種類が販売されていました。今回はUSB-Cコネクタが搭載されたものを選択しました。

しかし、ピンヘッダーは付属しませんので、別途用意が必要です。

このArduino NANO互換機では、すべての部品は表側(部品面)に集約されています。

裏面(はんだ面)には部品が搭載されていませんので、すっきりしています。おそらく、製造コスト削減のために、部品を片面にまとめて実装したのでしょう。
Arduino IDEにボードマネージャーをインストールする
この互換機は、Larduinoとも呼ばれているようです。Larduinoを使うためには、開発環境を整える必要があります。今回はArduino IDEにボードマネージャーを追加して使用します。ボードマネージャーは、Prodesign Semicontuctor社のWebページからダウンロードすることもできます。しかし、今回はGitHubのLGT8Fxプロジェクトのボードマネージャーを利用します。
まずは、Arduino IDEのファイル→基本設定→追加のボードマネージャーのURLに以下のURLを追加します。
https://raw.githubusercontent.com/dbuezas/lgt8fx/master/package_lgt8fx_index.json
次に、ボードマネージャーを開き、LGT8Fxを検索し、インストールをクリックすればインストール完了です。

ちょっと使ってみる
以前、UNO用に作った気温、湿度、気圧をOLEDディスプレイに表示するスケッチを入れてみました。

スケッチは手直しなしで、そのまま動作しました。互換性は高いようです。なお、今回購入したLarduinoには16MHzの水晶発振が搭載されていましたが、実際の動作クロックはどうなのでしょうか?調べてみました。
動作クロックは以下のスケッチで調べることができます。

実行したところ、32MHzで動作していることが分かりました。つまり、外付け発振器を使わず、内蔵の発振器が使われているようです。ちなみに、動作クロックの切り替えは、Auduino IDEで行えます。

Arduino IDEのメニュー、ツール→Clock Sourceで内蔵発振器か、外付け発振器かを選択できます。Clock Diverderを併せて変更することで、1MHz,2MHz,4MHz,8MHz,16MHz,32MHzに設定できます。この設定は、消費電力を下げるために利用できそうです。
動作クロックの変更は、スケッチ書き込み時に行われます。そのため、クロック周波数変更のためのブートローダー書き換えは必要はありません。