Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.

Shake It Off! is a DIY drawing-pad prototype that borrows the Etch A Sketch’s two-knob controls and shake-to-erase gesture. Two rotary encoders move a virtual cursor across an Inkplate 6 e-paper display; an MPU6050 accelerometer detects a shake and clears the screen. It is a tactile electronics project, not a touchscreen tablet—and its e-paper refresh makes drawing slow and deliberate.

What the project builds

The original All About Circuits project, published March 27, 2024, recreates the basic interaction of an Etch A Sketch without reproducing its mechanical display. One encoder moves the cursor horizontally, the other vertically, and each detected step adds a small black dot. Overlapping dots form a line. Shake the device to erase the drawing.

The display is an 800×600 monochrome e-paper panel on the Inkplate 6, a board that combines the display with an ESP32. The project uses partial updates while drawing and a full refresh to erase. This preserves the paper-like look and tactile controls, but not the speed of an LCD or OLED. The project article describes drawing as roughly four frames per second; expect visible pauses rather than smooth, real-time strokes. Read the original project description and sketch.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Parts, tools, and prerequisites

Part Quantity Purpose or note
Inkplate 6 1 ESP32-based 6-inch e-paper board; the project uses its 800×600 display.
KY-040 rotary encoder modules 2 One for horizontal movement and one for vertical movement.
GY-521 MPU6050 module 1 Accelerometer/gyro breakout used for shake detection.
Male-to-male jumper wires At least 12 For connecting the modules to the board.
90-degree pin headers As needed Optional; they route wires parallel to the board to help fit a thinner enclosure.
3D-printable enclosure Optional The project provides enclosure files; check that they suit your exact Inkplate variant.
LiPo battery Optional For portable use; follow the board manufacturer’s battery guidance.
Barrel jack or USB breakout Optional May help provide access to power when the board is enclosed.

You should be comfortable with basic Arduino IDE use, GPIO and I²C wiring, library installation, ESP32 uploads, and assembling or soldering connections reliably. 3D printing is optional. The project can be wired without a breadboard, but a finished handheld build benefits from secure connections and wire strain relief.

#1 Best Overall
Sale
ELECROW ESP32 E-Ink Display 4.2 Inch E-Paper HMI Display Black/White Color
  • Built-in ESP32-S3 Controller & SPI Interface - Comes with ESP32-S3-WROOM-1-N8R8 as the main MCU (up to 240 MHz) and standard 3-/4-wire SPI (default 4-wire) for easy integration. Supports the classic e-ink reader feel and responsive development flow
  • Ultra-Low Power & Power-Off Retention - This epaper display only consumes power during refresh. Static content stays visible without a continuous power supply — ideal for battery-powered devices, smart labels and always-on displays
  • High-Resolution e-ink Display - This 4.2″ e-paper display with 400x300 resolution delivers sharp black/white contrast and a wide viewing angle. Provides crisp clarity and a paper-like reading experience for smart tags and DIY devices
  • Reflective, Sunlight-Readable - The pure reflection mode means no backlight required; the content remains clearly readable even under strong sunlight. Hard-coated anti-glare surface ensures excellent visibility and durability
  • Rich Interfaces & Ready for Development - Includes BAT interface (2.2 V-3.7 V), UART0, 2x10 pin GPIO header, back/home/boot buttons, rotary switch, hard-coated anti-glare surface. Compatible with Arduino IDE, and suitable for DIY makers alike

How the hardware and display behave

Inkplate 6 and e-paper

The Inkplate 6 is an ESP32-powered board with a 6-inch, 800×600 e-paper display. The manufacturer lists partial updates, greyscale capability, Wi-Fi and Bluetooth, microSD storage, battery-charging circuitry, and Arduino-library support. It lists approximate refresh times of 264 ms for a partial update and 1.26 seconds for a full refresh. Those are manufacturer specifications; the project’s drawing experience also depends on its code and how often it requests an update. Check Soldered’s Inkplate 6 specifications and documentation.

Partial refresh is suitable for adding black marks incrementally, but e-paper is not a fast redraw surface. It can leave artifacts when the image needs to change from black to white, so erasing uses a full refresh. The result is best treated as a slow sketching toy or an e-paper interface demonstration, not a handwriting device or digital-art tablet.

Encoders and motion sensor

Each rotary encoder supplies two phase-shifted signals. The sketch watches a clock-signal transition and compares the other signal’s state to infer direction. The MPU6050 supplies acceleration readings over I²C. The project calculates an acceleration magnitude and compares a transformed value to an empirically chosen range to decide when to clear the display.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Wire the modules—and resolve the pin conflict

The original project has a material inconsistency: its wiring table assigns the horizontal encoder’s DT connection to Inkplate pin 96, while the published sketch defines DT_H as pin 36. Do not connect the module based on one section and assume the other agrees. Verify the pin labels against your board revision and use one consistent mapping in both the wiring and code.

Inkplate connection Module connection Qualification
Pin 39 Horizontal encoder CLK As listed in the project wiring table and code.
Pin 36 Horizontal encoder DT The published code defines DT_H 36; the project wiring table instead says pin 96.
3V3 Horizontal encoder power Confirm module compatibility and pin labels.
GND Horizontal encoder ground Share ground with the board.
Pin 13 Vertical encoder CLK As listed in the project wiring table and code.
Pin 14 Vertical encoder DT As listed in the project wiring table and code.
3V3 Vertical encoder power Confirm module compatibility and pin labels.
GND Vertical encoder ground Share ground with the board.
SDA MPU6050 SDA I²C data.
SCL MPU6050 SCL I²C clock.
3V3 MPU6050 VCC Confirm the breakout’s voltage requirements.
GND MPU6050 GND Share ground with the board.

Before applying power, check module pin labels, supply voltage, and ground continuity. Cheap encoder boards and sensor breakouts are not necessarily identical, so do not rely on wire colors alone.

Install the Arduino board support and libraries

The project’s setup uses Soldered’s board-definition package and the Inkplate and Adafruit sensor libraries. Arduino IDE menus or package labels can change, and the original article does not specify tested IDE, board-package, or library versions. If a label differs or a package is unavailable, use the current Soldered documentation rather than assuming the older instructions apply unchanged.

  1. In Arduino IDE Preferences, add this URL under Additional Boards Manager URLs: https://raw.githubusercontent.com/SolderedElectronics/Dasduino-Board-Definitions-for-Arduino-IDE/master/package_Dasduino_Boards_index.json.

    Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  2. Open Tools → Board → Boards Manager, search for inkplate, and install the relevant Inkplate board package.

    Rank #2
    ESP32-S3 1.54inch e-Paper Development Board, 200 × 200 Resolution, Black/White Display Color, Onboard Audio Codec Chip, Supports 2.4GHz Wi-Fi and BLE 5, Supports AI Speech Interaction
    • ESP32-S3-ePaper-1.54 development board onboard 1.54inch e-paper display, 200 × 200 resolution, features high contrast and wide viewing angle. Onboard audio codec chip, supports voice capture and playback, enabling AI voice interaction applications
    • ESP32-S3 1.54inch e-Paper AIoT development board adopts high-performance 32-bit LX7 dual-core processor, up to 240MHz main frequency. Supports 2.4GHz Wi-Fi (802.11 b/g/n) and Bluetooth 5 (LE), with onboard antenna
    • Onboard PCF85063 RTC chip and SHTC3 temperature & humidity sensor for accurate RTC management and environmental monitoring
    • Built-in 512KB Static RAM, 384KB ROM, with integrated 8MB Flash and 8MB PSRAM
    • Onboard TF card slot for external storage of images or files. Onboard programmable PWR and BOOT side buttons for customized function development. Reserved 2 × 6 2.54mm pitch pin header for convenient external expansion
  3. Open Tools → Manage Libraries and install the Inkplate library that provides Inkplate.h, along with Adafruit’s MPU6050 and sensor libraries that provide Adafruit_MPU6050.h and Adafruit_Sensor.h.

  4. Select the appropriate Inkplate board under Tools → Board → Inkplate Boards, connect the board by USB, and upload the project sketch.

Understand the sketch before changing it

Board check and setup

The sketch’s preprocessor guard accepts particular ESP32 or Inkplate board definitions and stops compilation if it does not recognize the selected target. If that error appears, check the board selection and installed package first; do not remove the guard just to force a build. The sketch creates an Inkplate display object in one-bit mode and an Adafruit MPU6050 object.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Cursor and drawing

The published code starts the logical cursor at (400, 300), the center of an 800×600 display. Its newDot() function draws a radius-two black circle at the cursor position calculated from the starting coordinates plus the horizontal and vertical counters multiplied by three, then calls partialUpdate(). The three-pixel spacing makes the circles overlap enough to resemble a continuous line.

The code does not show coordinate clamping. As encoder counters continue changing, calculated positions can move outside the visible area. Clamp the dot’s center so the entire radius-two circle remains on screen—for example, keep X between 2 and 797 and Y between 2 and 597 for an 800×600 display.

Encoder decoding and its limitations

For each encoder, the sketch detects a change in CLK, checks the other channel to infer direction, changes a counter, and draws a dot. It is a basic quadrature-decoding approach, not a complete input-handling system. The original implementation does not appear to include software debouncing, explicit pull-up or pull-down configuration, illegal-transition filtering, or limits on the counters. KY-040 modules can bounce mechanically, leading to jitter, missed steps, or multiple apparent steps per detent. Add appropriate input configuration and debounce or use a tested quadrature-encoder library; test each encoder independently before enclosing the device.

Shake detection and erase behavior

The sketch reads acceleration through mpu.getEvent(), calculates the vector magnitude, subtracts approximately 9.81, squares the result, and triggers an erase only when that value is greater than 400 and less than 450. This narrow, empirically tuned range is not a universal MPU6050 threshold. A forceful shake can exceed the upper bound and fail to erase, while orientation, mounting, sampling timing, and module variation can change the readings.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

For calibration, print the calculated value to Serial while the device is still, moved normally, and deliberately shaken. A sturdier detector would filter or average readings, detect a threshold crossing (rather than a narrow interval), require several consecutive samples, and apply a cooldown. Use a lower release threshold so the same sustained motion does not repeatedly trigger. The published erase sequence clears the display and waits for a full refresh, but it does not explicitly reset the encoder counters; add a logical cursor and counter reset so the next drawing starts where you intend.

Rank #3
ESP32-S3 1.54inch e-Paper AIoT Development Board, Supports AI Speech Interaction, Temperature and Humidity Monitoring, DIY, etc. 200 x 200, Black/White, Wi-Fi and BLE Dual-Mode Communication
  • The ESP32-S3-ePaper-1.54 is an e-Paper AIoT development board, equipped with ESP32-S3 microcontroller, adopts high-performance Xtensa 32-bit LX7 dual-core processor, up to 240MHz main frequency. Suitable for Voice Interaction and e-Reader, etc
  • Supports 2.4GHz Wi-Fi (802.11 b/g/n) and Bluetooth 5 (LE), with onboard antenna. Built-in 512KB Static RAM, 384KB ROM, with integrated 8MB Flash and 8MB PS-RAM.
  • Onboard 1.54inch e-paper display, 200 × 200 resolution, features high contrast and wide viewing angle. Onboard audio codec chip, supports voice capture and playback, enabling AI voice interaction applications. Supports AI Speech Interaction: Allows access to online large model platforms such as DeepSeek, Doubao, etc.
  • Onboard PCF85063 RTC chip and SHTC3 temperature & humidity sensor for accurate RTC management and environmental monitoring. Onboard TF card slot for external storage of images or files. Onboard programmable PWR and BOOT side buttons for customized function development. Reserved 2 × 6 2.54mm pitch pin header for convenient external expansion.
  • Supports ESP-IDF, Ardui IDE: Comprehensive SDK, dev resources, and tutorials to help you easily get started, please check: n9.cl/tseakv

Test the build in stages

  1. Compile and upload with the correct Inkplate target selected. Resolve missing board or library errors before connecting all modules.

  2. Initialize the display and confirm it refreshes. If it remains blank, check the selected board variant, display mode, and current Inkplate package guidance.

  3. Test one encoder at a time. Print counter values to Serial, verify both directions, and check that one detent does not cause erratic multiple changes.

    Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  4. Confirm the horizontal DT wire matches the pin defined in the code; the original table/code disagreement is especially easy to miss.

  5. Test motion readings and tune shake detection before relying on erase. Add debounce/cooldown behavior to avoid accidental clears.

  6. Only after the electronics are stable, secure the wiring and fit the enclosure. Check encoder access, USB or barrel-jack access, and battery clearance before closing the case.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Common problems and practical fixes

The sketch will not compile

The display works, but the drawing is wrong

The line jitters or jumps

  • Mechanical bounce, floating inputs, unsuitable pull-up or pull-down configuration, and noisy jumper connections can all cause unreliable counts.

  • Configure inputs appropriately for the module, add software debounce or a quadrature decoder with invalid-transition rejection, and secure the wiring.

The device does not erase—or erases unexpectedly

Drawing leaves the screen or erase appears incomplete

  • Clamp coordinates with the dot radius in mind; the original code does not show bounds handling.

  • Allow the full refresh to complete after clearing. Partial updates are intended for incremental drawing and may leave artifacts when changing black pixels back to white.

Enclosure, battery, and sensible upgrades

The project’s optional 3D-printed case brings the board and modules together. Right-angle headers help keep jumper wires parallel to the board for a thinner package. However, the original instructions do not establish a guaranteed drop-in fit across Inkplate variants or fully specify print orientation, material, layer height, encoder mounting, or battery retention. Dry-fit the exact board and modules, leave access for the charging/USB connection, insulate and secure the battery, and add strain relief before carrying the device.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The board includes charging circuitry and a JST battery input, but that does not make every battery with a matching-looking connector appropriate. Verify voltage, polarity, protection, physical fit, and the manufacturer’s instructions before connecting a cell. Battery life will depend on battery capacity, refresh use, wireless activity, and software behavior; the project does not establish a runtime figure.

Is this project worth building?

Build it if you want a retro-inspired input experiment, an introduction to e-paper rendering, or a platform for learning rotary encoders, I²C sensors, and ESP32 development. The concept is straightforward, the parts are modular, and the controls make the drawing process physical rather than touchscreen-based.

Do not copy the prototype unchanged if you need dependable input or a polished portable device: resolve the horizontal DT pin mismatch, add encoder debouncing and coordinate limits, and redesign shake detection and post-erase cursor handling. It is also a poor fit for fast handwriting, detailed art, smooth animation, or immediate erase feedback. Check the manufacturer’s current variant and stock information before sourcing the Inkplate; its product listing and availability can change.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.