1

I have radiator valves that send readings about the temperature and valve opening to the serial output: Honeywell HR-25.

I want to collect those readings in a central server at home without flashing the thermostat with a custom firmware.

To do that, I need an Arduino (very bare one) that can receive the serial data, but at the same time I need it to be powered down most of the time, or it would kill the battery life of the thermostat.

Can I wake up an Arduino from power down using the serial transmission, and immediately capture the serial data without dropping bits? how?

9
  • There is lot of information about low power Arduinos/ATMega. Not good?
    – user31481
    Nov 21, 2017 at 9:59
  • 1
    @LookAlterno Wake up from power-down upon incoming serial? I couldn't find it.
    – FarO
    Nov 21, 2017 at 10:11
  • Is the thermostat a smart one that requires a C wire? If so you can put a buck converter on it to power the arduino. Nov 21, 2017 at 10:16
  • The power is provided by the thermostat, there is a connector with Vcc. Still, I want the batteries to last at least a full season. If I keep the atmega in standby, they probably won't.
    – FarO
    Nov 21, 2017 at 10:46
  • I can also power down the device and wake it up (LowPower library) some seconds before the expected serial transmission...
    – FarO
    Nov 21, 2017 at 10:59

3 Answers 3

0

I never tried myself, but afaik you can define an wake up/interrupt from USART, meaning that if you get a receiving byte from the UART it will wakeup the Arduino.

When powered up, you can read continuous data. I would be surprised if they make an UART wakeup signal, that bytes would be lost (i.e. that powering up would take too long to miss more UART bytes).

0

You can build a circuit using an electronic counter to only start supplying power to the Arduino at a specific given time. You would still need to supply the circuit, but the energy need would be a small fraction of the Arduino's needs.

On the other hand, can't you use a second power source for the Arduino? Li-On batteries are pretty cheap nowadays, and you can always savage something from an old Notebook's battery.

-1

I don't think you can use the HW peripheral, so IF you really want/need low power you will need something like this (note: this may be very overkill for your application)

schematic

simulate this circuit – Schematic created using CircuitLab

NOTE: I assume the "serial" is a UART and its "rest" voltage is 5V. Choose the PMOS so that it is turned on with about 3V.

In this case, the circuit is normally powered off. When you receive a START, the PMOS start conducting. The ATMEL will then pull pin B to 5V, thus keeping the circuit powered. Through pin A it can sense the UART.

In this case, since you miss the start bit, you won't be able to use the usual libraries or peripherals. You can, however, implement a software uart which can avoid the first start bit to overcome this.

Just a suggestion, however. If your thermostat is transmitting frequently, maybe a more useful approach can be to listen to one transmission, then put everything to sleep for let's say 30 seconds, then turn on again and wait for the first serial transmission. This can be simpler than this solution and more effective

3
  • This is completely unworkable - in actually cutting power to the chip, you'll suffer startup delays even worse than in allowing the chip to wake itself. You really don't need to cut power to modern MCUs, they're designed to handle that task with their internal circuitry. Nov 21, 2017 at 15:54
  • @ChrisStratton I have to thank you, because I never looked into the deep hole of startup times; I always thought that the clock was stable pretty soon. In any case, Table 13-12 on the datasheet states that the internal clock can be used in a stable way, when the BOD is enabled, after 20 clock cycles. I assume that the power rises in negligible time. With a 9600bps serial (I usually find this in this kind of applications) you will have to wait 156us before sampling the first byte from the falling edge (which is 1248 clock cycles). I think you have enough time to set up everything...
    – frarugi87
    Nov 21, 2017 at 16:55
  • Of course you will have to be quick at initialising, but I think it is doable. I'll try to implement it sooner or later... In any case the power consumption in power down is in the range of 1uA, but I think that it'll stop the clock, so you will need exactly the same time to wake as a power on (excluding the VCC rise time). The only power-save mode with the oscillator enabled is the standby one, but it consumes slightly less than 1mA (and this is too much, since a rough estimation is that the thermostat absorbs around 0.2mA)
    – frarugi87
    Nov 21, 2017 at 17:05

Not the answer you're looking for? Browse other questions tagged or ask your own question.