2016年5月
「DHT11使用 温度・湿度計」の最後で予告(?)した、
温度・湿度センサーAM2302を使用したロガーを作りました。時刻の生成にはRTCモジュールDS1307RTCを利用しました。
ちなみに「キャラクタLCD LCD16X2-I2C 動作テスト」の最後で
「何かに使わないともったいない」と言っていたLCDモジュールの利用先となりました。
LCDモジュールのI2C接続ではレベル変換を行っています。レベル変換を噛ませたのには次のような理由もあります。
I2CバスにRTCモジュールとLCDモジュールを、それぞれ単独で接続した場合は正常に動作しましたが、一緒に接続するとどちらも正常に動作しませんでした。
※このときLCDモジュールのプルアップ抵抗は取り外した。
I2Cバスに複数のデバイスを接続するとき、しばしばこのようなことが起こるようです。
プルアップ抵抗の値を試行錯誤するのが面倒だったので、レベル変換ICのOE(OutEnable)端子を利用し、LCDモジュールを接続・切断できるようにしました。
上基板のピンヘッダの取り付けが最悪に面倒くさかったです。
完成後に下基板のスイッチの位置を右へずらしました。※スペーサーとスイッチの隙間が狭くて指が入れにくかった。
秋月の「C基板用アクリルパネル」(P-09853)を天板にしたらグッと見栄えが良くなりました。お勧めパーツです。
回路図
配線図
本ロガーはUSBコネクタを電源に接続すると同時に動作開始します。スイッチはオフにしておきます。この状態でLCDは消灯、シリアル通信もできません。
RTCモジュール、温度湿度センサーは、パーツショップに同じ物がなかったり高価だったりして入手しにくいかもしれません。
可能であれば海外通販の利用も検討してみてください。
温度湿度センサーAM2302のプルアップ抵抗R2は、回路図では5.1kΩですが、実際に使用したのは10kΩです。特に問題ありません。
マイコンは、回路図ではATmega88ですが、実際に使用したのはATmega328Pです。ATmega88Pでも動作しました(もちろんリビルドした)。ATmega88Vでは動作しませんでした(同)。
公開しているファームはATmega328P用です。
三端子レギュレータは、3.3VのLDOタイプで15mA程度取れるものなら何でもよいです。データシートを確認し、コンデンサの容量・種類を適宜変更してください。
※種類というのは、積層セラミックコンデンサなのか、電解コンデンサなのか、ということ。
キャラクタLCDモジュールはI2Cのものなら接続可能ですが、コントローラやスレーブアドレスが異なる場合はソースを書き換えてファームをリビルドする必要があります。
部品名 | 部品番号 | 値 | 個数 | 参考価格/備考 |
---|---|---|---|---|
AVR(マイコン) | U1 | ATmega328P | 1 | 250円(秋月電子) |
RTCモジュール | U2 | DS1307+AT24C32 | 1 | M1307-12P(aitendo) |
温度湿度センサー | U3 | AM2302 | 1 | 別名DHT22 |
三端子レギュレータ3.3V | U4 | LP2950L-3.3 | 1 | LDOタイプ |
I2Cレベルコンバータ | U5 | AE-FXMA2102 | 1 | 200円(秋月電子) |
キャラクタLCDモジュール | U6 | コントローラSPLC792A | 1 | LCD16X2-I2C(aitendo/品切れ) 同等品K-LCD792-I2C(aitendo) |
電解コンデンサ | C1 | 10uF/10V | 1 | 10円 |
積層セラミックコンデンサ | C2,C3 | 0.1uF [104] | 1 | 10個100円 |
積層セラミックコンデンサ | C4,C5 | 1uF [105] | 1 | 10個100円 |
抵抗 | R1 | 10kΩ [茶黒橙金] | 1 | 100個100円 |
抵抗 | R2 | 5.1kΩ [緑茶赤金] | 1 | 100個100円 |
抵抗 | R3 | 470kΩ [黄紫黄金] | 1 | 100個100円 |
そんなに悪くないと思いますが、中途半端な感じの工作物になりました。 次に作るときは、気圧センサーと容量の大きなEEPROMを追加して、リチウムイオン電池で動かすものにしようと思います。