setting a timer (ESP.deepSleep(time in uS, mode)). GPIO16 must be connected to the external reset pin for that work.
pulling down the external reset pin
Isn't there a way to wake up the chip using the GPIOs, with something like, say, a pin interrupt? Using the external reset pin isn't a great choice, because it will reset the chip even if it isn't sleeping (if, for example, I connect a motion sensor to the reset pin, the chip will be reset every time motion is detected, not only when the chip is in deep sleep).