トップページ | 組込みソフト | AM2321湿度センサー |
AM2321湿度センサー 2014/6/5 |
湿度センサー 秋月電子通商 温湿度センサ モジュール AM2321 を購入しました。資料が中国語だけです。あまり情報が公開されていません。(もしかして、あまり売れていない?) スレーブアドレスは0xb8となっています。 あれーーーー、i2cdetectで検出されるアドレスは7ビット。0xb8ってどういうこと?あまり深追いをしたくないのですが、調べてみました。 最初に、湿度センサーは本当にI2Cデバイスになっているか? 条件:Power Onから SCL端子をハイ・レベル(3.3V)にして500ms間保持すると SCL端子はPower On からずーーーと3.3Vです。 たぶん、I2Cデバイスになっている。 スリープ状態からどうやって目覚めさせるか? 最初に0xb8を送ると目覚めるらしい?どうやって送るの?結論は、 ioctl (m_nFd, I2C_SLAVE, devAddr) でスレーブアドレスを指定する。 write( m_nFd, NULL, 0); 0バイト書き込む。 エッ!0バイト書き込んだって何もならないでしょう? 当然の疑問です。 本当は、 スレーブアドレスの信号を出す 0バイト書き込む。 となります。 write( m_nFd, NULL, 0); を実行したときのSDA,SCL端子の信号は次のようになりました。 信号の意味は。 D7-D1はスレーブアドレスです。 D1を最下位ビットとした信号のアドレスは1011100(0x5c)になります。つまり0xb8を1ビット右シフトした値です。 というこは、i2cdetectで検出できないか? できました。 注意:秋月電子のLCDを外してください sudo i2cdetect -y 1 すぐにもう一度 sudo i2cdetect -y 1 おおーー!0x5cの湿度センサースレーブアドレスが見えた。 |
使ったデバイス |
キャラクタLCD 秋月電子通商 ACM1602N1-FLW-FBW 大気圧センサー 秋月電子通商 LPS331使用 高精度大気圧センサーモジュール 取得した気圧データが正しいのか?比較するための気圧計がないのでわかりません。なんとなくそれなりのデータかな?と思っています。温度も計測できます。ただし精度が±2度。ちょっとがっかりですね。 湿度センサー 秋月電子通商 温湿度センサ モジュール AM2321 センサー2つで温度、湿度、大気圧が計れます。 |
計測結果 |
3つのセンサーで温度を計測した結果です。 上の行が湿度センサーによる温度と湿度の表示。 下の行が大気圧センサーによる温度と大気圧の表示。 温度は1.7℃も違います。 たぶん湿度センサーのほうが正しいかな? また気圧については、晴天のときは993hPaでした。本日曇りで896hPaです。 |
プログラムについて |
I2C.h I2C.cpp に以下の関数を追加しました。 int GetFd(){return m_nFd;} int wakeUp(int devAddr, int cnt); int Write(int devAddr, char* pData, int size); int Read(int devAddr, char* pData, int size); 上記計測プログラムは humidity.cpp です。 |