2021年6月27日日曜日

古いノートPCをよみがえらせる(FUJITSU LIFEBOOK AH42/W)

 前書き

古くてスピードが遅く、いろいろなアプリケーションをインストールしすぎて重くなってしまい、実用に耐えないノートPCを普通に使えるようにと考えた。

以前もノートPCのHDDをSSDに変えた経験があるので、今回は問題なくできるだろうと進めたが、いろいろとトラブルに見舞われ、すんなりとはいかなかったので備忘録として残す。

メモリを増やす

手始めにメモリを追加して4MByteから8MByte にすることで軽快に動くのではと考えた。タスクマネージャーでみると、メモリの使用量がほぼ100%だったからである。

DDR3ということだけを確認し、中古ショップで買ってくる。空きスロットに差し込むが、メモリが増えることはなかった。

相性の問題かとも思ったが、結果的にDDR3L(PC3L)でなければだめで、買ったものは単なるDDR3(PC3)だったので使えなかったもの。DDR3の種類もよく調べないで衝動買いしたため無駄な買い物になってしまった。このほか周波数もいろいろあるので、それも合わせないと(上位互換とはいうものの)うまく動作しないかもしれない。

その後メルカリで現在使用しているものとメーカーも周波数も同じものを購入、今度はきちんと認識してくれてメモリは8MByteに拡張できた。

Cドライブのアクセスが多い原因

次にHDDをSSDに代えることで動作が軽快になることを期待する。

その前にタスクマネージャーで動作が重い原因を探す。メモリの占有率は50%になったが、HDDの占有率がほとんど100%から下がらないからだ。変なプログラムがインストールされているのではないかと、タスクマネージャーの「プロセス」を探してみると、「サービスホスト」が原因のようだ。これはWindows Updateの一環のようだが、これをなくすことはできない。しかし普段使う時間帯を外して動作させることは可能なようなので、この設定を行う。

「設定」ウィンドウから「更新とセキュリティ」をクリック、「Windows Update」を選択して「アクティブ時間の変更」をクリックして、普段使わないような深夜帯にWindowsUpdate(の準備?)が行われるように設定する。

※なおこのPCは普段使っていなかったため、電源を入れたタイミングでアップデートなどの作業を一度にしたことも重くなって原因かもしれない。ただ、久しぶりのWindows Updateで半日もかかってしまったのには閉口した。

Cドライブの容量を少なくする(1)

その他不要なアプリケーションをアンインストールし、容量の大きなビデオソフトなどを外部HDDに移してCドライブを極力少なくする。現在はHDDが1TByte、予定しているSSDは予算の関係もあって500MByteである。

エクスプローラーで見るとだいぶファイルの容量が減ってきたので、Cドライブを分割して縮小する。これには

エクスプローラーから「PC」を右クリックして「管理」をクリック、「ディスクの管理」をクリックするとディスクの状態が表示されるのでCドライブを右クリックして「ボリュームの縮小」をクリックする。しばらく計算後どの程度縮小できるのかの値が表示される。

参考画面


これを見ると、せっせとファイルを削除して容量が減ったと思ったのに、それほど縮小できないような数字になっている。この理由はコメントにあるように「移動できないファイルが格納されている場所までも含めてボリュームを縮小することはできません。」ということなのだろう。何らかの方法でHDDを整理することで、もっと縮小できるようになるかもしれない。

実際この方法では500GByte以下に縮小できなかったので、別の方法を試みる。

※後述のクローンソフトだと、あえてCドライブを縮小分割する必要はないかもしれない。単に不要ファイルを減らすだけでも容量の小さなSSDに置換可能かもしれない。

Cドライブの容量を少なくする(2)

FreeソフトのEaseUS Partition Masterというソフトでパーティションを切ることでCドライブの容量を縮小してみる。これは前述の「移動できないファイル」を移動してぎりぎりまで縮小するようだ。

このソフトをダウンロードして動作を見ているといくつかのファイルの移動を行っているようだ。その後BIOSの設定も変更するのか、ちょっと見慣れない画面が出てこのままちゃんと立ち上がるのか不安になるが、結果的にはCドライブを500GByte以下に縮小することができた。

SSDにHDDクローンを作る

購入したのはSanDiskの内臓SSD2.5インチ500GB、SDSSDH3-500G-J25



SSDの容量がHDDより小さいので、どこのサイトでもよく取り上げられていて、以前も
SSD移行で使ったことのある、EaseUS Todo Backupを使うことにしたが、ここで大きな問題が。現在フリーではクローンの作成ができなくなっているのだ。

仕方なくほかのフリーソフトを探すが、縮小してクローンを作成するという条件もあってか使えるものがなく、本意ではなかったが、バージョンの古いEaseUS Todo Backupを探して使うことにした。今回はVer9.1を使った。

今後フリーの使いやすいクローンソフトが出ることを期待するが、そうでなければ移行ソフトが付属しているSSDを使うか、移行ソフトを購入するしかなくなるのだろうか。

さて、クローンの作業はUSB端子にSATA変換ケーブルをつないでSSDを接続する。その後エクスプローラーから「PC」を右クリックして「管理」をクリック、「ディスクの管理」をクリックしてSSDが認識されていることを確認する。この後SSDのフォーマットを行う。

EaseUS Todo Backup Ver9.1を立ち上げ、「クローン」をクリック、ソースディスク(HDD)とターゲットディスク(SSD)を指定して、「SSDに最適化」にチェックを入れ、実行を押すとクローン作業が始まる。「セクタバイセクタクローン」はHDDとSSDの容量が同じかSSDが大きいときはチェックを入れてもいいが、今回の様にSSDの容量がHDDより小さいと警告がでる。

クローンができない!

クローン作業が始まって7~8分したころに、エラーが出た。セクターの書込みに失敗したという。


このエラーは多くの人が経験しているようで、「セクターの書き込みに失敗」で検索すると対策もいろいろと出ている。チェックディスクをしてディスクのエラーを修復するというのが一般的のようで、やってみる。書込みというからにはSSD側の問題だろうと思いつつもHDD側のディスクをチェックする。方法は他のサイトに詳しいが、エクスプローラーから特定のドライブを右クリック、その中からプロパティをクリックして、ツールタブから「エラーチェック」や「ドライブの最適化とデフラグ」などをやってみる。

また、コマンドプロンプトから「chkdsk c:/r」コマンドを入れ、Windowsが立ち上がるまえにディスクをチェック/修復するということもやってみる。(これはかなり時間がかかる)

以上の作業は以下のサイトを参考に行った。

EaseUS todo backupで失敗しまくり!HDDからSSDにデータコピーする際の4つの対策方法とは? (mp-app.net)

これらの方法でクローンの作成ができるようになったと報告されているが、自分のケースではやはりエラーはなくならなかった。

原因は変換ケーブル?

ふと思いついてSSDを接続しているUSBとの変換ケーブルを、手持ちのHDDケースに変えてみた。場合によっては外部電源供給タイプのHDDケースも使うことも考えたが、結論としてHDDケースに変えるだけでエラーは出なくなり、無事クローンを作成することができた。作業時間はUSB3.0を使って1時間ほどであった。

上にあるのがクローンでエラーの出た Homefunny SATA-USB3.0変換アダプタ
接続しているのが玄人志向の2.5型SATA SSD/HDDケース GW2.5CR-U3

最悪クリーンセットアップ、リカバリーディスクの使用も検討していただけに、ほっと安心。


SSDを装着

バッテリーを外してからHDDを取り出し、取り付け金具を流用してSSDを装着する。この辺の作業は事前に確認しておいたのでどうということもない。

さて電源ON。ここで「ブートドライブがない」という趣旨の警告画面がでる。失敗か、と思いつつも「continu」をEnterすると、どのドライブから立ち上げるのかという選択画面になるので、SSDのドライブを選択してEnterとする。これでいつもの立ち上がり画面となり、SSDの速さで立ち上がった。SSDの快適さは他のサイトでも評価されている通り。

メモリの拡張と相まって非常に快適なPCによみがえった。

2020年2月25日火曜日

「脱入門者のExcel VBA」を読む

脱入門者の Excel VBA  自力でプログラミングする極意を学ぶ
立山秀利(たてやま ひでとし)
講談社 BLUE BACKS
2016320日第1

氏のシリーズもので「入門者のExcel VBA」を読んだ後に手にする本。「入門者の~」が、Excel VBAが全く初めてという人が対象だったのに対し、本書はその後のステップアップのために書かれたもの。
VBAを使えるようになって、いろいろやってみたいと思っている人、また、いろいろやってみたけどなかなか上手にプログラムが組めないと思っている人に最適。よくありがちな、「VBAを使うと仕事がこんなに楽になりますよ」といったたぐいの本ではない。
氏の入門シリーズ同様に例となるプログラムを組み上げることから始まる。入門書にありがちなこととして、例となるシステムに必然性とか親近性がないと、なかなか先に進めないということがある。本書では、複数の県の複数の営業所で扱った、一日の売り上げデータが集められたCSVファイルを、それぞれの営業所ごとに分けるというプログラムを作る。まずはこの作業を必然性のあるものとして関心を持つことができるかどうかが分かれ道になる。
この作業をプログラム化するために、複数のファイル(Excelでいうブック)を開いて、ブック間、そして、ブック内のシート間のデータのやり取りという作業が発生するので、「入門者の~」より一段レベルが上がる。ここはややハードルの高いところであろう。しかし複数のファイル(ブック)間のデータの交換は十分あり得る作業であると思う。
この段階でForNext文やIFThenについても学ぶし、プログラムを一気に組み上げるのではなく、少しづつテストし、理解しながら組み立てていく手法も学ぶ。これは大きなプログラムを作り上げる上では重要なステップである。ここまでで本書のほぼ半分近くを使っているので、ここが脱入門者の一つのキーポイントとなるところだ。
続いて脱入門者の重要な要素としてデバッグが取り上げられる。プログラムを作り上げる段階では、必ずうまくいかない部分が出てくる。一旦そこにはまり込むと抜け出せなくなることもままある。そうならないために、少しずつステップを踏んでテストを繰り返しながら組み上げることが重要だが、実際にエラーが出たり、思うような動作をしない場合は、デバッグが大事なツールになる。本書では出来上がったプログラムにわざとエラーを作って説明をしているので、結果が分かった状態でのデバッグになり、あまり現実感がないかもしれない。しかし、デバッグのための誤りを含んだプログラムを用意するのも、それはそれで難しいところがあるので、これは致し方ないかもしれない。
後半はエラーに対する処理が取り上げられるが、自分で作って自分で使う分には問題なくても、他の人はどのように使うか分からない。想定もしない使い方でエラーが出ることは、VBAを実際に現場で動かす場合にはいくらでもあり得ることである。エラーの処理方法は、実用的なプログラムのためには重要なポイントとなる。
他には処理を速くする方法、後で変更を容易にするプログラムの書き方について書かれている。
処理を速くする方法とプログラムを分かりやすくする方法とは、どちらを取るか考えどころである。トリッキーな処理でプログラムを速くするよりは、より分かりやすい方が、後々の変更や、他の人が見ても変更が容易になることを考えると、良いように思う。処理スピードについてはもっと高度なレベルでの問題ではないだろうか。
ただ、本書にも書かれているが、この程度のプログラムでは、スピードアップするように変更したとしても、体感できるほどではない。スピードアップ手法が重要な問題にならないほど今のPCは高性能になっているということで、氏もそれは十分承知した上で、プログラムの書き方として提言していることだと考えられる。
紙面の都合でプログラムの記載の一部を省略したところが多いので、自分で実際にプログラムを作りながら読むのがいいだろう。単に読むのではなく、本書に従ってプログラムを動かしながら読んでいくとより身に着く。そのためのダウンロードサイトも用意されている。
出版から年数が経っているので、Excelのバージョンが変わっていて、もしかすると細かいところでの相違は出てきているのかもしれないが、根本的な問題にはならないと思う。
冒頭に書いたように、例題を現実のものとして捉えられるかどうかということはあるにしろ、入門からステップアップするために必要なポイントをきちんと押さえており、脱入門には最適な一冊だと思う。



2019年7月17日水曜日

ラズベリーパイ奮闘中(7)ダイソーのワイヤレスマウスをつないでみる


以前Bluetoothのキーボードとワイヤレスマウスを使って配線をすっきり、ということを書いたが、(ラズベリーパイ奮闘中(6)Bluetoothマウスとキーボードを接続)
結局Bluetoothの安定度が悪く、切れたりするため、USBキーボードと、USBドングルを使ったワイヤレスマウスに落ち着いている。
ワイヤレスマウスは手元にあるいくつかを使ってみたが、中にはWindowsでOKでも(普通はWindowsに対応)ラズベリーパイでうまく動かなかったものもあり、試してみないと分からない、という不安がある。

今回ダイソーの300円ワイヤレスマウスを買ってみたので、その結果報告。
結論から言えばラズベリーパイでも使える。ただし、マウスパッドがないとだめ。
ちなみにWindows8でもやはりマウスパッドを使わないと、使えないようなので、マウス自体の問題。
なおCADのような細かな作業にストレスなく使えるかどうかまでは検証していない。あくまでワープロ、エディターやインターネットブラウザなどでの使用を前提。

手元の他のマウスは、木目テーブル(つやあり)でもカーソルがきちんと追従し、ほとんど問題なく使えるが、ダイソーのマウスは全くだめ。カーソルが横に動かず、故障で返品しようかと思ったほど。

マウスのスリープモードについて
なお、ラズベリーパイは、10分ほど何も操作しないと画面が暗くなる。この時にキーボードを押すと画面が復活するが、ダイソーのマウスを動かしてもカーソルが動かない。(裏を見てもLEDが点灯していない)この場合、マウスをクリック(右でも左でもOK)すると即動くようになる。(マウスのクリックでも画面は復活する)

ELECOMのM-DY11DR(後の写真参照)もワイヤレスマウスで、ラズベリーパイで使用できるが、これは10分経って画面が暗くなっても、マウスを動かすと画面が復活する。カーソルが動かなくなることはない。マウスの、スリープモードになる時間がもっと長いのかもしれないが、ちなみに1時間30分以上放置してもマウスを動かすと画面が復活した。

ダイソーのマウスは、節電のため、10分でLEDがつかなくなるようになっているのかもしれないと考え、Windowsマシンで調べたところ、やはり10分経つと画面の表示いかんにかかわらず、カーソルが動かなくなることがわかった。この場合もクリックで動くようになる。
(10分スリープについては他のサイトでも確認できる。
例えば https://pofpon.net/daiso-wireless-mouse/)

なおCPIの切り替えもできるようだが、操作感ではなんとなくカーソルの動きが大きいか小さいかくらいの違い。

(注)この記事は以下写真の型名、ロットで確認したもので、ダイソーで販売している(または今後販売する)すべてのワイヤレスマウスが同様とは限らない。

ダイソーの300円マウス
Windows Macに対応と書いてある。
単4電池2本使用

今回買ったものの型名、ロットNoなど

裏側
LEDは赤でかなりまぶしい USBドングルも収納できる



比較した手元のマウス。左側がダイソーのマウスだが、
この中では一番大きい
ELECOM M-DY11DR
ラズベリーパイで使っていたが、ホイールの反応が悪くなり交換
ホイールが尖っていて、長く使うと指が痛くなる
ELECOM M-BL20DB
Windowsでは問題なく使えるが、ラズベリーパイではマウスカーソルの動きが
非常に緩慢(ものすごく遅く追従)で使用できない。
ホイールが平坦で長く使っても指が痛くならず使い勝手がいい。
Blue LED

2019年3月10日日曜日

ラズパイでVSCodeを使ってArduinoの開発環境を作る

なんとかRaspberry PiにVisual Studio Code(VSCode)をインストールし、Arduinoの開発環境を構築しようとして、またトラブル。

素のVSCodeから、拡張機能でArduino for Visual Studio Code(Microsoft)をインストール。(この辺の手順はいろんなサイトに書かれている)そうすると、Arduinoのスケッチが快適に書けるようになる。この痒いところに手が届く快適さを知ると、オリジナルのIDEにはちょっと戻れないかも。
こういったEditerは他にもあるようだが、オリジナルIDEのいいところは、スケッチを書いた後、コンパイル、ボードへの書き込み、シリアルモニタでのデバッグ、動作テストが一連の作業でぱっとできること。
しかし、VSCodeのArduino拡張機能は、これと同じことをそれ以上の機能でできるというではないか。これはやってみなくては。

実際簡単なスケッチでやってみると、オリジナルIDEよりはやや遅いかな、くらいのスピードでボードへの書き込みまでできてしまった。
(例にあるLチカ(Blink)のスケッチでは、オリジナルが約10秒で書き込み完了したのに対し、VSCodeは16秒程度かかった。)

さて本題

私の環境は先に書いたように、Raspberry Pi3 Model B 1.2にOSはRaspbian。(debianのバージョンは9.8)それにVisual Studio Code(ラズパイではCode-OSSという名称。バージョン1.14.0)をインストールし、Arduinoの環境設定をしている。(RaspbianにはオリジナルのArduino IDE1.8.5もインストールされている)

Windows8に、同様にVSCode、Arduino IDEをインストールしてArduinoの環境設定をした場合は、問題なく動作した。(すべてMicrosoftだし)

しかし、Raspbian上のVSCodeでArduinoの環境設定をしようとすると、単に拡張機能でArduino for Visual Studio Codeをインストールしただけではだめ。例えばスケッチ例を読み出そうとしても、オリジナルIDEのようなサンプルが出てこない。

そのために基本設定を行う。
ファイルメニューから基本設定→設定を選択。

そうするとsettings.jsonの編集画面になるので、そこにpathを書き込む。
"arduino.path": "/home/pi/Arduino1_8_5/arduino-1.8.5"


arduinoのスケッチ例のexamplesやlibrariesホルダのあるところが、私の場合は
/home/pi/Arduino1_8_5/arduino-1.8.5
だったので、上のような書き方になった。

書き込みするには、むろん直接書いてもいいが、「設定の検索」欄にarduinoと書くと、いくつかの候補が出てくるので、その中のarduino.pathにカーソルを持っていくと、左側に鉛筆マークがでてくる。それを左クリックすると「設定にコピー」となるので、それを左クリックすることで右側の設定欄にコマンドがコピーされる。その後””の間にarduinoホルダのpathを書き込む。(その後保存)

こうすることで、F1(またはShift+Ctrl+p)を押してArduino:Select Exampleを選択すると、オリジナルIDEのようにスケッチ例が現れて、希望のサンプルを読み出すことができる。
その他、F1(またはShift+Ctrl+p)を押してArduino:Change Board Typeを選択する。
これらの結果は{}arduino.jsonに記載される。(左上のエクスプローラーアイコンで表示される。)

ここで問題が

出力ポートの選択もしないといけないが、ここで、選択ができないというトラブルが起きる。Arduino:Select Serial Portをクリックしても何も出ない。(Windowsにインストールした場合はOK)他のサイトを見ると、ボードの選択と同様にいくつかの選択肢が表示されるはずだが、出てこない。そのため、Arduino:Uploadをしても、ボード書き込みの段階でエラーになってしまう。

そこで苦肉の策だが、{}arduino.jsonの中のportを書き換えてみた。
"port": "COM1"
のようになっていたものを、
"port": "/dev/ttyACM0"
とした。(ttyACM0の最後は'ゼロ')もしこの文が無い場合は追加して書き込む。
この/dev/ttyACM0というのは、オリジナルArduion IDEで、ツール→シリアルポートを選択したときに表示されるものである。

また、ファイルマネージャで/devを見てもttyACM0というファイルがあるのがわかる。
{}arduino.jsonを手で書き換えた結果が以下のようになっている。

結果的にこれでエラーが出ずにボードに書き込むことができた。(下のメッセージ欄にuploadedとあるのがわかる)

なぜArduino:Select Serial Portをクリックしても何も出ないのか、現段階で不明。

まだ使い込んでいないので、これ以上どんな不具合があるのか分からないが、とりあえずウィンドウを増やすとフリーズしてしまうので増やさないようにして使っている。(フリーズしたら、仕方なく電源を落として再立ち上げしている。)

2019年3月4日月曜日

Raspberry PiにVisual Studio Codeをインストールできない

Raspberry PiになかなかVisual Studio Codeがインストールできずに苦労したので、その覚書。

かのからあげ先生もお勧めの、はやりのエディタVisual Studio Codeが、Raspberry Piにもインストールできるようなので、遅ればせながらやってみた。

ちなみに使用環境は
Raspberry Pi 3 Model B V1.2
以下のコマンドでdebianのバージョンを表示させると、9.8だった。
cat /etc/debian_version
「これでprintデバッグから卒業!VS CodeでPythonデバッグ入門」
https://karaage.hatenadiary.jp/entry/2019/02/20/073000

ネットで探すと簡単にインストールできるらしい。

「Raspberry PiにVisual Studio Codeをインストール」

https://qiita.com/iton/items/1cd7440442f7420e6b99

LXTerminalから2行入力するだけでOKなら、簡単!
元ネタは
https://code.headmelted.com/#linux-install-scripts

早速実施
そこに書かれているように、sudo -sを入力してスーパーユーザーセッションに入り、
. <( wget -O - https://code.headmelted.com/installers/apt.sh )
と入力するのみ。
早速やってみると・・・
いろいろ出るが、どうもだめみたい。
インストールはできない
特に赤線に注目すると、「公開鍵を利用できない」とか、「以下のパッケージは認証されていません!」という警告がでて、最終的に「Visual Studio Code install failed.」で終わってしまっている。

元ネタのページを見ると公開鍵について、
For either APT or YUM installation, you'll want the public GPG key to verify the package, which you can download here.
のように書かれた部分があり、hereをクリックするとなにやら鍵のようなものがダウンロードされる。
でもこれってどう使うのかがわからない。Linuxに疎いのでここで止まってしまった。

公開鍵については、sshの関連で記事がいっぱいあるが、パッケージ認証に関してはあまり見えない。
見つけたそれらしいサイト

「aptの信頼されていないパッケージ(GPGエラー)は公開鍵の更新で解決する」

 http://elsur.xyz/ubuntu-apt-update-expired-key

これに従って端末にインストールされている鍵を表示させてみた。

2012とあるので、現在の2019年からすると、すべて期限切れ?。最新版に更新する必要があるのか、それとも他の鍵を追加する必要があるのか。

公式フォーラムに方法が
ここで悩んでいたら別のインストール方法を見つけた。

「VSCodeをラズベリーパイで使う方法」

http://zeroxsixf.wp.xdomain.jp/2018/07/21/vscode%E3%82%92%E3%83%A9%E3%82%BA%E3%83%99%E3%83%AA%E3%83%BC%E3%83%91%E3%82%A4%E3%81%A7%E4%BD%BF%E3%81%86%E6%96%B9%E6%B3%95/

これは本文にもある通り「ラズベリーパイ公式フォーラムに投稿されていたものを実際にやってみた結果」ということで、オリジナルは
である。

これによると、まずはGPGキーのインストールとあり、最初に引っかかったGPGエラーを解決するかもしれない。
この手順に従い、まずはGPGキーをインストールする。
sudo wget -qO - https://packagecloud.io/headmelted/codebuilds/gpgkey | sudo apt-key add -;

順調に終了したら、sudo apt-key listコマンドによってキーリストを表示させてみる。
なにやらキーが追加されているようだ。

更にソースリポジトリの追加を行う。nanoエディタによってテキストファイルに1行を追加、保存する。追加したあとのファイルは以下のようになっている。

このあとはVSCodeを手順に従ってインストールするのみ。
まずは
sudo apt-get update
これが終了したらインストール。
sudo apt-get install code-oss
今度は変なエラーのような文章も出ず、すんなりインストールされたような印象。

ここまで特にREBOOTもしていない。
このままメインメニューのプログラムを開くとちゃんとCode-OSSがある。
恐る恐るクリックすると、無事VSCodeが立ち上がった。
立ち上がりに少々時間がかかるものの、pythonのプログラムとか、aruduinoのスケッチを表示させると、なかなかきれい。

多分あまり変なことをしていないと、うまくインストールされるかもしれないが、さんざん変なことをした後だと、この手順でもインストールはできなかった。
一見インストールできたようでも、メニューにはCode-oss(headmelted)などと書かれていて、立ち上げてもウィンドウのみでさっぱり動作しない。(この表示でも動作する例があるようだ)

メニューに表示された「Code-oss(headmelted)」
立ち上げてもこれしか出ない

OSの再インストールもやりたくなかったので、この方法でいいのか分からないが、/etc/apt/sources.list.dホルダにあるheadmelted_vscode.listを消し、/etc/apt/trusted.gpg.dホルダ内のheadmelted_vscode.gpgも同じように削除して、Code-ossを、メニュー→設定→Add/Remove Softwareを使って削除。
その後上記手順の、GPGキーのインストールからやり直すとOKとなった。(この辺は管理者権限でないと削除できないので、LXTerminalで操作。)

このあといろいろと設定をしなくてはならないが、使用感も含めて後日。

2019年2月22日金曜日

Raspberry Piを速くする

スピードアップはできる?
Raspberry Piも2018年3月にPi3Model B+が発売され、クロックスピードが1.4GHzと高速になった。ラズパイはCPUとクロックが決まっているので、買った時点でスピードが決まってしまうと考えていたが、WindowsPCでHDをSSDに入れ替えてぐんとスピードアップするように、ラズパイもmicroSDカードを選ぶことで、操作感としてスピードアップができる。(というよりは、動作の遅い原因はmicroSDだったということ。)
この記事は以下のサイトを参考にした。

【 続報 ③ 】Raspberry Pi 3 Model B+での各種ストレージ別ベンチマークを敢行! 第1弾

https://www.fabshop.jp/%E3%80%90-%E7%B6%9A%E5%A0%B1-%E2%91%A2-%E3%80%91raspberry-pi-3-model-b%E3%81%A7%E3%81%AE%E5%90%84%E7%A8%AE%E3%82%B9%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B8%E5%88%A5%E3%83%99%E3%83%B3%E3%83%81%E3%83%9E/

SDカードのスピード
OSの入っているmicroSDカードは、たぶんclass10を使っていると思うが、これは最低転送スピードが10MB/sを保証しているだけで、店頭でよく見ると最高動作スピードがいろいろあることが分かる。商品に書かれている「高速動作!」などという言葉に惑わされずに、最高動作スピードを見て購入したい。様々な転送速度の製品があるが、必ずしもスピードの早いものが高価なわけではない。

ベンチマークテスト
ベンチマークテストにはsysbenchを使う。上記の参考サイトでは、テストするメディアにOSをコピーして立ち上げ、sysbenchを動かして比較をしていたが、USBポートにカードリーダーをつけてテストすることもできる。メディアを比較するのであれば、この方法でもいいと思う。

SSDは速い
参考サイトにもあるが、SSDのスピードは別格だ。ラズパイは設定によってUSBポートに接続したメディアからも立ち上げができるが、(以下のサイト参照)この方法でSSDを接続、実際にベンチマークテストをすると、数倍の速さになる。動かしても、サクサクと実に軽快。ただし設定もあるのかもしれないが、電源を入れてから動くまでの立ち上がりが遅く、SSDの物理的な固定方法も考えないといけないので、速いからといって一概には勧められない。
SSDを2つ使ってSWAP領域を拡大するなど、ブラウザで多くのサイトを開いてもスピードが落ちないようにもできるようだ。

ベンチマークテストをする
(1)クロックの周波数を固定する
ラズパイは状況に応じてクロックの周波数を変えているようだ。発熱や消費電力を考えてのことだろうが、ベンチマークテストをするときは、最高速度に固定することが必要らしい。(固定しなくとも大きな違いにはならないようなので、概略を見るのであれば省略も可能。)
詳細は以下のサイトを参照。

【 続報 ② 】Raspberry Pi 3 Model B+のCPUクロックを確認してみた!

https://www.fabshop.jp/%E3%80%90-%E7%B6%9A%E5%A0%B1-%E2%91%A1-%E3%80%91raspberry-pi-3-model-b%E3%81%AEcpu%E3%82%AF%E3%83%AD%E3%83%83%E3%82%AF%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%97%E3%81%A6%E3%81%BF%E3%81%9F%EF%BC%81/

参考サイトに従って、cpufrequtilsをインストールする。
続いて現在のクロック周波数が分かるように、タスクバーにCPUFreqのアプレットを追加する。
/etc/init.dディレクトリーにあるcpufrequtilsファイルを編集してクロックを最高速度に固定できるようにする。
なお最高速度に固定するには、起動するたびに設定ファイルをrestartさせる必要がある。
LXTerminalから以下のように入力。
sudo /etc/init.d/cpufrequtils restart
タスクバーにマウスを持って行って最高周波数になっているかを確認する。

(2)sysbenchのインストール
これも【続報③】を参照。
メニュー → 設定 → 「Add / Remove Software」からsysbenchを検索、インストールする。

(3)ベンチマーク用にテストファイルを作る。
$ sudo sysbench --test=fileio prepare
標準では16BMBのファイルを128個作成するので、テストのための空き容量は2GBほど必要。
ファイルマネージャで見ているとファイルが出来ていくので進行状況が分かるが、作成まで少し時間がかかる。

(4)ベンチマークテスト開始
$ sysbench --test=fileio --file-test-mode=rndrw run
通常1分以内で終わるが、手持ちの40MB/sのSDカードだと、数十分かかった。
(クロックの周波数を固定しないと、このときに周波数が変化するのが見える。)
結果は次のように出る。

○で囲んでいる部分が転送速度


(5)テストファイルを削除する。
$ sudo sysbench --test=fileio cleanup

(6)USBポートに接続したメディアのベンチマークテスト
ディレクトリーをUSBポートに接続したメモリに移動してから上記の作業を行うことで、ベンチマークテストが可能。(ただ、この方法でSSDメモリをテストしようとしたが、うまくいかなくて、結局USBポートに接続したSSD(OSコピー済み)から立ち上げてベンチマークテストを行った。)
USBポートにメモリを接続すると、ファイルマネージャが立ち上がり、そのディレクトリーが分かる。LXTerminalから例えば以下のように入力することで、USBメモリにディレクトリを移動することができる。
USBポートにSDカードを接続したときのファイルマネージャ


USBメモリーにディレクトリを移動、
ここからsysbenchを動かす。
USBポートからの起動
ラズパイは、通常OSの入ったmicroSDカードをカードスロットに差し込んでおいて起動させるが、Raspberry Pi 3 Model B+では、標準でUSBに接続した外部メディアからRaspbianを起動することができる。
それ以前のModel Bなどでは、USB Boot Modeに設定しないとできない。その方法は以下のサイトの「Program USB Boot Modeの有効化」を参照。

【STEP-26】Program USB Boot Modeで、SSDからRaspbian起動

https://www.fabshop.jp/%E3%80%90step-26%E3%80%91program-usb-boot-mode%E3%81%A7%E3%80%81ssd%E3%81%8B%E3%82%89raspbian%E8%B5%B7%E5%8B%95/

こうすることで、SSDから起動することも可能になる。また、microSDカードスロットに差し込んだmicroSDカードを抜いてUSBにカードリーダー経由で接続し、USB Bootとすることもできる。これでベンチマークテストをしてみると、USB Bootの方が少し遅いことが分かった。
※SSDからの起動については、トラブルも発生したので別途投稿。

テスト結果
各種メディアの転送速度は次の通り。
GREEN HOUSE・・・8.7Mb/s

読み込み最大80MB/s 書き込み最大15MB/s
Mag-Lab japan・・・3.5Mb/s
転送速度不明
UHSスピードクラス 1  SDスピードクラス 10
東芝・・・44.5kb/s
Max Read Speed 40MB/s
120GB SSD Kingston
SSDはUSB2.0のHDケースに入れて使用。53.0Mb/s
SATA-USB3.0変換ケーブルを使用。20.0Mb/s


東芝の16GmicroSDが、Max Read Speed 40MB/sとある割には、ほとんどスピードが出なかった。ただ、実際にRaspbianをコピーして使った時は、ちょっともたつく感じはあるものの、まったく使用に耐えないというものではなかった。
Mag-Lab japanの製品は、転送速度がは明記されていないが、一応UHSスピードクラス1、SDスピードクラス10。税別500円の特価品の割にはそこそこのスピード。

SSDは、参考にしたサイトでは59.9MB/sという値が出ていたので期待した。
測定してみると、SSDとUSBの変換で違いが出て、USB2.0のHDDケースを使用した場合は、最大53.0Mb/sが出た。USB3.0の変換ケーブル(参考サイトで使用していたもの)を使用した場合は、最大20.0Mb/sしか出なかった。(何回かテストをして最良値を記載)
しかしこれでもUSB Bootで使用すると非常に快適。

手持ちのmicroSDカードはいずれも1000円以下の安いもの。もっと高くても良ければ、スピードの早いものがあるので高速動作が期待できるが、残念ながらそのテストはしていない。

2019年1月18日金曜日

秋月電子通商のデジタル時計キットを組み立てる

秋月電子通商の通販では扱っていないようだが、店頭にデジタル時計のキットがあったので、買って組み立ててみた。型名はSKU-101-30-369(又は Z-00297)。電源はUSBから供給するように、短いケーブルが付属している。(電源OFF時でもボタン電池で時計は動いている)使っているICは15F204EAというPICマイコンとDS1302というリアルタイムクロックモジュール。ケースもついて税込み980円。

組み立てたのは中2の娘。はんだ付けは学校でやったと言っている。
時刻表示(8秒間)

温度表示(2秒間)
部品面
USB接続用の専用電源ケーブル付属
プラグはレベルメーター用
付属の説明書(裏表)

説明書は両面に書かれた紙1枚であるが、まあ丁寧な方だろう。
部品表(リスト)にしたがって内容物を確認する。抵抗がいっぱいあるが、1kΩと10kΩの2種類だけなので、わざわざテスターで当たるほどでもない。(一応確認はしたが)
cds、温度センサは説明書に写真があるのでいいが、そのほかのブザーや水銀スイッチ、クリスタルなど、娘にはどれがどれなのか分からないようだった。まあ取り付けは写真を見ながらできるのでいいか。
部品が揃っていることを確認したが、抵抗、コンデンサー、トランジスタ、ねじ共に余分に入っていた。(説明書にもその旨書かれている)

次は取り付け手順にしたがって部品をはんだ付けしていく。傍で見ていると作業はやや心もとないところもあるが、ある程度つけたところで、きちんとついているか、隣とショートしていないかなど、確認をしつつ進める。ミニUSBコネクタの取り付けが、端子の間隔が狭く、ショートの危険性があるので、要注意。それ以外は問題なく作業は進んだ。

LED以外の部品が全部付いたところで、最終目視確認。というのもLEDがついてしまうと、パターン面が見られなくなり、手直しもできなくなるから。最終的に動作不良となっても、構造上手直しができないので、1発勝負のところがある。
幸い今回は無事動作した。

説明書にもあるが、LEDをつけるに当たって、右側の1個がcdsのはんだ部分に当たってしまった。これはどうしようもないので、LEDを少しやすりで削って面が揃うようにした。また右側の1個は隣と隙間ができてしまうのも、説明書にあるとおり。
LEDの面を揃えるため、cdsはんだ部分に当たるところを削った。
右側の1個だけ隣と隙間ができる。

出来上がったら電源を入れ、動作に問題がないことを確認してケースを組み立てる。
ケースの組たてについては特に説明もないが、迷うようなこともない。ただ、加工精度が高いのか、ナットが簡単には入らない。きちんと向きを合わせて差し込まないと溝に入っていかないので、そこは注意。

このキットに限ったことではないが、ICをソケットに差し込むときは、やったことがないとうまく入らない。一般的にDIPタイプの足は外側に広がっているので、ソケットに合わせて内側に曲げてやらないと、ちゃんと挿入できない。へたをすると一部の足を曲げてしまったりする。ここは手伝ってICを差し込んだ。

水銀スイッチによって、本体を縦にするとレベルメーターになるようだが、あまり使い勝手は良くないかも。温度計もついているとはいえ、実用性を考えるとやや疑問。
温度計は目安程度となっているが、手持ちの市販デジタル温度計でA製品20.1℃、B製品19.8℃、棒状温度計で約20.0℃のとき、18.9℃と1度ほど低かった。
時刻の精度は、3日で10秒ほど進んだので、月差でいうと100秒ほどか。通常の国産デジタル時計が±20秒とか±30秒というレベルからすると誤差は大。説明書にもあるが、調整箇所はない。

実用性からすると今一つのところもあるが、この値段でケースもついた時計が作れるというのはリーズナブルではないだろうか。

INA219にはまる

 INA219電流センサーの互換品を買う。 互換品 オリジナル Adafruit Industries(エイダフルート) 商品レビューで評判が良くない。不良品が多すぎるという。 とはいえ全体の購入者数からすれば一部の人の評価だろうから、まあ大丈夫だろうと買う。 オリジナルの値段の...