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にコピペして書き込んでください。)

  1. //
  2. // G-5500DC controller V1.1 - (c) JM2FCJ 2022
  3. // 1.0 -> 1.1
  4. // シリアル実装
  5. //
  6.  
  7. #include <Wire.h>
  8. #define OLED_ADRS 0x3C
  9.  
  10. // OLED command
  11. int DisplayON = 0x0F;
  12. int ClearDisplay = 0x01;
  13. int ReturnHome = 0x02;
  14. int CursoleOff = 0x0C;
  15.  
  16. // DIO
  17. int s4Pin = 5; // 黒スイッチ: no assign
  18. int s2Pin = 3; // 白1スイッチ: Flip Mode
  19. int s3Pin = 4; // 白2スイッチ: Remote Mode
  20. int s1Pin = 2; // 赤スイッチ: ALL STOP
  21. int s5Pin = 6; // Presetスイッチ
  22. int s5LEDPin = 7; // PresetスイッチのLED
  23. int ELDownPin = 8; // G-5500DC EL down
  24. int ELUpPin = 9; // G-5500DC EL up
  25. int AZCCWPin = 10; // G-5500DC AZ CCW
  26. int AZCWPin = 11; // G-5500DC AZ CW
  27.  
  28. // ADC
  29. int ELVRPin = 0; // ADC EL VR
  30. int AZVRPin = 1; // ACD AZ VR
  31. int ELPOSPin = 2; // ADC G-5500DC EL
  32. int AZPOSPin = 3; // ADC G-5500DC AZ
  33.  
  34. int ELVR = 0;
  35. int AZVR = 0;
  36. int ELPOS = 0;
  37. int AZPOS = 0;
  38.  
  39. int SerTargetEL = 0;
  40. int SerTargetAZ = 0;
  41.  
  42. int FlipMode = 0;
  43. int RemoteMode = 0;
  44. int PresetMode = 0;
  45. char* GotoEL = " ";
  46. char* GotoAZ = " ";
  47.  
  48. char L1[20] = ""; // OLED 1行目
  49. char L2[20] = ""; // OLED 2行目
  50.  
  51.  
  52. void setup() {
  53. pinMode(s1Pin, INPUT);
  54. pinMode(s2Pin, INPUT);
  55. pinMode(s3Pin, INPUT);
  56. pinMode(s4Pin, INPUT);
  57. pinMode(s5Pin, INPUT);
  58. pinMode(s5LEDPin, OUTPUT);
  59. pinMode(ELDownPin, OUTPUT);
  60. pinMode(ELUpPin, OUTPUT);
  61. pinMode(AZCCWPin, OUTPUT);
  62. pinMode(AZCWPin, OUTPUT);
  63.  
  64. Wire.begin(); // I2C init
  65. init_oled();
  66.  
  67. Serial.begin(9600);
  68. Serial.setTimeout(100);
  69.  
  70. attachInterrupt(0, allstop, FALLING);
  71. }
  72.  
  73.  
  74. void loop() {
  75. char SerAZ[3];
  76. char SerEL[3];
  77. ELVR = analogRead(ELVRPin) * 180.0 / 1023.0;
  78. AZVR = analogRead(AZVRPin) * 450.0 / 1023.0;
  79. ELPOS = (analogRead(ELPOSPin) - 27) * 180.0 / 890.0;
  80. AZPOS = (analogRead(AZPOSPin) - 13) * 450.0 / 907.0;
  81.  
  82. delay(100);
  83.  
  84. if(RemoteMode == 1){
  85. PresetMode = 0;
  86. digitalWrite(s5LEDPin, LOW);
  87. FlipMode = 0;
  88. if(Serial.findUntil("W", "W")){
  89. delay(10);
  90. SerAZ[0] = Serial.read();
  91. delay(1);
  92. SerAZ[1] = Serial.read();
  93. delay(1);
  94. SerAZ[2] = Serial.read();
  95. delay(1);
  96. SerEL[0] = Serial.read(); // スペースを読み飛ばすため必要
  97. delay(1);
  98. SerEL[0] = Serial.read();
  99. delay(1);
  100. SerEL[1] = Serial.read();
  101. delay(1);
  102. SerEL[2] = Serial.read();
  103.  
  104. if(SerAZ[0] != 0){
  105. SerTargetAZ = (SerAZ[0]-48) * 100 + (SerAZ[1]-48) * 10 + (SerAZ[2]-48) * 1;
  106. SerTargetEL = (SerEL[0]-48) * 100 + (SerEL[1]-48) * 10 + (SerEL[2]-48) * 1;
  107. }
  108. else{
  109. SerTargetAZ = 0;
  110. SerTargetEL = 0;
  111. }
  112.  
  113. sprintf(L1, "ELr %3d AZr %3d ", SerTargetEL, SerTargetAZ);
  114. writeCommand(0x80);
  115. for(int i=0; i<20; i++){
  116. writeData(L1[i]);
  117. }
  118. }
  119. }
  120. if(digitalRead(s2Pin) == LOW){
  121. delay(50);
  122. if(FlipMode == 0){
  123. FlipMode = 1;
  124. }
  125. else{
  126. FlipMode = 0;
  127. }
  128. }
  129.  
  130. if(digitalRead(s3Pin) == LOW){
  131. delay(50);
  132. if(RemoteMode == 0){
  133. RemoteMode = 1;
  134.  
  135. SerTargetEL = ELPOS;
  136. SerTargetAZ = AZPOS;
  137. sprintf(L1, "Waiting for Data ");
  138. writeCommand(0x80);
  139. for(int i=0; i<20; i++){
  140. writeData(L1[i]);
  141. }
  142. }
  143. else{
  144. RemoteMode = 0;
  145. }
  146. }
  147.  
  148. if(digitalRead(s5Pin) == LOW){
  149. delay(50); // 1回押しなら、PresetMode1 角度があってもPresetを継続
  150. if(PresetMode == 0){
  151. RemoteMode = 0;
  152. PresetMode = 1;
  153. digitalWrite(s5LEDPin, HIGH);
  154. }
  155. else{
  156. RemoteMode = 0;
  157. PresetMode = 0;
  158. digitalWrite(s5LEDPin, LOW);
  159. }
  160. delay(1000); // 長押しなら、PresetMode2にする 角度があったらPreset終了
  161. if(digitalRead(s5Pin) == LOW){
  162. RemoteMode = 0;
  163. PresetMode = 2;
  164. digitalWrite(s5LEDPin, HIGH);
  165. delay(100);
  166. digitalWrite(s5LEDPin, LOW);
  167. delay(100);
  168. digitalWrite(s5LEDPin, HIGH);
  169. delay(100);
  170. digitalWrite(s5LEDPin, LOW);
  171. delay(100);
  172. digitalWrite(s5LEDPin, HIGH);
  173. delay(100);
  174. digitalWrite(s5LEDPin, LOW);
  175. delay(100);
  176. digitalWrite(s5LEDPin, HIGH);
  177. }
  178. }
  179.  
  180. if((PresetMode == 1) || (PresetMode == 2)){
  181. if((ELVR - ELPOS) > 0){
  182. digitalWrite(ELDownPin, LOW);
  183. digitalWrite(ELUpPin, HIGH);
  184. GotoEL = "Up ";
  185. }
  186. else if((ELVR - ELPOS) < 0){
  187. digitalWrite(ELUpPin, LOW);
  188. digitalWrite(ELDownPin, HIGH);
  189. GotoEL = "Dwn";
  190. }
  191. else{
  192. digitalWrite(ELUpPin, LOW);
  193. digitalWrite(ELDownPin, LOW);
  194. GotoEL = " ";
  195. if(PresetMode == 2){
  196. if(((AZVR - AZPOS) > 1 ) || ((AZVR - AZPOS) < -1 )){ // AZがまだあっていないときはPreset継続
  197. ;
  198. }
  199. else{ // AZがあっていたらPresetを抜ける
  200. PresetMode = 0;
  201. digitalWrite(s5LEDPin, LOW);
  202. }
  203. }
  204. }
  205. if((AZVR - AZPOS) > 1){
  206. digitalWrite(AZCCWPin, LOW);
  207. digitalWrite(AZCWPin, HIGH);
  208. GotoAZ = "CW ";
  209. }
  210. else if((AZVR - AZPOS) < -1){
  211. digitalWrite(AZCWPin, LOW);
  212. digitalWrite(AZCCWPin, HIGH);
  213. GotoAZ = "CCW";
  214. }
  215. else{
  216. digitalWrite(AZCWPin, LOW);
  217. digitalWrite(AZCCWPin, LOW);
  218. GotoAZ = " ";
  219. if(PresetMode == 2){
  220. if(((ELVR - ELPOS) > 0 ) || ((ELVR - ELPOS) < 0 )){ // ELがまだあっていないときはPreset継続
  221. ;
  222. }
  223. else{ // ELがあっていたらPresetを抜ける
  224. PresetMode = 0;
  225. digitalWrite(s5LEDPin, LOW);
  226. }
  227. }
  228. }
  229. }
  230. else if(RemoteMode == 1){
  231. if((SerTargetEL - ELPOS) > 0){
  232. digitalWrite(ELDownPin, LOW);
  233. digitalWrite(ELUpPin, HIGH);
  234. GotoEL = "Up ";
  235. }
  236. else if((SerTargetEL - ELPOS) < 0){
  237. digitalWrite(ELUpPin, LOW);
  238. digitalWrite(ELDownPin, HIGH);
  239. GotoEL = "Dwn";
  240. }
  241. else{
  242. digitalWrite(ELUpPin, LOW);
  243. digitalWrite(ELDownPin, LOW);
  244. GotoEL = " ";
  245. }
  246. if((SerTargetAZ - AZPOS) > 1){
  247. digitalWrite(AZCCWPin, LOW);
  248. digitalWrite(AZCWPin, HIGH);
  249. GotoAZ = "CW ";
  250. }
  251. else if((SerTargetAZ - AZPOS) < -1){
  252. digitalWrite(AZCWPin, LOW);
  253. digitalWrite(AZCCWPin, HIGH);
  254. GotoAZ = "CCW";
  255. }
  256. else{
  257. digitalWrite(AZCWPin, LOW);
  258. digitalWrite(AZCCWPin, LOW);
  259. GotoAZ = " ";
  260. }
  261. }
  262. else{
  263. digitalWrite(ELDownPin, LOW);
  264. digitalWrite(ELUpPin, LOW);
  265. digitalWrite(AZCCWPin, LOW);
  266. digitalWrite(AZCWPin, LOW);
  267. GotoEL = " ";
  268. GotoAZ = " ";
  269. }
  270.  
  271. if(FlipMode == 0){
  272. sprintf(L1, "EL %3d AZ %3d ", ELVR, AZVR);
  273. if((ELPOS < -3) && (AZPOS < -3)){
  274. sprintf(L2, "Rotor - offline ");
  275. RemoteMode = 0;
  276. }
  277. else{
  278. sprintf(L2, "%s %3d %s %3d ", GotoEL, ELPOS, GotoAZ, AZPOS);
  279. }
  280. }
  281. else{
  282. if(AZPOS < 180){
  283. AZPOS = AZPOS + 180;
  284. }
  285. else{
  286. AZPOS = AZPOS - 180;
  287. }
  288. if(AZVR < 180){
  289. AZVR = AZVR + 180;
  290. }
  291. else{
  292. AZVR = AZVR - 180;
  293. }
  294. sprintf(L1, "EL* %3d AZ* %3d ", -(ELVR - 180), AZVR);
  295. if(((ELPOS - 180) < -3) && ((AZPOS - 180) < -3)){
  296. sprintf(L2, "Rotor - offline ");
  297. }
  298. else{
  299. sprintf(L2, "%s %3d %s %3d ", GotoEL, -(ELPOS -180), GotoAZ, AZPOS);
  300. }
  301. }
  302.  
  303. if(RemoteMode == 0){
  304. writeCommand(0x80);
  305. for(int i=0; i<20; i++){
  306. writeData(L1[i]);
  307. }
  308. }
  309.  
  310. writeCommand(0x20+0x80);
  311. for(int i=0; i<20; i++){
  312. writeData(L2[i]);
  313. }
  314.  
  315. contrast_max();
  316. }
  317.  
  318.  
  319. void allstop(){
  320. RemoteMode = 0;
  321. PresetMode = 0;
  322. FlipMode = 0;
  323. digitalWrite(s5LEDPin, LOW);
  324. digitalWrite(ELDownPin, LOW);
  325. digitalWrite(ELUpPin, LOW);
  326. digitalWrite(AZCCWPin, LOW);
  327. digitalWrite(AZCWPin, LOW);
  328. }
  329.  
  330.  
  331. void writeData(byte t_data)
  332. {
  333. Wire.beginTransmission(OLED_ADRS);
  334. Wire.write(0x40);
  335. Wire.write(t_data);
  336. Wire.endTransmission();
  337. delay(1);
  338. }
  339.  
  340.  
  341. void writeCommand(byte t_command)
  342. {
  343. Wire.beginTransmission(OLED_ADRS);
  344. Wire.write(0x00);
  345. Wire.write(t_command);
  346. Wire.endTransmission();
  347. delay(1);
  348. }
  349.  
  350.  
  351. void contrast_max()
  352. {
  353. writeCommand(0x2a);
  354. writeCommand(0x79);
  355. writeCommand(0x81);
  356. writeCommand(0xFF);
  357. writeCommand(0x78);
  358. writeCommand(0x28);
  359. delay(1);
  360. }
  361.  
  362.  
  363. void init_oled()
  364. {
  365. delay(100);
  366. writeCommand(ClearDisplay);
  367. delay(20);
  368. writeCommand(ReturnHome);
  369. delay(20);
  370. writeCommand(DisplayON);
  371. delay(20);
  372. writeCommand(ClearDisplay);
  373. delay(20);
  374. writeCommand(CursoleOff);
  375. delay(20);
  376. }

1.2 GHz 直下LNA製作

以前435 MHzの直下LNAを作ってうまくいったので、調子に乗って1.2 GHzのを作り始めたのが去年の6月。1.2 GHz帯に都合の良いSAWフィルターが無く、マイクロストリップラインでBPFを構成し実測してみましたが、誘電率が正確にわからなかったので一つ目は見事失敗でした。...