JH7UBCブログ

アマチュア無線 電子工作 家庭菜園など趣味のブログです

hpノート 15-af100のHDDをSSDに交換

2020-01-21 20:12:20 | パソコン

 普段使っているノートパソコン、HP 15-af100の調子が悪くなりました。

 症状としては、頻繁にクルクルマークが出てきて、動かなるというものです。

 HDDの健康状態をCrystalDiskInfoで調べてみると、下のように「注意」の状態。これはヤバイ。

 パソコンが、なんとか安定している状態のときにデータをバックアップして、治療にかかりました。

 治療方針は、HDDをSDDに交換するというものです。

 さっそく、Web上で情報を調べてみました。まず、hp 15-af100でHDDをSDDに交換可能かということを調べると、メーカーは保証していませんが、SDDへの交換とメモリの増設は可能です。(あくまでも自己責任で)

 それからもう一つの問題点、15-af100をどのようにして、分解するのか。これは、こちらのサイトを見て分かりました。

 15-af100のHDDは500GBですが、実際に使用しているのは、100GB程度です。そこで、Amazonから240GBのSDDを購入しました。

 値段は、4,000円程度。SSDの値段が下がって、HDDより安い感じです。

 HDDをSDDに交換する方法は、こちらのサイトが参考になります。

 まず、SSDをMBRでフォーマット。

 次に、クローンソフト、EaseUS Todo Backupで、HDDからSSDへのクローン・コピーを始めたのですが、HDDの損傷が大きかったのか、「残り時間計算中」のまま、1時間たっても進みません。

 これは、だめだ。あきらめて、HDDをSSDに交換して、リカバリを行うことにしました。

 上記のサイトを参考にして、パソコンの下部カバーをはずしました。ビスをはずして(ゴムの部分の下にもビスがあります)、下部と上部のプラスチックカバーの間に、へらのようなもの差し込んで、こじると、「パチッ、パチッ」と簡単にはずれます。(光学ドライブは、手で引き抜けます)

 写真のHDDは、ビス3本を外すと取り出せます。

 交換したら、元通りに取り付け金具を取り付けビスで固定し、元の状態にもどします。

 あとは普通のHDD交換のときと同じように、リカバリします。

 購入時に作成しておいた、リカバリディスク3枚を使ってリカバリしましたが、相変わらず、長ーーーい時間がかかりました。

 必要なソフトをインストールし直し、データを復活させ、なんとか元通り使える状態になりました。

 SSDの寿命は、3年から5年と言われています。でも、今回HDDが4年でダメになったことを考えると、しかたないですね。

 データは、クラウド保存でいくか、まめにバックアップをとるしかないですね。

 SSDに交換してからの15-af100の使い心地ですが、パソコンの立ち上がりが早くなり、また、アプリの立ち上がりも早くなりました。ただ、CPUが非力ですから、処理の遅さは変わりません。しかし、日本語変換などは、ずいぶんストレスが少なくなりました。

 これで、しばらく使ってみましょう。

 1月23日追記
 リカバリしたWindows10は、hp 15-af100購入当時(2015年冬)の状態に戻りました。このWindows10をUpdateしようとするとエラーが出て、Updateできません。
 いくつか、解決策を試しましたが、ダメ。
 そこで、MicrosoftのこWindows10のダウンロードサイトを利用して、最新の状態にUpdateしました。
 このアップデートツールを利用すると、Windows10のクリーンインストールもできますので、まっさらのSSDにWindows10をインストールすることもできます。
 考えると、最初からそうしたら良かったのかな。
 何はともあれ、めでたし、めでたし。

ESP32 DACのテスト

2020-01-15 08:53:27 | ESP32

 ESP32は、2つの8ビットDAC(デジタル・アナログ・コンバータ)を内蔵しています。DAC1とDAC2です。

 DAC1はGPIO25に、DAC2はGPIO26に接続されています。

 DACに出力する関数は、dacWrite(pin,value);で、pinはGPIO番号(25か26),valueは8ビットですから0~255です。

 まず、dacWrite(25,255);で出力した場合の出力電圧です。

dacWrite(25,127);の場合

dacWrite(25,0);の場合

次に、正弦波を作ってみます。スケッチです。

-------------------------------------------

/*
* ESP32 DAC sin wave generator
* 2020.01.14
* JH7UBC Keiji Hata
 */
 
float i = 0.0;
void setup() {
}
 
void loop() {
  dacWrite(25,128+128*sin(i));
  i += 0.1;
  if(i >= 6.28){
    i = 0;
  }
}

-------------------------------------------

ADCから出力された波形です。

 ギザギザになりますが、まずまずの正弦波です。

 周波数は、974Hzでした。


ESP32 ADCのテスト

2020-01-14 09:11:54 | ESP32

 ESP32のADC(アナログ・デジタル・コンバータ)のテストをします。

 ESP32のADCについては、ESPRESSIFのESP-IDF Programming Guide および スイッチサイエンスのESP-WROOM-32に関するTIPSが参考になります。

 ESP32には、12ビットのADCが2つ内蔵されています。(ADC1とADC2)

 ADC1は、GPIO32-39の8チャンネルに使用され、ADC2は、GPIO 0, 2, 4, 12 - 15 及び 25 - 27の10チャンネルに使用されます。

 ただし、ADC2は、WiFiドライバで使用されるため、WiFiドライバで使用していない時のみ使用できます。

 ADC入力と各GPIOの番号は次のようになっています。

------------------------------

ADC_No  GPIO

ADC0      36

ADC3      39

ADC4      32

ADC5      33

ADC6      34

ADC7      35

ADC10     4

ADC11     0

ADC12     2

ADC13    15

ADC14    13

ADC15    12

ADC16    14

ADC17    27

ADC18    25

ADC19    26

---------------------------

 ESP32-DevKitCでADC入力テストを行い、上記のGPIOでADCが動作することを確認しました。

 ただし、GPIO 0,2,15については、他の機能に使われることがあります。

 ESP32のADCは、0~1Vを0~4095の値に変換します。

 入力ピンとADCの間には、アッテネータが入っていて、その減衰率を設定できます。デフォルトでは、減衰率が11dBに設定されています。

 11dBの場合、0~3.6Vを0~4095に変換することになります。

 デフォルトの状態で、実際にADCを動かし見ると3.28Vの時4095に変換しました。

 setup()でanalogSetAttenation(ADC_0dB);として、アッテネータの減衰率を0dB(減衰なし)に設定すると

 1.04Vで4095に変換しました。

 試しに、減衰率を6dBに設定した場合は、1.89Vで4095に変換しました。

 AD変換直線性と誤差を見るために0.2V刻みで変換値を測定してみました。(アッテネータはデフォルトの11dBです)

 ADCの変換値の1桁目はノイズのため、ばらつきます。また、0V付近と最大値付近長が大きくなりますが、精度を求めなければ、使えそうです。

 参考までに、ADCのテストに使ったスケッチです。表示用に2.2インチTFTを使っています。

(上の画面では、ADC0と表示していますが、その後下のスケッチのようにGPIOピン番号に変更しました)

----------------------------------------------------

/*
 * ESP32 ADC test
 * 2020.01.13
 * JH7UBC Keiji Hata
 */
 
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ILI9341.h>

#define TFT_DC 17
#define TFT_CS 5
#define TFT_RST 16

Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST);
 
int p = 36; //GPIOの番号
 
void setup() {
  tft.begin();
  tft.setRotation(3);
  tft.fillScreen(ILI9341_BLACK);
  tft.setTextColor(ILI9341_CYAN);
  tft.setTextSize(3);
  tft.setCursor(50, 50);
  tft.print("PIN");
}
 
void pinDisp(int pin_No){
  tft.fillRect(110,50,50,30,ILI9341_BLACK);
  tft.setTextColor(ILI9341_CYAN);
  tft.setTextSize(3);
  tft.setCursor(110, 50);
  tft.print(pin_No);
}
 
void ADC(int pin_No){
  int val = analogRead(pin_No);
  tft.fillRect(50,100,120,50,ILI9341_BLACK);
  tft.setTextColor(ILI9341_WHITE);
  tft.setTextSize(5);
  tft.setCursor(50, 100);
  tft.print(val);
}
 
void loop() {
  pinDisp(p);
  ADC(p);
  delay(500);
}








ESP32 2.2インチTFT Ucglib表示テスト

2020-01-13 11:37:46 | ESP32

 前の記事で、ESP32に2.2インチTFTを接続して、Adafruitのライブラリで表示テストを行いましたが、フォントが荒っぽくちょっと気に入りません。

 そこで、STM32で利用したUcglibを使ってみることにしました。ESP32 DevKitCとTFTの接続は、前の記事と同じです。

 まず、UcglibサイトからUcglibをダウンロードして、Arduino IDEに追加します。

 Ucglibでは、様々なスタイル大きさのフォントを使うことができます。フォントの見本は、Ucglibフォルダの中のextrasフォルダの中にあるfontsize.pdfで見ることができます。また、Ucglibの使い方は、同じフォルダ内のreference.pdfに記載されています。

 簡単なスケッチで表示テストをしました。スケッチです。

---------------------------------------------------

/*
 * ESP32 ILI9341TFT  Ucglib test
 * 2020.1.12
 * JH7UBC Keiji Hata
 */
#include <Ucglib.h>
#include <SPI.h>
 
#define __CS 5
#define __DC 17
#define __RST 16
 
Ucglib_ILI9341_18x240x320_HWSPI ucg(__DC, __CS, __RST);
 
void setup() {
  ucg.begin(UCG_FONT_MODE_TRANSPARENT);
  ucg.clearScreen();
  ucg.setRotate270();
  ucg.setFont(ucg_font_ncenB14_tr);
  ucg.setColor(255, 255, 255);
  ucg.setPrintPos(50,50);
  ucg.print("Hello World!");
  ucg.setColor(255, 0, 0);
  ucg.setPrintPos(50,75);
  ucg.print("ESP32 + ILI9341TFT");
}
 
void loop() {
}

----------------------------------------------------

なめらかなフォントで表示されました。

 Ucglibは、表示が少し遅いような気もします。Adafruitのlibとケースバイケースで使い分けていきたいと思います。


ESP32 2.2インチTFT表示テスト

2020-01-12 10:06:59 | ESP32

 ESP32でTFTディスプレイの表示テストをします。

 マイコンで利用されるTFTディスプレイには、2.2インチ,2.4インチ,2.8インチ,3.2インチなどがあり、240×320ドットでSPIインターフェースで制御され、コントローラーにはILI9341が使われています。

 今回は、手持ちの2.2"のTFTを使います。Qiitaのこの記事などを参考にしてテストしました。

 ESP32 DevKitCとTFTの接続は次のようにします。

ESP32                       TFT

3V3   ------------------ Vcc

GND  ------------------ GND

GPIO5(VSPI SS) ------ CS

GPIO16 ---------------- RESET

GPIO17 ---------------- DC/RS

GPIO23(VSPI MOSI) -- SDA(MOSI)

GPIO18(VSPI SCK) ---- SCK

3V3 --------------------- LED

GPIO19(VSPI MISO) --- DO(MISO)  これは接続しなくとも動作します。

接続回路図です。

GitHubからAdafruit_ILI9341Adafruit_GFXライブラリをダウンロードして、Arduino IDEライブラリに登録します。

Adafruit_ILI9341のexamplesの中のgraphicstest.inoの一部を次のように書き換えてコンパイル書き込みします。

#define TFT_RST 16
#define TFT_DC 17
#define TFT_CS 5

// Use hardware SPI (on Uno, #13, #12, #11) and the above for CS/DC
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC,TFT_RST);

 グラフィックスのデモが表示され、最後に上の画面が表示され、90°ずつ回転します。 

 「Hello World!」と簡単なグラフィックスのスケッチを作りTFTに表示してみます。

------------------------------------------

/*
 * ESP32 ILI8341を使った2.2inch TFTディスプレイ表示テスト
 * 2020.1.10
 * JH7UBC Keiji Hata
 */
 
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ILI9341.h>

#define TFT_DC 17
#define TFT_CS 5
#define TFT_RST 16

Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST);

void setup() {
  tft.begin();
  tft.setRotation(3);
  tft.fillScreen(ILI9341_BLUE);
  tft.setCursor(50, 50);
  tft.setTextColor(ILI9341_YELLOW);
  tft.setTextSize(3);
  tft.println("Hello World!");
  tft.drawRoundRect(40,40,225,40, 5,ILI9341_WHITE);
  tft.fillCircle(100,150,50,ILI9341_RED);
  tft.fillRect(170,100,100,100,ILI9341_GREEN);
}

void loop() {
}
------------------------------------------------------
表示結果です。
 
 
 グラフィック表示は、前の記事NOKIA5110の表示に使用したのと同じAdafruit_GFX.hライブラリを使っていますので、基本的な記述の仕方は同じです。
 ただし、TFTではカラー表示ができますので、色指定は、ILI9341_WHITE,ILI9341_BLACK,ILI9341_RED,ILI9341_GREEN,ILI9341_BLUEなどと記述します。
 TFTディスプレイは、非常に色あざやかで視認性も良いです。
 まずは、うまく表示されて良かったのですが、Adafruitのフォントは荒っぽく、もう少しなめらかなフォントがほしいところです。