New Vale Nodes
The previous displays I made for Vale were pretty straight forward, an arduino nano was connected to a DS3231 real time clock chip and at the appropriate time they displayed a number on an LED matrix display. The whole thing was powered from the mains with a 5V PSU. This year they wanted the same thing, but on the nodes, out in the quarry and this mean battery powered and waterproofed, there had to be some fairly significant changes to the system.
Firstly, if you want a battery powered item to last for a whole weekend, LED's are a bit of a no go. They're quite power hungry and illuminating a whole display of them is going to eat through batteries. The other problem with LED's is that they can be hard to read in the sunlight and blinding in the darkness. ePaper displays however can be read in direct sunlight, can be illuminated with a torch and many only consume electricity to change the image. They seem ideal for an application like this. I opted for these waveshare 2.9 Inch epaper modules, no particular reason but they fell into a price bracket and are large enough to display a decent number.
The next design choice was to use the arduino pro mini instead of the nano. The nano has a built in USB->Serial device this chip is always on and always consuming power, the Pro mini uses a separate device to program the controller so it takes less power. The pro mini has several options too, I needed the ATmega328P for the extra RAM and memory but epaper display runs on 3.3V and the 3.3V pro runs at a slower clock speed uses less power than the 5V version so that seemed a sensible choice.
The DS3231 RTC has it's own battery back up and is designed to run at extremely low power for years. The prototype used the same clock from the previous display and it's still accurate after a year. The controller only needs to change the 12 times in a whole day so it'll also be in low power mode most of the time. The ATMega is able to wake itself up from a deep sleep using it's own internal timer but that has a maximum delay of 8 seconds, longer periods of sleep are often achieved by adding those together but there is a better way.
The DS3231 has an alarm mode, you can program with a specific date and time and when the clock gets to that time it will change the state of one of it's output pins. This signal line can be connected to the interrupt line on the ATMega and used to wake the arduino up. This means the controller will only be awake once every two hours to change the display and then it can go back into deep sleep again. Finally, both the pro board and the RTC chip have power LED's on them, by physically removing the LED's on each of them the whole system should be reduced to a very minimal power consumption.
There are many incredibly useful discussions online about the different things you can do to reduce the power consumption of these board. A deep sleep mode with an LED consumes around 3mA, without the LED that's down to 30uA so 100 times less power. After some simple testing and current measurements, my estimates suggest that, given a screen change every 2 hours, the 3x AAA batteries in each node should now last for around 1000 hours, more than enough to cover the 60 hours they're required to run over the course of a weekend.
Next time I'll give a breakdown of the code used to drive the boxes. I had to make a few interesting choices there to make it all fit into the space available.