站内搜索
更多
随身带土壤温湿度监测笔
专业版

随身带土壤温湿度监测笔

工程标签

星火计划2025

2.4k
0
0
26

简介

不要再用水戳土了。 跟我做,一种TDR电容式高精度的便携式随身带土壤温湿度监测笔, 用这个戳就好了 不会弄脏手 又快又准又可靠

简介:不要再用水戳土了。 跟我做,一种TDR电容式高精度的便携式随身带土壤温湿度监测笔, 用这个戳就好了 不会弄脏手 又快又准又可靠
星火计划2025
复刻成本:12

开源协议

GPL 3.0

创建时间:2025-04-01 15:51:23更新时间:2026-07-28 14:06:32

描述

视频链接:

https://www.bilibili.com/video/BV1uZXBYAEQu/?buvid=XU462C54FA83A9F8A6E3A0ABCD42BC31A25C0&is_story_h5=false&mid=RAvn2PXLq6l4ua5axKNnOA%3D%3D&plat_id=240&share_from=ugc&share_medium=android&share_plat=android&share_source=WEIXIN&share_tag=s_i&spmid=dt.space-dt.0.0×tamp=1744854029&unique_k=OGWeRKy&up_id=133365024

另一个链接
【土壤含水率监测笔-哔哩哔哩】 https://b23.tv/nkFx80o

项目简介

该方案是采用时域反射法对电容值进行测量,经过多次调试后,可对土壤的湿度进行精准测量。

无操作后,设备会自动关机,以保持低功耗,100mah电池可连续使用上百次,充电时间小于5分钟。

整个方案成本约在12元左右,采用集成式TDR电容测量MCU加精调LC频选电路,对土壤的湿度进行测量,也可以更改参数测量其余,例如水培植物液位值。

该方案为非接触式土壤,可避免土壤对关键测量器件进行腐蚀等,实际使用时可在针头加一圈热缩管,不影响测量值,但需注意需要紧贴测量针。

项目功能

本设计采用敏源传感集成MCU,该芯片成本约4元。
实现了传感器
插入土壤中,达到设置土壤湿度时,灯会熄灭,led屏幕显示土壤湿度值和温度值
拿出土壤后,空气中的值会远远大于土壤湿度,LED灯会亮起,LED屏显示当前值
按键开机,插入土壤测量,测量完毕后,无需手动关机,以避免长时不用遗忘关机而没有电的情况。

项目参数

此处可填写项目的相关功能参数介绍,示例:
本设计采用敏源传感MCP62G芯片,对土壤湿度进行采集。
本设计采用LED屏进行显示,可在光照不良的情况下清晰显示当前值,尤其适合暗室扦插试湿度。
当湿度小于阈值范围时,有对应LED报警灯点亮;

原理解析(硬件说明)

此处可填写项目的设计原理,将设计的原理拆分解析,示例:

本项目由以下部分组成,充电部分,主控模块,电源部分、开关机部分。
充电部分

image.png
如图所示,充电采用CN3163对锂电池进行充电,该芯片与TP4056管家兼容,可对单节锂电池进行快速充电,并自带过流过压保护,且无锂电池时也可稳压输出4.2V 。充电时U3亮起,U4熄灭;充满时U4亮起,U3熄灭。

示例图1--电源电路:
采用TYPE-C-16P接口作为供电接口,同时使用对应的USB数据引脚接入S3对应的USB引脚处(USBD+ IO20),(USBD- IO19),直接使用USB 作为下载和调试,无需转换为串口信号。在CC1和CC2引脚处加入5.1K下拉电阻,便于不同主机识别和配置。
电源部分

image.png
如图所示,采用LDO电源芯片,稳压3.3V供电,该芯片压差70mV@(300mA),完全满足3.7V锂电池供电该系统最大10MA功耗。
显示部分

image.png
采用OLED显示屏显示,该屏幕尺寸为0.91寸,黑底白光,加载中文库可在线显示中英文和数字,LED采用5MA低功耗LED,可最大降低功耗。
主控部分

image.png
主控部分采用MCP62G进行采集和显示,该芯片采用M0内核,自带电容测量芯片,可最大降低成本,方便使用。且自带温度测量端,可测量土壤温度。芯片也带有1路I2C可方便对OLED屏进行驱动,1路串口进行调试和接入联动模块。
工程模块原理图如下,也可自行更改PCB采用官方模块

image.png
目前已有低功耗版本和远程监控版本,后续版本暂未开源。
详情见附件。

软件代码

unsigned int temp=115,hh=122;
unsigned int hhwarn1=600,hhwarn2=400,hhwarn3=200; //10倍数数值
int main(void)
{
  char i;
  unsigned char systime;
  const unsigned char  *point;
  SystemInit();            
  GPIOKEY_Configure();
    TIM1_Configure();
#if defined uart_en
  PLATFORM_Init();	//Initialize configuration
#endif
  cap_structure.I_DRIVE = DRIVE_I_80mA;	//Select 4mA driving current
  cap_structure.FIN_DIV = FIN_DIV_128;	//Input oscillation 128 division frequency
  cap_structure.FREF_DIV = Fref_NO_DIV;	//Sampling clock without frequency division
  cap_structure.clk = In_CLK;	//Using CAR AFE internal clock
  if(cap_structure.clk == In_CLK)cap_structure.clkfre = 2.4/(Fref_NO_DIV+1);	//2.4Mhz sampling frequency
  else if(cap_structure.clk == Ex_CLK)cap_structure.clkfre = 12.0/(Fref_NO_DIV+1);	//12.0Mhz sampling frequency
  cap_structure.RCNT = RCNT_D;	//Set sampling time
  cap_structure.avg = 20;
  Cap_Afe_Init(&cap_structure);	//Initialize CAP AFE
#if defined VT_EN      
  cap_structure.VT_CH=vt_structure;
  myVT_Init(&cap_structure);
  PLATFORM_InitDelay();      
#endif	
while (1)
{    
    Single_Measure(&cap_structure);	//Measure CAP AFE information
    float Cx0,Cx1,CF1,CF0;
    CF0 = Cd0*(Cp0+Cpcb0)/(Cd0+(Cp0+Cpcb0));
    CF1 = Cd1*(Cp1+Cpcb1)/(Cd1+(Cp1+Cpcb1));
    Cx1 = 1/((cap_structure.fre_ch1*cap_structure.fre_ch1)*4*(PI*PI)*L1)-CF1;
    Cx0 = 1/((cap_structure.fre_ch0*cap_structure.fre_ch0)*4*(PI*PI)*L0)-CF0;
    cap_structure.cap0 = Cs0*Cx0/(Cd0-Cx0);
    cap_structure.cap1 = Cs1*Cx1/(Cd1-Cx1);
    if(cap_structure.cap0<0)cap_structure.cap0=0;
    if(cap_structure.cap1<0)cap_structure.cap1=0;   
    myGetVT(&cap_structure,50);	//Measuring temperature information
    #if defined uart_en
PR("CH0_COUNT:%d  CH0_FRE:%.3f Mhz  CH0_CAP:%.3f pF  CH1_COUNT:%d  CH1_FRE:%.3f Mhz  CH1_CAP:%.3f pF  VT:%.1f mV\r\n",cap_structure.count_ch0		,cap_structure.fre_ch0,cap_structure.cap0,cap_structure.count_ch1,cap_structure.fre_ch1,cap_structure.cap1,cap_structure.VT*1000);
#endif
temp=cap_structure.VT*1000;
hh  = (cap_structure.cap1/17.2*100-45.3)*2.45*10;     
#if defined uart_en    
PR("temp is %f",cap_structure.VT*(-16.66)+48.32);
#endif    
if(cap_structure.cap1>10)
  if(hh=120)
  {	 
systime  =0;
RCC_APB1PeriphClockCmd(RCC_APB1ENR_PWR, ENABLE);		PWR_EnterSLEEPMode(PWR_SLEEPNOW_WFE);
  }
}

注意事项

切记:焊接时注意电池正负极,避免电池正负极短路,先焊接电池负极,再焊接电池正极。
OLED屏幕焊接方向为芯片模组同侧,切勿焊反。
按键可根据实际调整板子正反面位置。
3D打印外壳分为两部分,模型较高,底层需要加固有脱模风险,需要用到固定胶,请留意。

组装流程

若3D打印脱模,可将模型切割出一部分将剩下部分打印完,拼接即可。
焊接组装视频如下:
【我做了一个土壤湿度测量显示笔-哔哩哔哩】 https://b23.tv/es00fDH

实物图

微信图片_20250417094645(1).jpg

微信图片_20250417095222.jpg

微信图片_20250417113105.jpg

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

3D模型

序号文件名称下载次数
暂无数据

附件

序号文件名称下载次数
1
mcp-series-MCP62.zip
193
2
MCP62EVK硬件资料-敏源202408.zip
131
3
ProDoc_sol_M1_2025-10-20.epro
35
克隆工程
添加到专辑
0
0
分享
侵权投诉
知识产权声明&复刻说明

本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。

请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。

底部导航