[{"element_type":"text","content":"\n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n        \u003ch3\u003eOverview\u003c/h3\u003e\n\u003cp\u003eThe\u0026nbsp;\u003ca href=\"https://www.adafruit.com/product/3435\"\u003eTPL5110\u003c/a\u003e (with driven output line) or the \u003ca href=\"https://www.adafruit.com/product/3573\"\u003eTPL5111\u003c/a\u003e (with toggling enable line) allow some\u0026nbsp;\u003cstrong\u003ereally simple low-power projects\u003c/strong\u003e. Use the zero to sever and supply power, or the one to control enable pins (for LDO/MCU).\u003c/p\u003e\n\u003cp\u003eJust adjust the potentiometer to tweak the turn-on time, and then with the TPL5111 you send a low high transition to the \u003cstrong\u003eDone\u003c/strong\u003e pin to go to sleep. The Enable pin goes low and MCU sleeps until the next cycle.\u003c/p\u003e\n\u003cp\u003eAll of that means you can \u003cem\u003eeasily \u003c/em\u003ecreate a \u003cem\u003eno-code \u003c/em\u003e\u003cspan style=\"text-decoration: underline;\"\u003elow-power\u003c/span\u003e project, just by hooking up the TPL5111 to a WipperSnapper compatible board, and combine that with an E-ink display for the ultimate low power setup.\u003c/p\u003e\n\u003cp\u003eThe board wakes up, connects to WiFi and Adafruit IO, get's the latest messages (E-Ink Display) and sends some sensor data. Two small\u0026nbsp;\u003cstrong\u003eActions\u003c/strong\u003e on Adafruit IO switch the\u0026nbsp;\u003cstrong\u003eDone\u0026nbsp;\u003c/strong\u003epin to a high level, and then ten seconds later back to low. A third action updates the screen message with time + weather every 10mins.\u003c/p\u003e\n      \n\n\n\n\n\n\n\n\n\n\n\n\n\n","metadata":{}},{"element_type":"user_image","content":"https://cdn-learn.adafruit.com/user_assets/assets/000/002/018/original/IMG_20251020_040229_910_%28Large%29.jpg?1760974521","metadata":{}},{"element_type":"user_image","content":"https://cdn-learn.adafruit.com/user_assets/assets/000/002/019/original/image.png?1760974499","metadata":{}},{"element_type":"text","content":"\n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n        \u003ch3\u003eProducts Used\u003c/h3\u003e\n      \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","metadata":{}},{"element_type":"product","content":"https://www.adafruit.com/product/3573","metadata":{}},{"element_type":"product","content":"https://www.adafruit.com/product/5889","metadata":{}},{"element_type":"product","content":"https://www.adafruit.com/product/4224","metadata":{}},{"element_type":"product","content":"https://www.adafruit.com/product/4262","metadata":{}},{"element_type":"alert","content":"\u003ch4\u003eCrucial things to note:\u003c/h4\u003e\n\n\u003cp\u003eYou must unpower the TPL511x for the delay time to be adjusted. Moving the potentiometer won't take effect until the TPL511x is unplugged and then repowered (toggle VDD).\u003c/p\u003e\n\n\u003cp\u003eI found the Done line wasn't fully going to zero volts after the ESP32 slept due to my pin choice, causing wake issues, but adding an additional 10k pull down resistor to ground solved the issue.\u003c/p\u003e\n\n\u003cp\u003eAn Analog Input component reads a random pin on the board and reports it every 30seconds, that allows me to track when the board comes back online (and if it ever failed to sleep), also used as an Action trigger.\u003c/p\u003e\n\n\u003cp\u003eThe 2.9\" flexible E-Ink screen appears to use the ILI0373 driver as noted by a user in the forums.\u003c/p\u003e","metadata":{"class":"element alert-element build-alert alert-warning","markdown":"#### Crucial things to note:\n\nYou must unpower the TPL511x for the delay time to be adjusted. Moving the potentiometer won't take effect until the TPL511x is unplugged and then repowered (toggle VDD).\n\nI found the Done line wasn't fully going to zero volts after the ESP32 slept due to my pin choice, causing wake issues, but adding an additional 10k pull down resistor to ground solved the issue.\n\nAn Analog Input component reads a random pin on the board and reports it every 30seconds, that allows me to track when the board comes back online (and if it ever failed to sleep), also used as an Action trigger.\n\nThe 2.9\" flexible E-Ink screen appears to use the ILI0373 driver as noted by a user in the forums.","alert_type":"warning"}},{"element_type":"text","content":"\n  \n  \n  \n  \n        \u003ch3\u003ePin Choices\u003c/h3\u003e\n\u003cp\u003eAvoid any pins that are level shifted (I'm looking at you Pin 5 on the ItsyBitsy) or not input/output as required.\u003c/p\u003e\n\u003cp\u003eTry to avoid pins that are less compatible or reserved for other things (strapping pins, I2C bus, etc).\u003c/p\u003e\n\u003cp\u003eInitially I chose pin 33 for my Done signalling, but that had unexpected behaviour and didn't cleanly sink to 0v without an additional pull down resistor (the 1 megaohm resistor on the TPL5110 was too weak).\u003c/p\u003e\n\u003cp\u003e\u0026nbsp;\u003c/p\u003e\n\u003cp\u003eSee this brief answer about why a pin (33) was not returning to zero volts when the ESP32 got de-powered:\u003c/p\u003e\n      \n\n\n\n","metadata":{}},{"element_type":"user_image","content":"https://cdn-learn.adafruit.com/user_assets/assets/000/002/020/original/Screenshot_2025-10-20_163223.png?1760974723","metadata":{}},{"element_type":"text","content":"\n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n        \u003ch3\u003eWipperSnapper Device Setup\u003c/h3\u003e\n\u003cp\u003eCreate a\u0026nbsp;\u003ca href=\"https://io.adafruit.com/devices/new\" target=\"_blank\"\u003eNew Device\u003c/a\u003e on Adafruit IO to install WipperSnapper on your WiFi enabled board.\u003c/p\u003e\n\u003cp\u003eDedicate one pin to signalling the work is \u003cstrong\u003eDone \u003c/strong\u003eand the board is ready to sleep.\u003c/p\u003e\n\u003cp\u003eConfigure a MOSFET component or equivalent digital output component pointed at the \u003cstrong\u003eDone\u003c/strong\u003e pin.\u0026nbsp;\u003c/p\u003e\n\u003cp\u003eAlso setup the onboard neopixel as an indicator that the board is awake.\u003c/p\u003e\n\u003cp\u003eAdd the display or other components then head over to Actions to configure the sleeping.\u003c/p\u003e\n\u003cp\u003e\u003cspan style=\"text-decoration: underline;\"\u003eMy WipperSnapper Device Config:\u003c/span\u003e\u003cbr\u003e\u003csup\u003e(For an ItsyBitsy ESP32 + E-Ink Friend Breakout + 2.9\" Flexible E-Ink display)\u003c/sup\u003e\u003c/p\u003e\n      \n\n\n\n\n\n\n\n\n\n\n\n\n","metadata":{}},{"element_type":"code","content":"{\n  \"exportVersion\": \"1.0.0\",\n  \"exportedBy\": \"tyeth\",\n  \"exportedAt\": \"2025-10-20T02:29:51.504Z\",\n  \"exportedFromDevice\": {\n    \"board\": \"itsybitsy-esp32\",\n    \"firmwareVersion\": \"1.0.0-beta.119\"\n  },\n  \"components\": [\n    {\n      \"name\": \"2.9\\\" Grayscale eInk (ILI0373)\",\n      \"type\": \"eink-29-grayscale-ili0373\",\n      \"displayType\": \"epd\",\n      \"driver\": \"epd_ili0373\",\n      \"textSize\": 3,\n      \"csPinName\": \"D12\",\n      \"dcPinName\": \"D14\",\n      \"spiBus\": 0,\n      \"epdMode\": \"grayscale4\",\n      \"width\": 296,\n      \"height\": 128,\n      \"isDisplay\": true,\n      \"rstPinName\": \"D7\",\n      \"busyPinName\": \"D13\"\n    },\n    {\n      \"name\": \"Analog Pin (Device Online Signal + 30s timer)\",\n      \"pinName\": \"A38\",\n      \"type\": \"analog_pin\",\n      \"mode\": \"ANALOG\",\n      \"direction\": \"INPUT\",\n      \"analogReadMode\": \"PIN_VOLTAGE\",\n      \"period\": 30,\n      \"isPin\": true\n    },\n    {\n      \"name\": \"MOSFET Driver (TPL5111 Done pin)\",\n      \"pinName\": \"D32\",\n      \"type\": \"mosfet_driver\",\n      \"mode\": \"DIGITAL\",\n      \"direction\": \"OUTPUT\",\n      \"isPin\": true\n    },\n    {\n      \"name\": \"NeoPixel\",\n      \"pixelNumber\": 1,\n      \"pixelsOrder\": \"GRB\",\n      \"pixelBrightness\": 255,\n      \"pinName\": \"D0\",\n      \"type\": \"neopixel\",\n      \"pixelsType\": \"NEOPIXEL\",\n      \"isPixel\": true\n    }\n  ]\n}","metadata":{"language":"javascript","linenums":false,"filename":""}},{"element_type":"text","content":"\n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n        \u003ch3\u003eActions Setup\u003c/h3\u003e\n\u003cp\u003eNow create an Action that sets the Done pin to 1 based on data arriving from the Analog input component.\u003c/p\u003e\n\u003cp\u003eConfigure the action to use a 5-15s delay, to give the board time to do anything important when it wakes.\u003c/p\u003e\n      \n\n\n\n\n\n\n\n\n\n\n\n","metadata":{}},{"element_type":"user_image","content":"https://cdn-learn.adafruit.com/user_assets/assets/000/002/015/original/image.png?1760928791","metadata":{}},{"element_type":"text","content":"\n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n        \u003cp\u003eCreate a new action, which triggers when the Done Pin is set to 1, and configure a delay of 10s for the Action.\u003c/p\u003e\n\u003cp\u003eConfigure the action to publish a 0 to the Done pin (so when the device wakes again it won't set Done=1).\u003c/p\u003e\n      \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","metadata":{}},{"element_type":"user_image","content":"https://cdn-learn.adafruit.com/user_assets/assets/000/002/016/original/Screenshot_2025-10-20_035152.png?1760928810","metadata":{}},{"element_type":"text","content":"\n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n        \u003cp\u003eAdd a third action to update the display or whatever is appropriate (like acting on some sensor data).\u003c/p\u003e\n\u003cp\u003eUse \u003ccode\u003e\\n\u003c/code\u003e to force a line break when working with Displays on WipperSnapper\u003c/p\u003e\n      \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","metadata":{}},{"element_type":"user_image","content":"https://cdn-learn.adafruit.com/user_assets/assets/000/002/017/original/image.png?1760929483","metadata":{}},{"element_type":"text","content":"\n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n        \u003cp\u003eHey presto, now you have a \u003cem\u003elow power\u003c/em\u003e weather data \u003cstrong\u003eclock\u003c/strong\u003e, using zero programming knowledge and just a brief foray into the wonderful world of wiring and electronic signals.\u003c/p\u003e\n      \n\n\n\n\n\n\n\n\n\n","metadata":{}}]