アーカイブ: ブログ

AM放送局のFM補完放送へに移行が本格化しました。
ところが、Wide FM放送(FM補完放送)に対応したオーディオレベルのチューナーはほとんどありません。

DSPラジオチップを使ったラジオでもしっかり作られたものはそれなりに良いですが、FMステレオのセパレーション(左右の音の分離)が35程度で、特に良いものでも45dB程度です(持ち出すラジオとしては十分良い音です)。1980年から2000年頃に販売されていた優秀なチューナーは、60dB以上で音質もよく別次元の言えると思います。今更と言われる方もいらっしゃるかとは思いますが、良いチューナーで聴くFM放送は、CDに負けない良い音がします。(※1)

※1)スペック的には、FMチューナーは15Hz 〜15kHz (実際には、良いチューナーでは、18kHzあたりまで伸びています)なのでCDには劣りますが、実用的には十分で、ネットで配布されている(Radikoも)音楽は、特別にHiz(ハイレゾ)を謳っている物を除き、同じ帯域で、FM放送のほうが少し良いくらいです。

しかし残念ながら、それらの良い音のするチューナーは、Wide FMに対応していません。

ん〜、せっかくのFM放送を良い音で聞きたい!!

では、どうするか?

(1)音の良いチューナーをWide FMが受信できるように改造する。
(2)Wide FM帯域を低い周波数(76-90MHz)にダウンコンバージョンする。
(3)海外版のチューナーを併用する。
(4)期待薄ですが、良いチューナーが手の届く値段で発売されるのを待つ。

(1)の事例:
私の住む地域では、FM補完帯は91.7MHzだけで、下は79.7MHzなので、76-90MHzの受信帯を78-92MHzにシフトさせました。
PIONEER F-500 は音もよく高周波回路が優秀でWide FM帯域でも十分な受信感度です。 アナログチューナーなので、放送局の切り替えはワンタッチではありませんが、考えようによってはチューニングも楽しいアナログチューナーです。

(2)の事例: FM補完放送用   クリスタル コンバータ キット(ne612)。  RK-53 FM補完放送用   クリスタル コンバータ キット(ne612)。  RK-53 「FM補完放送用 クリスタル コンバータ キット RK-53」を「タカチ電機工業 TD型アルミダイキャストボックス TD5-8-3N」にいれました。

地上波放送対応でアンテナ交換が必要とマンションのアンテナが変更された(実際には必要なかったのに(●`ε´●))おかげで、FMが受信できなくなり、やむ無くFMアンテナをマンションのベランダに立てているのですが、民放のアンテナ方向にちょうどマンションがあり、間接波となる為か感度が時間帯により変わります((泣))。それでも、デジタルチューナーとの組み合わせは良いです。

ただ、キットなので、ある程度の知識とトラブル対応には測定器も必要となります。

Amazonなどで売っている中華のカーラジオ用のもの(TL-J5201など)をコネクタを改造し、12V 電源を用意することで同様のことが実現できます(ハズレを引かなければ、十分実用的というか、こちらのほうがコンバートした放送局はノイズ感が無いようです。結果こちらを利用中^^;).

環境によっては、アンテナブースターを付けないと感度が下がるかもしれません。

(3)の事例: これは実際には構築していませんが、 海外版の良いチューナを入手するのは普通の方にはハードルが高いかなと思いますが、チューナを調整することができる方なら、例えば、SONY ST-S333ES XⅡの国内版のダイオードスイッチを付け替えることで海外版に変身します。ただし、フロントエンドを海外版に合わせて再調整が必要になります。

(4)の事例: 正直、期待できないですね。中国メーカ製とかが出てくるかもしれませんが せっかく良い音のFM受信環境ができましたので、エアチェックできる環境もほしいところですが、 最近人気?のカセットテープや入手も怪しいMDもないでしょうから、PCでの録音が無難なんでしょうか

次回へ、続く….?

比較的非力なパソコンにMX21を入れてみたら、デスクトップがかっこい!!

と感じたので、メインマシンも真似をしてみました。

余談ですが、RaspberryPi4は、MX21で環境を作っちゃいました。かっこいいし十分実用的な操作感です。ただし、快適環境にはUSB3+SSDが必須です。

様々な情報をデスクトップの壁紙のように表示しているのが、なんとも男ゴゴロをくすぐります。

これってconkyというプログラムだそうで、結構有名なようです。

最近では、格安の中華LCDでマシンのステータス情報をかっこよく表示したりするために使用されたりもあるようです。

どんな情報を表示できるかは、http://conky.sourceforge.net/variables.html

あたりをみるといかに多いかわかります。

以下は、私の環境向けに修正したconky.confです。

ネットワークトライバーとファイルのところは動作させる環境に合わせて変更が必要です。

当たり前ですが、nvidiaを使用していない環境では、GPUの項目も変更が必要です。

これを~/.config/conky/におけば反映されます。

ちなみに右側に表示するなら「top_right」じゃないのと思われるかもですが、マルチディスプレイ環境では不都合があるので、「top_left」として「gap_x」で表示位置を決めています。この部分も解像度によって修正が必要です。

conky.config = {
    alignment = 'top_left',
    background = true,
    border_width = 1,
    cpu_avg_samples = 2,
    default_color = 'white',
    default_outline_color = 'grey',
    default_shade_color = 'black',
    double_buffer = true,
    draw_borders = false,
    draw_graph_borders = true,
    draw_outline = false,
    draw_shades = false,
    extra_newline = false,
    font = 'DejaVu Sans Mono:size=11',
    gap_x = 1550,
    gap_y = 40,
    maximum_width = 360,
    minimum_height = 5,
    minimum_width = 5,
    net_avg_samples = 2,
    no_buffers = true,
    out_to_console = false,
    out_to_ncurses = false,
    out_to_stderr = false,
    out_to_x = true,
    own_window = true,
    own_window_class = 'Conky',
    own_window_type = 'normal',
    own_window_transparent = true,
    own_window_argb_visual = true,
    own_window_hints = 'undecorated,below,sticky,skip_taskbar,skip_pager',
    show_graph_range = false,
    show_graph_scale = false,
    stippled_borders = 0,
    update_interval = 1.0,
    uppercase = false,
    use_spacer = 'none',
    use_xft = true,
}

conky.text = [[
${color6}${voffset 4}${font GE Inspira:size=24}${alignc}${time %l}:${time %M} ${time %p}${font}${color}
${color6}${voffset 4}${font GE Inspira:size=12}${alignc}${time %A} ${time %B} ${time %e}, ${time %Y}${font}${color}
${color5}${font Roboto:size=10}${voffset 2}S Y S T E M   ${hr 2}${font}${color}
${color2}Hostname:${color} ${alignr}${nodename}
${color2}OS: $alignr ${color3}${execi 6000 lsb_release -d| awk '{$1=""; print $0}'} ${machine}
${color2}Kernel: $alignr ${color3} $kernel
${color2}Uptime:${color} ${alignr}${uptime}
${voffset -8}
${color5}${font Roboto:size=10}P R O C E S S O R S  ${hr 2}${font}${color} -t}
${color1}CPU:${color #FCAF3E}${font} ${alignr}${execi 1000 cat /proc/cpuinfo | grep 'model name' | sed -e 's/model name.*: //'| uniq | cut -c 1-26}
${color2}CPU Freq:${color} $alignr${freq}MHz
${color2}CPU Temp:${color} $alignr ${acpitemp}°C
${color2}CPU Usage:$color $cpu% ${cpubar 6}
${voffset -22}
${font Montserrat Light:size=7}${color1}${goto 50}${color2}CPU  1:$color  ${cpu cpu1}% ${goto 110}${cpubar cpu1 3}
${voffset -18}
${font Montserrat Light:size=7}${color1}${goto 50}${color2}CPU  2:$color  ${cpu cpu2}% ${goto 110}${cpubar cpu2 3}
${voffset -18}
${font Montserrat Light:size=7}${color1}${goto 50}${color2}CPU  3:$color  ${cpu cpu3}% ${goto 110}${cpubar cpu3 3}
${voffset -18}
${font Montserrat Light:size=7}${color1}${goto 50}${color2}CPU  4:$color  ${cpu cpu4}% ${goto 110}${cpubar cpu4 3}
${voffset -18}
${font Montserrat Light:size=7}${color1}${goto 50}${color2}CPU  5:$color  ${cpu cpu5}% ${goto 110}${cpubar cpu5 3}
${voffset -18}
${font Montserrat Light:size=7}${color1}${goto 50}${color2}CPU  6:$color  ${cpu cpu6}% ${goto 110}${cpubar cpu6 3}
${voffset -18}
${font Montserrat Light:size=7}${color1}${goto 50}${color2}CPU  7:$color  ${cpu cpu7}% ${goto 110}${cpubar cpu7 3}
${voffset -18}
${font Montserrat Light:size=7}${color1}${goto 50}${color2}CPU  8:$color  ${cpu cpu8}% ${goto 110}${cpubar cpu8 3}
${voffset -18}
${font Montserrat Light:size=7}${color1}${goto 50}${color2}CPU  9:$color  ${cpu cpu9}% ${goto 110}${cpubar cpu9 3}
${voffset -18}
${font Montserrat Light:size=7}${color1}${goto 50}${color2}CPU 10:$color  ${cpu cpu10}% ${goto 110}${cpubar cpu10 3}
${voffset -18}
${font Montserrat Light:size=7}${color1}${goto 50}${color2}CPU 11:$color  ${cpu cpu11}% ${goto 110}${cpubar cpu11 3}
${voffset -18}
${font Montserrat Light:size=7}${color1}${goto 50}${color2}CPU 12:$color  ${cpu cpu12}% ${goto 110}${cpubar cpu12 3}
${font}${color1}GPU: $alignr${color #FCAF3E}${exec nvidia-smi --query-gpu=gpu_name --format=csv,noheader,nounits} $color
${color2}GPU Freq:${color} $alignr${nvidia gpufreq}MHz
${color2}GPU Temp:${color} $alignr ${nvidia temp}°C
${color1}GPU Power:${color} $alignr ${exec nvidia-smi | grep % | cut -c 21-23} W
${voffset -8}
${color5}${font Roboto:size=10}M E M O R Y   ${hr 2}${font}${color}
${color2}RAM Usage: $color $mem/$memmax
${color2} - $memperc% ${membar 6}
${color2}Swap Usage:$color $swap/$swapmax
${color2} - $swapperc% ${swapbar 6}
${voffset -8}
${color5}${font Roboto:size=10}F I L E   S Y S T E M  ${hr 2}${font}${color}
${color3}${diskiograph 25 c0c0c0 ffff00}${font Montserrat Light:size=7}
${goto 20}${color2} Free:${fs_free /}${goto 143}- Used:$color${fs_used /}/${fs_size /}
${goto 20}${color2} - $fs_used_perc% ${goto 72}${fs_bar 6,190 /} /
${goto 20}${color2} Free:${fs_free /home}${goto 143}- Used:$color${fs_used /home}/${fs_size /home}
${goto 20}${color2} - ${fs_used_perc /home}% ${goto 72}${fs_bar 6,190 /home} /home
${voffset -8}
${color5}${font Roboto:size=10}N E T  W O R K I N G   ${hr 2}${font}${color}
${font}  Down ${downspeedf enp10s0}k/s${font}${goto 190}  Up ${upspeedf enp10s0}k/s
${font}(total ${totaldown enp10s0})${goto 180}(total ${totalup enp10s0})
${color3}${downspeedgraph enp10s0 25,170 c0c0c0 ffff00}${goto 180}${color3}${upspeedgraph enp10s0 25,170 808080 00ff00}
${voffset -15}
${color5}${font Roboto:size=10}P R O S E S S   ${hr 2}${font}${color}
${color2}Processes:$color $processes  ${color grey}Running:$color $running_processes
${color2}Name              PID     CPU%   MEM%
${color lightgrey} ${top name 1} ${top pid 1} ${top cpu 1} ${top mem 1}
${color lightgrey} ${top name 2} ${top pid 2} ${top cpu 2} ${top mem 2}
${color lightgrey} ${top name 3} ${top pid 3} ${top cpu 3} ${top mem 3}
${color lightgrey} ${top name 4} ${top pid 4} ${top cpu 4} ${top mem 4}
]]

自動起動させるためには、最近のLinuxはGUIで「セッションと起動」などで簡単に登録できます。

ただし、ここで注意!、普通に直接conkyを登録したのでは、必要な環境が出来上がる前だと、起動に失敗します。

conky -p10

とするか、

以下のような遅れて実行するシェルを用意しておき、これを登録します。

#!/bin/bash

sleep 10

conky -b &

10のところは、環境によって15とか遅らせる必要があるかもしれません。

Calibreは、非常に便利で多機能な電子書籍管理ソフトですが、

Linux+fcitx上のCalibreは、日本語(中国語なども)で検索しようとした場合に日本語入力に切り替わりません。

原因は、Qtのリビジョンによるものらしい。

暫定対策は、

sudo cp /usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so /opt/calibre/plugins/platforminputcontexts
sudo cp /usr/lib/x86_64-linux-gnu/libFcitxQt5DBusAddons.so.1.0 /opt/calibre/lib
sudo cp /usr/lib/x86_64-linux-gnu/libFcitxQt5WidgetsAddons.so.1.0 /opt/calibre/lib

 

 

ベランダに寂しくFMアンテナが立っています。

最近は、radikoを使っていたので、事務所にあったアナログFMチューナは売却してしまいアンテナだけ寂しくベランダに立っていました。

なにやら寂しく、災害時にPC(ネット)が使えなくなることを考えるとワイドFM対応の電池で動作するチューナもあった方が良いかと思い、ワイドFMチューナーを調べてみましたが、それなりの性能のものしかないようで(異常に高価なチューナーを除き)それならと、自分で作ってみることにしました。

RDA5807M S INGLE -C HIP B ROADCAST FM R ADIO T UNERの性能がなかなか良い

RDA5807Mを使用した安価な中国製のDSP FMチューナモジュールが、仕様上の性能はなかなか良いようです。

S/N比が55dB、Stereo Channel Separationが35dB(min)、THDが0.15%

このスペックは、現在一般に販売されている2万円以上するFMチューナーとほとんど遜色ない値です。(最近の市販チューナーの性能が寂しいのがほんとうの処ですが。。。。)

ワイドFM DSPラジオ (RDA5807M)を作りました。

最低限の回路構成のFMラジオ 回路図

RFプリアンプやLINE OUT用バッファーアンプ、スピーカなど最初はいろいろ考えていましたが、手持ちの部品や気持ちの問題で、今回は最小限の回路構成となりました。

出来上がってみると、ちゃんとしたFMアンテナを接続することで十分な受信感度で、DMA5807Mの出力(ボリュームMAX)がほぼライン信号レベルでそのまま据え置きのオーディオアンプへも接続できました。

ちなみにこの回路図は、あとで作ったので、多少間違いがあるかもなので、参考程度(-_-;)

ワイドFM DSPラジオ (RDA5807M)のプログラム

//#include <Arduino.h>
#include <Wire.h>
//#include <radio.h>
#include <RDA5807M.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <EEPROM.h>

#define  debug false

#define FIX_BAND     RADIO_BAND_FMWORLD //RADIO_BAND_FM (76-108 MHz) 
#define FIX_VOLUME   3              //Audio Volume Level
#define SW0 6
#define SW1 7
#define VOL_MAX 15
#define VOL_MIN 1
#define VOL_DIF 2
#define MEMORY0 100 //byte
#define MEMORY1 101 //byte
#define MEMORY2 103 //word
#define DIMMER 30 // max 12000 sec do't dimmer/12001-65535

#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 32 // OLED display height, in pixels
//#define SCREEN_HEIGHT 64 // Free RAM > 1kB + a?
#define OLED_RESET    -1 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3C
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);


RDA5807M radio;
RADIO_INFO ri;
const uint16_t STATION[] = { 7970, 8770, 9170 };         //Station Tuned = 79.70 MHz.
const char* STATION_NAME[] = { "FM EHIME", "NHK FM", "RNB FM" } ;
const uint8_t STATION_NUM = 3;
const uint8_t rssi_min = 45;
const uint8_t rssi_stereo = 50;

int8_t num = 1;
int8_t vol = FIX_VOLUME;
uint16_t freq = 0;
uint16_t lcount = 0;
uint8_t scan_freq = 0;
uint8_t rssi;

void dispLCD() {
  char s[12];
  if (lcount <= DIMMER) {
    display.clearDisplay();
    display.setCursor(60, 24);
    display.setTextSize(1);
    display.print("VOL:");
    display.setCursor(92, 16);
    display.setTextSize(2);
    display.println(vol);
    display.display();
    delay(500); // RSSIを正常に読み込むため
    display.setTextSize(2);
    display.setCursor(0, 0);
    freq = radio.getFrequency();
    if (scan_freq > 0) {
      radio.formatFrequency(s, sizeof(s));
      display.println(s);
    } else {
      display.println(STATION_NAME[num]);
    }
    display.setTextSize(1);
    radio.getRadioInfo(&ri);
    display.setCursor(0, 16);
    display.print("RSSI:");
    rssi = ri.rssi;
    display.print(rssi);
    display.setCursor(0, 24);
    if (rssi < rssi_stereo) {
      radio.setMono(true);
      display.print("mono_F");
    } else {
      if (ri.stereo) {
        display.print("stereo");
      } else {
        display.print("mono_?");
      }
    }
    display.display();

    if (debug ) {
      delay(200);
      radio.formatFrequency(s, sizeof(s));
      Serial.print("Station:");
      Serial.println(s);

      Serial.print("Radio:");
      radio.debugRadioInfo();

      Serial.print("Audio:");
      radio.debugAudioInfo();
      //radio.debugScan ();
      radio.debugStatus ();

      Serial.flush();
    }
  }
}

void setup() {
  pinMode(SW0, INPUT_PULLUP);
  pinMode(SW1, INPUT_PULLUP);

  if (debug ) {
    Serial.begin(9600);
    delay(300);
    Serial.println("Wide FM Radio");
  }

  display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS);

  // Clear the buffer
  display.clearDisplay();

  display.setTextSize(2);
  display.setTextColor(WHITE);
  display.setCursor(0, 0);
  display.println("Wide FM");
  display.println(" Radio");
  display.display();
  delay(2000);

  radio.init();

  num = EEPROM.read(MEMORY0);
  if (num == 100 ) {
    scan_freq = 1;
    freq = EEPROM.read(MEMORY2) + 100 * EEPROM.read(MEMORY2 + 1);
  } else  {
    if (num < 0 || num >= STATION_NUM ) {   // EEPROM 不正の場合
      num = 0;
    }
    freq = STATION[num];
  }
  vol = EEPROM.read(MEMORY1);
  if (vol < VOL_MIN || vol > VOL_MAX) vol = FIX_VOLUME;

  radio.setMute(true);
  radio.setBandFrequency(FIX_BAND, freq);
  radio.setVolume(vol);
  radio.setMono(false);
  radio.setMute(false);
  radio.setBassBoost(false);
  delay(200);

  dispLCD();
  lcount = 0;
}

void loop() {
  int key0 = digitalRead(SW0);
  int key1 = digitalRead(SW1);
  int key = 10 * key1 + key0;
  if ((key < 11) && (lcount > DIMMER)) {
    display.dim(0);
    dispLCD();
    lcount = 0;
  } else {
    switch (key) {
      case 10:
        lcount = 0;
        vol += VOL_DIF;
        if (vol > VOL_MAX) vol = VOL_MIN;
        radio.setVolume(vol);
        dispLCD();
        break;
      case 1:
        lcount = 0;
        display.clearDisplay();
        display.print("Key check");
        display.display();
        delay(1000);
        if (digitalRead(SW1)) {
          scan_freq = 0;
          num += 1;
          if (num >= STATION_NUM) num = 0;
          freq = STATION[num];
          radio.setMute(true);
          radio.setFrequency(freq);
          radio.setMute(false);
        } else {
          if (scan_freq != 1) radio.setFrequency(7600);
          scan_freq = 1;
          display.clearDisplay();
          display.setCursor(0, 0);
          display.setTextSize(2);
          display.println("Scanning");
          display.display();
          do {
            radio.seekUp(true);
            delay(500); // RSSIを正常に読み込むため
            radio.getRadioInfo(&ri);
            rssi = ri.rssi;
          } while (rssi < rssi_min );
        }
        dispLCD();
        break;

      case 0:
        lcount = 0;
        if (scan_freq == 1) {
          num = 100;
          EEPROM.write(MEMORY2 + 1, int(freq / 100));
          EEPROM.write(MEMORY2, freq % 100);
        }
        EEPROM.write(MEMORY0, num);
        EEPROM.write(MEMORY1, vol);
        display.dim(1);
        delay(500);
        display.dim(0);
        break;
    }
  }
  delay(1000);
  if (lcount < 12000)lcount += 1;
  if (lcount > DIMMER) display.dim(1); //画面を消灯
}

RadioライブラリのRDA5807M.hを使用したのですが、どうもRSSIの値が可怪しいです。

ライブラリsrcのRDA5807M.cppの417行目あたりの

info->rssi = registers[RADIO_REG_RB] >> 9; //10 -> 9

10シフトしているのを9シフトに変更することで正しく(?)表示するようになりました。

Adafruit_SSD1306互換のI2C接続の128x64OLEDを使用したのですが、このプログラムでは128×64にするとメモリ不足で正常に動作しません。ライブラリをブラッシュアップすれば動作するかもですが。。。。

ちょっと古いライブラリーのようですが、PU2CLR RDA5807の方が空きメモリが多くなるようなので、こちらでプログラムを書き直してみました。

//#include <Arduino.h>
#include <Wire.h>
#include <RDA5807.h> //PU2CLR RDA5807 Arduino Library
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <EEPROM.h>

#define  debug false

#define FIX_VOLUME   3              //Audio Volume Level
#define SW0 6
#define SW1 7
#define VOL_MAX 15
#define VOL_MIN 1
#define VOL_DIF 2
#define MEMORY0 100 //byte
#define MEMORY1 101 //byte
#define MEMORY2 103 //word
#define DIMMER 30 // max 12000 sec do't dimmer/12001-65535
#define RSSI_MIN 45
#define RSSI_STEREO 50

#define SCREEN_WIDTH 128 // OLED display width, in pixels
//#define SCREEN_HEIGHT 32 // OLED display height, in pixels
#define SCREEN_HEIGHT 64 // Free RAM > 1kB + a?
#define SCREEN_MAG 2
#define OLED_RESET    -1 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3C
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);


RDA5807 radio;

const uint16_t STATION[] = { 7970, 8770, 9170 };         //Station Tuned = 79.70 MHz.
const char* STATION_NAME[] = { "FM EHIME", "NHK FM", "RNB FM" } ;
const uint8_t STATION_NUM = 3;

int8_t num = 1;
int8_t vol = FIX_VOLUME;
uint16_t freq = 0;
uint16_t lcount = 0;
uint8_t scan_freq = 0;
uint8_t rssi;

void showFrequency() {
  freq = radio.getFrequency();
}

void dispLCD() {
  char s[12];
  if (lcount <= DIMMER) {
    display.clearDisplay();
    display.setCursor(60, 24 * SCREEN_MAG);
    display.setTextSize(1, 1 * SCREEN_MAG);
    display.print("VOL:");
    display.setCursor(92, 16 * SCREEN_MAG);
    display.setTextSize(2, 2 * SCREEN_MAG);
    display.println(vol);
    display.display();
    display.setTextSize(2, 2 * SCREEN_MAG);
    display.setCursor(0, 0);
    if (scan_freq > 0) {
      display.print(int(freq / 100));
      display.print(".");
      display.print(int(freq % 100));
      display.println(" MHz");
    } else {
      display.println(STATION_NAME[num]);
    }
    display.setTextSize(1, 1 * SCREEN_MAG);
    delay(500); // RSSIを正常に読み込むため
    rssi = radio.getRssi();
    display.setCursor(0, 16 * SCREEN_MAG);
    display.print("RSSI:");
    display.print(rssi);
    display.setCursor(0, 24 * SCREEN_MAG);
    if (rssi < RSSI_STEREO) {
      radio.setMono(true);
      display.print("mono_F");
    } else {
      if (radio.isStereo()) {
        display.print("stereo");
      } else {
        display.print("mono_?");
      }
    }
    display.display();

    if (debug ) {
      delay(200);

      Serial.print("Station:");
      Serial.print(radio.getFrequency());
      Serial.print("kHz  RSSI:");
      Serial.println(radio.getRssi());

      Serial.flush();
    }
  }
}

void setup() {
  pinMode(SW0, INPUT_PULLUP);
  pinMode(SW1, INPUT_PULLUP);

  if (debug ) {
    Serial.begin(9600);
    delay(300);
    Serial.println("Wide FM Radio");
  }

  display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS);

  // Clear the buffer
  display.clearDisplay();

  display.setTextSize(2, 2 * SCREEN_MAG);
  display.setTextColor(WHITE);
  display.setCursor(0, 0);
  display.println(" Wide FM");
  display.println(" DSP Radio");
  display.display();
  delay(2500);

  radio.setup(CLOCK_32K, OSCILLATOR_TYPE_CRYSTAL);
  //radio.setRDS(false);
  radio.setSpace(0);
  radio.setFmDeemphasis(1); //0 = 75 μs; 1 = 50 μs

  num = EEPROM.read(MEMORY0);
  if (num == 100 ) {
    scan_freq = 1;
    freq = EEPROM.read(MEMORY2) + 100 * EEPROM.read(MEMORY2 + 1);
  } else  {
    if (num < 0 || num >= STATION_NUM ) {   // EEPROM 不正の場合
      num = 0;
    }
    freq = STATION[num];
  }
  vol = EEPROM.read(MEMORY1);
  if (vol < VOL_MIN || vol > VOL_MAX) vol = FIX_VOLUME;

  radio.setMute(true);
  radio.setBand(RDA_FM_BAND_WORLD);
  radio.setFrequency(freq);
  radio.waitAndFinishTune();
  radio.setVolume(vol);
  radio.setMono(false);
  radio.setMute(false);
  radio.setBass(false);
  delay(200);

  dispLCD();
  lcount = 0;
}

void loop() {
  int key0 = digitalRead(SW0);
  int key1 = digitalRead(SW1);
  int key = 10 * key1 + key0;
  if ((key < 11) && (lcount > DIMMER)) {
    display.dim(0);
    dispLCD();
    lcount = 0;
  } else {
    switch (key) {
      case 10:
        lcount = 0;
        vol += VOL_DIF;
        if (vol > VOL_MAX) vol = VOL_MIN;
        radio.setVolume(vol);
        dispLCD();
        break;
      case 1:
        lcount = 0;
        display.clearDisplay();
        display.print("Key check");
        display.display();
        delay(1200);
        if (digitalRead(SW1)) {
          scan_freq = 0;
          num += 1;
          if (num >= STATION_NUM) num = 0;
          freq = STATION[num];
          radio.setMute(true);
          radio.setFrequency(freq);
          radio.waitAndFinishTune();
          radio.setMute(false);
        } else {
          if (scan_freq != 1) radio.setFrequency(7600);
          scan_freq = 1;
          display.setCursor(0, 0);
          display.setTextSize(2, 2 * SCREEN_MAG);
          display.println("Scanning");
          display.display();
          /*
                    do {
                      radio.seek(0, 1, showFrequency); //continue seeking,seek up
                      radio.waitAndFinishTune();
                      delay(500); // RSSIを正常に読み込むため
                      rssi = radio.getRssi();
                    } while (rssi < RSSI_MIN );
          */
          radio.setSeekThreshold(RSSI_MIN);
          radio.seek(0, 1, showFrequency); //continue seeking,seek up
          radio.waitAndFinishTune();

        }
        dispLCD();
        break;

      case 0:
        lcount = 0;
        if (scan_freq == 1) {
          num = 100;
          EEPROM.write(MEMORY2 + 1, int(freq / 100));
          EEPROM.write(MEMORY2, freq % 100);
        }
        EEPROM.write(MEMORY0, num);
        EEPROM.write(MEMORY1, vol);
        display.dim(1);
        delay(500);
        display.dim(0);
        break;
    }
  }
  delay(1000);
  if (lcount < 12000)lcount += 1;
  if (lcount > DIMMER) display.dim(1); //画面を消灯
}

あまり余裕はないようですが、なんとか128×64で表示させることができました。1行間隔に表示されなくなり少し見やすい表示となりました。(縦2倍として表示数は変えないようにしました。)

ただ、このライブラリーはバグがあるようで、76–108 MHz (world wide)へのBAND切替がされません。(87–108 MHz 固定)こちらのライブラリーも少々修正が必要です。

C++を理解していないので本来の正しい書き方では無いとは思いますが、

void RDA5807::setBand(uint8_t band)
{
    this->currentFMBand = band;                   //追加
    reg03->refined.BAND = this->currentFMBand;
    setRegister(REG03,reg03->raw);
}

/*
 */
void RDA5807::setSpace(uint8_t space)
{
    this->currentFMSpace = space;                  //追加
    reg03->refined.SPACE = this->currentFMSpace;
    setRegister(REG03, reg03->raw);
}

これで期待する動作となりました。

ワイドFM DSPラジオ (RDA5807M)操作方法

このプログラムは、愛媛県松山市向けとなっていますので、使用する地域に合わせて、以下は修正します。

const uint16_t STATION[] = { 7970, 8770, 9170 };         //Station Tuned = 79.70 MHz.
const char* STATION_NAME[] = { "FM EHIME", "NHK FM", "RNB FM" } ;
const uint8_t STATION_NUM = 3;

オートスキャンの感度とステレオの切替感度は、以下で調整できます。

#define RSSI_MIN 45
#define RSSI_STEREO 50

プログラムも準備できたら、

電源はUSBを接続して電源供給すると勝手に起動します。

最初は、2つ目に登録した局が選択されます。

左のボタンSW1がボリューム、右のボタンSW0が選曲

SW0を長押しするとスキャン(Seek)して登録していない局も探せます。

SW0とSW1を同時押しして画面が一度消えたら現在の局をデフォルトとして記憶します。

とまぁ、こんな感じで最低限の機能ですが、使えます。

ちなみに節電?のため、最後の操作から約30sで表示が消えます。ボタンを押せば約1s以内に画面を表示、操作が可能となります。

今後

ひとまずこれはこれで完成ですが、思いの外に使えるので、マイコンをAVR単体かPICにしてもっと低消費電力に、電池も内蔵にしてお散歩時にポケットにいれて持ち運んだり、単体でスピーカ出力できるようにしたいと思いが広がる工作でした。

これは、次期検討実験や据え置きチューナー的に使用しています。

購入したものは、以下

KKHMF 6個 FMラジオモジュール RDA5807M RRD-102 V2.0 ステレオ DC 2.7-3.6V

新品価格
¥799から
(2021/5/28 16:34時点)

VKLSVAN 2個 0.96″ iic i2c ホワイトOLEDモジュール128×64 OLED LCDディスプレイArduinoに対応

新品価格
¥999から
(2021/5/28 16:35時点)

KKHMF 2個 Mini USB Nano V3.0 ATmega328P CH340G 5V 16M マイクロコントローラーボード モジュールArduinoと互換 「国内配送」

新品価格
¥999から
(2021/5/28 16:36時点)

正電圧から負電圧を作ってみました。
いわゆるチャージポンプと言われる回路です。

回路図作成と配線図作成は、KiCADを使用しました。

KiCADは無料で使用できる高機能な設計ツールで、ライブラリーも豊富です。

実は、最初簡単な回路なので、何も考えないで作ったのですが、全く動作しませんでした。

この回路の肝は、C3コンデンサにチャージ後、GNDへ強制放電させる必要があるのにQ2を付けていませんでした。

お恥ずかしい。。。。。。(汗)

さて、配置図と配線図は以下となりました。

そうそう、フットプリントのカソードの向きが間違えているものがあり(実際はダイオードのピン番号の振りが異なる為?)、過電流が流れて焦りましたが、正しいフットプリントにして、ダイオードの向きを正しく取り付けでOKとなりました。2pinのダイオードは要注意かもしれません。

パーソナルCNCで持っていれば、ベタ基板をカットして、後はハンダ付だけとでき、格好も良いのですが、あいにく持っていないので、ユニバーサル基板で作成しました。

あまりキレイではありませんが、予めCADで片面配線図を作成してからだと配線の失敗もなく比較的楽に配線できます。

使用したトランジスターは利得が高いので抵抗R4はもっと大きな値でも良いのですが、極力電圧損を減らしたいので、LMC555の最大値100mAを超えない範囲の抵抗値としました。

しかし、1Wオーバーが必要となり、手持ちでは手頃なのがありませんので、変換基板を利用して、2W抵抗を作成しました。

1/4W 抵抗を8個並列にして(ばらつきにより負荷が偏ることがあるので)ほぼ2Wの抵抗としました。

負荷試験は、改めて実施予定ですが、とりあえず無負荷状態での電源ノイズ(リップル?)を測定してみました。

大体10mV程度、まぁ許容範囲か….(GNDの引き回しをもっと工夫するだけでもっと小さくなるかもしれません。)

LMC555の発振周波数は、100kHz程度を考えていましたが、200kHzオーバーでも波形も綺麗で安定していたので、200kHzとしました。オーディオ帯域から十分離れた周波数とできました。

今回は、手持ちの部品の関係で、希少となりつつあるオーディオ用トランジスタを使用しましたが、R4を小さめの値としているのでIcさえ大きければ適当なコンプリメンタリトランジスタで良いと思います。

 

追加試験:

格安の電子負荷(↓)を入手したので、簡単な負荷テストを実施してみました。

この定電流電子負荷モジュールなかなか便利なので、フローティング電源とすればいろいろと実験できそうなで、そのうち筐体に入れて、便利グッズとして長く使えるようにしたいと思っています。

ICQUANZX 定電流電子負荷パワーエージング可変負荷モジュール電池放電容量試験機(5A 35W)

新品価格
¥2,198から
(2021/2/13 15:12時点)

16.5V入力の場合、負荷電流値が150mAくらいまでが、現状の回路での限界(充放電が追いつかなくなる)のようですが、80mAを超えるあたりからは、Q1,Q2トランジスタの発熱が大きくなり、放熱板が必要そうです。逆に大きな負荷電流は流せないので、三端子レギュレータの放熱板は削除しても良いかもしれません。

Q1,Q2に放熱板をつけるのであれば、C3、C4の値を、もっと大きな値にすることで負荷電流の対応範囲を広げられるかもしれません。

負荷電流が150mA程度で十分な場合は、負荷が増えるとスイッチングノイズが増えるので、三端子レギュレータの前にローパスフィルタを追加するほうが、C3,C4の容量増加より効果的かもしれません。

作るのが面倒な場合、以下のようなものもあるようです。

いかにも中華製品で1.5Aなどと謳っていますが…..

1pc HIFI低ノイズ単一電圧から正の負出力まで安定化電源For AMPデコーダ用

新品価格
¥1,124から
(2021/2/13 16:17時点)


ベースPCのスペック(上記写真は改造後)

CPU:Intel Xeon X3470 2.93GHZ 4C/8T

MEM:16GB (DDR3 4GB x 4)

MB:Gigabyte GA-P55A-UD3R

GA:Nvidia Geforce GTX960 2GB

最近のStreamの3Dゲームだと微妙に性能不足なので、素直にCPUごとRyzen7などに変更すれば良いのでしょうけど、そうするとMB・MEMと出費が増えてしまうので、オークションで手持ち余剰品を売却してその費用で対応できる範囲で、強引に性能UPを図りました。

性能アップのポイントは、

・CPUの性能アップ

現状ではゲーム中にCPU負荷100%となり、GAがCPU待ちとなる場合がありそう。

オーバークロックで強引に性能UPを謀ります。目標は、FF15ベンチでCPU 100%とならない4GHz(GAがGTX960なら3.6GHz)あたり

・GAのグレードアップ

GTX960でも多くのゲームで問題はないと思いますし、クロックアップで最新ゲームもなんとかこなせますが、2GBがフルになる状態が多々見られるので、4GB以上のメモリ搭載GAに置き換えます。

GTX960の性能から、GTX1060・GTX1650・RX570あたりとなりますが、比較的手頃な価格で入手できたGTX970 4GBに載せ換えました。

Xeon X3470をオーバークロック

オーバークロックのアプローチは、いろいろありますが、CPUの省電力機能はすべてdisableとするのが一般的ですが、今回はあえてターボブーストとEISTは有効にしました。

その他の設定は、

CPU Vcore 1.3375v

DRAM Voltage 1.5V(設定不要のはずですが、何故かおかしな設定されるので明示設定)

その他DIMM関連 0.75v(同上)

CPU Clock Ratio 22x

BCLK Rrequency 167

この世代かたまたまこのMB BIOSか?負荷が掛かるとターボクロックで動作するので、実質4GHzで動作します。

オーバークロック時のCPU冷却

Intel Xeon X3470は、TDP 95Wですが、上記オーバークロック動作時は、TDP300Wに達します。

これを冷すために手持ちの「忍者5」を使用してみましたが、夏場30℃オーバーの環境では90℃超えで連続運用には使用できませんでした。FANを交換すればそこそこ戦えそうですが….

サイズ 忍者五 SCNJ-5000 大型サイドフロー型 CPUクーラー 忍者シリーズ 5代目

新品価格
¥6,080から
(2020/8/26 15:05時点)

そこで、TDP300Wを謳っている「ENERMAX ELC-LMT120-HF」を採用しました。

ENERMAX RGB LED水冷CPUクーラー LIQMAXIII 120mm ELC-LMT120-HF

新品価格
¥6,450から
(2020/8/26 15:09時点)

 


たしかに300Wの状態で、外気温34℃下で84℃以下となりスペックに偽りなしですが、残念ながらFANが高速回転となりうるさいので、FANを交換します。

※高度なFAN制御機能のある最近のUEFI BIOSのマザーボードの場合はある程度静音化できるので高性能な簡易水冷だと思いますが、残念ながら使用MBでは細かいFAN制御はできません。

FANを交換するにあたり、風量は必要ですが、ラジエターに風を通すために静風圧があるものを選択する必要があります。標準のFAN(風量も静風圧も高い!少々煩いですが高性能なんです!)の性能以上で手頃価格の12cmFANは見つけられませんでした。

そこで少々改造が必要ですが、「SilverStone CPUファン 140mm SST-FHP141」に交換しました。

SilverStone CPUファン 140mm SST-FHP141

新品価格
¥2,877から
(2020/8/26 15:20時点)

厚みのある14cmファンで12cmファン取り付け穴に適合して、低動作音のわりに高い静圧なファンです。ただ、残念ながら120mmラジエータに取り付けには、ホースと干渉するので、その分削る必要があります。また、FAN取り付けには別途長めのインチネジも必要で、「6#-32×3/8-インチ ネジ」で取り付けました。

環境温度が35℃にも達する真夏日でもクーラーなしで動作可能なパソコンとなりました。

最後にベンチマーク結果

まぁ古いPCの割りにそこそこの結果で、しばらくはゲームも楽しめるパソコンになりました。

EDIROL UA-4FX ubuntuで使う

いまさらのEDIROL/Roland UA-4FXをUbuntuで使う

UA-4FXはHD AUDIOとして考えると時代遅れで、性能不足に思われますが、実用オーディオとしての基本性能を考えると十分に戦える性能を持っていると思います。 わけ(不安要素をすべて取り除いた結果)あって、メインPCのサウンド環境が変更となり、最近格安でオークションで出回り始めたEDIROL UA-4FXを入手しました。もちろんジャンクです。 入手して確認の結果、ヘッドフォン端子からRしか出ませんでした。L信号に直列に接続されているチップ抵抗のハンダがヘッドフォンの抜き差しのストレスでしょう浮いていました。修理して完動品となりました。 他にもこの時代(USB1.1からUSB2への移行時期)のUSB AUDIOは多数ありますが、ubuntuでの使用を考えるとWindowsでもドライバーなしで動くものが安心なのと、このレンジのものとしては大変SN比が優れていたこれを選びました。

Ubuntuで使う場合のUA-4FXの設定

UA-4FXは、特に気にしないで接続するだけで、Ubuntuで認識され使うことができます。しかし、UA-4FXは動作モードをスイッチで切替るようにできていて、これによってOS上での設定も変わりますので、注意が必要です。
まずは、
  • ADVANCED DRIVER:ON
これは確定かな。OFFだと44kHz 16bitでしか動作しなくなります。ONだと24bit動作となります。
MIDIを使いたい場合も必須の設定になります。
  次にSAMPLE RATEですが、UA-4FXのオーディオ入力を使用するかどうかで選択となると思います。
  • 44.1/48(オーディオ入力を使用する場合)
  • 96PLAY(オーディオ出力としてのみ使用する場合)
  • 96REC(オーディオ入力としてのみ使用する場合)
44.1/48は、通常は、48で大丈夫と思いますが、非力なPCの場合とかで音飛びがする場合は、44.1でしょうか。 これらの設定は、接続状態では反映されないので、変更した場合は接続し直しが必要です。

ubuntuでどのように認識されているかを確認する

  • ls -l /proc/asound
UA-4FXがどのcardとして認識されているか確認
  • cat /proc/asound/card?/stream0
「?」は適切なカード番号とします。これでどのように認識されているか確認できます。  
EDIROL UA-4FX at usb-0000:00:1d.0-1.5, full speed : USB Audio

Playback:
  Status: Running
    Interface = 0
    Altset = 1
    Packet Size = 608
    Momentary freq = 96000 Hz (0x60.0000)
  Interface 0
    Altset 1
    Format: S24_3LE
    Channels: 2
    Endpoint: 1 OUT (ADAPTIVE)
    Rates: 96000 - 96000 (continuous)
    Bits: 0
AMAZON MUSIC HDなどのハイレゾ音源を再生するならこの設定(96PLAY)でしょう。
EDIROL UA-4FX at usb-0000:00:1d.0-1.5, full speed : USB Audio

Playback:
  Status: Running
    Interface = 0
    Altset = 1
    Packet Size = 320
    Momentary freq = 48000 Hz (0x30.0000)
  Interface 0
    Altset 1
    Format: S24_3LE
    Channels: 2
    Endpoint: 1 OUT (ADAPTIVE)
    Rates: 48000 - 48000 (continuous)
    Bits: 0

Capture:
  Status: Running
    Interface = 1
    Altset = 1
    Packet Size = 320
    Momentary freq = 48000 Hz (0x30.0000)
  Interface 1
    Altset 1
    Format: S24_3LE
    Channels: 2
    Endpoint: 2 IN (ASYNC)
    Rates: 
48000 - 48000 (continuous)
    Bits: 0
私は、入力はオーディオの特性測定時にしか使用しませんが、通常はこちらの設定(48)で十分高音質と感じられると思います。

おまけ

写真に写り込んでいますが、睡眠不足に運動不足でコレステロールが気になるこの頃

DHC DHA 30日分 [機能性表示食品]

新品価格 ¥1,059から (2020/3/25 16:10時点)

以前は高いものを飲んでいましたが、今はAmazonの定期購入でお安く購入できるこちらにしています。内容を見ると高価なものとの違いがほとんど無いのに1/3以下で購入できるので続けられます。
デイトレ

なんでデイトレでないの?

本格的にデイトレで食えるくらい儲けようと思うと、1日信用取引口座が必須となります。 ただし、お金がないのでデイトレしてみようと思う人(=私みたいな)は、一定以上の資産の担保が必要となる信用取引口座の開設はハードルが高いですし、熱くなる人は信用取引だと気がついた時には突っ込みすぎたなんて可能性も高いので、リスクが大きくなります。(より多くの銘柄で取引できるので、取引自体のリスク低減施策は取りやすくなる) 本格的にデイトレで生活できるくらい儲けたいわけではなく、少額から地道に資産を増やしたい人は、現物取引でも銀行の利子よりは遥かに高い利回りで資産を増やせる可能性があります。 取引中はパソコンの前にいられるか、スマホを見ていても怒られない職場でないと難しいですが….(汗)   補足: 信用取引に対して現物取引がなぜ儲からないか
  • 1日に同じ銘柄で売り買いできるのは1回限り
  • 現物買付け余力の範囲でないと購入できない。
つまり、どんどん値が上がっている株があっても一度売り買いした場合、売った後の値上がりは指を食わえて見ているしかできず、損切も判断が難しくなります。また、有料株を見つけても手持ち金額が足りないと買えない。これは、儲けが制限されるだけでなく、リスク低減施策が取りにくいことも意味します。

自分のデイトレもどきのルール

  • 現物取引のみ
  • 手数料無料の範囲で行う
  • 損切となっても日を跨がない
といった足かせで、1日あたり平均+1,000円を目標に始めて、最終的に+5,000円位にできればと思います。 +5,000円という最終目標は、手数料無料では不可と思います。 少額取引において、もっとも手数料が安い(無料となる取引金額が高い)松井証券でも、手数料が無料となるのは、1日の約定代金合計金額が50万円までとなります。 10万円位から始める少額取引でも、意外に簡単に50万円を超えるので気をつけないといけません。売り買いの合計額なので、現物(現金)を回して7万円の取引を3回するだけでこの無料枠を超えてしまいます。そうするとせっかく+1,000円でも手数料で飛んでしまいます(T_T)

銘柄の選定の基準

株価が動かない株では駄目なので、できるだけ出来高の大きい銘柄を探します。 もちろん、現物買付け余力より安い株価のものを探します。 そして、1日の株価の動きが読みやすい銘柄を探します。

株価の動きが読みやすい銘柄って?

必ずしもでも無いですが、銘柄・業種で1日の株価の動きにある程度のパターンがあります。 週初めと週末でもパターンが変わる傾向があります。 あまり動きの大きい株は、十分に市場の動向を分析して、危ない株には投資しない(本格的に動きを読める人は、危ない株のほうが儲かる場合がありますが、私のようなド素人が冒険したら絶対に泣きます) 最初のうちはリアルタイムのチャートを眺めて、気配ボードで時間帯による出来高の変動も観察するのが良いと思います。

証券会社に口座開設で悩むこと

NISA口座では年間の取引額が小さすぎて、デイトレでは使用できませんから、デイトレ用には、
  • 一般口座
  • 特定口座・源泉徴収なし
  • 特定口座・源泉徴収あり
のいずれかを選択することになります。
一般口座だと損益計算から確定申告まで自分でやる必要がありますので、経理に詳しい方以外は避けて、年間取引報告書を証券会社が出してくれる特定口座を選び、年間収益が20万円以上の場合は、源泉徴収ありにしておくと確定申告も不要となり、煩わしい税金を考えなくて良くなります。他の収入と合わせて細かく税金対策をされたい場合は、源泉徴収なしにして自分で青色申告することになります。
ついでにまだ開設していなければ、同じ証券会社で、NISA口座を作っちゃいましょう。利益になった分をまとめてNISA口座に移して中長期で利益が出そうな株式投資すると、こちらは非課税ですのでより美味しく増やせると思います。

メインのパソコンの構成変更

最近たまに起動をミスることがあり、次世代のPC立ち上げを密かに検討しつつ、コロナのせいで株価下落で当てにしていた資金が大幅に減少。。。。涙、涙 次世代PC立ち上げを先延ばしも視野に入れて、メインPCの構成を変更しました。 内容は、 今使っていない機能は削減、気にならない範囲でグレードダウン、電源周り安定化、ちょっとだけ節電
  • 動画編集ように導入していたNvidia GTX960取り外し
  • サウンドボードM-AUDIO AP192K取り外し
  • 玄人志向 ノイズ低減シールドボード PCI NO-PCI(強化改造済)追加
でしたが、使っている筐体が新品ジャンクで格安で購入した筐体で、側面が強化ガラスなんです。 しばらく使っているとホコリが気になり始めます。 せっかく多少のイルミネーションもあるのに汚いのは興ざめです。 空気フィルターも導入しました。

パソコンに空気フィルターを導入

主に前面から吸気なので、前面の吸気用のファンに空気フィルターを取り付けました。 パソコンの前面吸気ファンこれでパソコンに空気清浄フィルター取り付けは簡単! エアコンフィルターについているマジックテープを貼ります。 メッシュファンフィルターにマジックテープを貼るエアコン空気フィルターに被せてサイズを合わせてカット カットして、貼り付ければ完了 パソコンに空気フィルターをつけるキレイなパソコン内部をホコリからガードこれで、パソコン内部をホコリからガードして、長期間キレイなままで使えそうです。 (厳密には筐体下からの吸気もありますが、今回は未対策。。。(汗)) 購入したのは、

PC ケースファン 280?用 防塵 マグネット グリル メッシュ ファン フィルター 2枚入り

新品価格 ¥1,399から (2020/3/18 23:03時点)

東和産業 エアコンフィルター NEW AERO Clean 3枚組

新品価格 ¥530から (2020/3/18 23:04時点)

新規にパソコン組むなら、空気清浄フィルターの取り付けを配慮して以下の筐体が良さそうです。予算が組めれば、次期パソコンはこれらの筐体を使う予定です。

Cooler Master Silencio S600 TG 静音型 ミドルタワー PCケース [強化ガラスモデル] CS7617 MCS-S600-KG5N-S00

新品価格 ¥11,544から (2020/3/18 23:08時点)

Cooler Master Silencio S400 TG 静音型 ミニタワー PCケース [強化ガラスモデル] CS7619 MCS-S400-KG5N-S00

新品価格 ¥9,205から (2020/3/18 23:08時点)

フロントカバーが開きドアとなっていて簡単にフロント吸気面にアクセスできます。

コロナウィルス !? 花粉症 !?

ここのところ長く、鼻水や咳が完全に収まらなくって、目も痒くなってきた。 ん〜、これは花粉症だな! 毎年のことで、ひどい時には微熱も出るし、症状だけだとコロナと区別が難しいような気がします。 そんな状態で、ハンダゴテやホットボンド(グルーガン)を使うと部屋にも鼻にも臭いが残って気分が悪くなったり、症状の悪化がしそうです。 そこで、ハンダ煙吸引器にもなるかなということで、卓上型の空気清浄機を調べて、購入してみました。

思いの外に効果のあった空気清浄機

事務所に使っていいるリビングにはダイキンの空気清浄機もあるので、部屋全体はそれなりになってはいると思うのですが、局所的に発生するものに対しては、効果はあまりありません。 導入した空気清浄機は、車載空気清浄機で電源はUSBからの給電となっていますので、PCのUSB3から給電して机の上におきました。 導入してまだ2日めですが、目の痒みがほとんど収まり、咳も机にいる間は全くでなくなりました。思わぬ効果ありの結果でした。

購入した空気清浄機の紹介

これ↓

Big-fun 空気清浄機 車載空気清浄機 空気清浄器 プラズマクラスター 除菌消臭 静音 自動オフ機能 ミニ 車載/卓上 空気の塵/花粉/タバコの煙/PM2.5/ホコリを分解 USBケーブル付き 日本語取扱説明書付き HEPAフィルター 空気センサーあり (二代)

新品価格 ¥2,064から (2020/3/18 22:20時点)

Big-fun 空気清浄機 車載空気清浄機 空気清浄器商品の中身は、フィルター取り付け済みの本体とUSBケーブルに日本語の説明書 Big-fun 空気清浄機 車載空気清浄機 空気清浄器 フィルター部分Big-fun 空気清浄機 車載空気清浄機 空気清浄器 フィルター部分 一応、交換用のフィルターも売っているようですが、最悪自分で作れそうなものを選びました。 ダイキンの空気清浄機などに使われている蛇腹のフィルタを適当なサイズにカットして純正フィルターのフィルター部分を交換できるように改造しちゃえば良さそうです。 このまま使用しても良いのですが、念の為にひと工夫 卓上空気清浄機のフィルターに東芝 消臭ジェル エアリオンを追加 東芝 消臭ジェル エアリオンを追加しました。 ペットボトルのフタに詰替え用の東芝 消臭ジェル エアリオンを入れただけです。 東芝 消臭ジェル エアリオン 追加自己満足の世界かもしれませんが、結果は良好です。 ほぼ半日ハンダゴテを使用していましたが、臭いもほとんど気になりません。 近くに置かないと効果が無いでしょうから、やっぱりそれなりの音はしますが、慣れれば無視できるレベルかと思います。 しっかり臭いに反応して、勝手に強になります。さすがに少々うるさいかな。集中していたら無視できるレベルですが….