Member Since: December 30, 2011

Country: United States

  • It took me a while to get it going, but I've written it up and provided some sample code: http://blog.ringerc.id.au/2012/01/using-rht03-aliases-rht-22.html

  • I spent about 9 hours bashing my head against this sensor (or, well, the wall while trying to get this sensor working) before finally getting it going. Write-up and sample code here

    Key lessons:

    • When requesting a sensor read, you have to actively pull the signal line high after your initial 1 - 10ms low pulse. Stopping pulling it low and letting a pull-up resistor bring it high is not good enough, at least with my setup (tried 20k built-in and 1k external pull-up resistors). You must actively pull the line high (+5V DC) for 20-40us then let the pull-up take over and wait for the it to go low as the sensor ACKs your request.
    • The datasheet is a lie. In particular, instead of a neat 50us low signal before sending a bit, my sensor may pull the line low for anything from 35 to 75us. Similarly, 0-bit high pulses may be from 10-40us instead of the documented 22-26us, and 1-bit high pulses may be 60-85us instead of 70us.
    • Even when you're being tolerant of timing weirdness, you'll get bad reads. Adding a cap across the +5VDC input (as mentioned in the datasheet) doesn't seem to help, so it's probably not power fluctuation. Be prepared to re-try reads and remember to wait at least 2s between reads.
    • (Didn't trouble me, but): Remember to let the sensor settle for at least 2s after power-on before attempting a read, and at least 2s between reads.

No public wish lists :(