aaJMNlfVz

USB Dock - Hub - With 3D Printed Shell

 
Overview
This is a USB 2.0 hub based on the SL 2.1A, complete with a 3D-printed casing. Please export the casing files from LCSC EDA. The hub has two Type-C ports: the top one connects to a computer, and the right Type-C port is for connecting Apple EarPods wired headphones. All functions have been verified to be working correctly.
PDF_USB Expansion Dock - Hub - with 3D Printed Shell.zip
Altium USB Dock - Hub with 3D Printed Shell.zip
PADS USB Dock - Hub with 3D Printed Shell.zip
BOM_USB Expansion Dock - Hub - with 3D Printed Housing.xlsx
92000
FOC sensorless control driver board for permanent magnet synchronous motors and PMSM brushless motors
Sensorless FOC controller for permanent magnet synchronous motors based on STM32F446 and DRV8301.
This is a sensorless controller for permanent magnet synchronous motors (PMSM and BLDC brushless motors) based on the STM32F446 and DRV8301, using an FOC controller.
The circuit schematic is referenced from HuiDrive. Currently, the current loop and speed loop closed-loop operation are functioning normally. Please feel free to point out any design issues in the comments section.
8bcfc7782db5700d851c141b628ebc8a.mp4
PDF_FOC Sensorless Control Driver Board for Permanent Magnet Synchronous Motor (PMSM) Brushless Motor Driver Board.zip
Altium_FOC Sensorless Control Driver Board for Permanent Magnet Synchronous Motors (PMSM) and Brushless Motors.zip
PADS_FOC Sensorless Control Driver Board for Permanent Magnet Synchronous Motors (PMSM) and Brushless Motors.zip
BOM_FOC Sensorless Control Driver Board for Permanent Magnet Synchronous Motor (PMSM) Brushless Motor Driver Board.xlsx
92001
Electronic turntable
The NE555+CD4017 electronic turntable with sequential lighting can be used for decision-making. This is a case study from the first training session for lecturers at Northwestern University.
The NE555+CD4017 electronic turntable with sequential lighting can be used for decision-making. This was a case study from the first training session for lecturers at Northwest University.
A toggle switch is used for switching between sequential lighting modes, and a tactile switch is used for decision-making mode.
September 25.mp4
PDF_Electronic Turntable.zip
Altium_electronic turntable.zip
PADS_Electronic Turntable.zip
BOM_Electronic Turntable.xlsx
92004
Orange Pie CM4 same size base plate
A base plate the same size as the Orange Pie CM4, measuring only 55*40 mm.
This is a tiny Orange Pie CM4 motherboard, only 55mm x 40mm in size.
It features an onboard power supply interface and memory card slot, PWR and RST buttons, and a debug serial port via a 1.25mm 3-pin connector.
The onboard CH340N chip is ready to use directly – no need to find a separate serial port
! [ Images of images are included. ] Update 9.15: New version verified
! [Images of images are included .] ![IMG_20240910_163859.jpg] 9.25 Update: Power supply changed to 6-pin Type-C
PDF_Orange Pie CM4 Same Size Base Plate.zip
Altium Orange Pie CM4 same size base plate.zip
PADS Orange Pie CM4 same size base plate.zip
BOM_Orange Pie CM4 Same Size Base Plate.xlsx
92005
CW32 voltage and current meter (STM32 compatible)
The voltage and current meter is based on CW32 and is compatible with STM32F103C8T6 in design.
Compared to the official project: 1. A CH340N serial port has been added, enabling communication with the microcontroller via USB for convenient data acquisition; 2. A WS2812 LED has been added, allowing for more visually appealing designs;
3. Six NPN transistors are used to drive the digital tube, reducing the microcontroller's current consumption;
4. ESD protection has been added to the interface to enhance electrostatic discharge protection;
5. The digital tube adopts a common anode design.
Keil_Project.rar
PDF_CW32 Voltage and Current Meter (STM32 Compatible).zip
Altium_CW32 Voltage and Current Meter (STM32 Compatible).zip
PADS_CW32 Voltage and Current Meter (STM32 Compatible).zip
BOM_CW32 Voltage and Current Meter (STM32 Compatible).xlsx
92006
Mechanical equipment main control board
Functions: Main control chip: STC32F; DI: 4-channel optocoupler input; DO: 4-channel transistor output; Network: 3-channel RS485; Power supply: 24V;
Functions: Main control chip: STC32F; DI: 8-channel optocoupler input; DO: 4-channel transistor output; Network: 3-channel RS485; Power supply: 24V;
PDF_Mechanical Equipment Main Control Board.zip
Altium_Mechanical Equipment Main Control Board.zip
PADS_Machinery Equipment Main Control Board.zip
BOM_Mechanical Equipment Main Control Board.xlsx
92007
ammeter and voltmeter
Using a CW chip, and employing ADC and SPI, current and voltage display outputs are achieved.
Project Introduction
This project is a current and voltage meter based on the CW32 microcontroller.
Project Functions
This design is a current and voltage meter based on the CW32 microcontroller for detection; it uses a 0.96-inch OLED screen to display the detected current and voltage; it uses a voltage divider circuit to expand the detected voltage and current range; it has a button to switch modes; and it uses LED technology to indicate the status.
Project Parameters

This design uses the CW32 main control chip with an internal reference, ensuring accurate ADC acquisition;
it uses a 0.96-inch OLED display to refresh the displayed current and voltage in real time;
it uses a voltage divider circuit to expand the measurement range;

Principle Analysis (Hardware Description)
This project consists of the following parts: power supply section, LED indicator, main control section, ADC acquisition, and OLED display section. This project mainly acquires data through the ADC, processes it, and displays it on the OLED screen.
1--Main Control Circuit:
Uses a CW32 chip with a serial port for easy debugging.
2--Power Supply Circuit:
Uses a TYPE-C-16P interface as the power supply interface, with reverse connection protection.
3--OLED Display Circuit:
Uses a 0.96-inch OLED display screen; there are many tutorials available, making display porting convenient.
4--The ADC acquisition circuit
uses a voltage divider circuit to expand the range.
5--The reference circuit
provides a reference, making the measurement more accurate.
6--The calibration circuit
is used because the measurement circuit has errors; calibration can be performed later.
Software code
1--Uses the RT-Thread operating system, a very small kernel version, and is integrated with finsh.
void rt_hw_console_output(const char *str)
{
rt_size_t i = 0, size = 0;
size= rt_strlen(str);
for(i=0 ; i < size ;i++)
{
if (*str == '
')
{
USART_ClearFlag(CW_UART1, USART_FLAG_TC);
USART_SendData_8bit(CW_UART1, '
');
while(USART_GetFlagStatus(CW_UART1, USART_FLAG_TC)== RESET);
}
USART_ClearFlag(CW_UART1, USART_FLAG_TC);
USART_SendData_8bit(CW_UART1, *(str++));

while(USART_GetFlagStatus(CW_UART1, USART_FLAG_TC)== RESET);
}
}
int rt_hw_console_getchar(void)
{
int ch = -1;
while (USART_GetFlagStatus(CW_UART1, USART_FLAG_RC) == RESET);

USART_ClearFlag(CW_UART1, USART_FLAG_RC);

if (USART_GetFlagStatus(CW_UART1, USART_FLAG_PE | USART_FLAG_FE))
{
USART_ClearFlag(CW_UART1, USART_FLAG_PE | USART_FLAG_FE);
rt_thread_mdelay(10);
}
else
{
ch= USART_ReceiveData_8bit(CW_UART1);

}
return ch;

}

2--OLED displays
use hardware SPI and also port U8G2. For OLED porting, please refer to the LCSC porting manual.
uint8_t u8x8_byte_4wire_hw_spi(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int,
void *arg_ptr)
{
uint8_t *data = (uint8_t *)arg_ptr;
switch (msg)
{
case U8X8_MSG_BYTE_SEND:
{
for(int i = 0; i < arg_int; i++)
spi_read_write_byte((u8)*(data + i));

break;
}

case U8X8_MSG_BYTE_INIT:
break;
case U8X8_MSG_BYTE_SET_DC:

if ( arg_int ) GPIO_WritePin(OLED_GPIO_PORT,OLED_DC_PIN, GPIO_Pin_SET);
else GPIO_WritePin(OLED_GPIO_PORT,OLED_DC_PIN, GPIO_Pin_RESET);

break;
case U8X8_MSG_BYTE_START_TRANSFER:

GPIO_WritePin(OLED_GPIO_PORT,OLED_CS_PIN, GPIO_Pin_RESET);
break;
case U8X8_MSG_BYTE_END_TRANSFER:

GPIO_WritePin(OLED_GPIO_PORT,OLED_CS_PIN, GPIO_Pin_SET);
break;
default:
return 0;
}
return 1;
}
3--ADC Acquisition
After ADC acquisition, the output is filtered.
void ADC_init(void)
{
ADC_InitTypeDef ADC_InitStructure; // ADC configuration structure
ADC_SerialChTypeDef ADC_SerialChStructure; // ADC serial channel structure
GPIO_InitTypeDef GPIO_Init_Struct;

__RCC_GPIOB_CLK_ENABLE(); // Enable ADC clock for corresponding pin
__RCC_ADC_CLK_ENABLE(); // Enable ADC clock



PB00_ANALOG_ENABLE(); // Enable analog pin
PB01_ANALOG_ENABLE(); // Enable analog pin
PB10_ANALOG_ENABLE();
// Enable analog pin PB11_ANALOG_ENABLE(); // Enable analog pin
ADC_StructInit(&ADC_InitStructure); // Initialize ADC default values
​​ADC_InitStructure.ADC_ClkDiv = ADC_Clk_Div128; // Configure ADC operating clock PCLK/4 = 6/4 = 1.5MHz
// ADC_SerialChStructure.ADC_InitStruct.ADC_AccEn = ADC_AccDisable; // Disable accumulation of conversion results
// ADC_SerialChStructure.ADC_InitStruct.ADC_Align = ADC_AlignLeft; // Right-align ADC conversion results
// ADC_SerialChStructure.ADC_InitStruct.ADC_DMAEn = ADC_DmaDisable; // Disable DMA transfer
// ADC_SerialChStructure.ADC_InitStruct.ADC_SampleTime = ADC_SampTime5Clk; // 5 ADC clock cycles
// ADC_SerialChStructure.ADC_InitStruct.ADC_InBufEn = ADC_BufEnable; // Enable follower
// ADC_SerialChStructure.ADC_InitStruct.ADC_TsEn = ADC_TsEnable; // Disable built-in temperature sensor
// ADC_SerialChStructure.ADC_InitStruct.ADC_OpMode = ADC_SerialChScanMode; // Sequence scan mode: all 4 channels are converted simultaneously.
/* When the signal voltage is low, the reference voltage can be reduced to improve resolution. After changing the reference voltage, the same binary representation of the voltage value will be different.
The largest binary value (all 1s) represents your reference voltage, which needs to be taken into account when calculating the actual voltage. */ /*
ADC_InitStructure.ADC_VrefSel = ADC_Vref_BGR1p5; // Reference voltage set to 1.5V
ADC_InitStructure.ADC_SampleTime = ADC_SampTime10Clk; // Since the voltage signal is a slow signal, the ADC sampling time is ten ADC sampling cycles to ensure accuracy

ADC_SerialChStructure.ADC_Sqr0Chmux = ADC_SqrCh8; // Channel 4 input PB00
ADC_SerialChStructure.ADC_Sqr1Chmux = ADC_SqrCh9; // Channel 13 input
ADC_SerialChStructure.ADC_Sqr2Chmux = ADC_SqrCh11; // Channel 11 input
ADC_SerialChStructure.ADC_Sqr3Chmux = ADC_SqrCh12; // Channel 12 input
ADC_SerialChStructure.ADC_SqrEns = ADC_SqrEns03; //Sqr is the sequence configuration register. Since only the channel for sequence 0 is used here, configuring it to 0 indicates that only the Sqr0 sequence is being converted.
ADC_SerialChStructure.ADC_InitStruct = ADC_InitStructure; //ADC initialization
ADC_SerialChContinuousModeCfg(&ADC_SerialChStructure); //ADC sequence continuous conversion mode configuration


ADC_ClrAccResult();
ADC_ClearITPendingAll(); // Clear all ADC interrupt states
ADC_Enable(); // Enable ADC
ADC_SoftwareStartConvCmd(ENABLE); // Start ADC conversion software command
}

uint32_t Mean_Value_Filter(uint16_t *value, uint32_t size) // Mean filter
{
uint32_t sum = 0;
uint16_t max = 0;
uint16_t min = 0xffff;
int i;

for(i = 0; i < size; i++) // Iterate through the array to find the maximum and minimum values
​​{
sum += value[i];
if(value[i] > max)
{
max = value[i];
}
if(value[i] < min)
{
min = value[i];
}
}
sum -= max + min; // Subtract the maximum and minimum values ​​and then calculate the average
sum = sum / (size - 2);
return sum;
}
4--Saving the calibration
After calibration, the corresponding values ​​are latched in flash to prevent the values ​​from changing after power-on. Here, the K values ​​of voltage and current are calculated using a function. When writing, be sure to erase first and then write, otherwise a write error will occur.
`void flash_erase(void)
{
uint8_t Flag;
// erase
FLASH_UnlockPages(START_ADDR, END_ADDR);
// Unlock the last page Flag = FLASH_ErasePages(START_ADDR, END_ADDR); // Erase the last page
FLASH_LockAllPages();

}

void flash_write(uint16_t offset,uint16_t *data,uint16_t lenght)
{
uint8_t Flag;
// write
FLASH_UnlockPages(START_ADDR, END_ADDR); // Unlock the last page
Flag = FLASH_WirteHalfWords(START_ADDR+offset*2, data, lenght);
FLASH_LockAllPages();

}
void ComputeKV()
{
flash_read(0,k_data,4);
flash_erase();`
k_data[0]=cal_adc.span_v[1]-cal_adc.span_v[0];
k_data[0]= (k_data[0]/(V_15-V_05));//Voltage
k_data[2] = 8;
flash_write(0,k_data,4);
}
void ComputeKI()
{
flash_read(0,k_data,4);
flash_erase();
k_data[1]=cal_adc.span_m[1]-cal_adc.span_m[0];
k_data[1]= (k_data[1]/(M_15-M_05));//Current

k_data[3]=8;
flash_write(0,k_data,4);
}
Function Description
1. The current measurement range displayed on the main interface is 0~3A, the voltage range is 0~3V, and the VMAX range is 0~30V, which is one-to-one with the measurement range of the hardware circuit;
2. Button instructions:
(1) K1 Main interface switch;
(2) K2 Click the interface to display calibration mode and enter calibration;
(3) K3 Current/voltage calibration, click to switch;
(4) K4 Click for the first time to enter the first calibration point, click again to record the calibration value and end;
(5) K4 Click for the first time to enter the second calibration point, click again to record the calibration value and end;
(6) After calibrating two points, click K6 to calculate the K value and end the calibration;
(7) Each button corresponds to an indicator light.
Physical demonstration
: 5V voltage is measured, 3V circuit displays 3V, full scale, 30V range displays an error of 5.1V.
Subsequent optimization

: OLED design is designed as a multi-level interface;
use buttons to switch (6 buttons are reserved, no hardware changes are required);

Attachment list:
1. CWF030 is the source code;
2. C5138758 is the OED screen specification sheet, which contains the driver process;
3. PCtoLCD2002 is a commonly used mold extraction software.
CW32F030.zip
C5139758_OLED Display_HS96L01W4S03_Datasheet_WJ635575.PDF
PCtoLCD2002.zip
PDF_Ammeter and Voltmeter.zip
Altium_current_voltmeter.zip
PADS_Ammeter and Voltage Meter.zip
BOM_CurrentVoltage Meter.xlsx
92008
electronic camera
A project about electronic cameras
PCB composition of

main control board,
camera, and
display
PDF_electronic camera.zip
Altium_electronic camera.zip
PADS_electronic camera.zip
BOM_Electronic Camera.xlsx
92009
ESP Auto Downloader/Burner V1.0
A small board that automatically downloads firmware for ESP series chips, saving development board size and components.
I. Project Introduction
        While an automatic download circuit can be integrated into the design for ESP programming, an automatic download board is necessary to reduce size, save layout space, or minimize components. Typically, ESP32/ESP8266 uses UART to download firmware. Note that the BOOT pins differ between ESP modules or chips, but the automatic download circuit is the same; simply select the correct BOOT pin and connect it to the automatic download board.
 
 
II. Hardware Description
         
        The circuit is relatively simple. Key points to note:
        1. The dual transistors in the automatic download section have been replaced with UMH3N transistors. These components are smaller, so careful soldering is required.
        2. EN and BOOT buttons are provided. If the UMH3N fails to switch RTS/DTR, manual switching is possible.
        3. RX/TX LEDs have been added, allowing you to see status changes during input and output.
 
III. Programming Instructions
 
        You can use the official flash tool, or the Platform.io plugin in VS Code, or the espidf plugin in VS Code. Self-testing shows successful downloads, so you can use them with confidence.
PDF_ESP Auto Download Burner V2.0.zip
Altium_ESP Auto Download Burner V2.0.zip
PADS_ESP Auto Downloader V2.0.zip
BOM_ESP Auto Download Burner V2.0.xlsx
92010
STM32F407IGT6 Minimum System Development Board
The STM32IGT6 development board, designed based on the Zhengdian Atomic development board, has been functionally verified and works without issues. It includes an onboard serial port module.
This development board is designed based on the schematic of the STM32F407IGT6 from Zhengdian Atom.
It features an onboard CH340X microcontroller for direct Type-C serial communication with a computer.
The board also includes a large ST-Link V2.1 interface and a 4-pin download port.
Four user buttons and
three user LEDs are also provided. (See attached
 
 
physical demonstration image.)
 
 
 
 
 
PDF_STM32F407IGT6 Minimum System Development Board.zip
Altium_STM32F407IGT6 Minimum System Development Board.zip
PADS_STM32F407IGT6 Minimum System Development Board.zip
BOM_STM32F407IGT6 Minimum System Development Board.xlsx
92011
electronic
参考设计图片
×
 
 
Search Datasheet?

Supported by EEWorld Datasheet

Forum More
Update:2026-03-22 08:38:52
  • LPCXpresso debugging failed
  • How does this circuit oscillate?
  • Creating a Thread
  • 【LPC54100】Power on after delivery
  • Why are hybrid cars neglected in China?
  • About the ADC14 temperature calibration parameters of MSP432

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号