A wireless remote PC power-on button using a NodeMCU ESP8266, Wake-on-LAN, and a 16x2 I2C LCD display. Press a capacitive touch sensor to wake a desktop computer over the network - about $8–12 in parts.
- ✓Capacitive touch (TTP223 on D6/GPIO12) - tap to send the magic packet
- ✓16x2 I2C LCD (0x27) status flow: WiFi Connected → Ready to Touch → WAKING PC... → Packet Sent!
- ✓Auto WiFi reconnect, millis()-based non-blocking loop, 200 ms debounce
- ✓Local-network only - no cloud dependency; MIT licensed
ESP8266ArduinoC++WakeOnLan libI2C LCDTTP223 Touch
WiFi Connected
Ready to Touch
Replays the firmware flow: Ready to Touch → WAKING PC... → Packet Sent!
LCD D1/D2 · 5V VIN
TOUCH D6/GPIO12 · 3V3
BOM ~$8–12 · NodeMCU + LCD + TTP223
- type a MAC -
How it works
- TouchTTP223 sensor on D6 fires; debounce filters false triggers.
- DisplayLCD line 2 flips from "Ready to Touch" to "WAKING PC...".
- TransmitWakeOnLan lib broadcasts the 102-byte magic packet for the Config.h MAC.
- BootTarget NIC (WoL enabled in BIOS + OS) powers the PC on; LCD shows "Packet Sent!".
BILL OF MATERIALS (~$8–12)
| Part | Notes |
|---|---|
| NodeMCU ESP8266 (ESP-12E) | Main board |
| 16x2 I2C LCD (PCF8574) | Address 0x27 - needs 5V from VIN |
| TTP223 touch sensor | Digital out to D6 - 3.3V supply |
| Jumper wires + Micro-USB | Programming and power |
WIRING
| Connection | Pin |
|---|---|
| LCD SCL / SDA | D1 (GPIO5) / D2 (GPIO4) |
| LCD VCC / GND | VIN 5V / GND - never 3.3V |
| Touch OUT / VCC / GND | D6 (GPIO12) / 3V3 / GND |
CONFIG.H ESSENTIALS
| Setting | Value |
|---|---|
| TARGET_MAC | {0x94, 0xDE, 0x80, 0x7B, 0x2F, 0x99} |
| TOUCH_PIN | 12 (D6) |
| LCD_I2C_ADDRESS | 0x27 (try 0x3F if blank) |
CONFIG.H
cpp
const char* WIFI_SSID = "YourWiFiSSID";
const char* WIFI_PASSWORD = "YourWiFiPassword";
const byte TARGET_MAC[6] = {0x94, 0xDE, 0x80, 0x7B, 0x2F, 0x99};
const int TOUCH_PIN = 12;FIND THE PC MAC (WINDOWS)
cmd
ipconfig /all | findstr "Physical"
—Arduino IDE + ESP8266 board support; libs: LiquidCrystal I2C, WakeOnLan
—Board: NodeMCU 1.0 (ESP-12E); edit Config.h (WiFi, MAC, pins)
—PC side: enable WoL in BIOS + adapter (magic packet, allow wake)
—Upload sketch → Serial Monitor @115200 → touch to wake