2025年6月11日水曜日

温湿度計の製作2

どうも、dominoです。
前回の記事(こちら)では、ATmega88を使った温湿度計の記事を書きました。
しかし、前回の温湿度計で使用したATmega88では、使用していないポートが多く、
マイコンの実装面積も大きくなる問題がありました。
あと、ATmega88は値段が2010年ごろに比べて2倍を超える高級品になっているので、 
手元に山程あるマイコンATtiny2313に移植することにしました。 
というか、もともと2313で作っていたがI2Cの実装に心が折れただけです。 
出来上がったものがこちらです。

 完成した基板 

 基板裏側 

基板の設計 

ATtiny2313で基板を設計しながらいろいろ試行錯誤した結果、 
PB0-PB7を7セグのセグメントコントロールに、 
PD0-PD5を7セグコモンに接続しダイナミック点灯させることで、
配線がクロスすること無く無駄のないきれいな配線にすることができました。 
ATmega88の時に比べて配線がスッキリし、ユニバーサル基板の面積を増やすことができ、 他のセンサーや追加できるスペースを確保できました。

設計した基板 

回路 

ATtiny2313とTBD62783APGで7セグをドライブしていています。
TBD62783は7セグのコモンをドライブするのに使っています。
配線を簡略化した代償として、ポートAにI2Cを接続しています。
本来I2Cを接続できるポートは7セグを制御するのに使用されています。
I2Cのプルアップ抵抗は温度湿度センサー側にプルアップ抵抗が無いことも想定して、 
プルアップ4.7kΩを実装できるように入れています。
またI2Cで通信している様子がわかるように、I2CバスにLEDを入れています。
I2Cで通信しているとチカチカ光って可愛いです。

回路図

またセンサーをAHT25に変更しています。
AHT25は2025/06/11現在350円と他の温湿度計と比べ格安で手に入ります。
秋月で売っているAHT25はケーブルが付属していて、センサー部を任意の場所に固定できるので便利です。
冷蔵庫の中にセンサーを入れたり、通気口に貼り付けたりすることができて便利です。

ATtiny2313のポートAでI2C信号を生成
今回の一番苦労したのは、ATtiny2313のポートA(PA0とPA1)を使用したI2C信号の生成です。
ポートAを直接制御しビットバンギングでI2Cの信号を生成しました。
PA0をSDA、PA1をSCLとして使用しています。
詳細なコードは、GitHub(AHT25_Tmp_Hum_ATtiny2313)で公開しています。

まとめ

ATtiny2313への移植により、基板はコンパクトになり、配線の美しさも向上しました。
また、前回はユニバーサル基板で製作したが、流石に7セグの配線が面倒なので
JLCPCBに基板を発注しました。7セグ表示部の基板が黒色になったことで7セグの視認性が上がり見やすくなりました。

余談
AHT25とSHT31を両方部屋に置いて観察していますが温度はどちらも同じような値になっています。