Did wirings, make the connections according to the code
Here’s the timelapse
https://youtu.be/YPPezGlpv1U
Link of the 2 hour desiging timelapse: https://youtu.be/cTk0y9AJQMs
Heres all I did:
1. Adjusted the main enclosure size to 13 x 10 x 1.5 cm and constantly kept changing till I got the perfect dimensions 12 x 9 x 1.2 cm.
2. I made its corners smooth and rounded giving it a very gooood look.
3. Made the 9 main keys with 1 special key, which took me a bit to figure out how I make it perfect. I took a hole sphere and grouped with the keys to make it satisfying to click, and increased radius on all corners, similar for the special key. I put holes under all the keys to fit it to the switch as well.
4. Made a hole in front for the Cable to connect to laptop.
5. Made a matching 2mm plate which i can attach to the main enclosure after all the connections
6. Made the enclosure hollow which took me long because there were some very annoying issues.
Completed the code for the bot
Here’s all I did:
Set up BluetoothSerial.h so the robot can connect wirelessly to my phone under the name “Abyss Titan”.
Mapped out the pins for the motor drivers (19, 21, 22, 23) and the RGB LED (25, 26, 27).
Instead of using basic analogWrite, I used the ESP32’s hardware PWM channels (ledcSetup and ledcAttachPin) at 5000Hz to make the motor movements smooth and stop any weird high-pitched whining noises.
Programmed a speed control system: Button 1 sets speed to 120 (Blue LED), Button 2 sets it to 200 (Green LED), and Button 3 triggers Turbo Mode at max 255 speed (Purple LED).
Wrote all the driving functions for full movement: forward, backward, left, right, and stop. Also added diagonal turning functions (forward_right, backward_left, etc.) so the robot can make smoother adjustments while driving.
Almost done with my code for the bot till void loop()
#include<Arduino.h>
Bluetooth Serial serialBT;
char BT;
int speed=100;
//RIGHT
int R1PWM =19;
int R2PWM =21;
//LEFT
int L1PWM =23;
int L2PWM =22;
#define rmf 0
#define rmb 1
#define lmf 2
#define lmb 3
void setup() {
Serial.begin(115200)
serialBT.begin(“ABYSS TITAN”)
pinMode(R1PWM, OUTPUT);
pinMode(R2PWM, OUTPUT);
pinMode(L1PWM, OUTPUT);
pinMode(L2PWM, OUTPUT);
ledcSetup(rmf, 5000, 8);
ledcAttachPin(R1PWM, rmf);
ledcSetup(rmb, 5000, 8);
ledcAttachPin(R2PWM, rmb);
ledcSetup(lmf, 5000, 8);
ledcAttachPin(L1PWM, lmf);
ledcSetup(lmb, 5000, 8);
ledcAttachPin(L2PWM, LMB);
Before moving to the designing/3d printing, I wanted to make the Gmail macro key code. I spent around 30 minutes to write and debug the code (Might change after I get the parts. The Mission: Tap a single mechanical switch to automatically enter Gmail.
import usb_hid
from adafruit_hid.keyboard import Keyboard
from adafruit_hid.keyboard_layout_us import KeyboardLayoutUS
keyboard = Keyboard(usb_hid.devices)
layout = KeyboardLayoutUS(keyboard)
GMAIL = “prabhgunsinghsobti@gmail.com”
def type_gmail():
layout.write(GMAIL)
Phase 2: Design Inspiration & Cyberpunk Aesthetics (The Blueprint)
For the visual identity, I didn’t want a generic, boring plastic box. I spent some time studying past mechanical designs and custom cyberdecks. Color Psychology: Instead of standard monochrome, I locked in a high-contrast cyberpunk palette: A grey main enclosure to look like machined industrial metal. A matte black bottom floor plate to act as a grounded chassis. Vibrant purple keycaps to give it a sharp, neon color. The Centerpiece: A custom multi-layered knob in matching purple, with a neon yellow accent ring.
Once the vision was clear, the real battle began in Tinkercad. I spent 3 to 4 hours measuring real components and sizing them against physical hand.
Current Status: Design ready (Probably XD)! Every single part has been isolated, grounded flat at a height of 0, and separated with clear margins so the 3D printers can print them as individual components. Grey Enclosure -> Ready
Black Base Floor -> Ready
4x Purple Keycaps _> Ready
Custom Knob -> Ready
Next stop: Exporting the STL file and submitting it to the Hack Club #enclosure queue!
Spent 2 hours on enclosure 3d design + BOM (on github)
Component Quantity Approx. Cost (INR) Raspberry Pi Pico 1 ₹340 Mechanical Switches 4 ₹100 Custom Keycaps 4 ₹0 (Free via #enclosure) OLED Display (SSD1306) 1 ₹150 Volume Knob (EC11 Encoder) 1 ₹50 Passive Piezo Buzzer 1 ₹20 WS2812B RGB LEDs 1 ₹40 Custom Enclosure 1 ₹0 (Free via #enclosure)Finally after 3 hours coding and 5 hours debugging Done with the AI Agent for my macropad TwT