2022/02/27

SSD不具合 パソコン修理中

2017年の夏ぐらいから使ってた1 TBのSSDが不具合を起こしました😰

1年ほど前から急にシステムが固まることがあり(イベントログに残らない)、システムファイルがおかしい気がしていたのですが、とどめを刺してしまいました。何度かブートさせるうちに起動するようになり、HDDをつないでコピーするも、途中でブルースクリーンといった具合です。

回復ディスクも作成途中でエラーとなりました。
USBメモリーにWindows 10のイメージファイルを作成する方法を試して、新しいSSDにクリーンインストールができました。ここまで3日。

 

古いSSDをつないでデータをコピーするも、50ファイルぐらいが動きませんでした。
どこかにバックアップがあるといいが。

これを機会に、買い取り版のOfficeから365にしたので、これからはOneDriveでバックアップします。本当に必要ファイルはBD-Rにしてましたが、ほかにもバックアップしないといけないのがたくさんありました。

あと、PhotoshopとPremireを復活させるのに苦労してます。
この二つ、まだDELLのDell Digital Delivery (DDD)からダウンロードの権限があるのに、DDDの画面に表示されません。サポートに電話したら、親切に教えてくれて、以下のアドバイス。

  • あまり最維新版のDDDを使用しないこと(買った当時に近いバージョンの使用を推奨)
    → いまのところ、いろいろ試したが、改善されず
  • 24時間様子を見てください
    → これに期待
ネットで探すと、同じように悩んだ方が多くいらっしゃるようです。

はてはて、復旧までしばしかかりそうです。

2022/02/20

移動用 折り畳み式 円偏波アンテナ 製作中2

ラジエターエレメントに接続する給電線の準備をしました。

以前作った自宅の円偏波アンテナには、給電線にシュペルトップを採用しました。
多少なりともケーブルにコモンモード電流が流れるので、それを阻止するために付けました。

アンテナの調整がスムーズでしたので今回も採用しました。


シュペルトップの短縮率は前回測定してたので、残していたメモ通りに作成。
同軸自体の短縮率じゃなくて、編線とスリーブの間で実測。

左が無線機側、右がアンテナ側。

最後にビニテを巻いて完成。

次は、これをラジエターに取り付けるところからです。

ISSの月面通過を撮ってみた

2022/1/5に気づいたのですが、1/11に近所でISSの月面通過が観測できることがわかりました。

2年ほど前から、「ISS月面通過予測」というアンドロイドのアプリを2週間ごとに見ていて、ようやく良さそうな条件に巡り合えました。

  • 時間 - あんまり遅い時間は大変
  • 月の高さ - 仰角が低いと、自分とISSの距離が長くなって小さく写る
  • 月の満ち欠け - 新月だと見えないし、欲を言えばあまり欠けてない方がいい

ただでさえ、月とISSと地球上の自分の位置が重なるタイミングは少ないのに、これらの条件を加味するとなかなか撮影の機会はありません。(車で数100 km移動する覚悟があればそうでもないようです。)

2022/1/5時点の予測結果


無線でISSと通信しててよく気づくのですが、ISSの軌道はよく変動しています。原因はわかりませんが、ドッキングとかデブリ回避の影響なんだと思います。この1/5の時点の予測も少しずれるんだろうと思ってアプリを毎日見ていたら、うれしいことに軌道要素が当日(1/11)の昼間に更新されて、より正確な位置がわかりました。

2022/1/11時点の予測


しかし、この日の一週間近く前から天気予報は雨を告げていました。当日、朝からSCWで天気予報を見ていると、寒冷前線が通過することに気づいた。天気予報では雨だが、晴れる可能性がある!

18:30 運よく仕事を定時過ぎで切り上げて、望遠鏡などを積み込む。この時、空が見えていた。
19:00 自宅出発。途端に大雨。現地までは40分ぐらいで行ける。
19:50 ロケハンしながら現地に到着。大雨。SCW、リアルタイムレーダー、ナウキャストを駆使して雨が止むのを信じる。
20:14 イベントまで39分。雲が切れて、北極星が見えた。寒冷前線が抜けたようだ。セットアップ開始。月が雲から現れた。
20:40 ザクっと極軸合わせ、STAR BOOK TENで恒星を2点だけアライメントして追尾開始。



20:50:30 動画撮影開始
20:53:09 直焦点撮影しているデジカメの液晶で月面を何かが通過したのが見えた!コバエが飛んだのかと思うぐらい。すぐさま録画を停止してコマ送りで確認。間違いない。

この時には空はくっきり晴れ、気温がぐんと下がり、強風でした。
興奮状態で帰宅後、家族が寝てから動画の切り出しとコンポジットを行いました。

動画


コンポジット画像 (1/60秒間隔 29枚 比較暗合成)


見かけ上の月一つ分の大きさを約0.7秒で通り過ぎました。
また機会があればチャレンジしてみたいと思います。

撮影データ

  • D750 動画モード 1920x1080 60p
  • シャッタースピード 1/1000秒
  • ISO 3200
  • C8鏡筒 f = 2000 mm F8
  • 赤道儀 SXD2

2022/02/19

移動用 折り畳み式 円偏波アンテナ 製作中1

サテライト移動運用で使用する高ゲインの円偏波アンテナを作っています。

RS-44の地表スレスレ遠距離通信で使用予定です。
435 MHz用 15エレ x 2、ブーム長 2.2 m

立体形状で持ち運びに苦労しそうなので、以前から温めていたアイデアが成り立つか、形にしてみました。

15 mmの角材に、4 mmと6 mm幅の溝を切りました。

Ra以外のエレメントは4 mmの園芸用アルミ針金。
あらかじめドリルチャックに加えてねじりを入れてあります。固くなります。
ボンドスーパーXで固定しています。輪ゴムで仮止め。

蝶番を使用しています。こんな感じで変身して、車に積み込めます。
Raエレメントは、4 mmの銅パイプと、3 mmの真鍮棒です。


次は、給電線の加工です。

G-5500DCコントローラーを作ってみた

G-5500DCを便利に使うべく、インターフェースボックスを作りました。

できること

  • 角度のデジタル表示
  • AZ/ELのプリセット動作
  • PCからのコントロール (SatPC32)

今までは、リグだけはPC任せで、ペン、パドル、EL、AZの操作をしてましたが、
手放し/目線を反らさずSat通信ができるようになりました😃

動画をTwitterに投稿したところ・・・、


回路図/ソフトを希望されている方から返信をいただきました。


趣味が仕事になると楽しくなくなるので、無料で公開します。
ハードを作って、Arduino IDEでソースを書き込んでもらえば動きます。

  • シリアル通信はPC→本機の方向の通信のみで、PCへのデータ送信はありません。
  • 必要に応じてソースの改造をしてみてください。
  • ハード故障や事故には対応しません。自己責任でお願いします。

中身 (ケースはYM-150)


回路図


ソース (Arduino IDEにコピペして書き込んでください。)

//
//  G-5500DC controller V1.1 - (c) JM2FCJ 2022
//  1.0 -> 1.1
//  シリアル実装
//

#include <Wire.h>
#define OLED_ADRS 0x3C

// OLED command
int DisplayON = 0x0F;
int ClearDisplay = 0x01;
int ReturnHome = 0x02;
int CursoleOff = 0x0C;

// DIO
int s4Pin = 5;      // 黒スイッチ:   no assign
int s2Pin = 3;      // 白1スイッチ:  Flip Mode
int s3Pin = 4;      // 白2スイッチ:  Remote Mode
int s1Pin = 2;      // 赤スイッチ:   ALL STOP
int s5Pin = 6;      // Presetスイッチ
int s5LEDPin = 7;   // PresetスイッチのLED
int ELDownPin = 8;  // G-5500DC EL down
int ELUpPin = 9;    // G-5500DC EL up
int AZCCWPin = 10;  // G-5500DC AZ CCW
int AZCWPin = 11;   // G-5500DC AZ CW

// ADC
int ELVRPin = 0;    // ADC EL VR
int AZVRPin = 1;    // ACD AZ VR
int ELPOSPin = 2;   // ADC G-5500DC EL
int AZPOSPin = 3;   // ADC G-5500DC AZ

int ELVR = 0;
int AZVR = 0;
int ELPOS = 0;
int AZPOS = 0;

int SerTargetEL = 0;
int SerTargetAZ = 0;

int FlipMode = 0;
int RemoteMode = 0;
int PresetMode = 0;
char* GotoEL = "   ";
char* GotoAZ = "   ";

char L1[20] = "";   // OLED 1行目
char L2[20] = "";   // OLED 2行目


void setup() {
  pinMode(s1Pin, INPUT);
  pinMode(s2Pin, INPUT);
  pinMode(s3Pin, INPUT);
  pinMode(s4Pin, INPUT);
  pinMode(s5Pin, INPUT);
  pinMode(s5LEDPin, OUTPUT);
  pinMode(ELDownPin, OUTPUT);
  pinMode(ELUpPin, OUTPUT);
  pinMode(AZCCWPin, OUTPUT);
  pinMode(AZCWPin, OUTPUT);

  Wire.begin();   // I2C init
  init_oled();

  Serial.begin(9600);
  Serial.setTimeout(100);

  attachInterrupt(0, allstop, FALLING);
}


void loop() {
  char SerAZ[3];
  char SerEL[3];
  
  ELVR = analogRead(ELVRPin) * 180.0 / 1023.0;
  AZVR = analogRead(AZVRPin) * 450.0 / 1023.0;
  ELPOS = (analogRead(ELPOSPin) - 27) * 180.0 / 890.0;
  AZPOS = (analogRead(AZPOSPin) - 13) * 450.0 / 907.0;

  delay(100);

  if(RemoteMode == 1){
    PresetMode = 0;
    digitalWrite(s5LEDPin, LOW);
    
    FlipMode = 0;
    
    if(Serial.findUntil("W", "W")){
      delay(10);
      SerAZ[0] = Serial.read();
      delay(1);
      SerAZ[1] = Serial.read();
      delay(1);
      SerAZ[2] = Serial.read();
      delay(1);
      SerEL[0] = Serial.read(); // スペースを読み飛ばすため必要
      delay(1);
      SerEL[0] = Serial.read();
      delay(1);
      SerEL[1] = Serial.read();
      delay(1);
      SerEL[2] = Serial.read();

      if(SerAZ[0] != 0){
        SerTargetAZ = (SerAZ[0]-48) * 100 + (SerAZ[1]-48) * 10 + (SerAZ[2]-48) * 1;
        SerTargetEL = (SerEL[0]-48) * 100 + (SerEL[1]-48) * 10 + (SerEL[2]-48) * 1;
      }
      else{
        SerTargetAZ = 0;
        SerTargetEL = 0;
      }

      sprintf(L1, "ELr %3d  AZr %3d ", SerTargetEL, SerTargetAZ);
      writeCommand(0x80);
      for(int i=0; i<20; i++){
        writeData(L1[i]);
      }
    }
  }
  
  if(digitalRead(s2Pin) == LOW){
    delay(50);
    if(FlipMode == 0){
      FlipMode = 1;
    }
    else{
      FlipMode = 0;
    }
  }

  if(digitalRead(s3Pin) == LOW){
    delay(50);
    if(RemoteMode == 0){
      RemoteMode = 1;

      SerTargetEL = ELPOS;
      SerTargetAZ = AZPOS;
      
      sprintf(L1, "Waiting for Data ");
      writeCommand(0x80);
      for(int i=0; i<20; i++){
        writeData(L1[i]);
      }
    }
    else{
      RemoteMode = 0;
    }
  }

  if(digitalRead(s5Pin) == LOW){
    delay(50);    // 1回押しなら、PresetMode1 角度があってもPresetを継続
    if(PresetMode == 0){
      RemoteMode = 0;
      PresetMode = 1;
      digitalWrite(s5LEDPin, HIGH);
    }
    else{
      RemoteMode = 0;
      PresetMode = 0;
      digitalWrite(s5LEDPin, LOW);
    }
    delay(1000);    // 長押しなら、PresetMode2にする 角度があったらPreset終了
    if(digitalRead(s5Pin) == LOW){
      RemoteMode = 0;
      PresetMode = 2;
      digitalWrite(s5LEDPin, HIGH);
      delay(100);
      digitalWrite(s5LEDPin, LOW);
      delay(100);
      digitalWrite(s5LEDPin, HIGH);
      delay(100);
      digitalWrite(s5LEDPin, LOW);
      delay(100);
      digitalWrite(s5LEDPin, HIGH);
      delay(100);
      digitalWrite(s5LEDPin, LOW);
      delay(100);
      digitalWrite(s5LEDPin, HIGH);
    }
  }

  if((PresetMode == 1) || (PresetMode == 2)){
    if((ELVR - ELPOS) > 0){
      digitalWrite(ELDownPin, LOW);
      digitalWrite(ELUpPin, HIGH);
      GotoEL = "Up ";
    }
    else if((ELVR - ELPOS) < 0){
      digitalWrite(ELUpPin, LOW);
      digitalWrite(ELDownPin, HIGH);
      GotoEL = "Dwn";
    }
    else{
      digitalWrite(ELUpPin, LOW);
      digitalWrite(ELDownPin, LOW);
      GotoEL = "   ";
      if(PresetMode == 2){
        if(((AZVR - AZPOS) > 1 ) || ((AZVR - AZPOS) < -1 )){    // AZがまだあっていないときはPreset継続
          ;
        }
        else{   // AZがあっていたらPresetを抜ける
          PresetMode = 0;
          digitalWrite(s5LEDPin, LOW);
        }
      }
    }
    
    if((AZVR - AZPOS) > 1){
      digitalWrite(AZCCWPin, LOW);
      digitalWrite(AZCWPin, HIGH);
      GotoAZ = "CW ";
    }
    else if((AZVR - AZPOS) < -1){
      digitalWrite(AZCWPin, LOW);
      digitalWrite(AZCCWPin, HIGH);
      GotoAZ = "CCW";
    }
    else{
      digitalWrite(AZCWPin, LOW);
      digitalWrite(AZCCWPin, LOW);
      GotoAZ = "   ";
      if(PresetMode == 2){
        if(((ELVR - ELPOS) > 0 ) || ((ELVR - ELPOS) < 0 )){   // ELがまだあっていないときはPreset継続
          ;
        }
        else{   // ELがあっていたらPresetを抜ける
          PresetMode = 0;
          digitalWrite(s5LEDPin, LOW);
        }
      }
    }
  }
  else if(RemoteMode == 1){
    if((SerTargetEL - ELPOS) > 0){
      digitalWrite(ELDownPin, LOW);
      digitalWrite(ELUpPin, HIGH);
      GotoEL = "Up ";
    }
    else if((SerTargetEL - ELPOS) < 0){
      digitalWrite(ELUpPin, LOW);
      digitalWrite(ELDownPin, HIGH);
      GotoEL = "Dwn";
    }
    else{
      digitalWrite(ELUpPin, LOW);
      digitalWrite(ELDownPin, LOW);
      GotoEL = "   ";
    }
    
    if((SerTargetAZ - AZPOS) > 1){
      digitalWrite(AZCCWPin, LOW);
      digitalWrite(AZCWPin, HIGH);
      GotoAZ = "CW ";
    }
    else if((SerTargetAZ - AZPOS) < -1){
      digitalWrite(AZCWPin, LOW);
      digitalWrite(AZCCWPin, HIGH);
      GotoAZ = "CCW";
    }
    else{
      digitalWrite(AZCWPin, LOW);
      digitalWrite(AZCCWPin, LOW);
      GotoAZ = "   ";
    }
  }
  else{
    digitalWrite(ELDownPin, LOW);
    digitalWrite(ELUpPin, LOW);
    digitalWrite(AZCCWPin, LOW);
    digitalWrite(AZCWPin, LOW);
    GotoEL = "   ";
    GotoAZ = "   ";
  }

  if(FlipMode == 0){
    sprintf(L1, "EL  %3d  AZ  %3d ", ELVR, AZVR);
    if((ELPOS < -3) && (AZPOS < -3)){
      sprintf(L2, "Rotor - offline  ");
      RemoteMode = 0;
    }
    else{
      sprintf(L2, "%s %3d  %s %3d ", GotoEL, ELPOS, GotoAZ, AZPOS);
    }
  }
  else{
    if(AZPOS < 180){
      AZPOS = AZPOS + 180;
    }
    else{
      AZPOS = AZPOS - 180;
    }
    
    if(AZVR < 180){
      AZVR = AZVR + 180;
    }
    else{
      AZVR = AZVR - 180;
    }
    
    sprintf(L1, "EL* %3d  AZ* %3d ", -(ELVR - 180), AZVR);
    if(((ELPOS - 180) < -3) && ((AZPOS - 180) < -3)){
      sprintf(L2, "Rotor - offline  ");
    }
    else{
      sprintf(L2, "%s %3d  %s %3d ", GotoEL, -(ELPOS -180), GotoAZ, AZPOS);
    }
  }

  if(RemoteMode == 0){
    writeCommand(0x80);
    for(int i=0; i<20; i++){
      writeData(L1[i]);
    }
  }

  writeCommand(0x20+0x80);
  for(int i=0; i<20; i++){
    writeData(L2[i]);
  }

  contrast_max();
}


void allstop(){
  RemoteMode = 0;
  PresetMode = 0;
  FlipMode = 0;
  
  digitalWrite(s5LEDPin, LOW);
  
  digitalWrite(ELDownPin, LOW);
  digitalWrite(ELUpPin, LOW);
  digitalWrite(AZCCWPin, LOW);
  digitalWrite(AZCWPin, LOW);
}


void writeData(byte t_data)
{
  Wire.beginTransmission(OLED_ADRS);
  Wire.write(0x40);
  Wire.write(t_data);
  Wire.endTransmission();
  delay(1);
}


void writeCommand(byte t_command)
{
  Wire.beginTransmission(OLED_ADRS);
  Wire.write(0x00);
  Wire.write(t_command);
  Wire.endTransmission();
  delay(1);
}


void contrast_max()
{
  writeCommand(0x2a);
  writeCommand(0x79);
  writeCommand(0x81);
  writeCommand(0xFF);
  writeCommand(0x78);
  writeCommand(0x28);
  delay(1);
}


void init_oled()
{
  delay(100);
  writeCommand(ClearDisplay);
  delay(20);
  writeCommand(ReturnHome);
  delay(20);
  writeCommand(DisplayON);
  delay(20);
  writeCommand(ClearDisplay);
  delay(20);
  writeCommand(CursoleOff);
  delay(20);
}  

KASHIWA 受信報告 その2

PM84il のヒト: KASHIWA 受信報告  の続き。 今日から秋祭りの準備🤣で出かけてて、ひとつ前のパスは逃しました。 JE3HCZさんがTLMをSatNOGSに送り込むことができたというXの投稿を見て、12時前のパスで受信してみました。 まず、AOSからいきなりS9の...