Skip to the content
2 layers85 × 100 mmPcad ASCII, the printed circuit board in 3D

迷你低功耗温湿度计,可定时自动唤醒记录数据保存并串口导出文本表格

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

9

README

README.md

SAU-G0

某存在感很弱的屑温湿度计(),美其名曰 Sensor Acquisition Unit(传感器采集单元)

0.SAU-G0_PA12

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)存储)

续航计算1(只要运行OLED一直点亮)

3. PCB

PCB采用叠板设计,分为主控板与拓展板,具体应用取决于拓展板上的传感器和存储芯片,你可以绘制自己的拓展板写驱动程序

SAU-G0(主控板)

  • 硬件:STM32G031G8U6 + CH343P + LIS3DH + TPS63000 / TPS63001 + TP4054 / MCP73831-2ATI/OT
SAU-G0_3Dview_topSAU-G0_3Dview_bottom
  • 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-GL_3Dview_2SAU-G0-EX_AHT-GL_3Dview_1SAU-G0-EX_AHT-GL_2Dview_1

SAU-G0-EX_AHT-PL(拓展板-AHT温湿度计-精准级)

  • 硬件:AHT20 + 24Cxx + PCF2129 + WS2812
SAU-G0-EX_AHT-PL_3Dview_2SAU-G0-EX_AHT-PL_3Dview_1SAU-G0-EX_AHT-PL_2Dview_1

SAU-G0-EX_microSD(拓展板-microSD)

  • 硬件:microSD卡或NOR Flash + 12mm蜂鸣片
  • 备注:无传感器和RTC芯片,整活儿专用,目前暂未写固件
SAU-G0-EX_microSD_3Dview_2SAU-G0-EX_microSD_3Dview_1SAU-G0-EX_microSD_2Dview_1

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打印的外壳组装后效果:

Case_JLC_3D_PA12(1)Case_JLC_3D_PA12(2)
Case_JLC_3D_PA12(3)Case_JLC_3D_PA12(4)

裸板

SAU-G0-EX_AHT-GL 初号机,AHT20 周边忘记开槽了:

SAU-G0_2号机1IMG_2503

后续制作的 SAU-G0-EX_AHT-GL 和 SAU-G0-EX_AHT-PL:

SAU-G0-EX_AHT-GL_PCB成品SAU-G0-EX_AHT-PL_PCB成品

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的电压
IMG_7241IMG_7245

后续有空就改一下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 文件后,对列进行少许的格式化,得到折线图

20240930_SAU-G0-PL_csv文本表格5次采集(纯Google_Sheet)

采集数据的示例Excel文件位于Data文件夹

谷歌表格绘制折线图技巧

测试1:24小时1200+次采集

屏幕亮度90%,开启自动休眠,设置任务后,由RTC闹钟唤醒亮屏4秒,采集一次温湿度,数据保存在EEPROM,然后熄屏进入低功耗模式

在24小时如此反复约1200次,锂电池电压从4.2V降到4.0V,耗电约15%

20240405_SAU-G0-PL_24小时1200+次采集

左侧为温度标尺,右侧为湿度标尺,横轴为时间点(横轴无法显示完全1200个时间标签)

测试2:38天1800+次采集

屏幕亮度50%,开启自动休眠,设置任务后,由RTC闹钟唤醒亮屏5秒,采集一次温湿度,数据保存在EEPROM,然后熄屏进入低功耗模式

在38天如此反复约1800次(每天48次),锂电池电压从4.25V降到4.00V,耗电约20%

20240409-20240517_SAU-G0-PL_38天1800+次采集

11.待开发

  1. 加入默认任务模板:年采集,月采集,周采集
  2. 这货要是flash再大点,可以整个串口命令进行报表查询

12. Acknowledgments

  • 感谢豆老板谈下1.6元电子烟主板车车
  • 感谢 JLC 制造的高品质 PCB
  • 感谢稚晖 Planck-Pi 的 Type-C 正反插两用的灵感

Parts

275
QtyValueFootprintReferences
26100nFC0603_1C10, C11, C12, C14, C15, C16, C17, C18, C21, C23, C27, C28, C32, C35, C36, C38 +10
13CONN_X1_DOT2.54mm_Male_x1_1P1, P2, P5, P6, P8, P9, P12, P13, P14, P15, P16, P17, P19
1010KR0603_1R10, R11, R15, R16, R22, R32, R38, R39, R48, R49
10CONN_X2_DOT2.54mm_Male_x2_3JP18, JP20, JP52, JP55, JP62, JP63, JP66, JP71, JP76, JP77
10CONN_X3_DOT2.54mm_Male_x3_4JP26, JP34, JP35, JP36, JP37, JP38, JP39, JP40, JP44, JP59
9CONN_X2_DOT2.54mm_Male_x2_1JP9, JP12, JP51, JP57, JP60, JP65, JP68, JP73, JP74
9CONN_X2_DOT2.54mm_Male_x2_5JP1, JP46, JP56, JP58, JP61, JP70, JP80, JP81, JP84
9CONN_X3_DOT2.54mm_Male_x3_7JP31, JP33, JP41, JP42, JP43, JP45, JP47, JP48, JP50
9CONN_X3_DOT2.54mm_Male_x3_2JP3, JP27, JP28, JP29, JP30, JP32, JP49, JP69, JP75
81KR0603_1R5, R21, R25, R26, R27, R33, R34, R35
8CONN_X2_DOT2.54mm_Male_x2_4JP2, JP19, JP54, JP72, JP78, JP83, JP85, JP86
61uFC0603_1C5, C9, C13, C24, C26, C45
65.1KR0603_1R23, R24, R30, R31, R40, R41
6Button-4PSWITCH_3X4X2.5_4PIN_SMD_1SW1, SW2, SW3, SW4, SW5, SW6
5100KR0603_1R2, R6, R9, R13, R47
510uFC0603_1C1, C2, C4, C8, C29
40RR0603_1R28, R29, R36, R37
410RR0603_1R14, R19, R53, R55
4CONN_X3_DOT2.54mm_Male_x3_6JP6, JP10, JP53, JP64
4SUN_HOLESUN_HOLE_M3_1SUN_HOLE1, SUN_HOLE2, SUN_HOLE3, SUN_HOLE4
31MR0603_1R3, R4, R12
33KR0603_1R42, R43, R51
34.7uFC0603_1C22, C25, C30
3BAT54CINFINEON_SOT-23-3_1VD2, VD3, VD4
3CONN_X1_DOT2.54mm_Male_x1_3P3, P4, P7
3CONN_X3_DOT2.54mm_Male_x3_3JP13, JP24, JP25
3CONN_X4_DOT2.54mm_Male_x4_1JP15, JP16, JP17
3WS2812WS2812_2020_2U17, U18, U19
222RRESNET_1206-8_CONCAVE_1RN1, RN2
222pFC0603_1C19, C20
22R 0.1%R0805_1R17, R54
2330RR0603_1R46, R56
2B5819WSSOD-323_1D1, D8
2CONN_X3_DOT2.54mm_Male_x3_8JP22, JP23
2INA180A3TI_SOT-23-5_DBV_1U3, U15
2ODG_LOGOODG_LOGO_soldermask_1ODG1, ODG2
2P-MOSINFINEON_SOT-23-3_1Q1, Q6
2PESD1LVDSDFN2510-10_SOT1165-1_1D2, D4
2SJ_2PSJ_2P_1SJ2, SJ3
2Type-CType-C-TOP_1USB1, USB2
10.1uFC0603_1C6
10.33RR0603_1R7
1100RRESNET_1206-8_CONCAVE_1RN3
110nFC0603_1C3
110uHFER0805_1L2
110uHFER0603_1L3
1178KR0603_1R8
11N4148WSSOD-323_4D3
12.2uFC0603_1C31
120KR0603_1R1
1220KR0603_1R50
124Cxx_8PANALOG_DEV_SOIC-8_R8_1U13
124Cxx_SOT23-5MICROCHIP_SOT-23-5_OT_1U7
1390KR0603_1R44
1430R 0.1%R0603_1R52
147KR0603_1R20
147uFC1206_1C7
16.8uFC0603_1C37
1620RR0603_1R45
16pFC0603_1C33
1AHT20AHT20_1U9
1B5819WSSOD-323_2D7
1B5819WSSOD-323_5D6
1BATMS621FE-FL11E_1BAT1
1BAV99INFINEON_SOT-23-3_1VD1
1CH340GTI_SOP-16_D_1U5
1CH343PAnalog_QFN-16_3x3MM_1U4
1CONN_X1_DOT2.54mm_Male_x1_2P10
1CONN_X2_DOT2.54mm_Male_x2_6JP79
1CONN_X2_DOT2.54mm_Male_x2_7JP21
1CONN_X2_DOT2.54mm_Male_x2_10JP11
1CONN_X2_DOT2.54mm_Male_x2_8JP5
1CONN_X2_DOT2.54mm_Male_x2_2JP14
1CONN_X2_DOT2.54mm_Male_x2_9JP7
1CONN_X3_DOT2.54mm_Male_x3_1JP8
1CONN_X3_DOT2.54mm_Male_x3_9JP4
1CONN_X3_DOT2.54mm_Male_x3_5JP67
1CONN_X42.54mm_Male_x4_3P18
1CONN_X42.54mm_Male_x4_4P11
1CONN_X4_DOT2.54mm_Male_x4_2JP82

The 253 most common of 275 parts.

More from oldgerman/SAU-G0

4
  • 4 layers18.7 × 19.5 mmSAU G0, the printed circuit board in 3D

    SAU G0

    oldgerman/SAU-G0

    迷你低功耗温湿度计,可定时自动唤醒记录数据保存并串口导出文本表格

    95 parts5
  • 2 layers18.7 × 19.5 mmSAU G0-EX AHT GL, the printed circuit board in 3D

    SAU G0-EX AHT GL

    oldgerman/SAU-G0

    迷你低功耗温湿度计,可定时自动唤醒记录数据保存并串口导出文本表格

    22 parts5
  • 2 layers18.7 × 19.5 mmSAU G0-EX AHT PL, the printed circuit board in 3D

    SAU G0-EX AHT PL

    oldgerman/SAU-G0

    迷你低功耗温湿度计,可定时自动唤醒记录数据保存并串口导出文本表格

    20 parts5
  • 2 layers18.7 × 19.5 mmSAU G0-EX microSD, the printed circuit board in 3D

    SAU G0-EX microSD

    oldgerman/SAU-G0

    迷你低功耗温湿度计,可定时自动唤醒记录数据保存并串口导出文本表格

    15 parts5

Similar boards

  • 4 layers65 × 30 mmElec gripette hub and dyn, the printed circuit board in 3D

    Elec gripette hub and dyn

    pollen-robotics/elec_grabette

    Set of electronic boards for Grabette/Gripette

    122 parts11Apache-2.0
  • 4 layers40 × 20 mmGrove - Vision AI Module V2, the printed circuit board in 3D

    Grove - Vision AI Module V2

    aram-ap/daredevil

    Computer Vision-Based Tactile Feedback for the Visually Impaired

    114 parts3MIT
  • 2 layers30 × 25 mmPblprog sifli board, the printed circuit board in 3D

    Pblprog sifli board

    coredevices/pblprog-sifli

    Pebble Programmer for SiFli boards

    28 parts2MIT
  • 2 layersUsbtoser hw, the printed circuit board in 3D

    Usbtoser hw

    WojtaCZ/usbtouart-hw

    Quick and easy USB to UART converter based on the CH340P

    28 parts
  • 2 layers290 × 100 mmESP32-Wall Clock, the printed circuit board in 3D

    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 mmEspBredBoard, the printed circuit board in 3D

    EspBredBoard

    mengxyz/esp32_S2_breadboard

    My first custom esp board

    32 parts
  • 4 layers110 × 57 mmInterface, the printed circuit board in 3D

    Interface

    Shisius/EyeMeterPCB

    Interface board for radxa cm5.

    211 partsCERN-OHL-P-2.0
  • 4 layers79.6 × 117.2 mmPanel, the printed circuit board in 3D

    Panel

    atx/mlsdr

    SDR for my TDOA radiolocator

    1,116 parts5MIT

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.