I am looking to make a small footprint project that will monitor the sensors on an Adafruit Sensirion SHT45 using a Qw/ST connector then transmit them to a secondary device over WiFi. Due to the limitations of the location I am planning to power this using a battery, probably a small footprint, thin LiPo.
I have considered several different options but I can’t seem to find a board that fits my needs. Does anyone have any suggestions for either a single board or a board and some add-ons that would enable me to do this?
I was looking at some Picos however I can’t find one that has all the features that I require. I am not unsure about attaching a shim as that would result in a more uneven height distribution which is something that I am hoping to avoid.
I also considered Tinys but I am unsure of the features and differences between the different ones and how add-ons could be connected
For a good suggestion, I need to know more about what you want to do and how:
which programming language do you plan to use?
how long do you want to run without recharging the LiPo?
what are “all the features that you require”?
are you focused on a specific chip/architecture, e.g. RP2xxx, ESP32xx?
do you want a sort of plug&play solution, or are you able to do (light) soldering work?
Not strictly related, but why did you choose the SHT45? This is a good but very expensive sensor which does not perform better than much cheaper ones, at least if you are not pushing the limits.
I am not necessarily particular about languages. I have done some work with Arduinos before and I also have experience with python, though not micro/circuit libraries.
I would want a decently high run time (Probably in the order of weeks) without recharging the LiPo.
Sorry, I thought I had made it clear that the features were WiFi Connectivity, Qw/ST connector, LiPo connectivity and a small relatively uniform in height footprint. It would also be nice to be able to recharge the LiPo without disconnecting it though that is not essential.
I don’t know enough about the differences between chips/architectures to be able to have a preference.
I am more than able to do soldering work.
I chose the SHT45 because I thought it would be good for giving accurate readings at <20% humidity. It also has a fairly low uniform profile. Is there a similar sensor that you think would be better?
One important question I forgot to ask: what is your planned measurement interval? And how exact do you want to have the intervals on fixed absolute dates?
You will not reach a high runtime without either turning off the device in-between measurements, or with a device that you can put into very deep-sleep during inactivity. For turning the device on/off there a few nice solutions around, e.g. the TPL5110/TPL5110 timer-button from Adafruit. The drawback of these devices is that they are limited to a maximum cycle of 2h and the intervals are not 100% exact.
From your requirements, you should also look at one of the ESP32S3 Feather boards from Adafruit. I own one (Adafruit 5477) and measured 18µA in deep-sleep, which is absolutely great. It also has built-in LiPo charging, offers QW/ST, a battery monitor (which will tell you when you need to recharge the LiPo).
Note that you cannot just take any ESP32S3, because the board design is very important for low-power consumption. E.g. I also have an ESP32S3 from Waveshare and that board uses 1mA (that is a factor of 50x more) in deep-sleep.
Have you looked at the espessifs? Esp32 and Esp8266? They are feature rich and cheaper then alot of atmel32u4 boards most the time.
I personally like the atmel32u4 aspect that it can be immediately detected by a PC’s USB as a device, i.e. a DIY keyboard project, HUD, joypad or emulate other devices via USB. Many of the tiny and the atmel328p do not have this built in characteristic.
Esp32 and esp8266 may not have this feature but they are rich in other options and you can have off a rpi UART as well as a wifi AP or client or both.
I am looking for something that will do continuous monitoring rather than periodic updates so turning it off is definitely not possible. With regards to deep sleep as there won’t really be much inactivity not sure if it would ever achieve this.
I’ll have a look into your sensor comparisons and see if there is a better one.
In this case you runtime will be measured more in hours rather than in weeks. And regardless of the sensor you choose, an always on system will give you wrong readings after a while due to heat-creap.
Is there a different type of battery that would give a longer runtime that the LiPo? A larger capacity for a similar small size.
Would there really be that much heat being generated, I’ve not explored heat-creep much. Would I be better using a thermocouple with a long wire instead? I realise that that would involve doing some calibration in the program though to know what temperatures correspond to what reading.
Let’s do some math. Typical high-capacity LiPos (18650) top out at 3500mAh, but they are already very expensive. A Pico-W will idle at about 45mA@3.6V. This will give you about three days of operation, probably much less because you have 5% self-discharge in the first 24h and you cannot draw the full capacity anyhow. And your device won’t be idle as you described.
Small footprint thin LiPos have 150mAh - 2000mAh (search the shop at Pimoroni). Other batteries won’t work well with typical MCUs. The Pico is an exception, since it accepts a wide input voltage range so you can use normal batteries as well.
Regarding heat-creep: yes, this is a problem. 160mW might not seem much, but copper is a good thermal conductor and thus the heat will eventually creep through all the wires to the sensor. Pimoroni has an Enviro Indoor and I remember discussions on this forum why temperature is off if it is operated by USB-power (always on).
If you already have the SHT45, then there is no need to change the sensor. It is a good one, the only drawback is the price.
The main restriction I have is that the system will be placed in an air tight container with no ports to the outside so I believe that operating off mains power is not possible. The only way around this I can think of would be some wireless power system to keep things running though I have no idea where to start looking for something like this and I imagine that it is expensive.
I want to be able to respond reasonably quickly the humidity rising above a specific level so I believe that always on is necessary though possibly being able to respond within 1 to 1.5 hours would be quick enough. I am not as concerned about exact temperature, so I don’t think that heat creep would be an issue in this case unless it was causing inaccuracies of 10 degrees or more.
I haven’t actually bought anything yet just done some online browsing for possibilities of sensors I could use.
If your response time is 1-1.5h, then it should be enough to measure every 5 minutes. Even if you measure every minute, you should be 5s on and 55s off. This would extend your runtime by a factor of 12.
How does the humidity rise in an air tight container?? Note that you have to be concerned about the temperature, because all of the sensors spit out relative humidity in per-cent, and this figure highly depends on the temperature. As temperature rises, the relative humidity drops (everything else equal).
I didn’t realise that it would be so quick to turn on and off, I’ll look at your suggestions for doing that.
It’s actually humidity fall that I am interested in not rise, I have some desiccant in the container to lower the humidity. Also it is not 100% air tight so when the desiccant is used up the humidity will begin to rise slowly. I need to be aware of this so that I can change the desiccant.
I think that relative humidity is fine as my limits are in relative humidity not absolute and the temperature will be fairly constant in this case, max change of about 15 degrees.
This sounds reasonable. You should test the gradient (rate of change) and then decide on the measurement interval. You might start with one minute and then increase the interval depending on the insights you have.
Note that there are sensors that will create interrupts on their own when values are out of predefined bounds (eg. the HC3022, which is even cheaper than the SHT45). In this case you even could send the device to deep-sleep and just wait for the sensor to trigger the alarm, wake up the MCU which in turns relays this information using WIFI. This should be the best solution from the runtime perspective. But I would certainly verify the HC3022 with a normal, interval based measurement scheme just to be sure it works as expected.
I’ll look at the HC3022, does it come on a breakout board and do you have a link to somewhere I could purchase it?
However we have meandered slightly from my original query. What MCU would you recommend to pair with the sensor?
HDC3022 (I had a spelling mistake in the post above):
MCU:
There are cheaper options, but once you add LiPo-charging into the mix, you will be at that price level. The big advantage of this MCU is that it can monitor the battery-level, which you should also send via WIFI to alert you.
Thank you very much, does the MCU have an inbuilt turn off feature that could be woken up by the interrupt or do I need an additional component as well?
I think at this stage you should start using Google. This is all fairly standard MCU-stuff (interrupts, sleep-modes and so on). You will find tons of example code.