NimbleLamp Advance is an evolution of the original Bookworm Annoying Lamp concept By RoAnWo in instructables, featuring significant hardware improvements and enhanced functionality. This ESP32-based system implements a stepper motor mechanism with silent drivers, precise time-of-flight sensing, and multiple control modes. The lamp intelligently responds to user presence while providing customizable interaction modes.
- Adaptive Movement System: Uses TMC2209 silent stepper drivers for smooth, quiet operation
- Precision Sensing: VL53L0X time-of-flight sensor for accurate hand detection
- Dual Control Modes:
- Annoying Mode: Lamp moves away when approached
- Normal Mode: Lamp turns off when approached
- Multiple Activation Methods:
- Physical button mode toggle
- Capacitive touch control
- Modular Design: Separated hardware/firmware architecture for easy customization
graph LR
ESP32[ESP32 Controller] -->|UART| TMC2209[TMC2209 Driver]
ESP32 -->|I²C| VL53L0X[Distance Sensor]
TMC2209 --> NEMA17[Stepper Motor]
ESP32 --> MOSFET[LED Control]
ESP32 --> BUTTON[Mode Button]
ESP32 --> TOUCH[Touch Sensor]
- PlatformIO IDE (VSCode extension recommended)
- ESP32 development board
- TMC2209-compatible stepper driver
- VL53L0X time-of-flight sensor
- Clone repository:
git clone https://github.com/Customize5773/NimbleLamp_Interactive_Lamp.git
- Install dependencies:
pio lib install "adafruit/Adafruit VL53L0X" pio lib install "teemuatlut/TMCStepper"
- Build and upload:
pio run -t upload
Modify config.h for hardware-specific settings:
// Stepper parameters
const uint16_t MAX_SPEED = 1200; // steps/s
const int32_t MOVE_DISTANCE = 300; // escape distance
// Sensor thresholds
const uint16_t DETECT_DISTANCE = 80; // detection range (mm)-
Basic Operation:
- Power on the lamp
- Press button to toggle modes
- Approach hand to trigger response
-
Advanced Control:
- Touch copper pad to switch modes
- Calibrate sensor range via serial monitor
- Adjust movement parameters in firmware
-
Serial Monitoring:
pio device monitor
Output shows sensor readings and mode status:
Distance: 142mm | Mode: ANNOYING Hand detected! Triggering escape sequence...
For mechanical assembly:
- Mount stepper motor on base plate
- Attach pulley to motor shaft
- Install linear rail system
- Position sensor facing detection area
- Secure lamp housing with LED strip
Refer to assembly guide for detailed instructions.
Contributions are welcome. Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/improvement) - Commit changes (
git commit -am 'Add new feature') - Push to branch (
git push origin feature/improvement) - Open a pull request
Distributed under the MIT License. See LICENSE for more information.
For technical assistance, open an issue on GitHub or consult the troubleshooting guide.

.png)