2019年1月27日日曜日

Pi3BにArduino LCDつけて(1)

Pi3Bで何やろう?


 無事が確認されたPi3Bですが、既にデスクトップはrock64がやっているので、別のことを割り当てます。死んだままになってるproxyとか、ストレージにたまってる音楽再生機とか、手をつけられてないものを少しずつでも実現したいな。そろそろファイルサーバーも心配…。

ディスプレイ


 デスクトップ的な構成の装置をずらずら用意したくないので、ハンドヘルド的な使い方ができるようにしたいなと思っちゃいるんですが…。まぁ、以上のような使い方だと、電源ケーブルから逃れることまでは考えません。

手元に、既に紹介したArduino用のタッチパネル付き2.8" LCDがあるので、それ使えるように、まず、してみたいと思います。主に表示を目的としているので、よくこういう用途にはキャラクタLCDが使われることが多いかと思いますが、mpdクライアントを動かす事が視野にあるので、行数を稼ぎたく、QVGA LCDです。

このLCDは、以前、BBBにつなげて、BBBのGPIO使う上での勘違いを諭してくれた奴ですが、シングルコアBBBではちょっととろくて、5fps程度しか出ないようなので、活用するにはもう少しパワーがあるSoCが必要かな、ということでお蔵入していたものです。もう一つ同じ奴があるんですが、それはArduino UNO互換機と出番待ちしてます。


タッチパネル付き2.8" LCD


 この、Arduino用のLCDと言う奴は、大抵データが8bitパラレルで、それにLCD制御用の信号が5本必要、すなわち、13本GPIOを使います。それに、Arduinoなので5V電源。
ラズパイに、同じようなLCDをつなぐ事例がありますが、今使いたいLCDは、SPI接続のタッチパネルコントローラが載っているので、ラズパイ側もSPIを使えるように配置しなければなりません。ついでに、IPアドレスが固定じゃないので、シリアルコンソールがあった方が問題対応が容易です。

それを考慮してGPIOを眺めると、なんとぴったり13本。
このLCDには「温度計」も付いていて、LCD背面についてる温度計じゃ装置内温度みるためにしか使えないなとは思っていたんですが、そのためのI2Cを有効にする余裕はなさそうです。
BBBじゃないとこのLCDは活用できないな…。


ラズパイとの接続


 BBBやArduinoをみると、ボード側のコネクタは「メス」なんですよね。一方、ラズパイを起点とする40pin GPIOポートを持っているボードは「オス」になっているわけで、ときにジャンパケーブルに難点があったりします。ということで、外に一枚ユニバ基板入れることにしました。
結果はこんな感じです。



con2fbmapで切り替えられる、ということなんですが、何も起こらないので確認が必要です。
この砂嵐は/dev/urandomから/dev/fb1にランダム値を送り込んだ結果ですので、書き込みはできている、と言うことかと思います。


…、とりあえず、つながった、ということで、今日はここまで。

HDMIを止めるように設定してみてあるんですが(本当に止まってるか、見てないんですが)、そのおかげか?スマホ充電用の比較的容量が小さい電源でも動いています、ときにunder-voltageといわれますが。なんにせよ、ちょっと時代物の6Aの電源でもそう文句いうということは、相当ハイスピードな電源じゃないとイカンよ、と言われているわけで、最終的には新しい電源を調達するんだろうな、とは思っています。

2019年1月5日土曜日

本当に壊れた? Pi3B

Pi3Bは本当に壊れたのか?


 どうも壊れたようだ、として一旦離脱させたPi 3B。本当に壊れたのか?

むかしFBに写真載せたのだけど、このPi 3Bにはsmrazaというメーカー?の、加工済みアクリル板を9枚積み重ね、間にラズパイを挟み込むタイプのケースを使っています。右はその時の写真。

Pi3Bでは、緑LEDがいわゆるact LED(microSDへのアクセスやネットワークアクセスなどで点灯)で、赤LEDが電源ということになっているようですが、raspbian stretchでは、赤は常に点灯しているわけではありません。
不具合の状態ですが、電源を接続するとまず緑LEDが少しフラッシュした後に赤LEDがフラッシュして緑LEDがフラッシュ後、消灯して再び赤LEDが点灯します。以後この繰り返し。

ブート用のメディアは、元々使っていた32GのmicroSDは既にrock64に流用してしまったのでありません。Pi Zero Wで使っているものを利用します。そちらでは確実にブートするので、破損してはいませんし、32bitプラットホームと64bitプラットホームでバイナリを分けていませんので、カスタムしてない限りどちらでも同じイメージで起動できます。

シリアルコンソールを接続するよう設定していない状況だったので、この間何が起こっていたか確認することはできませんが、明らかに起動には至っていません。(例えて言うならgrubがOSロードしようとすると落ちて再起動しているような雰囲気。あくまでも雰囲気。)

この時点で「壊れたようだ」判断をして、rock64を調達することになるわけですが…

ケースをばらす


rock64が無事に動き出したので、Pi 3Bに戻り、基板状況確認のためケースをばらします。基板には焼けこげなど、何かが起こったような跡はありません。この状態で、5V/1.2Aの電源を接続して起動してみます(ディスプレイてかHDMI使わなければ、この位で十分動くはず)。

特に異常発熱もなく~…!、起動するじゃん????

電源投入時の緑→赤→緑で以後緑LEDがアクセスランプとしてmicroSDアクセスの様子を示しているので、しばらく後、DHCPクライアントIPを探してsshかけてみるとログインできます。
あれー。

改めてケースに組み付けて、同じ電源接続してみると、以前と同じ繰り返しリブートシチュエーションで起動しません。ケースには上の写真のとおりクーリングファンが搭載されていますが、それに電源は入れていないため消費電力観点では変化はないはずです。

再びばらして電源入れると動作します。何じゃそりゃ。

起こっているらしいこと


 ケースに入れたり外したりして様子をみた限りでは、どうやら電源用USBコネクタにかかる機械的負担(応力、ですかね)の違いによる、接触の違いに基づくようです。一旦起動してしまった後では、コネクタぐりぐりしても止まらないんですが(瞬停でも問題ないようにコンデンサ積んでるってのもあり、ラズパイが消費する電力が、接触不良発生と同時に増えたりしない限り、その程度でみつからなくても当然ではあります)、ケースに入れているときは、差し込み状況が起動に影響があるレベル、ということのようです。
スマホのおかげで非常にお手軽になったため、多くのボードでUSB microBを電源端子として使っていますが、やっぱ心配だな…。

と、いうことで、1Gもメモリ積んでるPi 3Bにそのまま遊んでもらうのは惜しいので、遠からず復帰してもらうことにして、ただ電源は、rock64同様40pin側から供給するようなケーブルなどを作ることにします。しかしそれだと、電源逆差しや過電流保護などの回路を通さずに、ボード全体に電源を供給することになるので、当然本当に壊れる(さらに火を吹くことになるかも)可能性が高くなりますんで、お勧めはできないのですけども。
それでやるならダイオードの一本くらい、入れておくことにしましょうね(その分の電圧ドロップには要注意ですが)。

結果として


 結果として、Pi3Bは自体が壊れていたわけではなく、トータルとしてはボードが一枚増えることになるという、喜んでよいのやら、余計な金を使ったと嘆くべきか、な状況となりました。
以前こけたままのwebフィルタ+ウイルスチェッカも、ClamAVがメモリを食う関係で、まだそのまま手当てできてないので、Pi3Bでやってみますかね。

2019年1月4日金曜日

rock64

ラズパイ3B壊れる

 いわゆる「ハズレ」を引いていたのかもしれないけど、一年くらい前に入手しほぼ半年前から連続稼働状況にしていたRaspberry Pi 3 Bには、電源面で色々泣かされました。12V/3A電源からDC/DC通して5V(もちろん3A以上ドライブできる)を供給しているのだけども、どうにもラズパイはHDMIまわりの電源設計が良くないのではないかと思われ…
うちにはTV以外にはHDMI入力可能なモニタが存在しないので、電源付きのHDMI-VGAアダプタを通してVGAモニタに接続しているのだけども、それを接続したままで再起動すると数回に一度しかちゃんと立ち上がらない。つまり、なるべく確実に起動させるためには、リブートしたい事象であっても、止めて、HDMIケーブルを外して、電源再投入する必要がありました。
年末に、「あ”、何かスタックしてる…」と思って、その手順で起動かけたのだけども、事情でそのまま数日放っておくことになってしまっていました。

年末年始休暇に入って、「さて」、と様子を見ると起動していない。「む、ファイルシステム壊れた?」と思い他のイメージを試すがやはり起動しないので、完全に壊れたか? しかし今それを追求し出すと、年末でもあるのでしばらく端末が無いことになってしまいます(まぁ、結果的にはそうなるんですが)。

残りのボードは BBB、Pi Zero WH、NanoPi NEOなわけで、辛うじてBBB、Pi Zero WHはmicroHDMIもしくはminiHDMI-HDMIアダプタがあれば使えそうではあるけども、デスクトップパフォーマンスはガタ落ち確定になってしまいます。

次のボードは…


 ラズパイには3B+がリリースされていて、それにしようかとも思ったのだけども、上述のとおり電源に不安があります。そもそも、こういうボードを試しているのは、連続稼働できて仕事にも使えるボードを探している面もあるわけで、確かにGPU性能など必要な使い方をそこでするわけではないのだけども、ミソが付いてしまったと言ってよい状態のラズパイを再び試すの?という思いもあります。

候補になり得るのは、高くて手を出し辛い96boards系、他にもNanoPi系、OrangePi系などとありそうではありますが、Wi-Fi搭載となっているケースがかなりあり、かつ、中国にオーダーとなるケースが多いようです。国内販売があって、ことWi-Fi搭載のボードで国内使用に問題ないのはラズパイしかないと言っても良いくらいです(偉大なり…)。この中で、パフォーマンス的、価格的に、Pine64のrock64 が目に止まりました。なんといっても、メモリが2Gまたは4Gをチョイスできるってのええじゃない、サイズもPi3Bと同じようだし、秋月で手に入るって。

と言うわけで、アキバにgo。

rock64


 Pi3Bをそもそもデスクトップで使っている人がどのくらいいるか判りませんが、調べ物のためchromiumでタブをたくさん開くなどすると、メモリ1Gだと結構苦しい局面があって、raspbianデフォルトのswap 100Mでは足らずに拡張しておく必要がありました。じゃぁswapに1G必要かというと、そこまでは必要ない、というのが実感レベルです。rock64では1G/2G/4Gのconfigを選択できるようですが、そういったメモリ事情を踏まえ、この時秋月店頭に並んでいた2G/4Gのうち、2Gを選びました。2GでほぼPi3B+と同価格。
動画再生でSoC結構発熱するとの情報がありましたので、放熱器も調達しておきました。

…、と、ここまでで年越ししてしまい、実際に火入れに至れたのは年明けです。


電源には、Pi3Bに使っていたものと同一のものを試します。OSはarmbian stretchを選択。
Pi3BはUSB microBが電源端子に使われていますが、rock64では馴染みの薄いサイズのプラグが必要で、秋月webにも対応方法が掲載されていたりしますが、なんのことはない40pinコネクタには電源入出力となっているピンがある(2,4pin=+5V)わけで、かつ、ラズパイがデファクト化しているので、のちにラズパイに入れ替えても良いよう、そこから供給してやります。

rock64のほうが、若干、仕様として記載の推奨電源容量が大きいのですが(Pi3B=2.5A vs. rock64=3A)、同じようにHDMI - VGAアダプタの電源を供給しつつもまったく問題なくこちらは立ち上がります。Pi3Bでは、GUI(display manager)が立ち上がったときに稲妻が出る、描画(display managerからdesktopへ切り替える、など)を始めるとクラッシュするのが典型的なシチュエーションでした。

そういうわけで、拍子抜けなほどあっさり立ち上がってしまいました。日本語関係、ldapなどネットワークデータベース関係のセットアップを行って、こうしてrock64でブログを作成しております。

なお、youtube動画を再生してみている過程でSoCに触ったところ、かなり熱いため放熱器を搭載しました。搭載が必要かどうか、はっきりしてなかったんですが、用意しておいて良かった~、です。

かまぼこ?みたいに、板に釘で仮止め中。

Pi3BではHDMIオーディオ使ってたんですが、何かのはずみに音が歪み出して元に戻らなくなります。どうも音圧依存なようで、Pulse Audio volume controlのような、レベルメータ付きボリュームコントロールでみていると、再生中にゲージ右側を指している、右に張り付く時間が長いようなソースでよく発生していました。こうなると、ほぼ再起動しかなかったんですが、rock64ではそのような歪みも起こらず、かなり快適です。メモリ使用量も結構フリーエリアが残っていて、2G品で問題なかったね、と言うところでしょうか。個人的にはなかなか良いお買い物だった、Wi-Fi後付けでよければお勧めかなと思いますが、あとはケースと寿命、か。