2021年10月6日水曜日

INA219にはまる

 INA219電流センサーの互換品を買う。

互換品

オリジナル
Adafruit Industries(エイダフルート)


商品レビューで評判が良くない。不良品が多すぎるという。

とはいえ全体の購入者数からすれば一部の人の評価だろうから、まあ大丈夫だろうと買う。

オリジナルの値段の半分から数分の一という値段が魅力的なことが第一。翌日配達というのも魅力的だった。

これを扱ったサイトには、「ハズレを引いた場合、まったく動かなければ問題ない?のですが、下手に動作すると無駄に時間を消費してしまいます。」とまで書かれているものもある。

結果的には「下手に動いて」はまってしまった。

到着してすぐにI2Cのチェックをする。ArduinoのスケッチでI2Cチェッカーというものがあるので、これを動かして認識するかどうかを確かめる。

2個中2個ともOK。第1段階クリア。

次に基本的動作を確認する。この方法は以下のサイトを参考にさせてもらった。Arduino-UNO、Nanoを使って簡単にできるので、不良品チェックには最適だ。

https://garchiving.com/current-voltage-measurement-with-arduino/

接続は以下のようにする。

上記サイトからコピー
Rは2kΩとした

スケッチはスケッチ例にある、getcurrentを使用。


結果は以下の写真の通りで、1個はBusVoltageがそれなりの値で出た。しかしShuntVoltageがおかしい。




ShuntVoltageが147.51mVとなっている。

この147.51という値は、Vin+が5Vでも0Vでも変わらない。

ちなみに14751は16進では399Fで、configレジスターの値である。(後のスケッチ参照)ShuntVoltageレジスタの値を読みだしたら、configレジスターの値が読みだされたということ。

(※Currentが0.00mAとなっているのは、サンプルスケッチをそのまま使ってしまったから。…後述)

もう1個はBusVoltageが出ない。


端子のはんだ付け不良も考えられるので、基板上のもう一方のVin+をテスターで当たってみたが、きちんと電圧が出ていたのでICを含めた基板内部の問題だろう。

後日正規品を購入して同じスケッチで動かした結果は以下の通り。


きちんとShuntVoltageが出ていて、Currentもそれなりの値になっていて、もちろんVin+の電圧を変えると値も変わる。

最初の例の現象は、プリント基盤とかICの取付の問題ではなく、INA219自体の不良であり、INA219のチェックをせずに(またはチェックをすり抜けたものを使って)組み立てをしたということになり、さらには組み立て後の製品をチェックしていない(またはチェックをすり抜けた)ということになる。

2個注文して2個とも不良だったことで、良品との交換処理ではなく、返品処理とした。(その後正規品を購入)


※注

サンプルスケッチは、そのままではキャリブレーションレジスタに何も入力されないので、Currentが0になる。スケッチ内のコメントにあるように、

//ina219.setCalibration_32V_1A();

または

//ina219.setCalibration_16V_400mA();

どちらかの//を外してやらないといけない。


なお参考にしたサイトには、以下のスケッチも載っていて、Adafruitのライブラリを使用しないため、余計な心配がいらなくなる。これも製品チェックにはいい。

#include <Wire.h>
int16_t BusVoltage, ShuntVoltage;

void setup() {
  Serial.begin(115200);
  Wire.begin();
  Wire.setClock(400000);

  int16_t config_value = 0x399F;           //デフォルト
  Wire.beginTransmission(0x40);            //デバイスアドレス
  Wire.write(0x00);                        //configアドレス
  Wire.write((config_value >> 8) & 0xFF);
  Wire.write(config_value & 0xFF);
  Wire.endTransmission();
}

void loop() {
  //Get BusVoltage
  Wire.beginTransmission(0x40);                 //デバイスアドレス
  Wire.write(0x02);                             //BusVoltageレジスタ
  Wire.endTransmission();
  Wire.requestFrom(0x40, 16);
  while (Wire.available() < 16);
  BusVoltage = Wire.read() << 8 | Wire.read();
  BusVoltage = (BusVoltage >> 3) * 4;

  //Get ShuntVoltage
  Wire.beginTransmission(0x40);                 //デバイスアドレス
  Wire.write(0x01);                             //ShuntVoltageレジスタ
  Wire.endTransmission();
  Wire.requestFrom(0x40, 16);
  while (Wire.available() < 16);
  ShuntVoltage = Wire.read() << 8 | Wire.read();

  Serial.print("BusVoltage");
  Serial.print(BusVoltage * 0.001);
  Serial.print("V");
  Serial.print("   ");
  Serial.print("ShuntVoltage");
  Serial.print(ShuntVoltage * 0.01);
  Serial.print("mV");
  Serial.println("   ");
}

INA219は電流電圧のモニターとして簡単に使えるので、Arduinoと組み合わせて、充電器や放電器の動作チェック、バッテリーの容量確認などに重宝しそうだ。今回内部のレジスタや動作についてデータシートをじっくり見ることになったので、かえって良かったかもしれない。

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円以下の安いもの。もっと高くても良ければ、スピードの早いものがあるので高速動作が期待できるが、残念ながらそのテストはしていない。

INA219にはまる

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