
基于 ESP32 UI超炫酷的盖革计数器
简介
使用ESP32-C6的盖革计数器, 里面全是游戏! 还有动画! 还附赠有盖革计数器!
简介:使用ESP32-C6的盖革计数器, 里面全是游戏! 还有动画! 还附赠有盖革计数器!开源协议
:GPL 3.0
描述

N1, 启动了计数器APP
B站介绍视频: https://www.bilibili.com/video/BV1Tc4tz6Ecn
前言
N1最早是为了改进PixelUI库而开发的。整体的UI设计其实是为了测试自己与UI库的能力.
从2025 年 8 月中旬开始,我开始写 PixelUI 这个项目。
这是一个以U8g2库为基础,为MCU量身打造的应用模板库。说白了,就是想在 128x64 小屏上玩花一点。 渐渐的,我给他添加了更多工具,希望它成为大家日后DIY可以利用的一套模板。文档部分我暂时还未完工, 但是之后一定一定会慢慢补的!
PixelUI 的核心整合了一套工具,包括:
- (
我认为)很方便的 App 系统 - 非浮点的 UI 动画绘制
- 输入事件响应路由
- 辅助动画加载顺序的协程系统
- 辅助 UI 的状态机
利用他们我实现了图标/List的多级列表、控件的聚焦系统、以及气泡提示等高级功能, 这些功能都完全可以复用在其它项目中。
我也利用这些工具,为这个盖革计数器定制了许多 UI 控件。
选择开发这个盖革计数器,是为了对Pixel UI框架进行更深入地优化。这个过程有效地暴露了此前设计中存在的不足,促使项目朝着更完善的方向发展。
PixelUI 最重要的灵魂,就是这些控件的动画交互。我希望最终的成品不应只是枯燥的黑白点阵(
虽然还是点阵),而是让这些点阵组合出一套直观、有灵魂而不失乐趣的交互逻辑。
项目简介
这是一款基于ESP32-C6主控的便携式DIY盖革计数器,用于检测环境中的β、γ和X射线一类的电离辐射并粗略计量。它能够实时显示当前的辐射剂量率(µSv/h)、每分钟计数(CPM),并可以通过声光提示超阈值警告。项目采用模块化设计,开源软硬件,开发使用了基于U8G2的PixelUI库。
项目功能
-
基于可变滑动窗口的CPM检测:能够比较及时地估计当前的脉冲密度。脉冲较稀疏的时候窗口较大保证长周期下的测量精度,脉冲较密集的时候窗口较小以尽可能防止缓冲区溢出。窗口大小的切换采用最近15次测周法平均得来的CPM估计值作为依据,可以比较及时反映出剂量的变化
-
软件进行BOOST闭环升压:灵活度相对较高,可以软件调整盖革管的工作电压。BOOST工作在DCM PCM模式下. 原本打算利用Energy per shot方法驱动, 后来发现PID就足以调节的非常好.

- 数据可视化显示:计数器的界面清晰直观,可显示实时剂量、平均值、峰值、CPM以及剂量率动态曲线(Histogram直方图)。

- 超多的配置项:用户可以自定义设置报警阈值 / 各种提示音, 管子工作电压等

-
内置电源管理:内置可充电锂电池,通过Type-C接口充电 / 固件更新 / 连接上位机记录,方便随身携带到不同环境中进行测量。使用CW2015CHBD自带算法拟合电池剩余电量。(试试充电的小动画哦)
-
网络功能扩展(在做):基于ESP32-C6主控,可以利用WiFi / Thread系功能进行物联网,可以将数据传输上云, 而不用近距离接触放射源进行探测, 保证人身安全。

- 除此之外还有一个BME280传感器,只为一玩()


- 除此之外还有 和大运躲猫猫的游戏以及乒乓游戏, 之后如果有时间会再加的
项目参数
- 主控芯片:ESP32-C6-MINI-1-N4
- 盖革管型号:M4011 (兼容J305, SBM-20等常见型号, 可以在软件中调节工作电压)
- 盖革管工作电压:默认380V (板载DCM升压)
- 显示屏:1.3寸 SH1106 OLED, 分辨率128x64 (如果使用SSD1306或者其他屏自己修改就好)
测量范围:
剂量率:1CPM ~ 30000CPM
供电方式:3.7V 锂聚合物电池 Type-C 5V充电
报警方式:有源蜂鸣器 + 高亮LED指示灯
接口:Type-C (充电和程序调试)
硬件说明
本项目硬件主要由四大模块组成:高压升压模块、脉冲检测模块、主控与显示模块 和 电源管理模块。

图1:计数器系统框图

图2:逆变升压部分
M4011盖革管需要在约380V的高压下才能在坪区Plateau Region稳定工作。在这处设计中, 我使用了一个低成本的灵活的脉冲升压式BOOST转换器, 其工作于DCM模式,将锂电池的3.7V电压单级升至380V左右. 虽然效率低, 为盖革管提供稳定的阳极高压它仍然是绰绰有余。 高压输出通过阻尼电阻(4.7MΩ)连接到盖革管的阳极, 这样380V能确保M4011盖革管在其 坪区(Plateau Region) 稳定工作: 在这个电压下,计数率对电压的变化不敏感,提供了最稳定的辐射计数测量。380V 对很多常见型号(如 M4011)来说就是一个常见的推荐值。
个人测试,BOOST电感回路阻抗最好为7.5ohm - 15ohm,可以在脉冲密度较大的情况下保持升压性能。回路中的电位器选型价格较为昂贵,只是作为我个人调试时防止损坏器件的手段,可以选择直接短接。
脉冲检测电路:
当电离辐射粒子穿过盖革管并使其内部气体电离时,会在阴极和阳极之间产生一个微弱的电流脉冲。这个脉冲信号被从阴极提取出来,经过一个BJT进行整形,转换成ESP32-C6能够识别的清晰的方波信号。该信号最终送入C6的外部中断进行基于滑动窗的计数。
ESP32-C6以中断方式捕捉计算来自检测电路的每一个脉冲。内部任务以滑动窗口计算出CPM值,根据盖革管的转换因子(M4011管约为 0.0057 µSv/h/CPM)换算成当前的辐射剂量率µSv/h。
电源管理:
“早知道还得是TP4056”
这部分使用TP4056进行充电管理,引出了充电状态指示灯。后面使用BUCK稳压器将电池电压转换为3.3V为全局供电, 使用CW2015CHBD进行电池余量估计。相信很多爱好者作项目最痛苦的地方莫过于电池管理。CW2015不是库仑计,它使用ADC进行电量余量估算,在有工厂校准数据的情况下精度会高很多。自己DIY的情况下仅作为参考。
应用场景
老生常谈的问题:因为没有能力进行标定 这个工具只适合大家自己DIY玩。其中最准确的要数估计的CPM数值。
- 教育科普:作为教具,帮助学生直观地享辐(bushi)。
- 个人监测:周边环境辐射进行定性监测。

程序烧录详解:
下载ESPtool: https://github.com/espressif/esptool/releases/tag/v5.1.0
进行下列步骤进行JTAG引脚禁用以解放对应的GPIO:
- 连接计数器的USB并启动 (请连接电池)。
- 在命令行里切换到ESPTool目录,调用espefuse.exe, 根据指示输入BURN 以永久禁用JTAG PAD。
./espefuse.exe --port [你的COM口] --chip esp32c6 burn_efuse DIS_PAD_JTAG 1
- 可以按照0x0 bootloader.bin, 0x8000 partition_table.bin, 0x10000 GeigerCounter.bin的配置利用ESP Flash Tool烧录, 或者直接使用第二步里下载的工具包里的esptool.exe,这样写入
esptool.exe -p /dev/ttyACM0 -b 460800 --before default_reset --after hard_reset --chip esp32c6 write_flash \
--flash_mode dio --flash_freq 80m --flash_size 4MB \
0x0 bootloader/bootloader.bin \
0x8000 partition_table/partition-table.bin \
0x10000 GeigerCounter.bin
更多固件细节请查看 Github README
欢迎进行项目复刻以及更多功能的开发!
固件在 https://github.com/Lawrence-Link/Geiger-Counter-V3/
Stay up to date! 之后会继续加功能的~
开源平台的GeigerCounter.bin是我发布文章前的最后一个版本,建议克隆Github工程自己编译,Github的README.md有更详细的编译解释。
谢谢星火计划 ♥
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。











