I1fVAJGm

Simple Polaroid Design

 
Overview
Project Description:

The main controller uses an STM32 microcontroller, with LVGL8.2 ported.
It features a 2-megapixel camera for photo capture.
A 2.8-inch TFT LCD screen with a resolution of 240×320 displays photos, enabling display, printing, and deletion.
A built-in thermal printing unit allows for photo printing.
It has a built-in 500mAh lithium battery with a built-in charge/discharge management panel. No external power supply is required; it is compact and portable.
Operation is convenient with a dial button, along with a power on/off button and a shutter button.
It supports timed sleep mode, one-button sleep and wake-up to reduce power consumption.

Open Source License :
GPL 3.0
Open Source URL: https://gitee.com/liangzili/camera
Project Attributes
: This is the first public release of this project and is my original work. This project has not won any awards in other competitions.
Update Log:
The master

firmware fixes the issue of poor camera clarity. The

20240720_V2.1

firmware optimizes thermal printing speed.
The DCMI on the PCB has been adjusted to equal-length routing.
The trace width of the thermal print head and camera power supply section on the PCB has been adjusted.
PCB design fixes issues with partially obscured silkscreen printing.
PCB design also fixes the position of the mounting holes in the lower left corner. Version

20240521_V2.0

adds LVGL8.2 compatibility for improved UI effects.
A new camera driver circuit is added to reduce the space occupied by the camera module.
The RGB565 to grayscale conversion algorithm is optimized for more reasonable grayscale value output.
The power switch position is modified to resolve the issue of charging failure when the power switch is off.
The PCB layout is modified with a slot at the bottom for easier placement of the printing paper roll, reducing the overall thickness.
An error in the LCD FSMC_D1 pin is fixed.
An STM32 startup failure caused by VDDA and VSSA is fixed.
A grounding issue with the STM32's external filter capacitors is fixed.

Version 20240409_V1.0

is the first release of the project, with basic functions implemented and verification completed.

Hardware design
: Main controller: STM32F407ZG.
This microcontroller was chosen because the STM32F4 series offers excellent computing power and real-time response capabilities. It can provide sufficient IO and resource support for the camera, screen, memory card, thermal printhead, battery management, button control, etc. in the project.
Screen: 2.8-inch TFT LCD screen.
This 2.8-inch screen has a resolution of 240*320, offering good display quality while maintaining a compact size. Connecting to the STM32 controller via FSMC simplifies circuit design and wiring, reducing system cost and complexity.
Camera: OV2640 camera module.
This 2-megapixel camera not only offers excellent cost-effectiveness but also fully meets the image acquisition requirements of this project. Connecting to the STM32 controller via DCMI provides high-speed data transmission capabilities.
Thermal printhead: Jingxin JX-700-48R.
When designing an instant camera, image printing is crucial; it needs to be compact, lightweight, and have low power consumption, making thermal printing an excellent choice.
Battery Management: TP4056
The TP4056 employs a constant current/constant voltage (CCCV) charging mode, automatically completing the entire charging process, including trickle pre-charging, constant current fast charging, and constant voltage charging stages, effectively ensuring battery health and long lifespan.
Software Design
: Software Interface:
Due to space limitations, only some key code snippets are explained here.
Thermal Printing Function Implementation:
When the system detects a print button press, it retrieves the path to the current image and calls the following function. This function reads a BMP image file from the given path and converts it to the thermal printer's data format for printing.
static void PrintFile(char *path)
{
FRESULT res;
FIL file; // File object
UINT br; // Number of bytes actually read
uint16_t line = 0; // Current line number
uint16_t lineDateTemp[384]; // File content cache, save one line of image data
res = f_open(&file, path, FA_READ);
if (res != FR_OK)
{
printe("File opening failed
");
}

/* Get image information from BMP header */
BITMAPINFO hbmp;
res = f_read(&file, &hbmp, sizeof(BITMAPINFO), &br);
if (res != FR_OK)
{
printe("File reading failed
");
}
uint32_t bfOffBits = hbmp.bmfHeader.bfOffBits; // Bitmap data offset
uint16_t w = hbmp.bmiHeader.biWidth; // Image width in pixels
uint16_t h = hbmp.bmiHeader.biHeight; // Image height in pixels
printi("Bitmap data offset: %d, width: %d, height: %d.
", bfOffBits, w, h);

f_lseek(&file, bfOffBits); // Move the file pointer to skip the BMP file header
memset(lineDateTemp, 0xFF, sizeof(lineDateTemp)); // Line data points are white by default
do{
res = f_read(&file, lineDateTemp, w*2, &br); // Read 1 line of pixels at a time, 16 bits, 2 bytes per pixel
if(w < 384) // Image width is less than print width
{
memmove(lineDateTemp + (384 - w)/2, lineDateTemp, w*2); // Move the entire data to keep the image centered
memset(lineDateTemp, 0xFF, (384 - w)/2); // Fill with white
}
if(res != FR_OK)
{
printf("File read failed
");
break;
}
uint8_t printLine[48]; // Print 48 bytes of data per line
for(uint16_t i = 0;i < 384;i+=8) // Process the current DOT point, print width
{
uint8_t packedByte = 0; // Merge 8 binary pixels into one byte
for(uint8_t j = 0;j < 8;j++) // 3. Merge 8 binary pixels (1 bit per pixel) into one byte
{
uint8_t gray = RGB565ToGray(lineDateTemp[384 - i - j]);// 1. Convert RGB565 format to grayscale, uint16_t => uint8_t
packedByte |= GrayToBinary(gray, 127) << (7 - j); // 2. Binarize based on grayscale value, threshold is 128
if(j == 7)
{
printLine[i/8] = packedByte; // 4. Add the processed data to the print array and wait for printing
}
}
}
printf("Print line%d
",line);
LinePrint(printLine);
if (res != FR_OK)
{
printf("f_lseek err
");
}
line++;
}while(br > 0);

PrinterStep(80);//Printed paper length
StopPrint();
f_close(&file);
}
// RGB565 to grayscale
uint8_t RGB565ToGray(uint16_t rgb565)
{
uint32_t gray;
uint8_t r = (rgb565 >> 11) & 0x1F; // R 5 bits
uint8_t g = (rgb565 >> 5) & 0x3F; // G 6 bits
uint8_t b = rgb565 & 0x1F; // B 5 bits

gray = (r*30*8 + g*59*4 + b*11*8 + 50) / 100; // Note that this uses approximate human visual perception weights: R*30%, G*59%, B*11%. Adding 50 is for rounding.
return (uint8_t)gray; // Ensure the result is within the range of 0-255, although the calculated result here is naturally within that range.
}
// Binarization
uint8_t GrayToBinary(uint8_t gray, uint8_t threshold) {
return (gray >= threshold) ? 0 : 1;
}
Structural design
physical demonstration
and material procurement
tables can be downloaded from the attachment.
4. Structural Design.zip
Firmware program.zip
Demo video.mp4
Materials Procurement.xlsx
PDF_Simple Polaroid Design.zip
Altium_Simple Instant Camera Design.zip
PADS_Easy Instant Camera Design.zip
BOM_Simple Instant Camera Design.xlsx
90663
Handheld game console based on the Taishan School
Handheld game console based on the Taishan School
Video Link
(Bilibili video) -- Function Demonstration and Introduction
Code Link
(Gitee code link)
Production Documentation:
Detailed design and production content is here.
Open Source License
: GPL 3.0
Project Introduction:
This project is based on the LCSC Taishanpai development board, independently designing the motherboard circuit, peripherals, and casing of a game console, creating a completely open-source Android handheld game console.
Special Notes (Must Read) :
The current version is v1, the initial design, mainly used for verification and testing. It is not recommended to use it directly for production at this time; it can be used for reference and learning.
The current version has many shortcomings and defects as follows:
1. The PCB size is too large, which is not conducive to prototyping.
2. The PCB layout and routing are relatively arbitrary; the layout and routing are basically just about getting through.
3. Due to size and internal space limitations, v1 can only include a small-capacity battery (see the battery section of the production documentation for details).
4. The MPU6050 currently has a bug; during testing, it was found that it can read and write the chip's configuration register normally, but cannot read the data register.
5. The casing design has some unreasonable aspects.
6. After multiple tests, the currently used 6-inch MIPI screen has many problems, such as unstable contact with the BTB dock and frequent screen blackouts. We are already considering replacing it with a more stable, higher-resolution screen in future versions.
7. Actual testing revealed that the Taishanpai generates a lot of heat, and the current cooling system is insufficient.
A more optimized and mature version, v2, is currently under design and will be released soon after verification. Version v2 will optimize various issues:
1. The PCB size has been significantly reduced, the layout is more compact, the wiring layout has been optimized, and signal interference and high-speed processing have been implemented in various locations.
2. The internal space layout has been redesigned to accommodate a large-capacity battery. A mature battery management system has been added, implementing UPS and power detection.
3. The body has been optimized; the volume buttons have been moved to the left and right handles, a power button (functioning like a mobile phone's power button) has been added, and a main power switch has been added. Meanwhile, the shell has been improved to fit the ergonomics.
4. More functions have been added to the system.
5. Todo
Update Log
2024/9/4 V1.0
Game Console Initial Version Released, still has many shortcomings and urgently needs modification.
Project Parameters:

Equipped with a 6-inch touch screen with a resolution of 1280p.
Uses STM32 as the controller to read buttons and joysticks, interacting with the kernel system .
Has 3 USB 2.0 expansion ports, 2 USB BA, and 1 Type-C.
Onboard 4G module interface and SIM card slot, enabling mobile network
access. Onboard Wi-Fi and Bluetooth.
Includes a 3.5mm headphone jack, speaker, and microphone .
Uses MPU6050 as the gyroscope. Peripherals :
Uses a UPS battery management module with a large-capacity battery.
Comfortable button trigger. Uses the same joystick as the NS handheld console.
Beautiful and cool shell.
Completely open source and detailed production documentation, abundant production materials. Physical

demonstration .
Hardware Design
System Framework Diagram:
Power Supply:
USB Expansion:
4G:
Functional Peripherals:
Software Design
(only a general introduction)
Shell Design:
The shell design of this project uses ZW3D software. The size and assembly of each component have been carefully considered.
PDF_Handheld Game Console Based on the Taishan School.zip
Altium - A handheld game console based on the Taishan School.zip
PADS - A handheld game console based on the Taishan School.zip
BOM_Based on the Taishan School Game Handheld.xlsx
90664
ESP-Toothbrush
The ESP-Toothbrush is a smart electric toothbrush powered by the Espressif Systems ESP32-C2 chip.
Project Introduction:
ESP-Toothbrush is a smart electric toothbrush powered by the Espressif Systems ESP32-C2 chip. The toothbrush body integrates a 0.96-inch LCD display screen to show information such as battery level, network status, brushing time, and brushing status. A single button on the toothbrush is used for interaction. An ultrasonic motor and buzzer drive the brush head and play prompt sounds. In addition, the toothbrush supports WiFi access to RainMaker, allowing users to view detailed brushing data and configure the toothbrush via the RainMaker app. Product
Demonstration : The following are images of
the actual toothbrush: [Image 1] [Image 2] [Image 3] [Image 4] [Image 5] [Image 6] [Image 7] [Image 8] [Image 9] [Image 10] [Image 11] [Image 12]
[Image 13] [Image 14] [Image 15] [Image 16] [Image 17] [Image 18] [Image 19] [Image 10] [Image 11 ] [Image 12] [Image 13] [Image 18]
[Image 19] [Image 10] [Image 11] [Image 12] [Image 11] [Image 12] [Image 13] [Image 14] [Image 15] [Image 16] [Image 17] [Image 18] [ Image 19] [Image 19] [Image 12] [Image 19] [Image 11] [Image 12] [Image 19] [Image 11] [Image 12] [Image 13] [Image 14] [Image 15] [Image 16] [Image 17] [Image 18] [Image 19] [Image 19] [Image 11] [Image 19] [Image 12] [Image 19] [Image 11] [Image 12] [Image 19] [Image ESP RainMaker Interface ESP RainMaker is a lightweight IoT cloud computing software deeply integrated with Amazon Web Services' serverless architecture. Based on this serverless architecture, ESP RainMaker offers significant flexibility in data storage and transmission capabilities, dynamically allocating tasks to cloud servers based on actual data traffic, effectively reducing the pressure on the cloud for data storage. For more information about ESP RainMaker, please refer to ESP RainMaker. Using ESP RainMaker, you can achieve the following interface effects: The following are the low battery warning pop-up and main page effects created using RainMaker. The following is the brushing time recording information. The following is the ESP Toothbrush control interface. Video Demonstration ESP-Toothbrush | DIY an ESP32-C2 Smart Electric Toothbrush Making this wasn't easy, so please watch, like, and share! Project Function Description Press and hold the button on the toothbrush to turn it on or off. The device features a 0.96-inch LCD screen with display capabilities and supports various display animations. The device offers four different brushing modes, selectable by double-clicking the button on the brushing interface. Once connected to the internet, the ESP-ToothBrush's brushing mode, duration, and device name can be controlled via ESP RainMaker. The ESP-ToothBrush also synchronizes with the current time. Battery information is uploaded to the ESP RainMaker app; a low battery warning will appear when the battery level drops below 20%. After brushing, the time is recorded in ESP RainMaker, and brushing time and duration data are compiled for one month. The hardware circuit design utilizes a TP4056 chip for battery management, enabling charging while preventing overcharging and over-discharging, and providing reverse connection protection. The CHRG pin of the charging chip is pulled up by a 10K resistor. When the battery is charging, the CHRG pin is low; otherwise, it is high. The CHRG pin is connected to GPIO5 of the ESP32-C2 chip, and the battery charging status can be identified by detecting the level of this pin. Since the maximum range of the ESP32-C2 ADC is 0-3.3V, while the voltage of an 18350 lithium battery can reach up to 4.2V, exceeding 3.3V, two equal-value resistors are used to divide the battery voltage. The battery voltage is then obtained through the ESP32-C2 ADC (GPIO4 corresponds to channel 4). Multiplying the measured voltage value by 2 gives the actual battery voltage, thus enabling battery level monitoring. The HE9073A33M5R LDO chip, with a wide input voltage range, is used for voltage regulation to stabilize the lithium battery voltage to 3.3V, powering the chip and other peripherals. The TC118S DC motor driver chip drives the ultrasonic vibration motor, offering advantages such as low power consumption and low cost. A passive buzzer provides audible alerts. The CP2102N USB-to-UART chip facilitates programming and debugging via the USB Type-C port. Power Options: The ESP-ToothBrush can be powered in either of the following ways: 18350 lithium battery (default power supply, recommended); or via the ESP32-C2's USB port, simultaneously charging the 18350 lithium battery. Software Version Information: ESP-IDF RainMaker chip Flash release/v5.2 1.3.0 ESP32-C2 (ESP8684-MINI-1) 4 MB. Program Download : Download the program from Espressif Systems' official website - Support - Related Downloads - Tools - Flash Download Tool . After downloading, extract the files and find flash_download_tool_3.9.7.exe. Double-click it. Then select ESP32-C2. Open the software and directly burn the esp_toothbrush_2024_08_26.bin file from the attachment into address 0x0. The steps are as follows. Additional Bill of Materials (BOM ) : 3.7V SL18350 Flat Head 850 mAh Lithium Battery, 0.96-inch TFT LCD Ultrasonic Electric Toothbrush Motor, Magnetic Connector, Spring Pin Male/Female Socket, Gold-plated Charging Contacts, Pogo Pin Probe, Pogo Pin Surface Mount, TC118S SOP-8 Single Channel DC Motor Driver IC Chip, FFC/FPC Connector, 0.5MM Bottom Connector Vertical TYPE-C Female Adapter Board, 14P to 2.54 5P Straight-Through Circuit Board, Compatible with Fupai Electric Toothbrush Head Replacement, Universal Revision Notes. Version Revision Notes V1.1 : Added lithium battery overcharge and over-discharge protection circuit.












































































































esp_toothbrush_2024_08_26.bin
Toothbrush 3D Model.zip
PDF_ESP-Toothbrush.zip
Altium_ESP-Toothbrush.zip
PADS_ESP-Toothbrush.zip
BOM_ESP-Toothbrush.xlsx
90665
VFD display module based on ESP32C3+PT6315
VFD display module, supports WiFi clock, ESP32-C3 main controller, IO output, matrix keyboard output.
Project Description
This project implements a VFD display module. The module supports basic WiFi clock functions and also exposes remaining I/O and a matrix keyboard interface, allowing interested users to use it as a display screen + ESP32 development board for secondary development.
The VFD used in this project is a cheap FUTABA_7-BT-317NK that was sold off on Taobao a few months ago; there are still some available on the market.
Bilibili link: https://www.bilibili.com/video/BV1Qb4y1G7s2/
 
Open source license
 CC-BY 3.0, commercial use and secondary development are allowed, but the source must be cited, i.e., the link to this project.
 
Project Attributes
This project is being publicly disclosed for the first time and is my original work. This project has not won any awards in other competitions.
 
Design Principles
 
I. Main Board Part
 
1. Using the ESP32-C3-MINI1 module, its price and pin count are suitable for this project, its performance is stronger than the ESP8266, and I am more familiar with it.
2. Two S8050s form an automatic download circuit, which is common in many development boards. This circuit is reserved for easy burning and debugging.
 
This is the VFD driver chip PT6315.
Similar to a digital tube chip, it writes data to its display memory via a three-wire interface (DIN, CLK, STB), and then continuously scans the display level at each segment and digit selection pin.
This type of chip usually also has keyboard scanning functionality, and the PT6315 is no exception; it can scan a 16*2 matrix keyboard.
(The keyboard port and LED output port of the PT6315 are shown, making it convenient to use the motherboard as a module elsewhere.)
 
The PT6315 drives the VFD in a negative voltage manner, therefore it requires a -20V to -28V DC negative voltage.
A negative boost converter for CUK is implemented using MT3608+LMV321; this part is copied from @XACT.
Output voltage calculation: Vout = -0.6 * (1+R6/R7), using the resistors shown in the diagram to output -23V.
The voltage can be set manually using R6 and R7; a higher voltage results in brighter display, but may increase power consumption and reduce the lifespan of the VFD tube.
The VFD_EN_HV label in the circuit diagram is the enable signal input for the negative boost circuit.
The PT6315 datasheet mentions that the negative high voltage requires a power-on delay and an earlier power-off (see diagram below). Although actual testing showed no impact, the datasheet recommendation was followed.
 
The VFD filament requires AC heating.
If DC power is used, due to the filament's resistance and decreasing potential from the positive to the negative terminal,
the end closer to the positive terminal will attract electrons more easily and become brighter, resulting in uneven brightness across the VFD.
 
The MX113 motor driver chip is chosen in this circuit because it is inexpensive and small.
Through the microcontroller's PWM and an inverter constructed from AO3400, two complementary PWM signals are obtained.
Therefore, the full-bridge output swing is VCC*2≈10V. By adjusting the PWM duty cycle, Vrms is kept between 2.0 and 2.8V.
 
Generally, the duty cycle is adjusted to achieve a considerable brightness while maintaining a relatively small duty cycle.
If the duty cycle is too high, the filament will turn red; avoid seeing a noticeably red filament, as this will significantly shorten its lifespan! For
 
the physical demonstration
 
 
 
chip, you can place a piece of nano-adhesive or foam tape on top.
 
 
To create
a PCB using the Geber attachment,
open the attached HTML file in your computer browser to help with soldering and positioning the components in the BOM.
 
For programming instructions ,
refer to the attachment.
 
To
network , after powering on, connect to the WiFi provided by the ESP32. A webpage will automatically pop up; enter the SSID and password and save.
933274efd9193e1309f35d23f35506a6.mp4
Firmware, flashing tool, operation tutorial.zip
Welding aids (bom.html)
Gerber_2023-12-20.zip
PDF_VFD Display Module Based on ESP32C3+PT6315.zip
Altium_VFD display module based on ESP32C3+PT6315.zip
PADS_VFD Display Module Based on ESP32C3+PT6315.zip
BOM_VFD Display Module Based on ESP32C3+PT6315.xlsx
90666
Voltage and current meter based on CW32F030
Voltage and current meter based on CW32F030


Photos of the finished voltmeter and ammeter based on the CW32F030 are shown below

: ![IMG_7361 2.JPG]

![IMG_7359.jpg]
I won't go into details since they were all taught by the same mentor. This was my first time experiencing JLCPCB's 3D printing and panel services. Initially, I wanted an acrylic panel, but the customer service representative called to tell me that acrylic couldn't be made with bulging, so I changed it to a thin-film panel. The buttons have a nice bulge. I

initially wanted a semi-transparent shell, but my printer couldn't handle transparent effects. So I used JLCPCB's 3D printing service to make a semi-transparent resin shell. The result is shown in the image:

![IMG_7309.jpg]
The panel hadn't arrived yet, so I assembled it and checked the effect. I found some design flaws: the LCD screen edges weren't reinforced, and the four corner screws were too short to hold the motherboard in place, causing the motherboard to be uneven during assembly. So I modified the model and finally printed a white one using my own printer.

The shell model file is attached.

Below are the screenshots

: ![3D_PCB1_2024-08-03-3.png]
![
3D_PCB1_2024-08-03-2.png ]

![Multimeter-3.png]

![Multimeter-2.png]
![Multimeter.png]
On the software side, I developed using VS Code + EIDE on a Mac, and compilation was normal. However, the flashing process kept failing, even after trying several different linkers. Finally, I installed a Windows virtual machine and successfully flashed it via serial port. One more thing: I hope domestic chip manufacturers will also put more effort into software development and support cross-platform compatibility.

Voltage and current meter firmware source code (vscode + EIDE) https://github.com/rushairer/LearnCW32/tree/voltage-and-current-meter

CW32F030 startup template (vscode + EIDE)
https://github.com/rushairer/LearnCW32
CW32 voltage and current meter.hex
voltmeter and ammeter button. 3mf
voltmeter and ammeter casing_top. 3mf
Voltage and current meter casing_bottom. 3mf
vcr.mp4
PDF_Voltmeter and Ammeter Based on CW32F030.zip
Altium_Voltage and Current Meter Based on CW32F030.zip
PADS_Voltage and Current Meter Based on CW32F030.zip
BOM_Voltage and Current Meter Based on CW32F030.xlsx
90667
Taishan School Smartphone Design
Based on the RK3566 Taishanpai "Little Dolphin" mobile phone design, it has built-in lithium battery management, accelerometer, gyroscope, magnetometer sensor, and EC20 module, realizing most of the phone's functions and enabling users to play everyday games.
1. Introduction
This is a "Little Dolphin" smartphone based on the LCSC Taishanpai Development Board and Android 11/Ubuntu 20.04.
V4 version demonstration video [Bilibili] I made a smartphone!!! Meeting daily needs?
V3 version demonstration video [Bilibili] I made a budget "phone" that can shoot videos? Play Genshin Impact?
2. Project Overview
This
project is a smartphone based on the LCSC Taishanpai Development Board, adapted for Android 11 and Ubuntu 20.04. It features built-in lithium battery management, 4G baseband, 3.1-inch touchscreen, camera, power amplifier, voice input, accelerometer, angular velocity sensor, magnetometer, and touch buttons. It can achieve lithium battery power supply, GNSS positioning, try out motion-sensing games, make calls, send text messages, take photos, videos, play music, and all common Android apps. Smartphones represent the pinnacle of embedded development, yet there are very few open-source smartphones currently available. DIY smartphones are the best project for learning and practicing circuit design, PCB layout, and soldering, enabling customized operating systems and drivers, and developing or modifying application software.
Motion-sensing game demo
(a) Photography (b) Navigation and positioning
(c) Video playback (d) Music playback
Overall project display
Project link
This project involves BGA package soldering, which is quite difficult for beginners. You can first learn about previous versions of this project. Link: [Little Dolphin Mobile Phone] Taishanpai 4G Internet Mini Phone - LCSC Open Source Hardware Platform (oshwhub.com)
3 Design Scheme
System Composition
Hardware Label
Hardware Design Details
EC20 Module
The EC20 module consumes a lot of power, and the 4G module has an independent power supply output. The 4G module power supply switch is controlled by the 4G_PWREN_H pin, i.e., GPIO0 PA1. When 4G is not needed, this pin can be set to low level to save power.
Lithium battery charging and discharging
The TP5100 lithium battery charging management chip is fragile. If the hardware design is not good, it is easy to burn out. Please strictly refer to its official design manual when designing! 4G
module
has its own voice output. After testing, the microphone can be used with Taishanpai, but the speaker cannot. If you need to use the function, please solder FPC7 and remove R41 and R42. And pull GPIO0 PA0 high within the device tree.
4. Software debugging
code patch download:
千古长夜丶/TSPiTSPiPhoneV4.1 - Gitee.com.

If you have modified the Taishanpai Android SDK, please revert to the original version.
Copy the binary library file lib/gps.default.so to the device/rockchip/rk356x directory.
Copy the Taishanpai Android SDK to the corresponding Git repository patch. For the corresponding hardware version V4.1, navigate to the corresponding Android SDK




directory
:




device/rockchip/common
patch/common.path


, device/rockchip/rk356x
patch/rk356x.patch,


hardware/interfaces
patch/interfaces.patch , and


kernel
patch/kernel.patch .




Then copy the patch files to the corresponding directories and use the following command:

`patch -p1 -N -d . < corresponding patch file.patch`.

Configure the runtime environment:

`source build/envsetup.sh && lunch rk3566_tspi-userdebug`.

Compile (virtual machine memory should ideally be ≥16GB; if not, change to -j8).

`make install clean -j16 && make -j16`
. (Image shown
). Development stage:


2024-03-27 V1 Initial Design.


2024-04-22 V2 Optimized screen interface layout.


2024-05-28 V3 Added screen backlight circuit IC and optimized screen backlight heat dissipation.


2024-07-12 V4 Added lithium battery charging management, sensors, power amplifier, and touch buttons, and optimized details.


2024-08-01 V4.1 Fixed lithium battery charging circuit and optimized details. This is the first time
this open-source


project has been publicly released; it is my original work. This project has not won any awards in other competitions.
This project follows the CC BY-NC-SA 4.0 open-source license; unauthorized reproduction and commercial use are prohibited.
Non-Commercial Use Only – ShareAlike 4.0 International License
8 Discussion Group
QQ Group: 938597687
9 References:
1. [Little Dolphin Phone] Taishanpai 4G Internet Mini Phone - LCSC Open Source Hardware Platform (oshwhub.com)
2. Taishanpai 3.1-inch Screen Expansion Board - Integrated Power Supply, Audio, Serial Port, RTC - LCSC Open Source Hardware Platform (oshwhub.com)
3. LCSC Taishanpai Development Board 39Pin_Hub2.0_Ethernet Expansion Board
Shell V4.STL
PDF_Taishanpai Smartphone Design.zip
Altium_Taishanpai Smartphone Design.zip
PADS_Taishanpai Smartphone Design.zip
BOM_Taishanpai Smartphone Design.xlsx
90668
ESP-Dongle
One-click switching, dual functionality: ESP-Dongle brings you the ultimate experience from wireless network card to USB flash drive.
Project Introduction:
The ESP Dongle is a multi-functional USB device solution developed based on the Espressif ESP32-S3 microcontroller. This project seamlessly integrates the functions of a USB MSC wireless flash drive and a USB wireless network adapter into a single device, switching between these functions via a sliding switch.
In USB MSC wireless flash drive mode, the device acts as a wirelessly accessible USB disk, allowing users to access and manage data on the onboard flash memory or SD card via USB connection. Simultaneously, the device provides a built-in file server via Wi-Fi, supporting file uploads and downloads, thereby improving the flexibility and convenience of data management.
In USB wireless network adapter mode, the device acts as a network adapter, allowing the host to establish a wireless network connection and featuring hot-swapping capability, further enhancing operational flexibility and convenience.
Physical Product Demonstration:
The physical product image
is shown below.


The 3D file of the casing can be downloaded from the attachment!
Video Demonstration:
Building a multi-functional USB Dongle with the ESP32-S3
is not easy, so please like, comment, and subscribe after watching!
Project Related Functions:


The sliding switch allows users to switch between USB MSC wireless flash drive and USB wireless network adapter functions.


In USB MSC wireless network drive mode, ensure the device and ESP32-S3 are on the same local area network. Users can access and manage the SD card content on the ESP32-S3 via a browser by accessing 192.168.4.1.


In USB wireless network adapter mode, the device can be used as a network adapter. Users need to pre-configure the room's Wi-Fi SSID and password. When the device is connected to a computer, the system will automatically connect to the pre-configured Wi-Fi network.


Hardware Description
:


The SD card interface supports 1-wire, 4-wire SDIO mode, and SPI mode. Furthermore, to ensure signal stability, each pin is pulled up with a 10kΩ resistor and uses ESD protection devices to prevent damage from electrostatic discharge.


The HE9073A33M5R low dropout regulator (LDO) chip is used for power supply regulation, stabilizing the input voltage range from 3.3V to 7V and outputting it to 3.3V, ensuring system power supply stability.


The two ends of the slider switch are pulled up and pulled down respectively. The current on/off state of the switch is determined by reading the level status through GPIO4.


The differential signal lines D- and D+ of the USB Type-C interface are directly connected to the USB interface of the ESP32-S3. The D-, D+, and VUSB pins are protected against electrostatic discharge (ESD) to prevent damage to the circuit. Note that the CC pin needs to be pulled down with a 5.1K resistor; otherwise, it will not be recognized by the host.


Hardware Components
: The hardware system consists of the following components:

Main controller: ESP32-S3-MINI-1-N8;
Type-C interface
; SD card slot
; voltage regulator circuit;
slide switch;
tactile switch
; LED indicator

; power option ; powered

via Type-C interface.

Software Description:
Version information:



ESP-IDF
chip
Flash




release/v5.2;
ESP32-S3-MINI-1-N8
8 MB.



Programming Instructions:

Download the programming software: Espressif Systems official website - Support - Related Downloads - Tools - Flash Download Tool
. After downloading, extract the file and find flash_download_tool_3.9.7.exe. Double-click it. Then select ESP32-S3 and USB, and click OK.

4. Open the software and directly burn the esp_dongle_20240827.bin file from the attachment into address 0x0. The steps are as follows.
User Instructions for ESP-Dongle
Wireless Disk

: After plugging in the device, your phone needs to connect to a Wi-Fi hotspot named "ESP-Wireless-Disk". Then, open your browser and access 192.168.4.1 to transfer files. Network Adapter:

When using the network adapter's function, the firmware (i.e., the bin file) sets the Wi-Fi hotspot username and password to esp_dongle. Therefore, users need to manually create a Wi-Fi hotspot (both username and password must be: esp_dongle). The ESP-Dongle will then automatically connect to this hotspot.
Card reader case top 20240816.STL
Card reader case btm 20240815.STL
esp_dongle_20240827.bin
PDF_ESP-Dongle.zip
Altium_ESP-Dongle.zip
PADS_ESP-Dongle.zip
BOM_ESP-Dongle.xlsx
90669
Cyber ​​Wand_STM32 Convolutional Neural Network
This project is the Cyberry Potter Electromagic Wand, using an STM32 microcontroller as the main control chip. It employs a convolutional neural network for motion recognition and features a modular design with extremely high scalability.
Video Tutorial Link:
Bilibili Video -- Function Demonstration and Introduction
Project Introduction
This project is the Cyberry Potter Electromagic Wand, which uses convolutional neural networks for action recognition and adopts a modular design with high scalability. You can use the files in this project to create a cybernetic wand. If you have sufficient skills, you can also modify the wand's spells (functions). The wand adopts a modular design, with different modules corresponding to different execution functions. You can create new modules and add new functions according to your needs. You can also modify the action of activating spells; you only need to recollect data and train the model.
Physical Demonstration
Assembled Status
Disassembly Status
Module Insertion Direction: Front Face Down
The Type-C port can be used for charging and serial port debugging. The red light is on when charging, and the green light is on when fully charged
. From left to right: status indicator, interactive button, power switch
Project Function Introduction
After the motherboard is powered on, it will enter mode 0. Press and hold the button for 0.5 seconds and then release to enter mode 1.
Short press and release the button in any mode: Sample the IMU for 1.5 seconds, input the data into the model to obtain the action recognition output. Different modules will execute different functions after obtaining the action recognition result.
When an infrared module is inserted, infrared signals of any protocol can be copied, such as air conditioner and NEC.
Mode 0: After obtaining the action recognition output, the module will send the recorded infrared signal according to the recognized action.
Mode 1: After obtaining the action recognition output, the module will wait and record the infrared signal according to the recognized action.
The operations performed in Mode 0 and Mode 1 can be different depending on the inserted module (code writing is required).
Function of Type-C port: It can be used for serial port debugging and battery charging. When there is a Type-C connection, the device will use Type-C instead of battery power.
Power switch: The power switch is responsible for turning the 3.3V power supply on or off. When the power switch is not turned on, battery charging can proceed normally, but STM32 and gyroscope will not be powered on. Working
button: The button has two control methods: long press and release (release after more than 0.5 seconds) and short press and release (release within 0.5 seconds).
The LED in front of the button is a system status indicator, with five states: 10Hz flashing, 5Hz flashing, 2Hz flashing, constant light, and off.
(Hardware Description)

This design uses the STM32F103CBT6 as the main control chip. Neural network inference and main functions run on the STM32. Currently, it can recognize 12 types of movements.
Data can be collected on a computer and the model can be retrained to add new movements or adapt to individual waving habits.
The neural network model occupies less than 8kb of memory, saving significant resources.
Inference time is around 100 milliseconds; inference occurs immediately after sampling, with no noticeable delay.


This design uses the MPU6050 as the motion information acquisition chip
. A red... The external module and RF module have recording and transmission/reception functions.
Recording by the infrared and RF modules does not require decoding, meaning any signal can be recorded (except encrypted signals).


Infrared and RF signals are stored through an external W25Q16 memory, which retains the data even when power is off.
Module detection uses an ADC to sample the voltage values ​​of the voltage divider resistors on the module to identify it.
The ADC uses variance checking to detect if any modules have been inserted.



The
complete wand code and shell are available on GitHub.
The software code is located in the Software directory, containing a Keil project. The model training scripts, data collection scripts, and spell action cards are located in the ./Software/CNN directory.
Please refer to the readme document in GitHub for development environment configuration.
You can also download the 3D shell files and spell cards below.
3D shell file Step.zip
3D shell file STL.zip
Spell Cards.zip
PDF_Cyber ​​Wand_STM32 Convolutional Neural Network.zip
Altium_Cyber ​​Wand_STM32 Convolutional Neural Network.zip
PADS_Cyber ​​Wand_STM32 Convolutional Neural Network.zip
BOM_Cyber ​​Wand_STM32 Convolutional Neural Network.xlsx
90670
[Autonomous Driving] Liguanxi Smart Car
This is a smart car, only the size of a palm, running the ROS1 robot system. It can perform basic LiDAR 2D mapping and navigation functions, and can be controlled with the assistance of a mobile APP. It also has extended functions such as radar tracking, visual recognition and tracking.
Project Description:
The Idea's Origin
In 2021, the Bilibili influencer "Zhihuijun" created a bicycle. I noticed he used the ROS system, enabling 2D map creation, path planning, and image recognition.
Zhejiang University's Fast-Lab also used the ROS robot system for its flying machine, performing various intelligent operations.
 
I initially thought ROS was extremely complex and difficult to understand. However, after some study, I discovered that ROS is like a slightly more advanced version of "Lego bricks." Experts encapsulate the code into various "function packages," much like Arduino's "libraries." I don't need to write navigation or mapping algorithms; I just need to download the corresponding code package from the official website, modify some parameters, and connect these packages to perform seemingly sophisticated operations like mapping and navigation.
 
Of course, there are still some differences between theory and practice.
To put this into practice, I considered buying a ready-made bicycle to learn ROS, but found the price too high… Even basic mapping functionality would cost over a thousand yuan. In the end, I still spent over 2400 yuan to buy one and studied it for a month.
 
After completing the basic learning, I found that the toy car was basically useless and was gathering dust on the side. So, I had another idea!
I wondered if I could replicate what I had learned in the past month? Could I also make a low-cost and relatively compact smart car?
With this idea in mind, I started this project. In the end, the project was about the size of a palm, and the cost was controlled at around 260 yuan. The appearance was made more exquisite, so the shell had to be complete.
The

 
open-source license
is GPL 3.0.
This is the GNU General Public License. If a product under the GPL license is used in a project, then the project must also adopt the GPL license, which means it must be open source and free.
    The starting point of GPL is the open source and free use of code, and the open source and free use of reference, modification, and derivative code, but it does not allow modified and derived code to be released and sold as closed-source commercial software.
    The most significant characteristics of GPL are "viral distribution" and "disallowing closed-source commercial distribution". Linux, which we are familiar with, uses the GPL license. 
 
Project-related functions:
main function completion status (7)

The car can be manually controlled by the mobile APP (completed)

Specific function: Two remote controls can be used to control the front and back and left and right independently, which has a better control effect and can also provide some simple data feedback.

Use LiDAR for 2D mapping. Use RVIZ visualization tool to display (completed)

Specific function: Manually control the car to move and explore unknown locations, use LiDAR to draw the surrounding contours, and draw a 2D plane map.

Use LiDAR for navigation and use RVIZ visualization tool to display (completed)

Specific function: After running, the map drawn by the previous function will be opened. Mark any point in rviz, and the car will automatically plan the route and drive to the corresponding point. If an obstacle suddenly appears in the middle, it will automatically detour.

Use radar to track the target (completed)

Specific function: After running the function package, it will automatically follow the nearest object. It is still a bit useless and can only be used in relatively wide places, otherwise it is easy to lose track.

Use camera for HSV color block tracking (completed)

Specific function: This can only track color blocks. The main function is to convert the image to HSV. Each color has a different HSV value. The color block area is determined by the lookup value, and then the coordinates are output. Finally,

the target feature is identified by the camera based on the coordinates. (Completed)

The find_object_2d function package is used. After running, the screen and the generated feature points appear. The corresponding object is selected and identified. It can be

charged and discharged via USB. (Completed)

It can be charged via USB interface. Otherwise, it is more troublesome to remove the battery.
 
Additional functions are discarded. (3)

The mobile phone displays the mapping results and video screen. (Discarded)

Reason: The URL can only be read by one device at a time. Multiple forwarding will cause the screen to be severely laggy. (No solution found)

Simple obstacle avoidance is performed by relying on its own computing power without using a computer. (Discarded)

Reason: The data packet structure of the newly compatible X2 radar cannot be found and cannot be intercepted. It is read and forwarded directly to the host computer. This is more universal. One program can be compatible with multiple radars without switching programs.

RRT autonomous exploration mapping. (Discarded)

Reason: The exploration effect is poor. (No solution found)
 
Project attributes
This project is the first time it has been made public. It is my original project.
The chassis code framework is modified from the Liguanxi-UAV aircraft code, and the coding style is the same as the previous project.
Most of the knowledge used in this project was obtained from the Internet, and most of it is open and free information. The links are as follows:
 
CSDN Forum
JoystickView: Creating a Custom Game Controller Android Library - CSDN Blog
Implementing LiDAR-Based Target Following in ROS_Multi-Target Tracking Function Package in ROS - CSDN Blog
CMOS Debugging Experience_ov2640 Driver Initialization Imaging Blur - CSDN Blog
ROS-Machine Vision: Specific Object Recognition (find_object_2d Package)_Object Detection and Tracking ROS Function Package - CSDN Blog
ESP32 Arduino Learning (Part 1). Setting a Static IP_esp32 Static IP - CSDN Blog
ROS Publish and Subscribe to Images_ROS Subscribe to Images - CSDN Blog
Raspberry Pi Learning: Learning OpenCV + Using OpenCV to Get Raspberry Pi Mjpg Camera Video Stream_Raspberry Pi Video Stream - CSDN Blog
ESP32-CAM on Web Taking pictures and displaying images on a server - How to take pictures with ESP32Cam - CSDN Blog;
ESP32Cam camera + host computer OpenCV face recognition - OpenCV.js ESP32-Cam - CSDN Blog;
Mapping a serial port to a TCP server port using socat under Linux - Socat serial port - CSDN Blog;
Detecting seven colors in an image with OpenCV, distinguishing colors and corresponding positions - Color location in an image (CBCC) - CSDN Blog;
Mutual conversion between RGB and HSL colors - HSL to RGB - CSDN Blog
; [OpenCV] Common HSV color upper and lower limits - Threshold ranges for red, yellow, blue, and green colors - CSDN Blog;
Usage of HSV color space table and cv2.inRange() - HSV range - CSDN Blog;
OpenCV - Python extraction of laser images using corresponding HSV values ​​- HSV hue extraction steps - CSDN Blog;
OpenCV tutorial: CV2 module - Image processing, HSV, hue, and brightness adjustment - cv2 hsv - CSDN Blog
Python: Color Block Detection, Tracking, and Printing Center Coordinates_Python Get Geolocation Color Block Center Point - CSDN Blog
Solidworks Export Two-DOF Servo Platform URDF for Gazebo Simulation_SW2022 Import Gazebo - CSDN Blog
Move Base Parameters and Global Planner, Local Planner Settings_MoveBase Local Cost Map Settings - CSDN Blog
DWA Parameter Adjustment 2_DWA Parameter Tuning - CSDN Blog
Github
https://github.com/YDLIDAR/YDLidar-SDK/blob/master/doc/howto/how_to_build_and_install.md
https://github.com/rauwuckl/ros_simple_follower
GitHub - ros/solidworks_urdf_exporter: SolidWorks to URDF Exporter
Bilibili Video Website
Robot Operating System ROS Quick Start Tutorial_Bilibili_bilibili
LCSC EDA Drawing 2.4GHz RF Double-Layer Board Fabrication - NanoVNA Debugging and Impedance Matching_Bilibili_bilibili
Books
"ROS Educational Robot Training Tutorial" 
"Linux from Beginner to Expert 2nd Edition"
 
Project Progress
Overall project progress, application for project consumable costs is required!
January 15, 2024 - February 3, 2024: Project initiation and supplementation of basic knowledge in ROS and network communication.
February 4, 2024 - February 8, 2024: Building models using Soliworks, confirming the shape and component structure.
February 9, 2024 - February 12, 2024: Creating a new virtual machine to set up the ROS system and related compilation environment.
February 12, 2024 - February 17, 2024: Building the basic prototype of ESP32 code, peripheral code, and mobile APP remote control (first version, using the Arduino code editor and the DianDeng Technology APP).
February 18, 2024 - February 18, 2024: Determining specific component models, specific implementation direction, and establishing a J
参考设计图片
×
 
 
Search Datasheet?

Supported by EEWorld Datasheet

Forum More
Update:2026-03-28 09:32:49

EEWorld
subscription
account

EEWorld
service
account

Automotive
development
community

Robot
development
community

About Us Customer Service Contact Information Datasheet Sitemap LatestNews


Room 1530, 15th Floor, Building B, No.18 Zhongguancun Street, Haidian District, Beijing, Postal Code: 100190 China Telephone: 008610 8235 0740

Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号