2022/10/08

PC更改(ryzen 5900x)

久々にPC更改しました。IvyBridge(e5-1660 v2)おじさん、中華マザボおじさん卒業です。 
  • Ryzen 9 5900X BOX(PC工房)
  • B550 Steel Legend(Amazon)
  • G.SKILL F4-3200C16D-32GIS (DDR4 PC4-25600 16GB 2枚組)(ドスパラ)
  • DEEPCOOL AK400 R-AK400-BKNNMN-G-1(ドスパラ)
  • IFE2 [AMD AM4用 CPU抜け止めブラケット](ヨドバシ)
12世代の12700Fあたりと悩んだのですが、画像処理とかをするのであればEコア・Pコアの組み合わせではなくて同性能のコアが並んでいる方がよいだろうと思って、5900xにしました。

7000シリーズ発売の直前で投げ売りみたいな状態で、12700Fと同じような値段(49,000円前後)になってましたが、ちょっと悩んでいるすきにドスパラさんのお値段が60,000台まで値上がりしてしまい、いろいろ見ているうちにPC工房さんで在庫処分的なセールが始まったのでぽちりました。

2021/03/07

自室のCO2測定

最近、テレワークに移行した人が多いからか、自宅の環境向上のためにCO2濃度を測る、というのがネタとして流行っているようです(結構前からかもしれませんが)。

CCS811とMH-Z19Bを使うのが定番のようなので、それぞれ遊んでみましたのでメモ。

CCS811については、

  • お値段は1500円ぐらい。アマゾンでKEYESTUDIOというところで購入。
  • 動作電圧はチップ自体は3.3Vですが、KEYSTUDIOは5Vになっています。電源電圧はレギュレータで3.3Vに落としているようです(SDA/SDLがレベル変換ができているかはよくわかりませんが、そのまま5Vつないでも大丈夫のようです?)
  • 測っているのは純粋なCO2濃度ではなくて、eCO2(equivalent CO2)とかTVOC(Total Volatile Organic Compounds、総揮発性有機化合物)というもののようです。
  • 測定に際してはキャリブレーションが必要で、外気で一定時間(20分)回すと値が落ち着いてくることになってます。
  • キャリブレーションはリセットでクリアされてしまうのですが、BASELINEレジスタというのがセンサーの状態を示しているので、それを読み取って保存しておいて、リセット・起動後に書き戻すことでキャリブレーション後の状態を回復できるという仕組みのようです。
  • 何故か使っている個体だと、数日でBASELINEレジスタへの書き込みができなくなってしまいました(書いて読み出しても書いた値が読み出されない。最初は読み出せていました)。
  • そのせいかわかりませんが、どうも値がドリフトしてしまうようで、夜間で人がいない状態でもどんどん値が上がってしまいます。後述のMH-Z19Bの2~3倍ぐらいの値が出てしまいます(5000ppmとか、ちょっと?な値が出てきます)。
  • 結局、あまり良くわからない感じになってしまったので一旦お蔵入り。
MH-Z19Bについては
  • お値段は結構します。国内だと4000円ぐらい。MH-Z19Cという後継機種もあるようでもう少し安いようですが、電源が5V±0.1Vを要求して結構シビアに精度に響くようです。
  • センサの値は比較的体感と合うようです。窓をあけると下がり、部屋にこもっていると上がっていきます。絶対値として正しいかどうかは、もちろんわかりません。
  • 読み出し方法は、UART、PWM、アナログの三通りがありますが、UARTで読み出すことにしました。
制御はいずれもArduino Nanoを使いました。アマゾンでELEGOOさんの3つ入りのパッケージを1500円ほどで購入。
Arduinoを使うのは初めてですが、やはりUSB接続が簡単なのがとてもよろしいです。USB内蔵のPICだと、開発ツールやライブラリがついてこない(MCC非対応とか)ことがあるので。
元々、特殊な簡易言語(スケッチ?)を使うことに抵抗があったのですが、改めて見てみると食わず嫌いだったようで、setup/loopという専用構文を除けば、ほぼC/C++でした。

MH-Z19Bについては、ESP32と組み合わせてAWS IoTとつないでロギングさせようとしていますが、これはまた別途で。

2020/11/07

PIC16F1系列(16F18326)はまりどころ

久しぶりにPICで工作をしています。

色々ネットを見ていると、最近(でもないか)は16F84Aとかではなくて16F1系列というのが良さそうなので、秋月で購入。同時にI2Cの液晶モジュールも購入してみました。
あと、もうPickkit2は流石に古すぎるようなので、MPLAB snapやPickkit4と悩みつつ、アマゾンでPickiit3の中華版(いわゆるジェネリックPickit3)を購入しました。
MPLAB snapやPickkit4は、純正の後継品ですが、古いチップに対応していないので(AVRとかには対応してますが)、色々使い勝手を考えた結果Pickit3に落ち着きました。
ジェネリック品なのでとにかく安いですし。

16F1系列は、とにかくメモリが大きいのが良いですね。

ハマりどころの備忘録。
  • ペリフェラルを使うときは PMD レジスタも有効にするのを忘れない。
    Timer1を使おうとして、いくらT1CONやTMR1H/Lに値を書いてもゼロのままで焦ってしまいました。
  • ペリフェラルピンセレクト(PPS)は、デフォルトでは未設定されていない。
    I2C(MSSP1)を使うときは、たとえRC0/RC1(MSSP1のデフォルト)を使う場合であっても、自分で設定しないとだめ。
    これでハマって(しかも最初に一度PPSを設定してみたのですが設定を間違えていて気づかなかったという)、いくらSENを立ててもうんともすんとも言わずで、液晶の初期不良なのかMSSPとの相性なのかと色々疑い始めてしまいました。
    オシロとにらめっこしつつ「MSSPを使わない素のI2C実装」をでっち上げてみたのですが、それだとちゃんと液晶に表示が出るというオチ。
    液晶は生きてるじゃん、ということになって改めてPPSを正しく設定したら、、、MSSPでちゃんと動きました。やれやれ。