2019/11/23

Arduino Nano Everyを試す

 秋月で売っていたAtmega8と、感光基板でエッチングしたArduino互換ボードを製作してみて、次に本家ボードも買って…  と気が付いたら10年が経過していた。
ATmega328Pはいまだに手軽さでは抜きんでている。

 今は32bitMCUの低価格化、低消費電力化が著しく、動作周波数も100MHz超えが当たり前になった。
 動作電圧範囲が広く、単純な8ビットMCUが不要になることはまだないだろうけど、クラシックなAVRマイコンは値上がりしており、価格競争力は無くなりつつある。
そしてコモディティ化により、公式ボードでは不可能な値付けの安価な互換ボードがたいていの需要を満たすようになってしまった。

 Arduino Nano Every


 そんな中、Arduino本家がリリースした新しいNanoボードの一つ。
 他のボード2種はATSAMD21(Cortex-M0+)と無線モジュールを搭載したIoT向けボードだが、 Nano EveryはWifi Rev2と同じくAtmega4809を採用していて、安価で5V単電源な8ビットのボードだ。


megaAVR-0はプログラミング方式がUPDIになったため、プログラマ・USBCDCとしてATSAMD21が搭載されている(中央の四角いQFNパッケージ)。

APIの皮を被せて、I/Oレジスタをエミュレーションするモード(328Pモード)もある。
ATmega4809ボードとしてのピンマップを調べてみたのが下の図。

(公式の回路図 https://content.arduino.cc/assets/NANOEveryV3.0_sch.pdf )


引き出してあるI/Oが少ないので気になっていたが、UARTについてはハードウェア的に4chを使うことができそうだ。
ただし、公式のボード定義では互換性を優先し、2ポートしか使用していない。

MCUの潜在力を引き出したいならば、有志が開発しているmegaAVR0向けのボード定義 megaCoreX(https://github.com/MCUdude/MegaCoreX)を利用するのが良いだろう。

過去のArduino Nanoと比べたメリットは以下のようになる。
・RAM ROM容量の増加 (6kB / 48kB)
・ピン単位の割り込みが可能
・シリアル通信は2ポート定義されている。
・analogRefelence Vref電圧の増加
  (0.55V 1.1V,  1.5V, 2.5V, 4.3V)
  INTERNAL0V55
  INTERNAL1V1
  INTERNAL1V5
  INTERNAL2V5
  INTERNAL4V3
・5V系のために降圧DCDCを搭載している。


 ボード設計で気になったのはアナログ入力兼I2Cのピンだ。megaAVR0ではI2Cとアナログ入力は別の端子なので、アナログ入力のあるピンと、I2C専用のピンを束ねて、Arduino Nanoの328Pの端子を再現しているらしい。ボード仕様の継承って大変だなぁ…

 低価格とはいえ、5V系の電源はかなり余裕がある設計となっている。
VINには6V~21Vと幅広い電圧入力が可能になっていて、DCDCによる降圧方式が採用されている。VIN経由であれば、最大で1.2Aまで負荷を駆動できるようなので、サーボモーターなどを繋ぐ用途でも駆動には余裕があるだろう。(USB接続時は、USBから5Vをとるため、USB側の供給能力に左右される)

2019/10/17

Atom x5 タブレット

Coreiを積んだノートPCは重たく、冷却ファンの音が意外と大きい。ということで最近は型落ちのAtom x5なタブレットPCを携行している。

 中古で手に入れた富士通のQ507/MEは、10型でフルHD、デジタイザと軽量キーボードがついていて、フルサイズのUSBが2ポートついている。
 電源キャップ破損固体なので無効だけれど、一応防水、防塵の機種だ。

 1代古いQ506/MEのカスタムモデルは一時期大量に出回っていたので有名だ。Q507と506を比べると、ただのマイナーチェンジかと思いきや、底部のアクセサリポートを除いてUSBポートの配置などが全く違って興味深い。

Atom x5-Z85XXを搭載したタブレットや2in1はたくさん出回っているけれど、どのメーカーの製品であっても長期間のスリープ後などに起動すらしなくなる不具合を抱えているようだ。
 バッテリを切り離し、電源を完全に落とさないとこのループから抜けられないため、機種によっては対処法が無いものがある。
 この機種はハードリセットスイッチがあるため、復旧は簡単に行えるが、初めて直面したときはヒヤヒヤした。

 軽量でファンレス。文章を書くにはとても良い。
 ストレージサイズが64GBしかないけど、回路図CADとVisualStudio Code、IDEを少々入れて、Dropboxのスマート同期を有効化する程度ならそんなに問題にならない。

 Live USBを走らせる



 Linux環境という点では、WSLを動かすのはAtom x5レベルだと結構厳しい。VM運用もあまりしたくないので、Raspberry pi Desktopを Live USBのまま使ってみることにした。
 ハードウェアとしては、USBメモリを優先的に起動するようBIOSで設定するだけだ。
 フル規格のUSBポートが2つあるので、つけっぱなしでも支障がなく使いやすい。
 Live USBだと、Atom x5タブレットでもオーディオを除けばほとんどの機能がそのまま使える。
 なお、SSDを消去してクリーンインストールする道を選ぶと、ドライバや画面設定回りで修羅の道が待っている。

 小さなブータブルUSBにストラップを付けて無くさないようにする。
 携帯ストラップという言葉が死語になりつつあるため、100円ショップで探すのに苦労した。(カラビナと同じ場所にあった)

 UNIXBenchスコアはこのようになっていた。
=======================
   BYTE UNIX Benchmarks (Version 5.1.3)

CPU 0: Intel(R) Atom(TM) x5-Z8550 CPU @ 1.44GHz (2880.0 bogomips)
          Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET, Intel virtualization
~~~~~
System Benchmarks Index Score (single)                                         323.8
System Benchmarks Index Score (multi )                                       1260.2
======================

AVX命令もないため、マルチで第5世代Coreの半分の性能といったところ。Z8500と比べても、ブースト周波数が少し高いだけで、スコアは微増レベルでしか差はない。


 デュアルスクリーン


 最近Microsoftが2画面タブレットを発表したのに触発されて、似たような配置のディスプレイ構成を持ち歩けるようにしてみた。
 出先でマルチ画面を行ったことがあるけど、三脚やスタンド等が必要になって持ち物が増えて面倒だったので、モニタをタブレットの真上に設置する治具を3Dプリントしてみた。
 画面隅で保持する接手のようなもので、単純なためディスプレイを倒す角度は固定になる。
 モバイルモニタは型落ちのONLAPの11インチ フルHDモニタ。 USBポートから電源を供給し、microHDMI to microHDMIケーブルで接続した。



microHDMIケーブルが短いため、ONLAPをさかさまに設置し、ドライバ設定で上下を反転して表示している。 ONLAPのほうが色再現性が良いので、タブレット側が色あせたように見えてしまっておもしろい。

2019/07/20

UMPCもどきの製作2( 5.5inch AMOLEDディスプレイ)


前の記事からだいぶ時間が経ってしまった。
時間は常にDIYに味方する。画面の検討を再開すると、WAVESHAREからいくつか新しいディスプレイが登場していた。
https://www.waveshare.com/product/5.5inch-hdmi-amoled.htm

この5.5inch AMOLEDディスプレイをAliexpress経由で購入してみたので、筐体の設計のために仕様を確認してみる。

 新型は従来と比べ、タッチスクリーンが静電容量式になり、USB接続になって汎用的な利用が可能になっていた。
従来と比べて操作性や画面品質は圧倒的に良くなっている。


付属品はRaspberryPi固定用のスペーサ、Raspi用HDMI,USB端子、そして短いHDMIケーブルとmicroUSBケーブル。
 汎用的なマシンにつなぐ場合でも困ることはなさそうだ。

有機ELパネルなので、画面焼けを防ぐためにスクリーンセーバー設定やディスプレイ点灯時間の制限などを忘れないようにしよう。

Raspberry pi3を搭載する




このモニタはmodel Bの基板に合わせてHDMIコネクタやUSBコネクタのアダプタが用意されている。以前のモデルと違って裏返に固定するのでGPIOは丸ごとアクセス可能だ。
 注意点としては、拡張基板を固定しようとして、なべ小ねじの代わりにスペーサを立てようとすると、真下のスペーサ高が4mmしかない関係でネジ穴が浅いこと。

 ディスプレイは解像度を変更すると画面表示できないケースが多いので、FullHD固定のまま、RaspiConfig でピクセルダブリングを選択することで解決した。 (メニューサイズはMiddle)
実質960x540になってしまうけど、それほど不便ではない。
スクリーンキーボードを導入してみる。 Onboardというアプリをインストールして常駐させるとほぼスマートフォンと同じ文字入力環境が実現できる。


 静電量量タッチパネルであれば文字入力もそれほどストレスが無い。プロジェクトを寝かせていた2年の間に、UMPCを消滅させたUIが部品としてDIY世界に降りてきていた。
 ディスプレイの高機能化は好都合でもある、ポインティングデバイスを省略出来るのはキーボードの単純化につながって良いことだ。

電力


Raspberry pi3B を繋いだ場合、USBテスターの読み出し値はアイドル時で0.6A (約3.2W)負荷が上がると4~5W (Youtubeを全画面で再生しているときに平均4.5W)
となった。 vcgencmdでCPU温度を見るとスロットリングが発生していそうなので、冷却ファンを追加してみたが、電力消費に大きな差はなかった。

 
 スマートフォンのOSと比べると、Octaneのパフォーマンス差は結構大きいけれど、初期の2コアATOMを搭載したネットブックと比べたら似たようなスコアにはなっている。

 公称10000mAh(36Wh)のモバイルバッテリなら、アイドル時でフル稼働で7~8時間動かせそうだ。