# CoCandy · Peng Tang · 2006

> Welcome to CoCandy! This is where I share fun projects and products. If you like something, don't hesitate to take it home!

## Links
- [GitHub](https://github.com/ByCoCandy)
- [Bilibili](https://space.bilibili.com/3546763910711822)
- [Douyin](https://www.douyin.com/user/MS4wLjABAAAAX5jESfVEcvsfA5dNnt5deCtOpsGlOKXLa3QLLvvmw0SWX-t0ZnHh_QxoxcsLy7Rg)
- [Email](mailto:1l0m0l1.tp@gmail.com)

## You might also like
- [CoCandy Store](https://store.cocandy.com.cn) — Visit the full store →

## Need a custom build?
Have an idea, but don't want to tackle the hardware alone?
I work exclusively on ESP-series projects—from schematics, PCBs and firmware to prototyping, debugging and small-batch delivery. Bring a complete brief, or just the words, 'I want to make...'.

- Hardware design: Schematics, PCB and prototyping
- Firmware: Drivers, connectivity and interaction
- Prototype & delivery: Demos, debugging and small batches

Share your idea → Plan & quote → Confirm the schedule → Delivery & acceptance

Bring your requirements, budget range and ideal timeline. That's enough to start the conversation.

## Try building it yourself!
### Pocket
A first hardware project you can make your own — https://github.com/ByCoCandy/Pocket
Start small: flash the ready-made firmware and watch Pocket blink on your desk. Then change one expression and tune the shake-to-wake behavior. You do not need to understand every driver before seeing something work.
The PCB, Rhino enclosure, STL files, and animation sources are all open. Print your own cat-ear shell and draw your own expressions, and your Pocket becomes your work, not just a copy of mine.

### BeaconOps
Run a complete IoT system, one message at a time — https://github.com/ByCoCandy/BeaconOps
Ready for a bigger system? Start with one simple interaction: send a message from the console, watch the device light up and play a sound, then shake it to return an acknowledgement. That single loop shows you how the device, MQTT, backend, and console fit together.
You do not have to recreate everything at once. Explore message states and offline delivery first, then decide whether to build a small console or make the terminal itself. Batch authentication, activity reporting, and deployment details are documented. If you are not ready to make a PCB, start with the backend and console.

## Open Tutorials
### Top-up Degree Math
Visualized tutorials for advanced math and linear algebra

## About Me
An independent developer focused on IoT embedded systems. The stack centers on the Espressif ESP32 series, covering hardware and mechanical design, firmware and upper-layer toolchain development; currently expanding into Nordic nRF series platforms.

### Embedded
#### 2026-08-03
Commissioned to troubleshoot a customer's RGB screen tearing issue; investigation determined it was caused by signal interference from overly dense cable routing, involving signal integrity.

#### 2026-06-18
Customized an electronic fence device based on the Xiaozhi framework for a customer, extending its existing MCP service with GPS positioning for precise fence-zone management, and developed an APP to work with the hardware.

#### 2026-05-24
Completed the graduation project and verified functionality: abstracted the hardware driver layer into a unified interface, designed the application framework myself and implemented it with AI assistance; UI uses Xiaomi MiSans font, backend runs on a 1G1C cloud server.

#### 2026-05-13
Prepared for the graduation project; the hardware was quickly assembled by reusing an existing Pocket shell and PCBA, with the 3D-printed shell provided by a Pocket project contributor.

#### 2026-03-30
Studied Linux kernel source again on the Allwinner H618 platform, mapping out the boot process and scheduling mechanisms of subsystems, and verified it via cross-compilation in WSL.

#### 2026-03-28
Implemented an ultra-small ESP8684 system on a 17x21mm PCB with Li-ion charging/discharging and an accelerometer, positioned as a wearable device; mostly 0402 packages with DFN1006 MOSFETs.

#### 2026-02-10
CEZO's design patent was granted after months of review; the application was filed through a third-party agent, which saved a lot of documentation and material preparation work.

#### 2025-12-25
Custom desktop ornament V2 for a customer, with a new PCB layout and smaller packages; assembled via JLC SMT and passed functional testing. SMT assembly is more consistent than manual soldering.

#### 2025-12-07
Completed shell prototyping via JLC 3D printing (for the 2025-12-02 design); snap-fit closure is tight. The transparent finish looks good, while the translucent finish has surface particles and needs post-processing.

#### 2025-12-02
Designed a new pendant using Rhino 8, following injection-molding rules with a snap-fit shell; used ESP8684 for the first time for PCB design and bring-up, thanks to its low cost.

#### 2025-11-15
First slimeVR tracker prototype: 0201 packages, NRF52810 MCU. Hit an issue where it could only be flashed once then became unrecognizable; months later confirmed it was caused by a trimmed J-Link OB firmware unable to run the full unlock command.

#### 2025-11-01
Tested the PCB designed on 2025-10-08; audio/video and charge/discharge all passed. LVGL GIF animation runs at 60+ FPS; the CW2017 driver was fully implemented by AI.

#### 2025-10-27
Building a slimeVR tracker: validated the protocol in Python; hardware chose Nordic's ESB protocol due to Bluetooth bandwidth limits and high WiFi power draw, starting to work with NRF52-series chips.

#### 2025-10-20
Based on a brand-new watch movement, modeled a shell in Rhino 8 and adapted Apple Watch bands, completing the full design; JLC 3D printing with spray painting produced good quality.

#### 2025-10-15
Hand-soldered the PCB designed on 2025-10-08; the tight component spacing made it difficult, and it was the first time dealing with a BGA package (1.345x1.435mm, 9 balls), which was complex.

#### 2025-10-08
Designed a highly integrated single-sided PCB within 19x36mm, packing ESP32C3, MAX98357, W25Q128, CW2017, LSM6DS3 etc., mostly in 0402 packages.

#### 2025-09-14
Built a simple browser on duktape, gumbo, katana and lvgl; two of these libs are no longer maintained, so I read their source to understand the design and integrate them, porting to ESP-BOX-3 for rendering.

#### 2025-07-26
Custom desktop ornament for a customer, featuring date/weather display, custom image/GIF rendering, and crypto price change viewing; also designed and modeled the shell myself.

#### 2025-07-13
Remote internship at a Shanghai company, developing firmware for local reception and parsing of image/voice/text data streams, and debugging communication protocols with the server side.

#### 2025-06-18
Won gold at the school-level College Students' Innovation and Entrepreneurship Competition, handling structure design, modeling, programming and video; didn't attend the provincial round for personal reasons.

#### 2025-06-12
Designed and prototyped a four-layer PCB for the first time for the competition; an ESP32S3-based sports band. Though the PCB had many defects, functionality was unaffected.

#### 2025-05-30
Started studying Linux and U-Boot source code to understand their structure; combined with prior WSL (Windows Subsystem for Linux) development experience, gained a basic understanding of Linux as a pure kernel.

#### 2025-05-18
First attempt at a four-layer PCB, integrating ESP32S3, AMOLED touchscreen, wireless charging, power management, fuel gauge, barometer and magnetometer in a tiny single-sided area; layout done but routing not yet.

#### 2025-05-12
Finished the final Pocket version assembly and verified functionality; open-sourced on JLC Open Source Square and published a video on Bilibili; GitHub release came later.

#### 2025-03-08
Commissioned to develop equivalent firmware for an existing device by referencing its features and schematic; for the BLE proprietary binary protocol, located the format by comparing frame headers with a debug assistant, completing the development.

#### 2025-03-06
Completed Emoji PCB prototyping and assembly along with the matching 3D shell; verified GIF and image rendering work, and the shell fits the PCB well.

#### 2025-03-05
First time sourcing components myself and sending them to JLC for SMT assembly; first exposure to SMT, learned the whole process. SMT is efficient but pricey for small batches.

#### 2025-03-02
Designed CEZO's shell and internal structure in Rhino 8, split into multiple parts all verified through prototyping; after completing the design, successfully filed a design patent.

#### 2025-03-01
Designed the power-bank shell in Rhino 8 to hold two 21700 cells, with a cover panel hiding exposed PCB areas; verified via 3D prototyping.

#### 2025-02-28
Inspired by NIO's NOMI, started the CEZO voice-interaction robot project; designed a two-layer PCB split into two parts connected by FPC, reusing the previously-verified mini stepper motor solution.

#### 2025-02-26
Drove an ultra-mini stepper motor (originally for phone rotating cameras, now discontinued) with an AT8549 dual H-bridge; without a current-limiting circuit the current ran high and it heated noticeably, so only basic on/off control was verified.

#### 2025-02-22
First time recreating the Xiaozhi project with an existing dev board, mic and speaker to get basic features working; also read its source to understand the architecture, which is heavily C++ object-oriented.

#### 2025-02-14
Started the power-bank project with a WS2812 LED strip and round screen on the front, ESP32S3 MCU, plus a mic and fuel gauge; not yet prototyped.

#### 2024-12-31
Designed the Emoji pendant's shell and internal mounting structure; first time designing a shell for my own PCB, using JLC's exported PCB 3D model directly for shell design — accurate and efficient.

#### 2024-12-29
Started the Emoji expression pendant project with ESP32S3, integrating a mic and Li-ion charge/discharge; first time using a DCDC supply and designing a denser layout.

#### 2024-12-18
Commissioned to solve various difficult issues customers hit during development; this time fixed and verified a dev board's RGB screen driver fault.

#### 2024-12-01
Designed an ultra-mini digital microphone module using the MP34DT05-A sensor (only 650µA), suitable for portable devices; sold a small batch via Taobao.

#### 2024-10-08
Custom LCD solution for displaying on both sides of an FPV rig; an ESP32 drives the dual screens, uploading images over WiFi for rendering.

#### 2024-09-14
Built a dorm backlight remote using an ESP32C3 Mini board and SSD1306 OLED to control the backlight's on/off and color.

#### 2024-09-10
For poor dorm desk lighting, designed a controllable backlight on ESP32C3 with a WS2812 LED strip and the WS2812FX library for multiple light effects.

#### 2024-08-12
Custom FPV drone with a remote-controlled gripper for the customer, enabling remote grab and release; an ESP32C3 MCU parses the receiver's PWM output for long-range control.

#### 2024-02-28
Custom dynamic "Evil Eye" decorative light with ESP32C3, supporting custom GIFs and animations; the product sold widely in the car and e-bike modification scene.

### Software
#### 2026-06-13
Designed a lightweight ESP32 hardware-bound licensing scheme covering license management, license count management, signing/encryption and decryption, isolated per customer, flashed with a dedicated tool and requires a server.

#### 2026-06-11
Developed a roleplay APP supporting multiplayer interaction (distinguishing who's who, with independent relationships and chats), proactive care (LLM-driven), saying one thing while meaning another (thought and speech separated), token billing and top-up, and LAN sharing.

#### 2026-06-09
Scene image generation example for LLM roleplay: uses the wanx2.0-t2i-turbo model, analyzes object keywords from the story and scene to generate and cache per-scene images for more immersive roleplay.

#### 2026-04-16
Built a Copilot-like assistant on top of Axon; proposed a register_tool on-demand schema injection scheme that saves many tokens when tools aren't used, with context compression and forking, running stably on a 1G1C instance.

#### 2026-04-08
Inspired by AutomateX, abstracted a lightweight MCP server with basic file operations (Copilot-like tools) plus Notion tools (search, pages, databases, blocks and comments), cross-platform.

#### 2026-03-03
Built a tool-calling agent with Copilot using two-phase on-demand tool description injection instead of carrying everything every time, saving lots of tokens; however the FIFO context window prevents context caching.

#### 2026-01-26
Exported QQ chat logs with the open-source NapCat-QCE and fine-tuned Qwen/Qwen3-1.7B locally; because it's a small model and the training data wasn't filtered, catastrophic forgetting occurred and the fine-tune results were poor.

#### 2026-01-22
Inspired by BrickGPT and learning LDRAW, came up with an idea: since ldr files describe brick structure and connections, many ldr files could fine-tune a text model into a dedicated Lego model.

#### 2026-01-11
Tested AvaLovelace/BrickGPT inference on AutoDL vGPU-48GB; the model performs well on training data but poorly on prompts outside those categories, and the brick model is limited, but it points to a promising direction.

#### 2026-01-03
Ran inference on small Qwen LLMs locally on an NVIDIA RTX 4060, e.g. Qwen/Qwen3-0.6B, Qwen/Qwen2.5-7B-Instruct, testing each model's reasoning ability and performance.
