-
Arduino Pro Mini clone 3V3 8Mhz → remove voltage regulator and power led, see picture
-
128x64 monochrome OLED display
-
DS3231 real time clock chip based module → remove charger resistor and power led, see picture
-
14500 3.7V lithium battery
-
a micro USB lithium battery charger module, resistor changed to 3R6
-
three tactile push button
-
DHT22 temperature/humidity sensor + 10k resistor between the Vcc and Data pins
-
piezo beeper
-
plastic case: http://www.thingiverse.com/thing:1860495
-
arduino vcc and gnd to battery
-
DS3231 vcc to battery, gnd to D9
-
OLED vcc to battery, gnd to D8
-
DHT22 vcc and gnd to battery, data to D4
-
buttons to gnd and D2, D3, D5
-
beeper vcc to battery, gnd to D6
-
charger to battery
-
software have to be configured individually for each arduino, but only once
-
measure voltage with volt meter (eg. 3.93 V)
-
check voltage measured by the arduino by pushing the middle button (eg. 3.54 V)
-
change correction value in the arduino code: measured/reported: #define VCORR 3.93/3.54;
-
auto on-off: currently active, the screen turns on at every workday at 8:30 at turns off at 18:00
-
button 1 short press put device in sleep -→ almost no power consumption (~11 uA)
-
power off automatically if the battery reading is below 3.4V (power on with the left or the middle button)
-
change screen with short press of the middle button -→ show temperature, humidity, time and battery voltage with different layouts (easy to configurable in the arduino code)
-
on-time is up to 300 hours -→ depends on the ammount of data (pixels) the screen have to display (700mA battery and only one data - like the time - on the screen with small numbers)
-
on-time with 1 big data (like time) and two small (like temperature and humidity) is more then 100 hours. It is ~2 weeks with the auto on-off feature set to display only 8-9 on a workday
-
removing the resistor on the DS3231 clock module is needed if you use it with a CR3216 non-rechargeable battery as I do
-
make sure you are using the included DHT library. Without that the temperature/humidity measurements will be slow, as the un-modded library is using millis() to measure time. If the un-modded library got a request within 2 seconds it sends back the last measurement without actually measuring anything. (DHT sensor measure interval is 2 seconds.) The problem is that with the power-off of the arduino the timers are not counting so millis() is measuring only the on-time, so the old library thinks that we are still in the 2 seconds window even if the arduino was sleeping for minutes.
-
on the lithium charger module there is a resistor which tells the module how big the charger current should be. Usually these modules are shipped with a resistor (1.2 kOhm) for the 18650 batteries with 1A charging current. Changing the resistor to 3-4 kOhm will reduce the charging current to an acceptable level (400mA-300mA) for the capacity (700-1000 mAh) of the 14500 battery.
-
I used a few windings of the CAT5 wire for the contact points of the battery holder
-
I used a hot glue gun to fix the components into the case and CAT5 Ethernet wires the connect the pins. To save space I removed all metal pins from the boards like the oled display or the clock module.
-
to set the time on the clock module use the included setTime.ino : upload it to the arduino board, open serial console, set speed to 155200 and enter the current date/time on the serial console like: 2017,1,6,15,42,45
kOhm |
3 digit resistor code |
mA |
30 |
303 |
50 |
20 |
203 |
70 |
10 |
103 |
130 |
5 |
502 |
250 |
4 |
402 |
300 |
3 |
302 |
400 |
2 |
202 |
580 |
1.66 |
162 |
690 |
1.5 |
152 |
780 |
1.33 |
132 |
900 |
1.2 |
122 |
1000 |