5V Power input from in USB-B female form
Two 5V Power output in USB-A female form
Relay to control flow of at least 2A. Possibly more current support for better generalization. Most usb battery chargers are 2A, but some do 3A or 4A.
Transistors to ensure relay coils trigger from MCU pins. ESP8266 can only drive 12mA on GPIO pins. Relays need >20mA.
Ability to put microcontroller into deep sleep, waking up every 15 seconds to check for updates.
Infinite alarms for super customization. Not interrupt based, only 15 second accuracy, due to deep sleep wakeup cycle.
Ability to set the wakeup cycle from 1 second to 5 minutes. ESP8266 GPIO16 pulls CH-DP low during deep sleep. Anything that pulls
Microcontroller Interrupts for wakeup from deep sleep. ESP8266 can do this from the RTC on GPIO16 connected to reset.
Two daily alarms for on and off settings. Interrupt based. The alarm interrupt on DS3231 only pulls down to 3mA, so it might need a transistor to boost the current capability to overcome the GPIO16 high signal when in deep_sleep.
FTDI header pins with TX,RX,GND,5V for programming (could be removed if we can program using pogo pins and the firmware is completely debugged).
Button to control Reset for programming. Button should ideally be hardware debounced, but could probably work without it. ESP8266 needs to pull Reset low, and then GPIO0 low to enter programming mode.
Button to activate Wi-Fi for configuration.
LED to notify users that the Wi-Fi is on. Should draw less than 12mA.
LED to show that power is coming in. Should draw less than 12mA.
LED to show that output power is switched on. Should draw less than 12mA.
Voltage regulator to bring down 5V input to 3.3V for electronics. Should have decoupling capacitors to smooth the supply.
Photoresistor to detect the amount of light for use as a trigger. -- Ability to configure light based alarm. Five minute response time is sufficient.
Temperature sensor. Can use the temperature sensor inside the TCXO RTC, which can be good enough.
Real Time Clock with a temperature compensated crystal oscillator (TCXO). -- Real Time Clock with sub 0C and very high temperature range with high accuracy. -- Ability to set the timezone on the RTC. -- Ability to push time from Wi-Fi connected device onto the MCU to update the RTC.
Record the last X number of light and temperature readings along with when the power was turned on and off, and the timestamp. -- Option to set the frequency of saving of readings. -- Option to save X number of samples or to record until there is still memory available. -- Option to cycle through the available memory or just stop recording when full. -- Option to reset the samples by clearing the cache. -- Option to visualize the data in a chart on the web interface. -- Option to download the data to a Wi-Fi connected web client.
-Arduino Library: Rtc by Makuna, Sodaq_DS3231