

Pcad ASCII
迷你低功耗温湿度计,可定时自动唤醒记录数据保存并串口导出文本表格
- Size
- 85 × 100 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 275
- Nets
- 203
- Pads
- 884
- Tracks, vias
- 1,561, 209
- Pours
- 10
- Routed
- Yes
- KiCad
- KiCad 5 (file 20171130)
- Created
- 25 May 2022
- Updated
- 30 Sep 2024
Overview
Pcad ASCII is an open-source printed circuit board by oldgerman, from the oldgerman/SAU-G0 repository on GitHub. It is a 2-layer board of 85 × 100 mm with 275 parts on 203 nets, routed with 1,561 tracks and 209 vias.
It is built around the AHT20, CH340G and CH343P, with the PESD1LVDS, WS2812 and BAT54C among its other parts. Its parts include 55 resistors, 48 capacitors, 19 connectors, 10 ICs and 7 diodes.
Main components
9AHT20
SMD-40℃~+120℃ 0%RH~100%RH 2.2V~5.5V 20bit 570uA I2C ±0.3℃ ±2%RH SMD Temperature and Humidity Sensor ROHSAosong ElecTemperature And Humidity SensorCH340G
SOP-16-40℃~+85℃ 2Mbps 3.3V、5V USB 2.0 USB to UART SOP-16 USB Converters ROHSWCH (Nanjing Qinheng Microelectronics)USB ConvertersCH343P
TQFN-16-EP(3x3)-40℃~+85℃ 3.3V、5V 3mA 6Mbps 90uA USB 2.0 USB to UART TQFN-16-EP(3x3) USB Converters ROHSWCH (Nanjing Qinheng Microelectronics)USB ConvertersPESD1LVDS
SOT1165-1ESD Protection for In-Vehicle Ultra High-Speed InterfaceNexperiaUncategorisedWS2812
SMD5050-4P1.57mm 1000mcd 110mcd 120us 2kHz 3.7V~5.3V 300ns 320mcd 451nm 523nm 5mm 5mm 623nm 800Kbit/s Built-in power-on reset circuit、Built-in power-on reset circuit Top-mount SMD5050-4P RGB LEDs(Built-in IC) ROHSWorldsemiRGB LEDs(Built-In IC)BAT54C
SOT-231 Pair Common Cathode 200mA 2uA@25V 30V 600mA 800mV@100mA SOT-23 Schottky Diodes ROHSNexperiaSchottky DiodesB5819WS
SOD-323-55℃~+125℃ 1A 1mA@40V 25A 40V 900mV@3A Independent SOD-323 Schottky Diodes ROHSMDDSchottky Diodes1N4148WS
SOD-3231.25V@150mA 100V 150mA 1uA@75V 200mW 2A 4ns Independent SOD-323 Switching Diodes ROHSJiangsu Changjing Electronics Technology (CJ)Switching DiodesBAV99
SOT-231 Pair Series Connection 1.25V@150mA 100V 215mA 250mW 4A 4ns 500nA@80V SOT-23 Switching Diodes ROHSNexperiaSwitching Diodes
README
README.mdSAU-G0
某存在感很弱的屑温湿度计(),美其名曰 Sensor Acquisition Unit(传感器采集单元)
1. 简介
SAU-G0(Sensor Acquisition Uinit(传感器采集单元),基于STM32G031G8U6,是本id学习低功耗的试水作品

2. 续航
最低电流
休眠:约8uA
亮屏运行:约4.0mA(1%屏幕亮度,WS2812不供电)
最高电流
最大电流30mA以上(OLED屏幕亮度100%,WS2812两通道LED亮度100%)
理论续航时间
使用CubeMX tools工具粗略计算(未引入唤醒瞬间的电流):1%的时间运行,99%的时间休眠,每天运行864秒(屏幕亮度为1%),其他时间休眠,那么100mA锂电池极限续航2个月7天
如果每10分钟采集温湿度数据一次,每天采集144次,每次5秒,每天耗时720秒,还剩余144秒可支持每天以1%的亮度亮屏2分钟
每组带两位小数的温湿度数据占用4byte(16bit + 16bit),每天储存576byte数据,2个月采集温湿度数据8640组,占用34560byte空间(需使用24C512 EEPROM(65536byte)存储)
.png)
3. PCB
PCB采用叠板设计,分为主控板与拓展板,具体应用取决于拓展板上的传感器和存储芯片,你可以绘制自己的拓展板写驱动程序
SAU-G0(主控板)
- 硬件:STM32G031G8U6 + CH343P + LIS3DH + TPS63000 / TPS63001 + TP4054 / MCP73831-2ATI/OT
![]() | ![]() | ![]() |
|---|
- USB:由于只有一个Type-C,且休眠时(STOP1模式)固件没有禁用SWD接口功能(为了防止变砖,虽然STOP1模式用不了SWD),实测如果SWD接口用排阻连CH343的D+和D-会消耗200uA以上的电流,所以Type-C采用正反插不同功能,正插G031的SWD接口用于调试,反插USB转TTL串口,这样既保留功能也避免了电流泄露
- 串口芯片:可选焊接板载的CH343P,若想外接串口芯片节约成本,可焊接上图CH343P右边的两个焊接跳线,那么G031的USART2就与Type-C直连了
- 有源晶振:默认不焊接,使用内部振荡器,预留给更高精度的时钟应用,例如不使用拓展板的外置RTC,而使用G031内部的RTC,时钟源使用外部32.768Khz有源晶振
SAU-G0-EX_AHT-GL(拓展板-AHT温湿度计-普通级)
- 硬件:AHT20 + 24Cxx + PCF8563 + WS2812
![]() | ![]() | ![]() |
|---|
SAU-G0-EX_AHT-PL(拓展板-AHT温湿度计-精准级)
- 硬件:AHT20 + 24Cxx + PCF2129 + WS2812
![]() | ![]() | ![]() |
|---|
SAU-G0-EX_microSD(拓展板-microSD)
- 硬件:microSD卡或NOR Flash + 12mm蜂鸣片
- 备注:无传感器和RTC芯片,整活儿专用,目前暂未写固件
![]() | ![]() | ![]() |
|---|
4. 焊接
SAU-G0主控单元有80多个元件,元件很密集(0402、扁平无引脚封装),十分建议开钢网
5. BOM
交互BOM,浏览器打开即可
路径:每一个AD工程目录下的 BOM/bom
电容耐压:OLED外围电路的几个电容标注了耐压要求,其他的电容默认10V耐压或以上
电池型号:601417 3.7V 100mAh
电池连接器:非必须,可以直接焊线
EEPROM:程序实现了容量 2Kbit-1024Kbit 自适应,推荐24C512
OLED屏幕和FPC按键需要从豆总1.6元电子烟主板车上拆(没有这个,但想DIY的朋友可以私信我给你寄)
6. 软件
搭建环境
打包的STM32CubeIDE1.7.0工程,需要先安装暗黑主题(教程),然后随便编译/折腾
功能进度
目前固件已完成对AHT-GL和AHT-PL拓展板适配
- 屏幕渐亮渐暗
- 串口修改时间
- 串口导出EEPROM储存的采集数据
- 多级菜单
- 自定义采集温湿度任务,自动计算任务数据存储空间
- 自动检测EEPROM容量:已测试24C02、24C64、24C128、24C512
- 休眠:支持RTC、加速度计、按键三种方式唤醒
- 串口命令解释器
- 硬件看门狗
- 熄屏采集逻辑
BUG fix progress
- 硬复位时,检测EEPROM概率出现检测容量为0
- 唤醒时概率死机
7. 烧录
编译好的固件:Hex
Type-C采用正反插不同功能,正插G031的SWD接口用于调试,反插USB转TTL串口
烧录时需要全程按住按钮中键不放以保持上电
ST-LINK
Type-C 正插连接即可烧录
ISP
板载一键下载电路,Type-C 反插连接
STM32G031G8U6出厂时option bytes默认BOOT0信号由option byte决定,ISP烧录前,必须先使用STLINK以SWD连G031修改option bytes的nBOOT_SEL位为取消勾选,否则后续CH343P的RTS和DTR无法将G031设置为IPS模式!!!
需要FlyMCU和开STM32CubeProgrammer 配合烧录
按住OK键保持不放,FlyMCU选择 RTS低电平DTR高电平进BooTloader,显示已连接后(FlyMCU无法对G0进行进一步操作),即可松开OK键,然后打开STM32CubeProgrammer(FlyMCU可不关闭,另外新版STM32CubeProgrammer ,会有RTS和DTR选项,都选择0)以 UART 波特率115200 连接,如果一切顺利,即可进入烧录状态
你可能会问为啥不直接用STM32CubeProgrammer操作DTR和RTS而要用FlyMCU操作,因为这个功能我测试对于一键下载电路不起作用,DTR和RTS信号的波形很奇怪,但是FlyMCU可以

8. 成品
外壳
不同的打印方式需要使用不同的打印模型:
- FDM打印:上盖和盒子得分两个件打印,模型文件使用 单个零件
- 树脂光固化、尼龙激光烧结打印:盖子和盒子可合并成一个模型打印,模型文件使用 连接零件
- STL文件名解释:GL是使用PCF8563扩展板的,PL是使用PCF2129扩展板的
PA12打印的外壳组装后效果:
裸板
SAU-G0-EX_AHT-GL 初号机,AHT20 周边忘记开槽了:
后续制作的 SAU-G0-EX_AHT-GL 和 SAU-G0-EX_AHT-PL:
![]() | ![]() |
|---|
9. BUG
死机
运行时,或唤醒时,都可能死机(概率极小),死机时,找一根USB线一端接5V,另一端 Type-C 反插连接温湿度计,然后拔出Type-C,即可复位STM32G031
串口导出的文本表格的格式不对
(待修复)串口导出的文本表格的格式不对,markdown表格记成csv格式,是说咋导入谷歌表格识别不了
扩展版
扩展板的纽扣电池保持开机亮屏才能从3V3充电,休眠或关机时无法充电,若太长时间不持续亮屏充电,由于RTC芯片持续消耗纽扣电池的能量,纽扣电池会过放电到0V
临时解决方案,例如 SAU-G0-EX_AHT-PL 扩展板,断开 SJ1跳线,将D1右端飞线到SJ2跳线的VbatWeek,这样后,即使关机了,锂电池还能经VbatWeek持续给纽扣电池充电

VbatWeek是从主板的锂电池经BAV99两个硅二极管降压取电的,压降1.1V左右。那么当主板的锂电池充满电时,即锂电池电压4.2V时,VbatWeek约3.1V,纽扣电池约3V,此时VbatWeek高于纽扣电池的电压时,RTC由VbatWeek供电(主板锂电池供电),而当锂电池低于4.1V时,纽扣电池的电压就会比VbatWeek高,RTC由纽扣电池供电,若熄屏时间太久没有唤醒,那么纽扣电池的电量会被RTC芯片持续消耗,可能出现纽扣电池的电压再次低于VbatWeek,那么纽扣电池又会充电
纽扣电池100%电量时电压约3V,0%电量时电压约2.0V,当纽扣电池低于2V时,主板锂电池也差不多低于3V触发锂电池保护板的过放电保护了,这个时候用户也会发现差不多没电了,需要充电
总之,纽扣电池和VbatWeek是通过二极管进行相互交替给RTC芯片供电的,在大多数情况下,当主板锂电池没电时,纽扣电池还能维持RTC芯片正常运转(MS621FE纽扣电池约5.5mAh,能维持RTC芯片(PCF2129:0.7uA)300天)
| 锂电池4.21V时,3.3V给纽扣电池充电,充满时纽扣电池的电压 | 锂电池4.20V时,VbatWeek的电压 |
|---|---|
![]() | ![]() |
后续有空就改一下PCB扩展版修这个电路BUG,如果我没有改,你也可以自己修改源文件
10. 数据采集测试
使用XCOM,连接串口黑屏就勾选RTS,再长按中键连接
菜单-->数据采集-->导出数据,文本表格格式为 csv 格式,数据以逗号分割,在XCOM里导出选中,复制,新建一个 .csv文件,粘贴进去,就可以用 Excel 或者 Google Sheets (谷歌表格) 处理
格式如下:
c Date & Time , T(C) , H(%) 2024/09/30 17:22:00, 31.90 ,51.00 2024/09/30 17:22:10, 31.90 ,49.00 2024/09/30 17:22:20, 31.80 ,40.00 2024/09/30 17:22:30, 31.70 ,44.00 2024/09/30 17:22:40, 31.70 ,44.00
例如,使用谷歌表格,上传 csv 文件后,对列进行少许的格式化,得到折线图

采集数据的示例Excel文件位于Data文件夹
测试1:24小时1200+次采集
屏幕亮度90%,开启自动休眠,设置任务后,由RTC闹钟唤醒亮屏4秒,采集一次温湿度,数据保存在EEPROM,然后熄屏进入低功耗模式
在24小时如此反复约1200次,锂电池电压从4.2V降到4.0V,耗电约15%

左侧为温度标尺,右侧为湿度标尺,横轴为时间点(横轴无法显示完全1200个时间标签)
测试2:38天1800+次采集
屏幕亮度50%,开启自动休眠,设置任务后,由RTC闹钟唤醒亮屏5秒,采集一次温湿度,数据保存在EEPROM,然后熄屏进入低功耗模式
在38天如此反复约1800次(每天48次),锂电池电压从4.25V降到4.00V,耗电约20%

11.待开发
- 加入默认任务模板:年采集,月采集,周采集
- 这货要是flash再大点,可以整个串口命令进行报表查询
12. Acknowledgments
Parts
275| Qty | Value | Footprint | References |
|---|---|---|---|
| 26 | 100nF | C0603_1 | C10, C11, C12, C14, C15, C16, C17, C18, C21, C23, C27, C28, C32, C35, C36, C38 +10 |
| 13 | CONN_X1_DOT | 2.54mm_Male_x1_1 | P1, P2, P5, P6, P8, P9, P12, P13, P14, P15, P16, P17, P19 |
| 10 | 10K | R0603_1 | R10, R11, R15, R16, R22, R32, R38, R39, R48, R49 |
| 10 | CONN_X2_DOT | 2.54mm_Male_x2_3 | JP18, JP20, JP52, JP55, JP62, JP63, JP66, JP71, JP76, JP77 |
| 10 | CONN_X3_DOT | 2.54mm_Male_x3_4 | JP26, JP34, JP35, JP36, JP37, JP38, JP39, JP40, JP44, JP59 |
| 9 | CONN_X2_DOT | 2.54mm_Male_x2_1 | JP9, JP12, JP51, JP57, JP60, JP65, JP68, JP73, JP74 |
| 9 | CONN_X2_DOT | 2.54mm_Male_x2_5 | JP1, JP46, JP56, JP58, JP61, JP70, JP80, JP81, JP84 |
| 9 | CONN_X3_DOT | 2.54mm_Male_x3_7 | JP31, JP33, JP41, JP42, JP43, JP45, JP47, JP48, JP50 |
| 9 | CONN_X3_DOT | 2.54mm_Male_x3_2 | JP3, JP27, JP28, JP29, JP30, JP32, JP49, JP69, JP75 |
| 8 | 1K | R0603_1 | R5, R21, R25, R26, R27, R33, R34, R35 |
| 8 | CONN_X2_DOT | 2.54mm_Male_x2_4 | JP2, JP19, JP54, JP72, JP78, JP83, JP85, JP86 |
| 6 | 1uF | C0603_1 | C5, C9, C13, C24, C26, C45 |
| 6 | 5.1K | R0603_1 | R23, R24, R30, R31, R40, R41 |
| 6 | Button-4P | SWITCH_3X4X2.5_4PIN_SMD_1 | SW1, SW2, SW3, SW4, SW5, SW6 |
| 5 | 100K | R0603_1 | R2, R6, R9, R13, R47 |
| 5 | 10uF | C0603_1 | C1, C2, C4, C8, C29 |
| 4 | 0R | R0603_1 | R28, R29, R36, R37 |
| 4 | 10R | R0603_1 | R14, R19, R53, R55 |
| 4 | CONN_X3_DOT | 2.54mm_Male_x3_6 | JP6, JP10, JP53, JP64 |
| 4 | SUN_HOLE | SUN_HOLE_M3_1 | SUN_HOLE1, SUN_HOLE2, SUN_HOLE3, SUN_HOLE4 |
| 3 | 1M | R0603_1 | R3, R4, R12 |
| 3 | 3K | R0603_1 | R42, R43, R51 |
| 3 | 4.7uF | C0603_1 | C22, C25, C30 |
| 3 | BAT54C | INFINEON_SOT-23-3_1 | VD2, VD3, VD4 |
| 3 | CONN_X1_DOT | 2.54mm_Male_x1_3 | P3, P4, P7 |
| 3 | CONN_X3_DOT | 2.54mm_Male_x3_3 | JP13, JP24, JP25 |
| 3 | CONN_X4_DOT | 2.54mm_Male_x4_1 | JP15, JP16, JP17 |
| 3 | WS2812 | WS2812_2020_2 | U17, U18, U19 |
| 2 | 22R | RESNET_1206-8_CONCAVE_1 | RN1, RN2 |
| 2 | 22pF | C0603_1 | C19, C20 |
| 2 | 2R 0.1% | R0805_1 | R17, R54 |
| 2 | 330R | R0603_1 | R46, R56 |
| 2 | B5819WS | SOD-323_1 | D1, D8 |
| 2 | CONN_X3_DOT | 2.54mm_Male_x3_8 | JP22, JP23 |
| 2 | INA180A3 | TI_SOT-23-5_DBV_1 | U3, U15 |
| 2 | ODG_LOGO | ODG_LOGO_soldermask_1 | ODG1, ODG2 |
| 2 | P-MOS | INFINEON_SOT-23-3_1 | Q1, Q6 |
| 2 | PESD1LVDS | DFN2510-10_SOT1165-1_1 | D2, D4 |
| 2 | SJ_2P | SJ_2P_1 | SJ2, SJ3 |
| 2 | Type-C | Type-C-TOP_1 | USB1, USB2 |
| 1 | 0.1uF | C0603_1 | C6 |
| 1 | 0.33R | R0603_1 | R7 |
| 1 | 100R | RESNET_1206-8_CONCAVE_1 | RN3 |
| 1 | 10nF | C0603_1 | C3 |
| 1 | 10uH | FER0805_1 | L2 |
| 1 | 10uH | FER0603_1 | L3 |
| 1 | 178K | R0603_1 | R8 |
| 1 | 1N4148WS | SOD-323_4 | D3 |
| 1 | 2.2uF | C0603_1 | C31 |
| 1 | 20K | R0603_1 | R1 |
| 1 | 220K | R0603_1 | R50 |
| 1 | 24Cxx_8P | ANALOG_DEV_SOIC-8_R8_1 | U13 |
| 1 | 24Cxx_SOT23-5 | MICROCHIP_SOT-23-5_OT_1 | U7 |
| 1 | 390K | R0603_1 | R44 |
| 1 | 430R 0.1% | R0603_1 | R52 |
| 1 | 47K | R0603_1 | R20 |
| 1 | 47uF | C1206_1 | C7 |
| 1 | 6.8uF | C0603_1 | C37 |
| 1 | 620R | R0603_1 | R45 |
| 1 | 6pF | C0603_1 | C33 |
| 1 | AHT20 | AHT20_1 | U9 |
| 1 | B5819WS | SOD-323_2 | D7 |
| 1 | B5819WS | SOD-323_5 | D6 |
| 1 | BAT | MS621FE-FL11E_1 | BAT1 |
| 1 | BAV99 | INFINEON_SOT-23-3_1 | VD1 |
| 1 | CH340G | TI_SOP-16_D_1 | U5 |
| 1 | CH343P | Analog_QFN-16_3x3MM_1 | U4 |
| 1 | CONN_X1_DOT | 2.54mm_Male_x1_2 | P10 |
| 1 | CONN_X2_DOT | 2.54mm_Male_x2_6 | JP79 |
| 1 | CONN_X2_DOT | 2.54mm_Male_x2_7 | JP21 |
| 1 | CONN_X2_DOT | 2.54mm_Male_x2_10 | JP11 |
| 1 | CONN_X2_DOT | 2.54mm_Male_x2_8 | JP5 |
| 1 | CONN_X2_DOT | 2.54mm_Male_x2_2 | JP14 |
| 1 | CONN_X2_DOT | 2.54mm_Male_x2_9 | JP7 |
| 1 | CONN_X3_DOT | 2.54mm_Male_x3_1 | JP8 |
| 1 | CONN_X3_DOT | 2.54mm_Male_x3_9 | JP4 |
| 1 | CONN_X3_DOT | 2.54mm_Male_x3_5 | JP67 |
| 1 | CONN_X4 | 2.54mm_Male_x4_3 | P18 |
| 1 | CONN_X4 | 2.54mm_Male_x4_4 | P11 |
| 1 | CONN_X4_DOT | 2.54mm_Male_x4_2 | JP82 |
The 253 most common of 275 parts.
More from oldgerman/SAU-G0
4- 4 layers18.7 × 19.5 mm

- 2 layers18.7 × 19.5 mm

- 2 layers18.7 × 19.5 mm

- 2 layers18.7 × 19.5 mm

Similar boards
- 4 layers65 × 30 mm

Elec gripette hub and dyn
pollen-robotics/elec_grabette
Set of electronic boards for Grabette/Gripette
122 parts11Apache-2.0 - 4 layers40 × 20 mm

Grove - Vision AI Module V2
aram-ap/daredevil
Computer Vision-Based Tactile Feedback for the Visually Impaired
114 parts3MIT - 2 layers30 × 25 mm

- 2 layers

- 2 layers290 × 100 mm

ESP32-Wall Clock
SkullKill/ESP32-Wall-Clock-PCB
ESP32 based 30cm Wall Mounted Clock. WiFi, NTP, SNMP, web interface, MicroUsb, Type-C, HG3613 Retrofit
207 parts3GPL-3.0 - 2 layers31.6 × 46 mm

- 4 layers110 × 57 mm

- 4 layers79.6 × 117.2 mm

Questions
How big is the Pcad ASCII PCB?
It measures 85 × 100 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Pcad ASCII use?
275 parts, built around the AHT20, CH340G, CH343P and PESD1LVDS. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the Pcad ASCII KiCad files?
From the oldgerman/SAU-G0 repository on GitHub, at the commit this page was made from: the board is Hardware/AD_Project/SAU-G0-EVM/BOM/Pcad-ASCII.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Can I use the Pcad ASCII design in my own project?
Its repository states no licence, so its author keeps all rights: ask oldgerman before reusing the design.















