这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 【Let'sdo第四期-液体流量检测仪DIY】成果帖-自动浇花器

共3条 1/1 1 跳转至

【Let'sdo第四期-液体流量检测仪DIY】成果帖-自动浇花器

菜鸟
2025-01-24 19:27:56     打赏

【Let'sdo第四期-液体流量检测仪DIY】成果帖-自动浇花器

目前已经实现基础任务和进阶任务

基础任务:

1. 搭建keil环境,实现开发板测试,利用定时器实现LED亮灭1秒 
2. OLED 显示文字信息
3. 继电器控制抽水泵通断

进阶任务:
1. 实现流量计测量功能
2. 实现定量 100ML,200ML 水量控制

100ML水位展示

image.png

200ML水位展示

image.png


完成这些功能之后,我又移植了FreeRTOS,提高系统的稳定性和实时响应速度~


最后我又加入了土壤湿度检测模块,创建了一个ADC任务,用来ADC检测土壤的湿度,做成了自动浇花器!


  TaskHandle_t xTaskADC_Handle;   // ADC任务句柄
  
  BaseType_t xADC_Handle = xTaskCreate(ADC_Task, "ADC_Task", 128, NULL, (UBaseType_t)osPriorityNormal+4, &xTaskADC_Handle); //


ADC任务的优先级可以适当调高一些,否则ADC数据读取失败,我把优先级提高了4,这里我用的ADC2-IN15通道-PC5引脚,设置采样周期长一些,设置成28.5cycles,尽量慢一些!

编写ADC_Task任务函数,代码量不大,只需要1秒检测一次土壤的湿度,如果湿度小于1000,代表土壤比较干燥,可以加水,那么目标水量++,等待抽水,土壤湿一些了,就不会再抽水了,这里的参数可以根据自己的需要调节一下湿度阈值,或者调节延时时间~

void ADC_Task(void *params)
{
    HAL_ADC_Start(&hadc2);
    for (;;)
    {
        HAL_ADC_Start(&hadc2);
        ADC_Value = HAL_ADC_GetValue(&hadc2);	//read adc
        
        if (ADC_Value <= 1000)  //比较干
        {
            TargetFlow += 5;   // 目标水量+5
        }
        vTaskDelay(1000);
    }
}


这个功能是在发完视频后才加的,没有剪辑到视频里,可惜啦,不过代码已经同步到云端了!~

代码:https://gitee.com/Yancl0416/diy-liquid-flow-detector

演示视频:【【Let's do第四期】DIY液体流量检测仪-项目成果展示】 https://www.bilibili.com/video/BV1WUfHYdEge/?share_source=copy_web&vd_source=8af85e60c2df9af1f0fd23935753a933 

EETV成果视频链接:https://v.eepw.com.cn/video/play/id/16230 


通过这次活动,我不仅完成了DIY液体流量检测仪的制作,还学到了很多关于电子元件和编程的知识。感谢DigiKey提供的支持与优质组件,使得这一切成为可能。如果您对本项目感兴趣,或者想要了解更多信息,欢迎访问DigiKey官网获取更多资源和支持。期待下一期的Let's do,我们不见不散!





关键词: 第四     液体     流量     检测仪     成果     自动     浇花    

工程师
2025-01-25 10:37:59     打赏
2楼

感谢分享。


院士
2025-01-26 09:22:23     打赏
3楼

看了楼主的gitee,楼主是把实现代码给屏蔽了吗?

只看到了外设初始化的代码,而没有找到FreeRTOS里面的task的实现代码。


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]