Posts tagged ‘CO2 ventilation control’

以前作った換気扇の自動制御システムは、改良したいことを挙げればキリがないものの、ちゃんと使えている。: 通常時は間欠的に(今はon: 26分, off: 14分, on率: 65%)換気扇が回り、ガスコンロを使ったり作業をしたりしてCO2濃度が高くなった場合は低くなるまで連続で回る。

その後、ちょっと思い付いて、以下のように 動的(言ってみれば適応的)に換気扇の動作モードを変更する機能を追加してみた。

基本機能: 定常的にCO2濃度が高目の場合は換気扇のon率(回している時間)を増してCO2濃度の上昇を抑え、低目の場合は逆にon率を下げて余計な換気を抑えるようにする。

当初は「余計な換気を抑える」必要は ない気がしていたものの、外からの臭いを取り込む可能性をなるべく減らすためと、仕組み的に可能なので(= おもしろそうだから)入れてみた。 (こういう余計な思いつきが面倒を増やすのだ!www) だが、近頃、部屋の冷暖房効率の改善に繋げられそうなことに気付いた。

この機能は、今まで僕が手でやっていたこと(CO2濃度が普通でない場合、PCのリモコンアプリで換気扇のモードを切り替える)で、それを自動化する。

処理: 難しいものではなく、以下のようにした。

  1. CO2濃度の取得・チェック処理をする時に、以下を実行する。
  2. CO2濃度の長時間移動平均(→ LTMA_CO2)を求める。
    • 今は換気扇の間欠運転周期(今は全部40分)の2倍の時間(→ 80分)分を求めている。
      • この値は換気扇の運転周期の整数倍であることが望ましいので、その時に設定されている周期から計算している。
  3. LTMA_CO2に従って換気扇の動作モード(→ on率)を切り替える。
    • ただし、CO2濃度が高くて換気扇を連続で回している場合を除く。
    • LTMA_CO2のしきい値と動作モードの対応表を使っている。: 今は以下の設定にしている。
      • LTMA_CO2: on率, ()内は動作モード
      • <= 670ppm: 50% (LL)
      • <= 710ppm: 55% (L)
      • <= 750ppm: 65% (M)
      • > 750ppm: 70% (H)

現状の制限として、PCで制御しているため、外出時や寝る時などにPCを停めると その時点の設定で固定されるので、不要に高いon率が続くことや、低いon率が続いて就寝中にCO2濃度が高まってしまう可能性がある。そのため、余り大胆なon率は設定できない。

これについては、PCを停める(スリープ、停止)前に通常のon率のモード(上の"M")に戻すとか、ラズベリーパイのようなマイコンに移植して常時制御すれば対応できるが、まあ、そこまでこだわることではないので、このままで良しとしている。

ちゃんと動いているものの、「換気が最適化されているなあ」などという体感は ないし、グラフを見ても特段の変化は見えない(効果が ない訳では ないだろうが・・・)。なお、グラフが右肩下がりなのは、近頃は なぜかCO2濃度が低目になっている※ためだろう。

※原因は分からないが、暑い時は身体の代謝が増えて排出するCO2濃度が増えていたのが涼しくなって減ったためか、外気の濃度変化のためかと想像している(そういうことがあるか不明 ← 少し調べたところでは(下を参照)、逆のようだ・・・)。

身体の代謝は主に体温維持のためだそうで、夏に減り冬に増えるようだ。 (→ 参照)

ただ、個人的な経験からの想像だが、身体に(特に夏の熱い)日ざしや外からの輻射熱が当たって暑くなると、身体の活度のようなものが増して代謝が増すのではないかと思う。その証拠に汗をかく。それは作業で汗をかく時と同様で、代謝が増しているのではないか?

また、外気のCO2濃度については、概ね、光合成の活発化する夏に減り、冬に増えるようだ。 (→ 参照) ただ、参照ページを良く読むと(例: 図3)、堂平山では2-7月に高く、9月頃に最小になっているのには合っていそうだ。

もし代謝も外気も関係ないとすると、センサの温度補正が うまく行っていないことが考えられるが、今、天気が良くて室温が高い(約28℃)にも関わらずCO2濃度は低い(約670ppm)ので、温度補正は大丈夫そうだ。

あとは、付近の道路の通行量(あるいは渋滞頻度)が減ったとか、工事が下火になった関係だろうか?

近頃の部屋のCO2濃度(緑): 日, 週, 月, 年 (左上→右下), 水色は室温に比例した値; 9/1(week 35)頃から動的に換気扇の動作モードを変えている。

ただ、この機能でon率が低くなっていることがあるにも関わらず、特段 通常時のCO2濃度が高目になっていないのは、CO2濃度が高目になった時にon率を上げているため(→ うまく行っている)だと推測する。また、動作モードを見ていると(グラフがあれば分かりやすそうだが ない)、近頃はon率の低いLになることが多いので、長期(季節?)的なCO2濃度の変化に追従できていることも推測できる。

それで、今後更にCO2濃度が低くなるかも知れないので(期待して)、今朝 LLのモードを追加した。

 

(10/7 11:58) 使いながら設定を調整した。

現状のCO2濃度(長時間平均)と換気扇のon率・動作モードの対応表は以下である。

  • LTMA_CO2: on率, ()内は動作モード
  • <= 610ppm: 50% (LL)
  • <= 675ppm: 55% (L)
  • <= 740ppm: 65% (M)
  • > 740ppm: 70% (H)

また、状態の確認が容易になるように、換気扇のon率(→ モード)もグラフに描くようにした。グラフを見たところは うまく動いている感じだ。

換気扇の動的モード切り替えの設定を調整後の部屋のCO2濃度(緑), 室温(青), 換気扇のon率(→ モード, オレンジ): 後の2者はそれぞれに比例した値。

当然ながら、従来の通常時のon率(65%, M)を広く使うのが良いようだ。また、50%(LL)になることは ほとんどなさそうだ。 (上のグラフでの最低は55%, Lである。)

  •  1
  •  0
Keys: , ,

とりあえず、部屋のCO2濃度に応じて風呂の換気扇のon/offを制御するソフト(c2m-wj01-ac-fan.sh)ができた。それにより、火を使ったり汗をかくような作業をしている場合(→ グラフ: 右半分: 作業時, 高い山: 火の使用時)を除いて※、部屋のCO2濃度が常に概ね800ppmを下回るようにできて居る(ここ一か月の平均CO2濃度は約720ppmとなった)。 (→ グラフ: 過去1か月の変化, 過去1日の変化)

※その場合には換気扇が連続して回るので、しばらく経てばCO2濃度は下がる。

そして、適切に換気できるようになったおかげか、近頃は、夕方近くに頭痛が起こることや、外に起因する異臭(例: 煙草臭)がすることが ほとんどなくなった。就寝時の動悸についても改善はしたが、関係はまだ良くわからない。

CO2濃度に応じた換気扇の自動制御処理

基本的に、換気扇はタイマーで常時間欠運転しており、1人で安静にしている場合には室内のCO2濃度が増加しないようになっている。ただ、作業したり火を使ったりするとCO2濃度(の増加速度)が高くなり、間欠運転では換気量が足りなくなるため、PCからタイマーを制御してCO2濃度が下がるまで換気扇を連続して回す処理をしている。

以下に処理手順の概要を示す。

  1. センサ(CO2Mini)からCO2濃度を取得する。
  2. 換気扇を回していない場合
    1. CO2濃度が 高い(>= Th_H)場合
      1. 以下のいずれかの場合、換気扇を単位時間回す。
        • CO2濃度が すごく高い(>= Th_Hi)
          • この場合、換気扇を単位時間の2倍回す。
        • CO2濃度の変化率が大きい(>= Th_cr_p_Hi)
        • CO2濃度の短期間移動平均の変化率が大きい(>= Th_cr_st_ma_Hi)
        • CO2濃度の短期間移動平均が大きい(>= Th_st_ma_H)
  3. 換気扇を回している場合
    1. CO2濃度が低い(< Th_L)場合
      1. 以下のいずれかの場合、換気扇の運転を継続しない(ただし、すぐに停めずに現在の運転時間が終わるまでは回す)。
        • CO2濃度が すごく低い(< TH_Li)。
        • CO2濃度が高くなくて中期間移動平均のCO2濃度が小さい(< Th_mt_ma_L)。
    2. CO2濃度が低くない場合
      1. 換気扇を継続して回す。
  4. 次の処理・濃度チェック時間まで待つ。
  5. 1に戻る。

現在の動作設定を以下に示す。

  • 換気扇の常時間欠運転(タイマーによる)
    • On: 26分, Off: 14分 (On率: 65%)
  • 換気扇の自動制御
    • 処理(CO2濃度チェック)間隔: 1分
    • 換気扇を回す単位時間: 30分
      • ただし、CO2濃度が すごく高い(>= Th_Hi)場合は2倍(60分)。
    • CO2濃度を移動平均する時間
      • 短期間: 7分
      • 中期間: 10分
    • しきい値
      • 換気扇を回す関係
        • CO2濃度が右以上の場合、「高い」とする。 (Th_H): 775ppm
          • CO2濃度が右以上の場合、換気扇を回す。 (Th_Hi): 875ppm
          • 前回からのCO2濃度変化が右以上の場合に、換気扇を回す。 (Th_cr_p_Hi): 20ppm
          • CO2濃度の短期間移動平均の変化が右以上の場合に、換気扇を回す。 (Th_cr_st_ma_Hi): 10ppm
          • CO2濃度の短期間移動平均が右以上の場合に、換気扇を回す。 (Th_st_ma_H): 775ppm
      • 換気扇を停める関係
        • CO2濃度が右未満の場合、「低い」とする。 (Th_L): 750ppm
          • CO2濃度が右未満の場合、換気扇の運転を継続しない。 (TH_Li): 675ppm
          • CO2濃度の中期間移動平均が右未満の場合、換気扇の運転を継続しない。 (Th_mt_ma_L): 750ppm

 

作る時に苦労したのは、処理手順(アルゴリズム)※よりも、設定の調整である。いろいろなしきい値(上記)が定常的なCO2濃度や動作の安定性を決める。それらが不適切だと、いつまでも換気扇が回り続けたり、CO2濃度が下がらなかったり、下がってもすぐに上がって、頻繁に換気扇が回ることになる。

※アルゴリズムについては、思い付いたまま、かつ、動かしながら修正したので、上に示すように「何か複雑」になってしまった。

また、常時間欠運転のon/off時間やon率がCO2濃度の減少速度を決定するので、これを人によるCO2濃度の増加速度に合わせる必要がある。以前も書いたように、常にon率に比例する換気能力が得られる訳でなく、ある程度on時間を長くする、あるいは、on率を大き目にする必要があった。

あと、移動平均時間は換気扇を回す・停める「感度」を決める。

例によって、(題や最初に「とりあえず」と書いたように、)いろいろ改良したいことはあるが、現状で大きな不満なく使えているので、まあ、気が向いたら やって行きたい。

 

最後に、前回以降にCO2・換気関連で したことや分かったことなどを列挙する。

  • センサ(CO2Mini)関係
    • 設置位置の変更: メインディスプレイの後ろに設置した。
      • 強い呼気(深呼吸や溜息など)の影響を避けるため。
    • 遮熱・防風処理: CO2Miniは熱(急な温度変化)や風(室内の気流)の影響を受けやすいことが分かったので、それらを抑えようとした。
      • : 机の温度の影響を抑える(低減する、以下同)ため。
        • プラのカップ(ある飲み薬の計量用)と輪ゴムで作った。
        • 振動を抑えるように、中にスポンジを入れた(本当に効果があるかは不明)。
      • 遮熱板: メインディスプレイの熱の影響を抑えるため。
        • ただし、冷房などでの室温変化の影響は防げない。
        • 熱とともに、ディスプレイの下から通って来るであろう呼気も抑える。
        • 段ボールで作り、ディスプレイの側に断熱材(エアキャップ)を貼った。
          • どれくらい効くかは不明。
          • あと、貼る側もどっちがいいか不明だが、こっちがいいと考えた。
      • 防風板: サーキュレーターやエアコンなどでの気流の影響を抑えるため。
        • 段ボールで作った。
      • 遮熱・防風板: 上の二つを統合して簡略化した。
        • 遮熱板と同様に、ディスプレイの側に断熱材を貼った。
  • 部屋のCO2濃度について
    • CO2濃度の増減速度の例(速度は さまざまな要因で変動する)
      • 人による増加速度
        • 換気扇: off (1人): 約5-10ppm/分
          • 活動量によって増加速度は変わる。
        • 換気扇: 間欠on(on率: 65%)+自動制御 (1人): ほぼ0ppm/分 (長時間を見た場合)
          • 状況により正の場合(例: 0.3ppm/分)もある。
      • 換気扇による減少速度
        • 換気扇: 連続on (1人): 約3ppm/分
        • 換気扇: 連続on (無人): 約3ppm/分
          • 本来は上よりも減少速度が大きくなるはずだが、状況が異なるため、同じ値になった。
        • 換気扇: 間欠on(on率: 65%) (無人): 約2ppm/分
          • 約3ppm/分(連続on)*0.65= 1.95ppm/分なので、概ね想定どおりの換気率が得られた。
    • 作業するとCO2濃度は(急)増する。
      • 火気がなくても増える。
      • 汗をかくような作業だと増加速度は大きくなる。
      • 食後や日光が射した場合も増える。
        • 身体の代謝が大きくなるため?
    • 作業しなくてもCO2濃度は増える(溜まる)ので、換気は必要。
      • 近頃の住宅は24時間換気が必須になっている必要性が分かった。
    • その時によってCO2濃度の減りやすさが違う。
      • 原因不明: 風向き? 天気? 時間帯?
      • 外気のCO2濃度との差が小さいと換気効率が下がる(→ 室内の濃度が低くなると現象速度が落ちる)のはありそう。
  • 頭痛や就寝時の動悸と換気・CO2濃度の関係
    • 適切に換気(自動制御)するようになってから、午後・夕方の(頭痛薬が必要なほどの)頭痛は滅多に起こらなくなった。
    • 寝ている時の動悸は まあまあ減った。
      • 寝室の換気が悪かったせい?
        • 換気の影響は大きそうだが、それだけではない。
      • 近頃、寝ている時に暑いと(約28.5℃以上)動悸が することが分かったので、換気の他に、(寝る前と)寝ている時に寝室を適切な温度にする必要があることが分かった。
        • 寝ている時が難しい。: 同じ温度でも、体感で暑く/寒く感じることがあるため。
      • 上記以外に飲酒や疲れも関係ありそうだが、まだ良くは分からない。
  • 外からの異臭問題と換気の関係 (概略: 換気以外に さまざまな試行錯誤をしているので、「何とかなった」と思えた時に書きたい。)
    • 臭いを減らすには、基本的に換気し続ける方針で良さそう。(CO2と同様)
      • 外が臭いことはあるが、ずっと臭いままということはないので、換気すれば臭いは減る。
      • 換気しないと室内に臭いが溜まってしまう。
      • 一方、埃やゴミが溜まって臭い経路(= ダクト)があるので、そこからなるべく吸気しないことも重要そうなことも分かった。
    • 近頃、部屋が煙草臭くなることが ほとんどなくなった。
      • 換気とサーキュレーターの効果かも知れないが、まだ確定できない。
        • 今まで何度もあったのだが、大丈夫と思って少しするとブリ返す可能性があるので。
      • 暑くなって、外で、あるいは、家や車の窓を開けて煙草を吸わなくなったから?
        • ただ、涼しい日や雨の日も臭わないので、換気とサーキュレーター(+他の対処)の効果があるのかも知れない。

 

(8/1 7:32 写真のキャプションを少し修正)

  •  0
  •  1
Keys: , , , ,

換気扇の換気効果・能力を知りたくて、CO2センサを買い、自動測定・記録・グラフ描画できるようにしたら、本当に いろいろなことが分かった。

どうして買うことにしたかというと、外からの臭いの侵入を防止しつつ、換気効果が充分な換気扇の動作設定(on/off比・周期)を調べたいと思ったのだ。また、その頃(先月-今月頭)は結構体調が悪かったし(今も まだ完全ではない)、毎日のように夕方近くに頭痛薬を飲むほどの頭痛が起こっていたので、それがCO2の影響なのかも調べたかった。

以前買ったC国製の臭いセンサ JSM-131SC※が使えればよかったのだが、そもそも出る値が怪しかったし、先日、経産省のガイドラインでチェックしたら駄目なことが分かったので、新たに買うことにした。

※今は同じ型番のものは ないようだが、青い縦長(下半分が少し細い)で数字が4行で表示され、画面の下にボタンがX型に5個配置されたもので、CO2, TVOC, HCHOが測定できると うたっているもの(例: 写真: 右側)は同じだろう。

なお、表示行数が多く、ボタンが画面の下(写真の"Air Quality Detector"の部分)に横一列に配置されているもの(カラー液晶のものが多い)やケースの形状が異なるものの画面表示が同じものも同類と推測する。

近頃、それらのCO2センサを上記ガイドラインに沿うもの(NDIR式)に換えたものを見た気がする。

(6/19 19:53) そういう いい加減なセンサを一発で見分ける方法が分かった。TVOCの表示がある場合、単位が"ppm"ならアウトだ。TVOCの量を示す単位はμg/m3だ。「TVOCは*(例: トルエン)として測定している」というような注釈があれば別だが、なければ、作っている人が何にも考えてない証拠だ。ただ部品を集めて組み立てて、「(なんか分からないけど)数字が出ればOK」というだけ。

というのは、TVOCはいくつかの揮発性物質の総量なので、ppm(parts per million)では表せないからだ。TVOCをppmで出すのは、「財布の中にお金が何個ある」と言うようなものだ。コインと紙幣の総数を調べるようなものだが、一体どういう意味があるのか。

まあ、μg/m3でも同様な気もして来たが、こっちは財布で例えればコイン全部の重さなので、個数よりはマシだろう。

結局、安価なセンサでTVOCを出しているものは全部アウトで良さそうだ。手頃な価格でTVOCをなす物質(現在は13種類)それぞれの濃度を調べて総和できる訳がない。いい加減にしろだ。

(6/23 7:48) 余談というか駄目押し。: 上のクソなC国製センサの箱には誇らしげに"RoSH"と書いてあった。(フォントが同様なので)RoHSの間違いか わざとか分からないが、RoHSすら分かっていないか誤魔化しているのかも知れず、そういうところでも見分けられそうだ(まあ、箱は買わないと分からないことが多いが)。

調べてみたら、手頃な価格で(測定・計測マニアの)僕にとって まともな製品は少なかった。: 例えば、「日本製」をうたっていても、(僕にしてみれば)いい加減なものが多かったのは残念だ。「日本で組み立て」しただけで、製品企画とか検査とかサポートなどが ちゃんとしてないのなら、単に高いだけなのでC国製のほうがいい。

主要部品がC国製で、ただ それを使って組み立てているだけで「日本製」って言うのは、先日のアサリなどと同じでは?

そして、コロナの影響か、「ぽっと出」の会社が上述のガイドラインに合う(だけの)ものを出していたり(売れると思ったんだろう)、以前のクソなC国製製品のセンサをガイドラインに合うもの(化学式 → NDIR(光学)式)に換えただけの(と思える)ものが結構あった。

(細かい話) 調べて分かったことだが、ただNDIRのセンサにすればいいという訳ではなく、センサ自体の精度はもちろん、2波長方式でないと安定性や経時変化が良くないようだ。

それから、NDIRセンサは光で測定しているためか、あまり小さいものでは良くなく、長いもののほうが精度がいいという情報もあった。素人だけど、確かにそういう気がする。

NDIRに換えただけのものは ここまでで落ちる。

あと、「自動較正」を うたうものは一見便利そうだが、使用環境について結構危うい仮定・想定(= 使っている場所は、定期的に(例: 毎日1回)屋外と同等のCO2濃度(約400ppm)になる)をしているので、結構な落とし穴になる。かといって、単にそれを止めればいいものでもないから難しい。 (詳しくは後述)

自動較正を止められないものは ここで落ちる。

残った候補はどれも完璧ではなかったが、少し不安はあったものの、CO2-mini※という製品を買った。約6800円だった。

※USのCO2Meter.comという会社の製品(CO2Mini)を日本のカスタムという会社が自社ブランドで発売しているもののようだが、元々は台湾(ZyAura ZGm053U)あるいはロシア(Master kitまたはDadget MT8057MT8057S?)の製品のようだ。複雑な経緯だが、CO2Meter.comのページを見るとなかなか ちゃんとしているので、それなりに信頼できそうだ。

製品候補と評価

僕のCO2センサに対する要求条件は以下である。

  • NDIR, 2波長型センサ
  • 単体で使えるもの(クラウドベースやスマフォ必須でない)。
    • 可能ならPCに繋がる。
      • 通信の仕様が公開されている。
  • 価格: 1万円以下
  • 可能なら、温度, 湿度が測れる。
    • 更に可能なら、気圧, HCHO, CO, PM2.5なども測れる。

検索して比較した製品と、それらの仕様や口コミからの評価(個人的印象)を書く。

  • × NETATMO (リンク先は並行輸入品): 有名だしNDIRだが高い(3万円くらい)のと2波長でなさそうなのとCO2は手動測定らしいのとクラウドベースなので却下
  • × Awair (リンク先は違うかも知れない): 悪評が多いので却下
  • × LinkJapan eAir: 高い(2万円くらい)のと較正が面倒とのことなので却下
  • × GiA, Prana air SQUAIR+: Amazonにないので却下
  • × Huma-i: NDIRでないので却下
  • × ピピっと換気君, TOMO-CO2-002: 1波長のようなので却下
    • これと同じ外観の格安粗悪品が出回っているとのこと。
  • × OMNI HCOM-JP003: 1波長のようなので却下
    • 画面表示から想像すると、C国製のセンサをNDIRにしたようなものか。
    • このメーカーは質問を無視したので、たとえ機能・仕様が良くても却下した。
  • × EPEA-CO2-NDIR-07: 1波長なので却下
  • △- EPEA-CO2-NDIR-08: 「2波長」と書いてあるが、証拠がない(センサのデータシートに記載されていない)ので却下した。
  • △ ポケットCO2センサーPro: 2波長だが、高い(約2万円)のと自動較正を止められないので却下した。
    • ディスプレイなしのもの(Lite)にディスプレイを後付けしたため、使い勝手が考慮されていないのも良くない。
      • 通気穴が上下にあるのとUSBケーブルが邪魔になるので、ディスプレイが見えるように立てて置くことができない。
  • マーベル001: 製品としては妥当そうだったが、高い(1.7万円くらい)ので却下した。
  • Custom CO2-mini: 2波長、PCに繋がり、値段も妥当(約7-9千円)で、ほとんど問題がない。
    • 気になったこと
      • 精度が今一つ(±100ppm), 湿度補償がない。
        • センサが長く、精度が期待できそうな感じもしたが、仕様上は良くないようだ。
      • PCへの接続は可能だがサポートされていない。
        • データに変な暗号化がされており、ちょっと厄介・筋が悪い印象。 (→ 購入後に分かったのだが、数年前に暗号化が解除されていた。: 後述)
      • (口コミ) 当たり外れがある。
      • (口コミ) ディスプレイがCO2濃度と温度が交互表示で不便 → 目障りになる可能性がある。
      • (口コミ) 高周波音(10kHzくらい)がする → 耳障りになる可能性がある。 (→ 購入後にチェックしたが、高周波音は検出できなかった。後述: 6/15 16:21)
  • △- Radiant ZGm27: 2波長、約1.3万円で機能は妥当だったが、下のモノタロウのほうが同様な機能なのに安くて良さそうだった。
  • △ モノタロウ CO2モニター NDIRセンサー式: 2波長、約1万円で良さそうだったが、質問への回答が遅過ぎたのとPCに繋がらないので却下した。

上で△にした4つが「最終選考」に残った。

  • PCに接続する場合
    • ○ CO2-mini
      • 一番製品として出来が良さそう(まとまっていそう)。
    • × ポケットCO2センサーPro
      • 自動較正を止められないから却下。
  • PCに接続しない場合
    • × CO2モニター (モノタロウ)
      • 質問への回答が遅過ぎた。
    • × マーベル001
      • 高いので却下。

結局、一番出来が良さそうなうえにPCに繋がるCO2-mini(以下、USに合わせてCO2Mini)にした。

CO2Miniで気になること(上述)については、精度は そこまで求めないから良し(ただし、経年変化は抑えたいので2波長がいい)、PCへの接続は検索すると いろいろな例があるからできそうだし、できなくても「+α」なので良し、当たり外れは最初の数か月で分かる(1年保証)、高周波音があったらケースを何とかする、交互表示は我慢しようと考えた。

CO2Miniを使い始める。

Amazonに注文したら翌日に届いた。約6800円だった。早速動作確認したら、(運良く?、)全く問題なく動作した。また、上記の経産省のガイドラインでチェックして問題なかった。: 呼気で値が上昇し、アルコールの影響はなく、屋外では充分に値が下がった(10分くらいで約420ppmまで下がった)。

一方、上述のJSM-131SCでは呼気以外は すべて駄目だった。更に、居間でCO2Miniと一緒に測定したら、CO2濃度の値も変わり方も全く合っておらず、全くデタラメなものだと分かった。 (写真: 左: CO2Mini: 995ppm, 右: JSM-131SC: 523ppm)

気になって居た高周波音は聞こえず、バックライトがなくて明るくないせいか、ディスプレイの交互表示は気にならなかった。

ただ、見たい表示と違う場合に待つのが面倒なことがある。が、(後述のように)PCで状態が分かるようにしたので、ディスプレイを見る必要は ほとんどなくなった。

それから、例によって「ちょっと改良」して(背面の通気が悪そうだったので、背面パネルをメッシュにして机上の明るさ・温度センサ(YL-40)のベースの上に設置した(ベースの厚みのため、少し持ち上げる脚を付けた※)。

※脚は、いつもの楽天のポケットWi-Fiの緩衝材をテキトーに切って作った。

(6/23 14:11) 測定を続けているうちに、どうも室温が変わる時にCO2濃度が異常な値になる(大きくなる)ことがあるような感じがした。背面パネルと換えたメッシュは通気が良過ぎるため(保温が悪く)、CO2センサと温度センサ(内の空気)の温度が食い違って正しい温度補正ができず、濃度がおかしくなるのではないかと推測した。それで元々のパネルに戻したら、YL-40の温度(室温)との差が大きくなる(とは言っても±0.5℃以内だろう)ことはあるものの、CO2濃度は確かそうな値になった。

なお、設置位置や置き方にも変更があるが、別の稿に書きたい。

CO2MiniをPCに繋ぐ。

PCに繋ぐのも思って居たより簡単で、届いた日の夕方には出来てしまった。そのためのソフトを探すと いろいろなものがあるが、製品を選んでいる時から参考にしていた、インテックス 平林さんの「CO2 計測 - USB」(2017)に載っているLinux用を試したら、ちょっと修正した※だけで動いた(→ 最初に取れたデータをスプレッドシートに取り込んでグラフにしたもの)ので、それに手を入れて使っている。

※以前は、CO2Miniのデータは暗号化されていてデコードする必要があったが、近頃のものは暗号化されなくなったようで、そのままではデータが読めなかった。が、少しいじってみたり、データをダンプしてみたりしつつ、「物は試し」でデコード処理をスキップしたら読めるようになった。CO2Miniからのデータ取得で苦労したのは ここだけである。

そのプログラムはソースファイル名が"a.c"だったりと、かなりワイルドな感じではあるが、一発でコンパイルできて起動した(ただし、上記のように製品の仕様が変わったために、そのままではデータは取れなかった)ので、例とかサンプルとしては必要充分なものだと思う。逆に、やたらに機能を豊富にされると、本当に必要な部分が分からなかったり、抽出が難しかったり、依存関係で問題が生じて使えなかったりするので、これでいい。僕のスタイルとは随分違うが、悪い印象は なかった。

ただ、実行プログラムにsetuidするのは控えたいので、sudoでrootで動かしている。

参考までに、オリジナルからの変更内容は以下である。

  • プログラムの名前を"co2mini_daq"に変えた。
  • 一定時間ごとにデータ取得を繰り返すようにした。
    • 取得間隔は1分にしている。
  • データを取得した日時をデータの前に出すようにした。
  • CO2MiniのデータがUSBのバッファに溜まって遅延するのを防ぐため※、取得間隔以内でも連続してデータを取得し、それらを平均した値を出力するようにした。
    • そのため、CO2濃度も浮動小数点で出る。
    • ※本当に溜まるのかは分からないが、CO2Miniを抜いても しばらくデータが出続けていたので、溜まっていると考えた。
  • 仕様に書かれていない「謎のデータ」(タイプ(item)が"P", "B"以外のもの)も出力するようにした。
    • 本来のデータと区別できるように先頭に"#"を付け、行数を減らすため1行にまとめて出す。
  • エラー処理・リトライ処理を追加した。
    • 例: CO2Miniを抜いても、再び挿せば(別のポートでもOK)データ取得が再開される。

CO2Miniを使い倒す。: 自動測定・記録・レベル表示・グラフ化できるようにした。

簡単にPCに繋がったのに気を良くして、CO2Miniから取得したデータ(CO2濃度, 温度(≒ 室温))をログに記録し、CO2濃度に従ってデスクトップ(Xfce)のパネル(タスクトレイ相当)に本体のランプ的なインジケーター(水色: 低※, オレンジ: 中, 赤: 高)を出すようにしマウスオーバーで濃度と温度が出るようにした。

※本体のランプの低は緑だが、緑は少し浮くのと余り好きでないので、(どちらかと言えば嫌いでない)水色にした。あとで気付いたが、空気が綺麗なイメージにも合って良さそうだ。

また、測定データ(CO2濃度, 温度)をPCの状態表示ツール(Munin)でグラフに描けるようにできた。※ これで、それまでのようにデータが記録されたログファイルをスプレッドシートにインポートしてグラフを描くなんてチマチマした作業不要で、待っていればグラフが出来ているようになったから、とりあえず何も言うことはないw(とはいえ、いろいろテキトーだし、まだやりたいことはある)。

※ついでに、CO2Miniの温度(≒室温)はYL-40での室温に どのくらい近いか調べたいのと、室温とPCのCPUやマザーボードの温度の関係を確かめたかったので、そういうグラフも描くようにした。

CO2Miniの感想・メモ

期待していたよりずっと いい(ちゃんとした)もので良かった。こういうのは久し振りだ。強いて挙げるとすれば、以下のような「ちょっとしたこと」があった。

  • 上にも書いたが、背面の開口(穴)が小さくて通気が悪そうな気がした。
    • 実用上は問題ないと思うが、反応速度が遅くなりそうな気がしたので、手元にあったメッシュ(アンプのカバーに使った残り)に交換してみた。
      • ただ、実際に使ってみると、メッシュでも反応速度が遅い場合もあって、効果は良く分からない。気流などの要因もあるのかも知れない。
  • 温度の精度は今一つな感じ。(ただし、充分に仕様(±1.5℃)の範囲内)
    • 室温測定に使っているYL-40の温度センサと比べると、0.5℃未満(概ね0.3℃くらい)でズレることがある。
    • 平均値はYL-40と概ね合う(差は0.2℃程度)。
    • CO2濃度(精度±100ppm)もそうだが、余裕を見て(ワーストケースを考慮して)実際より悪目の精度を仕様に出しているのかも知れない。
      • 正直者? 逆サバ?w: 僕は こういうスタンスのほうが好きだ^^
  • 湿度や気圧は測れない。 (仕様にないので当然)
    • CO2MiniからはCO2濃度と温度以外に謎のデータ(複数)も出て来るので、そのどれかが湿度や気圧ではないかと思って ちょっと試した※が、駄目だった。
      • ※値がそれらしくなる計算をした値と、温湿度計の湿度やアメダスの気圧を比較した。
    • それらを少し解析した情報があったが、結局分からなかった。
    • 却って気になる・・・
    • まあ、それらが補正に必要で測定できているなら温度同様に表示・出力するだろうし、仕様に書くはずだ。「書いてないものは付いてない」というセオリーどおりである。
  • (僕の個体では、)口コミにあった高周波雑音(10kHz辺り)は出ていない。
    • オーディオ調整用コンデンサマイクで測定したが、3-20kHzの間にCO2Miniから出る音は検出できなかった。
      • CO2Miniの電源をon/offして比較したが、スペクトラムに顕著な違いはなかった。
        • スペクトラムの18kHz辺りの山は、CO2Miniの横のディスプレイからの雑音と考えられる(マイクを離すと小さくなるため)。
        • 同じく8kHz辺りの山は、測定を停める時のマウスクリックに伴う雑音である(クリックするたびに音量が変わり、今回はoffのほうが大きい)。

以下は備忘録である。

  • 背面カバーは爪で固定されているだけなので、容易に開けられる。
    • 設定ボタンが どこにも固定されていないので、背面カバーを外すと落ちる。
    • カバーを付ける場合は、カバーを机などに置いて穴にボタンを入れ、そこに本体を被せる。
  • CO2Miniに作業した直後はCO2濃度が高く出る。
    • センサ温度に関係しているようで、温度が高いと濃度が実際より高く出るようだ。
      • 温度が正しくなるまで待てば良い。
  • CO2MiniのUSBデバイス名は"USB-zyTemp" (04d9:a052)。

以下に各種情報ページを列挙する。

  • Reverse-Engineering a low-cost USB CO₂ monitor (2015)
    • CO2Miniの暗号化を解読した話
      • 随分苦労したようだけど、暗号化されなくなってしまった・・・
  • USB Communication Protocol for CO2mini (2019)
    • CO2Miniの(暗号化が解除されたあとの)通信仕様 (公式)
  • CO2-miniの通信が暗号化解除されていた (2020)
    • CO2Miniからデータ取得するプログラムを手直ししたあとに見つかった。
  • CO2MeterHacking (2018)
    • 機種が違うため湿度が取れているが、CO2Miniでは常に0しか来ない。
  • CO2-miniを分解してみた (2021)
    • 買う前に内部が見られて参考になった。
  • CO2 + Temperature sensor based on MT8057 and ESP (2019)
    • ロシア語(マニュアルなどは英語), センサなどのマニュアルとプログラム
    • CO2Miniのものとは仕様が異なる。
  • Software for CO2 Monitor (2015)
    • データ取得プログラム (同様なものが新旧多数あり)
  • ZyAura CO2 & Temperature & Humidity Sensor (2021)
    • CO2MiniをESP homeとかいうものに組み込む情報
    • CO2Miniのシリーズは いろいろあるようだ。: MT8057, MT8057S, MT8060, ZGm05, ZGm053U, ZG1683R, ZG1583RUD
  • Предупреждён — значит, вооружён. Часть 1 (Warned - then armed. Part 1) (2015)
    • ロシア語, CO2Miniを使った いろいろな実験? (読めないので詳細不明)
      • ドアや窓に隙間があるほうが換気が良いということなどが書いてあった(どのパートかは忘れた)。まとめからも、この人は そういう居住環境のことをしている方だろうか。
    • Part 3まであり、3では実験の他に内部を少し解析している。
  • MT8057 Детектор углекислого газа (MT8057 Carbon dioxide detector) (2015?)
    • ロシア語, MT8057(この辺りがCO2Miniのシリーズの発端?)の販売ページ(今は終了)。
  • Обзор измерителя углекислого газа CO2 (Overview of the CO2 carbon dioxide meter) (2015?)
    • ロシア語, 構造や仕様の説明など。詳しいことが書いてあって、なかなかためになる。
    • センサの期待寿命や較正頻度も書いてあった。: MT8057とCO2Miniのセンサは同じもののようなので、寿命は5-10年くらいで較正は3年ごとで良い感じだ。
      • "ie. the sensor’s life time is 5-10 years. It is necessary to calibrate the sensor approximately once every three years."
  • Управляем вентиляцией с помощью детектора углекислого газа MT8057 (We control ventilation using the MT8057 carbon detector) (年不明)
    • ロシア語, CO2Miniにリレーを付けて換気扇を制御する、いかにもロシア的な改造。
      • なかなかおもしろそうで、こういう乗りは大好きだ^^
      • ページの下の方の出来上がり図的な写真に にこやかに(不自然な)ポーズをとる女性だけでなく、猫ちゃんが ちゃっかり写っているのがいい。きっとロシアでは普通の構図なんだろうけど、妙に新鮮だ。
        • それにしても、出窓なのかも知れないけど壁が分厚い。一方、寒そうなのに二重窓ではなさそうだ。

部屋のCO2や臭いに関して分かったことなど

まだ数日しか使っていないが、以前は分からなかったことが大分分かった。ちゃんと測って状況を正確に把握するのは重要だと再認識している。

  • JSM-131SCは全くあてにならないデタラメ、crapだった。
    • CO2Miniの半分くらいの値が出る(比較した時点での話)。
    • 換気しても値が変わらない。以前は変わったが、別の要因(TVOC系?)で変化したようだ。
  • CO2Miniを導入する前の換気扇の動作設定(On: 23%, 7分)では換気が不十分なようで、CO2濃度は1100ppmを超えていた。その設定ではCO2が減らず溜まる一方だったようだ。
    • その状態で換気扇を連続して回すと、10分くらいで値が1000ppm近くまで下がり、空気が綺麗な感じに近付いた。
    • そこで、換気扇の動作設定を修正して なるべく800ppm以下を維持するようにしたら、以前より随分良くなった。
    • 冒頭に書いた、午後になると起こる頭痛はCO2が溜まって起こったのかも知れない。
      • 元の換気扇の動作にして本当にCO2のせいだったかを確かめることは可能だが、頭痛だの不調になるのは嫌なので、気が進まない。
        • まあ、確証はなくても改善できたので良しとしたい。
  • (上の理由として考えられること) 換気扇の間欠動作の換気能力が想定(計算)と合わなかった。
    • 換気能力がon(回す)率に比例しないようで、on時間が短いと換気能力はon率から求めた値より低い。
    • On時間が15分以上なら、想定に近い換気能力が得られる感じ。
      • 30分だと充分良い。
    • その理由は分からないが、以下を推測している。
      • 換気扇を回してから換気効果(例: CO2が減る)が出るまでに時間が掛かる(遅延時間)。
      • ステップ応答みたいなもので、on率=出力振幅にならない。
        • 空気の動きに対する部屋の特性はLPFみたいなもので、急な変化は減衰して効果が小さくなってしまう?
        • ただ、その「減衰した分」がどうなるか謎。
      • On時間と排気(換気)量は比例するのかも知れないが、換気扇近く(人が居ない)の空気はCO2が少ないため、「遅延時間」部分の排気はCO2の低減に寄与しない?
      • 空気に慣性があって、長く動かすと気流ができて排気効率が上がる?
        • 実際、長く回していると風(気流)を感じる。
    • → そのため、換気扇の間欠動作の各モードの設定を変更し、基本的にはon時間を30分以上にしている。
      • いろいろ試したところ、on/offそれぞれ30分(on率50%)なら、この部屋で一人で安静にしている場合にCO2を漸減できるようなので、それを標準の動作モードにしている。
  • 外の空気は(意外に)綺麗。
    • 玄関の辺りで測ったら、10分くらいで420ppm前後(ほとんど自然の最低値)になった。
  • どういう訳か、朝(7-8時頃)にCO2濃度が上がる。
    • その頃に食事して代謝が活発になるせいか、近くの道路が通勤で混んで車の排ガスや中での喫煙や、近くの工事の関係かと想像しているが、まだ分からない。 → 更に観察が必要である。
      • 食事であれば、昼や夜も上がるはずだが、必ずしもそうでもない。
      • 道路が空いていても上昇することはある。
      • 工事がなくても上昇することはある。
  • (当然ながら、)部屋に人が居なければCO2濃度は下がる。
    • 人によるCO2濃度の増加は意外に大きく、人が居なければ換気効率が随分向上する(CO2濃度の減少が大きい)。
    • 人が部屋に居ると かなり換気しても400ppm付近までは下がらないので、自動較正は不可能(逆効果になる)。: 詳細は後述。
      • 無人で換気扇を連続して回せば可能かも知れない。
        • → 外出した時に試したら、CO2濃度の減少速度は約-200ppm/hくらいで、400ppmまでは下がらなかったが、もう少し長ければ行けそうだ。
  • (これも当然ながら、)部屋で火(ガスコンロ)を使うとCO2濃度が激増する。
    • 10分くらいで250ppmくらい上がった。 (→ グラフ: 右端)
    • 「火を使う時は換気扇を回せ」ってのは十理あるw
  • 部屋に嫌な臭いがない時に感じる「空気が綺麗な感じ」(いわゆる「新鮮な空気」的)はCO2濃度とは関係なさそう。
    • → 臭い物質とCO2は同じではない(それは そうだ)。ただ、部屋に空気が入るところで物質がフィルタリングされる訳ではないから、臭いのない状態でCO2濃度を下げるようにすれば臭い物質の濃度も下がるはずだから、その方針は悪くなさそうだ。
      • ただ、(以前も書いたが)外が臭い場合には どうしたらいいかが分からない。
    • 一方、CO2には臭いはないものの、濃度が高い場合には臭いを感じるという情報を見た気がするので、CO2濃度が高いために部屋に嫌な臭いがするように感じる場合もあるように思う。
      • そうでなくても、部屋のCO2濃度が高いということは臭い物質も溜まっているだろうから、それだけ臭くなる確率が高いことは確かだ。

今後やりたいこと

CO2濃度の自動測定が出来るようになり、(先日書いたように)PCから換気扇のリモコン(換気強度の設定)も出来るので、それらを繋げればCO2濃度に応じた換気扇の自動制御ができる。例えば、いつもは弱めの換気強度(換気扇の動作モード)にしておき、CO2濃度が高くなったら しばらく(例: 15-30分)回すなどである。あるいは、CO2濃度に応じて自動で換気強度を切り替えることも考えられる。

あと、季節に応じて換気強度を変えることも考えられる(冬や夏に換気し過ぎると空調が効かなくなりそうなので)が、空調のために換気を弱めるのも良くないから、余り調整の余地はないかも知れない。

なかなか おもしろそうだ(実際にやると疲れるが)。

CO2センサの自動較正機能について

CO2センサには自動較正/校正/補正機能があるものが多い。いくつか種類があるが、基本的には、ABC(automatic baseline calibration)と呼ばれる方式である。調べてみると余りにも乱暴な方式なので、僕は即座にoffにしたくなった(実際、CO2Miniの電源を入れて すぐにoffにした)。というのは、(上にも書いたが、)測定地点が定期的に(例: 毎日1回)屋外と同等のCO2濃度(約400ppm)になることを想定し、決められた期間の中で最低の濃度が(例えば)400ppmであるとして測定値を補正(引き算)するだけのものだからだ。

「あのぉ、屋外は確かにCO2濃度は低いけど、その値は場所や季節や時間で かなり変動するし、そもそも測定場所が屋外と同じように綺麗になる保証は ないんじゃないすか?」と言いたい。

これがどういう問題になるかというと、自動較正が起こるたびに値がふらつく(較正前後で不連続になる)のは確かだし、CO2濃度が常時低くならない場所では確実にCO2濃度が低く出るし、そうでない場所でも長く使うと表示されるCO2濃度が低くなっていくかも知れない。

確かにセンサの経年変化を補償する必要はあるし、その点で これは便利だから あってもいいが、on/offできなかったら話にならない。※ 実際、検索したら、この機能があるのを知らずに農業(ビニールハウスだったか)に使ってしまい、あとからoffにしていると思われる例が出て来た。

※Offにできない製品は、企画段階で使い方の検討が不十分だとか、そもそも詳しくない人が作っている可能性がある。もし、常にonで使っても問題ないような特別な用途・場所向けの製品なのなら、そういう注意を書くべきだ。いずれにしても、会社の見識や真面目さが疑われる。

偶然にも、上のCO2Miniのデータ取得プログラムの平林さんも僕と同様な意見なので安心した。以下、少し長いが、その「CO2 計測 - USB」から引用する。

多くの簡易測定器で使われているのは ABC Calibration(Automatic Baseline Calibration) と呼ばれる方法で、 週に一度は無人で CO2 発生源がなく、 測定場所の CO2 濃度が外気と同じになるだろうという期待に基づいたものです。 つまり、8 日間といった区間に於ける CO2 濃度の最低値(base line)を 400 ppm に校正してしまいます。 しかし、住宅、オフィスなどの施設は常時居住者が居て、 CO2 の最低レベルは 600 ~ 800 ppm になりますから、 これを使うと実際の濃度より 200 ~ 400 ppm 低い測定値が得られ、 大きな誤差が出ます。

以上のようなことから、僕だったら、経産省のガイドラインに「自動較正機能があるものはon/off切り替えが可能なこと。」と その理由、on/off設定の目安を入れるだろう。

なお、購入したCO2Miniは その自動較正をon/offできるのはいいが、その場のCO2濃度で即座に較正する機能はなく、自動較正し続けるか8日後に1回だけ自動較正するという設定しかない。

それで、仮に経年変化を較正するには どうしたらいいか考え、以下のようにしようとしている。

  1. 経年変化を較正する時、「8日後に1回だけ自動較正する」設定にする。
  2. 屋外にセンサを持参してCO2濃度が充分低い状態で充分(1時間くらい?)待つ。
    • → その値が最低値として記録されるはず。
  3. センサを元の場所(室内)に戻す。
  4. → 8日後に、屋外で記録された低い値で較正されるはず。

この時に問題になるのは、屋外で測定する時と部屋に戻る時にセンサの電源をonにし続ける必要がありそうなことだ(センサにはバックアップ電池や時計はないから、電源を切ったら「8日間」というのが分からなくなってしまう)。そのため、モバイルバッテリーと補助電源の付けられるUSBケーブルを用意する必要がありそうだ。

そのケーブルには、モバイルバッテリーからPCに、あるいはその逆に電源が逆流しないような仕組みが欲しい。

あるいは、(上に少し書いたが、)換気扇を連続運転して外出して(部屋を無人にする)、部屋のCO2濃度を充分に下げられれば外に持ち出さなくて済み、補助給電可能なUSBケーブルなども不要だ。

試したら、長時間掛ければ行けそうな雰囲気ではある。 (グラフ: 右端近くで急に下がっている部分)

そもそも、どのくらいの頻度で較正すべきか調べたら、CO2Miniのメーカーのサイトの資料"AN131 – CO2 Sensor Calibration: What You Need to Know"には以下のように書いてあった。

How Often Should A CO2 Sensor Be Calibrated?

The more accurate CO2 level reading required, the more often it should be calibrated.
・ Scientific Experimentation – Before each test
・ Personal Safety – Weekly to monthly
・ Greenhouse – After each growing season
・ Manufacturing – Bi‐Annually to Annually
・ Indoor Air Quality – Annually, or not required if ABC is used

OEM品であろうCO2Miniが上と同じでいい保証はないが、ある程度の目安にはなる。僕は"Indoor Air Quality"レベルでいいので、年に1回(多くて半年ごと)で良さそうだ。

また、上の資料には経年変化の影響も書いてあり、

Over many years, both the light source and the detector deteriorate, resulting in slightly lower CO2 molecule counts.

と、「ちょっと低くなる」という感じなので、2波長センサで出荷前にメーカーで検査している前提であれば、余りシビアに考えなくても良さそうだ。

製品選びにまつわる クソおもしろくない話

(以下、「営業妨害」とか言われると面倒なので、会社名などは書かない。)

証拠のない機能・仕様を うたっている会社があった。センサ(素子)メーカーが公表していないことが書いてあっても信用しにくい。今まで書いてない機能が実装されていたことは ほとんどなかったから(あって価値が上がるものを書かない理由は ない)、逆に不信感が増す。例えば、そのセンサを分解して内部の写真を示すとかメーカーからの情報を載せるとか すればいいと思うが、なぜしないのだろう?

質問に回答しない会社があった。買わないと質問すらできないようで(そういう返事すらなしで単に無視された)、まあ、論外なので止めたほうがいい感じだ。

経産省のガイドラインに助言した人が、実はガイドラインの対象となる製品(CO2センサ)を出しているメーカーの関係者だったということもあった。更に、正体不明とも思えるページ(ページを出している会社名などが書いてない)で製品を紹介していたり(ステマ的に思えるが、あれは広告なのか?)、そこでも自分が関わった製品を所属大学の肩書(メーカーの関係者とは書いてない)で推薦していたり・・・

「息の掛かった」とか「お友達」ってやつ? どこにでも居そうだけど、大嫌いだ。

全体的に、コロナ需要で急に参入したとか、ガイドラインが出てから、従来は半導体(化学)センサだったものを急にNDIRセンサに換えたもの(もちろんC国製)が多く、眉唾が多い印象だった。

製品企画時点でのユースケース・仕様・機能の検討が不充分なものも多い。単に「組み合わせて動いたから売ろう!」みたいな・・・

安いとは言え測定器なので、精度などの検証や長期的安定性などの評価をすべきだが、そういう情報を根拠(エビデンス)も一緒に載せていないのは おかしい。それ以前に、精度などが書いてない(分解能は ある)かセンサ(素子)の仕様を転載しているだけ(= 自分で測ってない?)の製品が多く見られるのは おかしい。もっと真面目にやれって思う。

 

まあ、「魑魅魍魎が跋扈」って感じかも知れない。もちろん、個人的印象である。

  •  1
  •  0
Keys: , , , , , , , , , , , ,

(TVは観てないけど)「ナレ死」と似たような感じ、あるいは、仕事じゃないけど状況報告みたいに、今までに書いたことで単体にするほど大きくない、いろいろな「その後」(現状)をまとめて書く。

 

換気扇制御システム (間欠運転リモコン)

自画自賛だが、なかなか便利なものを作ったと実感している。特に、PCのGUIでリモコン操作(動作モード(= 換気の強さ)の変更、指定時間連続onなど)できるのが良い。なお、念のため(C国の製品や自分を信じ過ぎちゃいかん)、定期的に過熱などの安全面を点検しているが、今までのところ問題はない。

そして、自分で作ったものだけど、大分、使い方のコツとか丁度良さそうな設定が分かって来た。

  • 今は、換気扇のon/off周期30分、on率23%(on: 7, off: 23分)を通常動作にしている。
    • それまでは周期を45分にしていたが、後述のように、周期が短いほうが換気具合が平坦に近付くと考えたためである。
  • 空気が悪い感じがするなど、ちょっと換気したい場合は、15分くらい連続して回すと大体は良くなる感じ。
    • 思い付きの値だが、丁度いいようだ。
  • 追って別の稿に書く予定ではあるが、外が臭い場合には換気を停めたほうがいいことに(再度)気付いた(以前にも気付いた気がするが、忘れて居た)。
    • これは難しい。部屋に臭いが入ってから停めると臭いが排出されないように思うので、事前に検出する必要がある。。。
    • 次善の策は、部屋に臭いが入ったら、しばらく(外の臭いが消えるまで)換気を弱くすべきなのかと思っている。
  • 以下、周期に関する技術的な考察
    • 周期(= on+off時間)が短いほうが、換気具合が平坦に近付き、空気の質(例: 室内のCO2濃度)も安定すると推測する。
      • 平均して同じon率の周期でも、周期が長いと、例えばCO2濃度の変動が大きくなる。
      • PWMやD級アンプや1ビットDAC(DSD)の周波数が高いのと同様に、周期を短くすることは換気扇をon率と同等の強さで常時回すのに近付く。
    • ただ、周期が短いとon/off頻度が増えるので、タイマーのリレーや換気扇の寿命が短くなる。
      • 換気扇については、推測だが、on/off頻度が高いと突入電流が流れる回数が増えるため、モーターのコンデンサの劣化が速まるのではないか。
        • 一方、そもそも このような自動間欠運転は想定されていないだろうから、自動運転するだけで寿命が短くなるので、周期の長さは大きな問題ではなさそうだ。
          • 周期が30分の場合、一日に48回もon(/off)するのと同じだ。業務用ならまだしも、家庭用の換気扇は そういう想定では ないのではないか。
            • ただ、トイレの換気扇とすれば、例えば5人家族で1人1日8回使うとすると、on(/off)される回数は40回/日と近い値になる。でも、8回/日は多いか。

例によって できただけでは飽き足らず(単に遊びたいだけw)、以下のような思い付きがあるが、実施するかどうかは不明・未定である。

機能追加・拡張案1: リレーの状態の取得

少し前に、PCからタイマーの現在のリレーの状態(onかoffか)を取得する方法を考えた。ただ、おもしろいけど結構面倒で、やる意味があるか不明だ。

概要: PCとタイマーが通信していない時に、リレーのon/off状態をシリアルの信号線(例: PCのRXD(受信データ))に出力し、使っているシリアルインタフェースIC(FTDI)のGPIO的な機能を使ってそれを読む。

このシステムでは、PCからコマンドを送らない限りタイマーからデータは来ないので、通信していない時にシリアルの信号線が通信プロトコル上正しくない状態になっても、(PCはそれを分かっているので)問題は起こらない。

機能追加・拡張案2: 換気扇の重複運転の防止

トイレの換気扇が動いている時は、本システムが制御する風呂の換気扇を停める仕組みも思い付いた。仕組みは簡単だが、これも やる意味があるか不明である(せいぜい、窓に張ったシートの張力を抑制できる程度)。

トイレの換気扇がonの場合、風呂の換気扇を制御しているリレーをonにしないように(あるいは、トイレの換気扇がoffの場合だけリレーをonにする)すれば良い。

簡単だけど、AC100Vが絡むので安易にはできない。

機能追加・拡張案3: リモコンの通信の無線化

これも、上と同様に やる意味があるか不明(現状の有線接続で見栄え以外の問題はない)ではあるが、興味はある。

以前も書いたようにWi-Fiモジュールを買えばいいが、いろいろ面倒なので、古いスマフォを使いたい。が、それも結構面倒そうだ。

一番面倒なのは、古いスマフォは電池が駄目になっていることだ。電池が寿命になったあとで交換品を買ったが、不良品か詐欺で使えなかった。今は ほとんど売っておらず、それらを買っても使える確証はない。

あ! 書いたあとで思い付いたが(無線でなく)有線でも、昔 流行りそうで ぽしゃった、ACの線を使うLAN(PLC)なら良さそうだ。けど、アダプタはもう売ってない うえに、あっても高そうだ。でも、このシステムは速度は全く要らないから、もし安く手に入れば手軽でいいかも知れない。

とは言え、LANなので相手(タイマー)側はシリアルでは済まず(小さいPCやスマフォが要る)、そこが面倒だ。「ACの線で繋がるシリアル」は見た気がするが、高い・・・

 

温度センサの補正式の調整

少し前から中・高温域の補正式を調整している。今は大体27.5℃くらいまでできている。なかなか暑くならないので進みが遅いが(ただ、完全に暑くなると温度の上昇速度が大きくなって、参照用温度計との応答速度の差が大きくなるから難しい)、もう少し経つと本格的に暑くなって終わりになりそうだ。

と書いていて気付いたが、今日は暑くて冷房していたから、やればできたかも知れない。ただ、昨日(冷房せずに)作業していたら夕方には弱い熱中症みたいになったし、夜に暑くて目が覚めて冷房したので、連日は避けたほうが良さそうだ。

去年の夏に合わせた温度計算式が今も有効なようで、大体27℃以上は補正の調整が不要になる感じだが、そこで(いかにもデジタルにw)階段的に切り替えはできない(そうすると、切り替え点付近の値が不安定になる)ので、もう少し測定して「うまい具合」の補正式にしたい。

 

高血圧

なぜか、去年の今頃より低い感じで、通常量の降圧剤を飲むと、朝の「上」が125mmHgくらいになることが多い。

  • (もう少ししたら書く予定だが、)外からの異臭(煙草・薬品・農薬臭)が随分緩和できたために良くなった? 単に暖かくなったせい?

血圧が低い時に降圧剤を飲むと調子が悪くなるので、半分にして飲んで居る。

  • そうすると、 朝の「上」は130mmHgくらいになる。
  • 以前は、低い時は飲むのを止めていたが、低いのが続くなら半分ずつ毎日飲むのが良さそうだと考えた。
  • 今後も低い状態が続くなら、医師に言ってみる予定。

 

白内障・飛蚊症・老眼

当然ながら、白内障も飛蚊症も良くは ならないが、悪化もしていない気がする。が、室内での見え方(特にディスプレイ)が今一つ(飛蚊症が邪魔)だ。

  • 真上に照明があるのと、真横の窓が眩しいのも関係あるかと思っている。
    • メガネのレンズとの関係もある気がする。
  • 眩しい窓対策
    • (これもあとで書く予定だが、)一部のレースのカーテンから臭いが出るようなので、しばらく(臭わない)1枚にしていたが、やっぱり眩しいので、臭わないものを買って追加した。
    • カーテンを2枚重ねて付ける・フックを延長する工夫
      • 以前は、1枚目(外側)のカーテンのひだに2枚目のカーテンのフックを掛けていたが、もっと確実な方法を思い付いた。
        • いつものように、寝ている時に思い付いた気がするが、下に書いたように、作業している時に思い付いたのかも知れない。
      • 1枚目(内側になる)用のフックのカーテンを付ける部分の底部に2枚目用のフックを引っ掛ければ良い。フックだけあれば、金具やテープなど何も要らない。それぞれのカーテンの取り付けは斜めになるが、レースのような薄いものでは問題なさそうだ。
        • 2枚重ねる前に、丈の短いカーテンをなるべく下に付けようとしている時に「発見」した。
          • なので、上のフックにのカーテンを付けなければフックの延長となり、1枚を下げて付けられる。
        • これを思い付いた切っ掛けは、2枚重ねる方法を改良しようとして、その前にカーテンを下げるために延長したフック(下を参照)を見たら、延長のために付けた上側のフックにもカーテンが掛けられることに気付いたことだ。
      • これを思い付く前は、1枚目用(実際にはダミー)のフックの底部近くにダクトテープで2枚目用のフックを貼り付けて延長していたのだが、もう一組(別の窓)分作るのは面倒だし、弱そうだし、高さの再調整が困難なので、もっといい方法がないかと思って居た。

白内障に戻ると、昨日か今朝か、有名人(知らない人)が、手術して視界が かなりクリアになったという話を目にして、手術の怖さが少し減った。あと、僕は まだ濁って見える訳ではない(日光が眩しいのと左右の見え方がアンバランスになることがある程度)ので、「もう少し」余裕がありそうだと少し安心した。だから、そういう体験談は意外に有用な感じだ。

老眼は進行したかどうか不明だ(近視は進んでいない)。相変わらず老眼鏡は作っていない。近視用でも2本(普通用と自動車運転用)あるから それ以上は持ちたくないのと、遠近両用は今一つという話が多いし、実際に仕組みをみると無理があるからだ。

そのため、近頃は、近くの物を見る時に、眼鏡を外す以外に少しズラしてレンズの下や上から見るという、いかにもジジイ的なこともする。(でも、一人の時だけしかしないはずw) これ、目には悪いのだろうか? 筋肉的なもので、多くなければ問題ない?

 

(主に寝ている時の)動悸・頻脈

結局、原因不明で、余り変化(改善)なし。

  • お酒は多少関係ある(飲むと、その夜は確実に動悸・頻脈が起こる)。
    • ただ、飲まなくても動悸・頻脈が起こることも多い。
  • が、コーヒーは関係なさそう。
    • それでも、飲み過ぎは良くないので、以前よりは減らしている。
  • やはりSAS?
  • 日中もある。

ある記事で、夕食・飲酒後に体温が下がらないうちに寝ると自律神経が狂う(→ 動悸・頻脈などの原因にも)とかいうのを見たが、遅くまで起きてから寝ても変わらなかった。そもそも、起きているのが辛いw

体温と言えば、昨夜は暑くて目が覚めた(その時は動悸が強かった)が、冬でも暑くて動悸が起こるのだろうか? そこまで暖房は効かせていなかったが。

ただ、自律神経の問題かも知れない気はする。あるいは更年期的なもの?

 

耳の不調(突発性難聴・メニエール病 → 耳閉感・耳鳴り)

この時期(5月の連休明け辺り以降、夏まで?)は心身の調子が狂うようで(結構前から毎年同じように不調になる)、右耳も調子悪い。: 耳鳴りや軽い耳閉感が続いている。

  • 毎年のように起こり、時間が経つと治るので、医院には行かない。
  • 気にしすぎて振り回されるほうが良くなさそうだ。

 

鳩問題

(書いたあとで思い出したので、ついでにw) ベランダの鳩よけ網は まだ問題なさそうだ(外からの臭い対策でシートで窓を塞いでいて簡単にはベランダに出られないので、詳しい確認はできない)。たまに近くで鳴き声がしたり、窓の前を横切る影が見えるが、隣に巣を作っているのかも知れない。鳩は長生きだということなので、しばらくは そうなのだろう。

鳩の他にコウモリ(暖かくなって増えて来た)も防げている。あと、以前飛び込んできた小鳥は、あれ以来来ない。学習したのか、最初のは事故(勢い余って?)だったのか。その種類の鳥は元気なようで、たまに金具(換気口?)でカチャカチャ音を立てたり、朝賑やかに鳴いているが、そういうのは害でないから嫌ではない。たまに車に糞を落とすようだが、コウモリの尿よりは少ないので、まだ良しとしている。

 

車のオイル・フィルタ交換に気乗りしない問題

更に本当についでに。以前ちょっと書いただけだと思うが、いつも行っているディーラーの系列店の板金作業の不始末で、いつものディーラーすら嫌になり、本来は(確か)2月にするはずだった予定を延々と延ばしている。今日も予定には入れたが行かず仕舞いだ。来月後半から12か月点検の時期なので、それと一緒でも いい気すらしている。

その店は近くないが、以前は多少だるくても、「あのおっちゃんが居るかもなあ」と思って行ったが、今はそんな気分は全然起こらない。。。

そう言えば、その(いつもの)店には以前から数回トラブル(大小)に見舞われていることを思い出した。とは言え、僕の経験上、その店以上に いいディーラーは滅多にないのも事実なので、どう折り合いを付けるかだ。

本当に、プロの癖に いい加減なことをする店や連中には関わりたくない。時間もイライラも、無駄でしかない。

 

こうして見ると身体の不調の話が多いが、歳を取ったせいとか原因不明のものが多いから仕方ないね・・・

身体の不調(不調と言うよりは「劣化」)と言えば、他にも気になることはあるが、新しいものなので別途書きたい。

 

PS. ここに書いてないもので初出時は未完だった件でも、その後決着したものは その稿に書いてあることが多い。ただ、探すのが面倒で不親切ではある。

  •  1
  •  0
Keys: , , , , , , , , , , , , , , ,

(溜まったネタを時系列に こだわらず書いている。今回は今までの一連の稿の始まり かつメインとなる話で、このシリーズの最後となる。)

換気扇を間欠運転しているタイマー XY-WJ01にはシリアル(UART)ポートが付いているので、それを使って遠隔制御することができる。システムができた当初は必要ないと思って居たものの、(おもしろそうだから)できるものは試したいし、使っているうちに、例えば「ちょっと(30分くらい)強制的に換気したい」というような場合があり、PCから換気扇をonにできて自動で元に戻れば便利だと思ったので、やりたくなった。

PCとタイマーの繋ぎ方の検討

PCをタイマーのシリアルポートに繋ぐ方法を検討したら、Wi-Fiが良さそうだった。

  • 無線: 線がなくて美しいが、技適の壁のために安価なものは使えない場合がある。
    • Wi-Fi
      • IP通信なので、仕組みとしては ちょっと大掛かりになってしまう。
      • 親機はルーターが使えるので、1台で済む。
    • Bluetooth
      • シリアルポートプロファイルは手軽で良い。
        • こういうのが欲しかった。
      • 2台(1ペア)必要なのが面倒だし、少し高く付く。
        • ただ、最初は片方はスマフォでも良い。
      • 僕には馴染みがない。
    • その他
      • TWILITEシリーズ
        • おもしろいし簡単に使えそうなのだが、独自規格だったり3.3Vだったりして、(僕には)ちょっと面倒・使いにくいのが残念。
          • もしUARTが5V(トレラント)だったら、買ったかも知れない。
        • オリジナル製品のため安くはない(かと言って すごく高い訳でもない)し、開発機器(と言うほど大掛かりではない)が要る場合もある。
          • ここら辺が独自規格・製品の難点だと思う。
        • 2台(1ペア)必要なのが面倒だし、少し高く付く。
  • 有線(UART): 比較的安く、使うのは超簡単だが、コードが部屋を這うのが綺麗でない。
    • タイマーはAC 100Vを扱うので、通信路(タイマー - PC)を絶縁することが必須。

ただ、以前も書いたように、単純にWi-Fi - シリアルができる安い製品(しかも、技適認証済み)は なく、ESP32シリーズを使うのが一番良さそうだった。が、繋いで電源を入れるだけでは駄目で、少なくとも何らかの設定をしなければ使えないのが面倒だし、機能が豊富過ぎて もったいない。

それで、手元にWi-Fi内蔵SDカード PQI Air Card II(以下、Air Card)が眠って居たので使えないか検討したものの、問題・課題が多いので却下した。はずなのだが、前の稿に書いたように ちょっと思い付いて試したら、とんでもなく面倒なことになってしまった。

実は その前に、Air Cardを試すのにも使うのでUSB-シリアルアダプタを買い、タイマーに繋いでコマンドが実行できるようにしていた。

PCとタイマーを繋ぎ、タイマーのコマンドを実行できるようになるまで

まず、PCに適当なシリアルポート(信号レベルはRS232(±12Vなど)でなくUART(0, 5Vなど))がないので、USB-シリアルアダプタ(以下、シリアルアダプタ)を買った。選ぶ時、仮にAir Cardが駄目でもタイマーに直接接続できるように、絶縁型にした。

なぜ絶縁型にしたかというと、仮にタイマーが扱うAC 100Vがシリアルに漏れた場合でもPCを損傷させないためである。絶縁型であれば、仮にAC 100Vがシリアルに漏れてもPCのUSBポートには入らないはずで、タイマーは壊れるものの、PCは安全だ。

シリアルアダプタは、秋月のFT234X+ADuM121N使用絶縁USBシリアル変換モジュールにした。約千円だった。他に必要な部品(3.3V電源レギュレータ(Air Cardの電源にしようと思ったが、結局使わなかった)やXHコネクタなど)も一緒に買った。

届いてから動作確認(Linuxでのデバイスの認識やループバック通信)をしたところ、ちゃんと動いた。

選ぶ時に少し迷ったのだが、アダプタのチップは実績・定評のあるFTDIのもので良かったと思う。当然ながら挿せば動くし、例えば、タイマーへの通信がうまく行かなくて(後述)、転送速度のズレを疑った(実際には問題なかった)時に簡単に微調整(例: ±10%)できたのは良かった。

それからシリアルアダプタをタイマーに接続できるように基板にXHコネクタを付け、タイマーに繋げてコマンドを試したところ、なぜか処理されず、全部"FAIL"になってしまった。

一番まともそうなマニュアル(買った製品には添付されていない)を出しているメーカーらしき会社(そもそもメーカー名が不明なので、単なる商社かも知れない)に問い合わせても、マニュアルの関連箇所のコピーしか来なかった。不良品(ソフトにバグがある)と考えて買った店に問い合わせたが、やっぱりマニュアルのコピー(文章は中国語)を提示するだけで、「物は ちゃんと送った。製品に問題はない」などと無責任極まりない対応だった。更に、製品に問題のない(動作している)証拠を求めたが出して来なかった。

仕方ないので一旦諦めることにして、あとで使う時に壊れにくくなるようにシリアルアダプタをケース(壊れた100円カードリーダーのものを加工した)に収めたり、タイマー基板の入出力の一括接続用のXHコネクタを付けて整理した。

が、その後いろいろ試したら解決できた。: タイマーのコマンドは「一発で」送らなくてはならないのだ。例えば、設定を取得するコマンド"read"をターミナルソフト(例: minicom)で手で"r", "e", "a", "d"と打ち込むのは駄目で、それぞれの文字が"FAIL"になる

一方、プログラム(LinuxのechoコマンドでOK)で一回で"read"と送れば成功する。※ ターミナルソフトでも、(あらかじめクリップボードに入れておいた)"read"をペーストすれば成功する。(: ローカルエコーoffのため、画面には送信文字列(コマンド)が出ていないが、"read", 改行, 改行, 改行, "read"を送っている。)

おそらく、文字の受信間隔が しきい値より長いと、コマンドの区切りとしているのだろう。

※このことに気付いたのは、転送速度が異なるためかと思って微調整の仕方を調べたら、速度設定のあとにechoで文字を送信する例があって、最初なので そのとおりに試したら動いたことだった。本当に速度が違うのかと思って、上下限を調べたら調整なしの速度(9600bps)でも動いて、速度でなく送信方法がポイントだったことが分かった。

ただ、使ってみて分かったが、想像通りクロックが余り正確でないようで、タイマーの継続時間が結構狂う。大体、設定の7%くらい(例: 10分で42秒)短くなる。この調子だと温度でも変わりそうだ。

これはマニュアルに書いてない*ので、「ちょっと普通に」試したら全部"FAIL"になってしまう。※

*もしかして、元々の中国語版のマニュアル(あるのか不明)を読めば、文章の本来の意味から分かるのかも知れないが、全くの無理筋だ。あるいは、(PS1に書いたことに関連するが、)発注元の仕様書には書いてあって そう実装したけど、(テキトーな誰かが作った)マニュアルには書かれなかったのかも知れない。

※メーカーらしき会社の掲示板に、別の製品だが、同じ問題で困った人が居た。それに対しても通り一遍の回答で、「一回で送る」という情報はなかった。だから、その会社も単に売っているだけなのかも知れない。なお、呆れたのか諦めたのか、質問者からの返信はなかった。

Linux(bash)でタイマー XY-WJ01にreadコマンド(設定の取得)を送り、応答を受信する例を以下に示す。

timer_tty="/dev/ttyUSB0"
stty -F $timer_tty 9600 pass8 -cstopb -echo
my_tty=`tty`
tmo_s=1

timer_cmd="read"
bash -c "echo -n $timer_cmd; read -t $tmo_s res; echo \$res > $my_tty" < $timer_tty > $timer_tty

→ 結果: P6,OP:0.0.1.0,CL:0.0.3.5,LP:----

※他のコマンド(例: "P7"(モード7に変更))を実行したい場合は、変数timer_cmdに設定すれば良い。また、タイマーが接続されていない時や電源offの時に待ち続けないようにするため、readにタイムアウト(変数tmo_s, 1秒)を指定している。

(4/4 14:02) sttyに指定する通信設定を修正した。*: 一番重要なのは -echo で、これでエコーバックを停めないと、タイマーから送信された文字列がタイマーに送り返されて、エラーになったり設定が変わってしまうことがある。: 後述の、off時間が0("CL:0000")になってしまう現象の原因は これでないかと推測している。

*実際には他にも指定しているが、上記のものだけで充分である。

また、bashで実行するコマンドのリダイレクトも修正した。: 当初は検索して見つかった例のまま、意味を良く考えずに使っていたが、stderr(fd= 2)をstdout(fd= 1)にリダイレクトすると、Linux側のコマンドのエラーがタイマーに送られてしまうので良くない。

上の例は長くて分かりにくいかも知れないが、肝は一番最後の行のechoとreadだけで、やっていることは以下である。

stty -F /dev/ttyUSB0 9600 pass8 -cstopb -echo
echo -n "read" > /dev/ttyUSB0
read -t 1 res < /dev/ttyUSB0
echo $res

細かいことを書くと、こちらの場合は、(可能性は低いものの、)echoでタイマーにコマンドを送ってからreadを実行するまでに来た応答を取得できない。

そして、細くて長い(15m)電話線(モジュラーコード)※を買い、(長さが確定していないので、)モジュラージャックを切らずに接続するためのアダプタを作り、PCから洗面所まで「仮敷設」し、(コマンドは上のように手で打つものの、)PCからタイマーを制御できるようになっている。

※シリアルアダプタの端子数は4個(電源, 送信, 受信, GND)で、丁度電話用のモジュラーコードの芯数に合うのと細いコードが手頃な値段で売っているので、そうした。なお、15mは基本的にはシリアル通信には長いが、転送速度が9600bpsと遅いので問題ないと考えた。

タイマーの遠隔制御の機能と実装

タイマーの遠隔制御の使い方(ユースケース)を検討し、以下のような機能を実現しようと考え、概ね実装した。

なお、下の指定時間on/offしている間にPCが再起動したりスリープした場合にタイマーの状態が元に戻らない(例: onまたはoffになったまま)のは良くないので、そうならないような方式を考えた。

そのため、「連続on」や「連続off」の機能は作らない。連続on/offしたい場合は、例えば「24時間」のように充分長い時間を指定するようにする。

実際、無限にon/offしたいことは ないし、仮にそうするなら、手で換気扇のスイッチをonにしたり、タイマーの電源を切れば良い。

  • (一時的に、)指定時間(T1)onする。
    • タイマーのモードがP6(on, offの繰り返し)の場合、設定(同じ設定でも可)を書き込むとonになるので、現在の設定をそのまま書き込むことで、設定のon時間(Tonとする)のonにする。
      • XY-LJ02と違い、XY-WJ01には即座にon/offするコマンドがないので、このようにする。
    • 以下の処理でT1のonを行う。
      1. モードがP6でない場合、P6にする。 → 最大Tonのonになる。
      2. 設定の書き込み。 → 最大Tonのonになる。
      3. T1の端数(T1 mod Ton)と繰り返し中の短縮分(例: 20秒x繰り返し回数)のsleepをする。
      4. T1/Ton > 1の場合、以下をT1/Ton-1回繰り返す。
        1. Tonよりわずかに(例: 20秒)短いsleepをする。※
        2. 設定の書き込み。 → Tonのon
    • 仮に上の処理中にPCが再起動したりスリープした場合、最後のonのあとは通常のタイマー動作(on, off)に戻る。
  • (一時的に、)指定時間(T2)offする。
    • タイマーのモードがP6の場合、P7(off, onの繰り返し)に変更するとoffになるので、そうすることで設定のoff時間(Toffとする)のoffにする。
    • 以下の処理でT2のoffを行う。
      1. モードがP7でない場合、P7にする。 → 最大Toffのoffになる。
      2. 設定の書き込み。 → 最大Toffのoffになる。
      3. T2の端数(T2 mod Toff)と繰り返し中の短縮分(例: 20秒x繰り返し回数)のsleepをする。
      4. T2/Toff > 1の場合、以下をT2/Toff-1回繰り返す。
        1. Toffよりわずかに短いsleepをする。※
        2. 設定の書き込み。 → Toffのoff
    • 仮に上の処理中にPCが再起動したりスリープした場合、最後のoffのあとはP7のタイマー動作(off, on)になる。
      • これはP6と位相が異なるだけで、on/offの周期・比率は同じである。
    • 終了後にモードをP6に戻すのが望ましいが、そのままでも次回の制御時にモードを取得して適宜対応すれば良い。
  • 動作パターン(設定)を変更する。
    • 単純に、新しい設定をタイマーに書き込めば良い。
    • 設定のプリセット的なもの(例: 強, 中, 弱)を作り、それをタイマーに設定するようにすれば操作が楽になる。

※タイマーが設定でon/offするより前に それらを継続することで、換気扇のon/off動作を途切れさせないためにそうしたが、実際に使ってみると、多少途切れても実害はなく、そこまで厳密にする必要はないことが分かったので、今は、処理を簡単にするため、スリープ時間はタイマーのon/off時間(TonまたはToff)にしている。

同様に、タイマーのon/off時間の整数倍でない時間で換気扇をon/offする必要性も薄い気がしたので、今は、指定されたon/off時間(T1またはT2)をタイマーのon/off時間(TonまたはToff)の整数倍に丸めている。 (4/16 7:29)

これから(= 気が向いたら)プログラムを作るところだが、大方出来た つもりになってしまって作るのが面倒なので、こうしてブログを書いたりしているw

(3/22 16:43) その後、なぜか やる気が出たので、上の指定時間on/offするプログラムを作った。また、YAD(Yet Another Dialog)というプログラムで とっても簡単なGUIを作った。既に いくつか不満はあるが、使いながら改良して行きたい。

UXWingVentilation Fan Blower iconを使用した。

(3/23 9:30) 更に、Xfceのパネル(Windowsのタスクバーに相当)に入れて※手軽に かつダイアログの場所を取らずに使えるようにした。この部分をクリックすると、上の設定ダイアログが出て、タイマーの設定周期とは関係なく、指定した時間だけ換気扇をon/offすることができる。

※Generic monitorというウィジェットを使った。なお、パネルの空き(場所)が少ないため、CPU温度のウィジェットは止めた。タイマー(パネルの"Timer"のウィジェットのこと。制御対象のタイマーではない)が無駄に場所を食っているのだが、直せないので仕方ない。

 

(3/26 20:57) 換気扇の動作パターンも設定できるようにした。とりあえず、on/off時間を3種類(H= 強, M= 中(標準), L= 弱)から選べるようにした。On時間の割合は、H: 約40%, M: 約22%, L: 約13%としてみた。

 

それから、当初は接続を無線(Wi-Fi)にしようと思って居たが、電話線は充分細くて目立たないし、タイマーのコマンドの機能は少なく※苦労して無線にするほどのものではないので(ただ、GPIO付きのWi-Fi基板なら、タイマーの状態が取れそうだ)、上述の遠隔制御機能ができたら電話線を正式(綺麗)に敷設して、終わりにしようと思っている。

※以下のような惜しいことがある。

  • コマンドで設定の取得や変更はできるが、状態(例: 現在onなのかoffなのか)を取得できない。
    • 例えば通信を絶縁I2C(あるいは、上述のようにWi-Fi)にし、その先にシリアル通信とGPIOの可能な基板を付ければできる気はしているが、そこまでする必要性はないし、やってもon/off程度しか分からない。単なる興味だw
  • 同じシリーズのXY-LJ02(基板のみの製品)のように、即座にon/offするコマンドがあると便利だ。
    • だから、WJ01のstart/stopコマンドはLJ02でon/offになったのかも知れない。

 

タイマーのUARTコマンド・動作で分かったこと (3/26 12:34追記)

  • 現在と異なるモードを設定すると、(当然ながらそのモードになるが、)その時のリレーのon/offは そのモードの最初の状態になる(例: P6ならonになる)。また、時間のカウントはリセットされる。
  • 現在と同じモードを再設定した場合、(パラメタを再設定した場合の動作とは異なり)リレーのon/offは そのモードの最初の状態になる。
    • 時間のカウントの詳細は未確認だが、以下のような感じである。
      • On/offの状態が現在と変わる場合は時間のカウントがリセットされる? (リセットされないこともある?)
      • On/offが変わらない場合はカウントがリセットされない?
  • 上の2つにより、XY-LJ02のように、即座にリレーをon/offすることもできる(ただし、on/offされている時間は設定による)。
    • 例: P6にすればonになり、P7にすればoffになる。
  • 複数のコマンドを , で区切って一括して送れる(要するにreadコマンドの出力と同じ形式)。
    • 任意の順序・数(もちろん上限はある)のコマンドが送れる。
    • ただし、モード(Px)を指定した場合にはLP以外は無効になる。
  • UARTコマンドを実行すると、たまにタイマーの設定が壊れることがある。
    • Off時間が0("CL:0000")になってしまう。
      • この場合、タイマーが停まる。
    • 壊れる契機は不明。
      • コマンド実行後の待ち時間が短いため?
    • そのため、コマンド実行後に設定を取得し、いずれかのパラメタが"0000"になった場合は壊れたと判断して元の設定を再設定するようにした。
    • (4/4 14:20) 上に追記したように、この問題の原因はタイマーコマンドの送受信の仕方の問題だと推測している。
      • 以下に、推測した問題発生の流れを示す。
        1. [コマンド実行プログラム] 起動する。 (起動時にタイマーのttyがopenされる)
        2. [コマンド実行プログラム] コマンドをタイマーのttyに書き込む。
        3. [Linux] コマンドをタイマーに送信する。
        4. [タイマー] 結果をLinuxに送信する。
        5. [Linux] 受信した結果をタイマーにエコーバックする。 (sttyに-echoを指定していない場合)
        6. [コマンド実行プログラム] タイマーのttyから結果を取得する。
        7. [コマンド実行プログラム] 終了する。 (→ タイマーのttyがcloseされる)
        8. [タイマー] エコーバックされた文字列をコマンドとして解釈して、結果をLinuxに送信する。 (→ コマンド実行プログラムが起動していないため、破棄される。)
      • 上の5と6,7の順序が問題で、5の前に7まで実行されれば問題ないが、そうでない場合には、コマンド実行プログラムが終了するまで、受信した結果のエコーバックが行われる。→ 受信した結果の一部がタイマーに送信される。
        • readコマンドを実行する場合、結果は"P6,OP:0.0.1.0,CL:0.0.3.5,LP:----"のような文字列であるが、仮に"CL:0"までしか送信されなかったとしたら、タイマーはCLを0に設定し、問題の現象が起こるのではないか。
        • モードやパラメタの設定コマンド(例: P7)の場合、結果は"DOWN"(成功)か"FAIL"(失敗)で、どちらにしても失敗して"FAIL"が送られて来るだけなので、大きな問題はない。
          • ただ、コマンド実行プログラムが終了するまで この繰り返しが終わらないので、好ましくない。

 

PS1. タイマーの謎と危うさ

以前使ったセンサ基板(YL-40)同様、物自体は ちゃんとしているのに、メーカー名を記載せず ちゃんとしたマニュアルなしで売るのは怪し過ぎるしアンバランスだ。売る店が何も分かっていないのもおかしい。

あくまでも想像だが、ちゃんとした会社の製造発注先が横流ししているのではないか。

流通は置いておくとしても、メーカー名もマニュアルもないものを ちゃんとしたシステムに使うのはリスクが高い。使う側が自分で検証・担保するスタンス(= 「何が起こっても知らないよ」)なのだろう。

だから、僕がAC 100Vをこのタイマーに直接入れず、外部のリレーで制御するようにしたのは正解だった。いくら基板をチェックしたって、本当に安全な作りかは分からないからだ。そんなものを信用するくらいなら、自分で回路や基板を作ったほうが ずっと安心できる。

以前調べたら、このタイマーを車(後付けで、エンジン起動後に何かのボタンを押したかのようにしているようだ)や医療機器(プロト?)に使っている例があったが、結構怖い。そこまで信用していいのかと思う。(だからC国では車両火災などが良く起こる??)

(3/23 14:26) 書いてから気付いたが、このタイマーのon/off時間設定の単位は0.01秒から1分が可能だが、on/offをリレーで制御するのに0.01秒(10ms)って果たして「あり」なのか、大いに疑問だ。そんなに短い間隔で使ったら、あっという間にリレーが壊れるだろう。リレーで音楽でも演奏するつもり??w 代わりに時間の単位を付ければ良かったのに。こういう基本的なところが杜撰なようだ。

PS2. AliExpress(以下Ali)の本体も店も最低、クソ以下なので、もう絶対に使いたくない。Aliのシステムは おかしいところが多いし(例: 設定しても通知メールが来ないことが多いし、来ても英語と日本語で内容が正反対だったりする)、店は無責任極まりない(C国人の悪いイメージどおり、自分に非がないことを証拠もなしに叫ぶだけだ)。レビューの点数が いい店を選んで上のありさまだったので、全く信用できない。

僕の中での店(特に電子部品・モジュール)の信頼性の順位は以下である。

秋月, ヨドバシ >> Amazon > Amazon(マーケットプレイス), 楽天 >>>>>>>>>> Ali

もしヨドバシにあれば一番楽で安そうだし、秋月にあれば(送料は少し高いものの)、店も物も信頼できるから良い。Aliを使うくらいなら、多少高くてもAmazon(マーケットプレイス)から買うほうが、(問題があった場合の)ストレスは1/100、時間は1/10だ。

もう少ししたら、Aliのアカウントを削除するつもりだ。最初から今ひとつ信用できなかったので、クレジットカードの情報を登録しなかったのは、正解だ。

  •  1
  •  0
Keys: , , , , ,