【Let'sdo第四期-液体流量检测仪DIY】成果帖-自动浇花器
目前已经实现基础任务和进阶任务
基础任务:
1. 搭建keil环境,实现开发板测试,利用定时器实现LED亮灭1秒
2. OLED 显示文字信息
3. 继电器控制抽水泵通断
进阶任务:
1. 实现流量计测量功能
2. 实现定量 100ML,200ML 水量控制
100ML水位展示
200ML水位展示
完成这些功能之后,我又移植了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,我们不见不散!