
Get full C++ & Python code + lifetime access
In this project, we create an interactive, touch-enabled drawing canvas hosted on an ESP32 micro-controller that projects drawings directly onto a 0.96-inch I2C OLED display (SSD1306) in real time[cite: 1, 2]. Instead of needing complex client-side applications, the ESP32 acts as an Access Point and web server[cite: 2], serving an ultra-responsive HTML5 Canvas web dashboard to any connected smartphone, tablet, or PC[cite: 1, 2].
When a user draws or erases on their browser screen, touch and mouse coordinates are captured[cite: 1], converted to OLED coordinate space[cite: 1], and streamed instantly to the ESP32 using low-latency WebSockets[cite: 1, 2]. The ESP32 processes these drawing vectors and updates the physical OLED display[cite: 2].
This project demonstrates an advanced integration of Embedded Web Servers, Asynchronous WebSockets, HTML5 Canvas API, and OLED Graphics Rendering, making it an excellent intermediate-to-advanced IoT + Embedded Web Development project[cite: 1, 2].
ESP32-DrawingPad)[cite: 2].D:x1,y1,x2,y2,mode,size commands over WebSockets[cite: 1].Adafruit_GFX to update the physical display[cite: 2].ā Real-Time Live Drawing: Instant stroke synchronization over WebSockets[cite: 1, 2].
ā Responsive UI: Works on mobile touchscreens, tablets, and desktop browsers[cite: 1].
ā Pen & Eraser Modes: Toggle between white stroke drawing and black stroke erasing[cite: 1].
ā Variable Brush Thickness: Dynamic slider to control line and point weight (1 to 10 pixels)[cite: 1].
ā Reveal & Show Modes: Live draw or hold drawing data until the user hits "Show on OLED"[cite: 1, 2].
ā Instant Canvas Clear: One-tap button wipes both the web app and OLED screen instantly[cite: 1, 2].
ā Standalone Wi-Fi AP: No external internet or router required; the ESP32 hosts everything locally[cite: 2].
Touch / Mouse Gesture (Browser Canvas)
ā
Scale Coordinates to 128x64 OLED Space
ā
Pack Vector Data into WebSocket String
ā
Wi-Fi Transmission (ESP32 WebSockets)
ā
ESP32 Message Parser (sscanf)
ā
Adafruit GFX Drawing Buffer
ā
I2C Protocol Transmission (SDA / SCL)
ā
SSD1306 OLED Screen Render
⢠Wireless Touch-Based Graphical Interfaces
⢠Interactive Digital Signage & Badges
⢠Wireless Note/Doodle Transmitters
⢠Educational IoT & Web Graphics Demonstrations
⢠Touchless / Remote Control GUI for Smart Devices
⢠Color OLED Support: Upgrade from monochrome SSD1306 to ST7735 or ILI9341 SPI color TFT screens.
⢠Bitmap File Exporting: Save captured OLED canvas images directly to ESP32 Flash memory or SD card.
⢠Multi-User Collaboration: Allow multiple smartphones to draw on the same OLED simultaneously in different brush styles.
⢠Gesture Recognition: Implement gesture/shape recognition to smooth out freehand lines into perfect shapes (rectangles, circles).
Reason:
ESP32-DrawingPad Wi-Fi network[cite: 2].Solution:
192.168.4.1 in your browser[cite: 1, 2].Reason:
0x3C)[cite: 2].Solution:
Reason:
Solution:
After completing this project, you will learn:
⢠Setting up an Access Point and Asynchronous Web Server on ESP32[cite: 2].
⢠Real-time bi-directional communication using WebSockets (AsyncWebSocket)[cite: 1, 2].
⢠Interactive touch event handling with HTML5 Canvas and JavaScript[cite: 1].
⢠Mapping coordinate spaces across different display resolutions[cite: 1].
⢠High-performance graphics rendering on OLED screens using Adafruit_GFX[cite: 2].
This project seamlessly combines web technologies with embedded systems to build an interactive wireless display pad[cite: 1, 2]. By using WebSockets instead of traditional HTTP requests, drawing feedback is nearly instantaneous[cite: 1, 2]. This architecture can easily be extended to control smart devices, stream telemetry data, or create custom handheld graphical controllers[cite: 1, 2].