Thermistor and humidity data logger

Hi all,

I have a project where I need to read multiple analogue thermistors (up to 20) and humidity sensors (up to 6) without being tethered to a computer. This data needs to be time stamped and stored onto an SD card for data retrieval later.

I've been scratching my head trying to figure out I/O pins and have realised that I'm going to need a multiplexer- both for the thermistors and the humidity sensors. I'm also going to need a lipo shield and data logging shield.

So far my shopping list is as follows:

I think I'm fine with everything except that the humidity sensor is I2C (which will be multiplexed) and so is the RTC clock on the data logger.

My question is, will I be able to stack use the I2C connections to the clock and the I2C multiplexer simultaneously? If so, is it just plug and play or am I going to have to do some fiddling? I guess as well is there anything I've overlooked with regards to IO pins?

The I2C bus is designed for multiple addressable devices. If your I2C devices are addressable you don’t need to multiplex. If you can find I2C temperature sensors that should simplify things a lot. (And, there solid state options that are usually better than a thermistor.)

Adafruit power boost shield

You'd be better off NOT using a power booster. You do NOT get something for nothing. Using a power booster will go through the under-voltage battery much faster than you would go through a proper voltage battery.

except that the humidity sensor is I2C (which will be multiplexed)

You can connect any number of devices to the I2C bus, as long as each has a different address. If that's what you mean by multiplexing, fine. If not, you are wrong.

DVDdoug:
The I2C bus is designed for multiple addressable devices. If your I2C devices are addressable you don’t need to multiplex. If you can find I2C temperature sensors that should simplify things a lot. (And, there solid state options that are usually better than a thermistor.)

PaulS:
You can connect any number of devices to the I2C bus, as long as each has a different address. If that’s what you mean by multiplexing, fine. If not, you are wrong.

I think I’m correct in saying that the adafruit breakout board/ HTU21D humidity sensor has a fixed address of 0x40. Given that is the case, I’m right in thinking that I cannot connect say 4 of these sensors on the same I2C port, thus I’d need to use the I2C multiplexer linked.

The complication is that not only do I need multiple humidity sensors (multiplexed over the I2C port), but I also need to be able to record the time of a humidity reading, which also uses the I2C port. From what you guys have said/ what I’ve read given the adalogger RTC clog has an address of 0x68, I should be okay.

PaulS:
You’d be better off NOT using a power booster. You do NOT get something for nothing. Using a power booster will go through the under-voltage battery much faster than you would go through a proper voltage battery.

thanks for the heads up- what would you suggest as an alternative?

IV_lab: I think I'm correct in saying that the adafruit breakout board/ HTU21D humidity sensor has a fixed address of 0x40. Given that is the case, I'm right in thinking that I cannot connect say 4 of these sensors on the same I2C port, thus I'd need to use the I2C multiplexer linked.

The complication is that not only do I need multiple humidity sensors (multiplexed over the I2C port), but I also need to be able to record the time of a humidity reading, which also uses the I2C port. From what you guys have said/ what I've read given the adalogger RTC clog has an address of 0x68, I should be okay.

The humidity sensors you picked do seem to have a fixed address, and you could solve that with an I2C multiplexer. You are correct that you won't have any address conflict with your RTC.

A cheaper (and in some ways a bit better) solution would be to bit bang I2C to all 6 humidity sensors. You would have one common clock line, but 6 independent data lines. Since all of the ICs have the same address and command structure you'd clock the same data out to each one, and then read the different data back on each line. If you used the real I2C port on the Uno for the RTC, you could get all of your I2C data back simultaneously at your timestamped moment. This method isn't very efficient in terms of using GPIO or execution time, but the Uno still has more than enough of both for your project.

You mentioned an analog mux for your thermistors. You will need some. You can get I2C ones, but you'd probably be better off getting three like the MC74HC4052A and use two GPIO to select the A and B inputs. You could then multiplex your 20 analog thermistors to 5 A/D inputs.