992|4

7

帖子

0

资源

一粒金砂(中级)

【平头哥RVB2601创意应用开发】花卉浇水指示器 [复制链接]

 

花卉浇水指示器

作者:张泽中

花儿人见人爱,很多人都喜欢养殖花卉,刚买来的花儿艳丽多姿,没过几天,花儿就蔫了其中浇水是否恰当,是主要问题。

花卉是否缺水?花卉是否应该浇水了?花卉的浇水问题,对很多人来说是个难题。

本创意:

1 设置湿度传感器;

2 此传感器与RVB2601相连;

3 RVB2601处理湿度传感器送来的信号;

4 RVB2601点亮不同颜色的LED灯及OLED显示不同数量的横线表示花卉土壤的干湿度。

1.花卉土壤过于干燥时,RVB2601的红色LED点亮,同时OLED显示几根横线,提醒花卉需要浇水,参见下图1。

153832lxsl3elvlu3xla5l.png

图1 实测图1 -红色灯亮.jpg

 

2.花卉土壤干湿度燥恰当时,RVB2601的绿色LED点亮,同时OLED显示恰当数量的横线,表示花卉不需浇水或通风散湿,参见下图2。

153832wk6m6dvjccktv2mj.png

实测图2-绿色灯亮

 

3.花卉土壤过于潮湿时,RVB2601的蓝色LED点亮,同时OLED显示几乎满屏的横线,提醒花卉需要通风散湿,参见下图3。

153832avuvzoyjjmmu2tp6.png

实测图3-蓝色灯亮

 

 

 

用“平头哥RISC-V RVB2601开发板”检测土壤湿度办法:

1 开发板读取土壤湿度传感器的模拟信号,经开发板ADC转换后变成数字信号,然后驱动开发板的LED及OLED;

2 经筛选,选取下款湿度传感器,参见图4

153832qsnnneccbncfhnsn.png

4 湿度传感器外形图

湿度传感器模块为双输出模式:数字量输出及模拟量输出,比较器采用LM393芯片,工作稳定,信号干净。设有固定螺栓孔,方便安装。

电路图参见图5

153832mg1rrmmwmz5c838d.png

5电路图

1 土壤湿度传感器

参见6

 

153832cj6ndtyijtw7w5k3.png

6土壤湿度传感器

2 土壤湿度信号发大处理模块

参见7

153832hvb5lb0jbcekvvkz.png

7土壤湿度信号发大处理模块

 

3 湿度处理、显示模块

RVB2601参见8

153832ts2mtxc2xc3hmcq6.png

8 RVB2601

 

五、作品源码和案例中处理的传感器数据

1 作品源码

#define _DEFAULT_SOURCE /* needed for usleep() */

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

#include <time.h>

#include <aos/aos.h>

#include "aos/cli.h"

 

#include "app_config.h"

#include "app_init.h"

#include "csi_config.h"

#include "hw_config.h"

#include "csi_config.h"

#include "lvgl.h"

#include "lv_label.h"

#include "oled.h"

 

#include "board_config.h"

#include "drv/gpio_pin.h"

#include <drv/pin.h>

#include <drv/pwm.h>

 

 

#include <drv/adc.h>

#include <drv/tick.h>

 

 

#define TAG "APP"

 

 

/**************************oled*****************************/

extern void oled_draw_point(uint8_t r, uint8_t c, uint8_t t);

extern void Fill_RAM(unsigned char Data);

extern void oled_reflesh();

/**************************************************************/

 

 

 

/*******************************led****************************/

csi_gpio_pin_t MY_PIN_LED_RED;

csi_gpio_pin_t MY_PIN_LED_GREEN;

csi_gpio_pin_t MY_PIN_LED_BLUE;

/*************************************************************/

 

#define ADC_CHECK_RETURN(ret) \

do \

{ \

if (ret != CSI_OK) \

return -1; \

} \

while(0);

 

 

static csi_adc_t adc;

 

int main(void)

{

char j,k;

int ret;

uint32_t data;

 

int x0,x1,y0,y1;

//uint8_t p1[128][64];

 

/********************************light led*****************************/

board_yoc_init();

LOGD(TAG, "board_yoc_init() completed!\n");

aos_msleep(1000); //by me

oled_init();

 

//PA4 - BLUE PA7-RED PA25 GREEN

csi_pin_set_mux(PA4, PIN_FUNC_GPIO);

csi_pin_set_mux(PA7, PIN_FUNC_GPIO);

csi_pin_set_mux(PA25, PIN_FUNC_GPIO);

 

csi_gpio_pin_init(&MY_PIN_LED_BLUE, PA4);

csi_gpio_pin_init(&MY_PIN_LED_RED, PA7);

csi_gpio_pin_init(&MY_PIN_LED_GREEN, PA25);

 

csi_gpio_pin_dir(&MY_PIN_LED_GREEN, GPIO_DIRECTION_OUTPUT);

csi_gpio_pin_dir(&MY_PIN_LED_RED, GPIO_DIRECTION_OUTPUT);

csi_gpio_pin_dir(&MY_PIN_LED_BLUE, GPIO_DIRECTION_OUTPUT);

 

csi_gpio_pin_write(&MY_PIN_LED_BLUE, GPIO_PIN_HIGH);

csi_gpio_pin_write(&MY_PIN_LED_RED, GPIO_PIN_HIGH);

csi_gpio_pin_write(&MY_PIN_LED_GREEN, GPIO_PIN_HIGH);

/***************************************************************************/

 

/***********************************ADC******************************/

csi_pin_set_mux(EXAMPLE_ADC_CHANNEL0_PIN, EXAMPLE_ADC_CHANNEL0_PIN_FUNC);

//edit\find in files\find in files\ 搜索“EXAMPLE_ADC_CHANNEL0_PIN”可得:

//g:\C-Sky\CDK\CSKY\PACK\ch2601_evb\v7.4.3\include\board_config.h有此字段:

//#define EXAMPLE_ADC_CHANNEL0_PIN EXAMPLE_ADC_CH0,再搜索:

//EXAMPLE_ADC_CH0,可得:#define EXAMPLE_ADC_CH0 PA3、P18

//可,本程序的ADC入引脚是:PA3

//PA3:J1:9-10脚,参见

//RVB2601开发板用:37067137319852441601615475227781dm4cDSePeY-音DAC、音ADC.pdf P8/19

 

ret = csi_adc_init(&adc, 0);

ADC_CHECK_RETURN(ret);

 

csi_adc_continue_mode(&adc, true);

ADC_CHECK_RETURN(ret);

//开启/关闭ADC连续模式,false->禁止

//参见:ADC · GitBook.pdf

 

ret = csi_adc_freq_div(&adc, 128);

if(ret == 0){

return -1;

}

 

/* Configure sampling time */

ret = csi_adc_sampling_time(&adc, 2);

ADC_CHECK_RETURN(ret);

 

/* Enable channel */

ret = csi_adc_channel_enable(&adc, 0, true);

ADC_CHECK_RETURN(ret);

 

/* Trigger new conversion */

ret = csi_adc_start(&adc);

ADC_CHECK_RETURN(ret);

 

// LOGD(TAG, "%s ,ADC INITED!\n", aos_get_app_version());

 

while(1)

{

/* Read result */

data = csi_adc_read(&adc);

printf("get adc result: %d\n", data);//在串口调试助手中

printf("the voltage is: %d mV\n", data*3300/4096);

aos_msleep(500);

/***********************************************************end of ADC************************/

 

 

/*************************************OLED***********************/

x0=50;

x1=80;

y0=63;

y1=(4096-data)/3.3/20;

for(j=y0;j>y0-y1;j--)

{

Fill_RAM(0x00);

for(k=x0;k<x1;k++)

oled_draw_point(j,k,0xFF);

//x,y是反的,所以j,k的位置对调

}

oled_reflesh();

printf("oled_refleshed !\n\n");

/*************************************END OF OLED*********************/

 

 

/************************************LED****************************/

csi_gpio_pin_write(&MY_PIN_LED_BLUE, GPIO_PIN_HIGH);

csi_gpio_pin_write(&MY_PIN_LED_RED, GPIO_PIN_HIGH);

csi_gpio_pin_write(&MY_PIN_LED_GREEN, GPIO_PIN_HIGH); //熄led

 

if(data>2800)

{

csi_gpio_pin_write(&MY_PIN_LED_RED, GPIO_PIN_LOW);

//aos_msleep(2000);

//acsi_gpio_pin_write(&MY_PIN_LED_RED, GPIO_PIN_HIGH);

}

 

if(data<800)

{

csi_gpio_pin_write(&MY_PIN_LED_BLUE, GPIO_PIN_LOW);

//aos_msleep(2000);

//csi_gpio_pin_write(&MY_PIN_LED_BLUE, GPIO_PIN_HIGH);

}

 

if((data>=800)&&(data<=2800))

{

csi_gpio_pin_write(&MY_PIN_LED_GREEN, GPIO_PIN_LOW);

//aos_msleep(2000);

//csi_gpio_pin_write(&MY_PIN_LED_GREEN, GPIO_PIN_HIGH);

}

/********************************END OF LED***************************/

 

aos_msleep(5000);

Fill_RAM(0x00);

oled_reflesh();

}

 

csi_adc_uninit(&adc);

printf("csi_adc_uninited.\n");

return 0;

}

2传感器数据

实测的传感器数据如下

1. 土壤极端干燥时的电压值: 2.99V

根据多次试验,当电压值为:2 .26V时,土壤就比较干燥,此时的Data:2.26*4096/3300=2805。

2.土壤湿度最适当时的电压值:1.50V

根据多次试验,当电压值为:0.65-2 .26V时,土壤湿度比较适当,此时的Data:0.65*4096/3300到2805即:807~2805。

3.土壤极端过湿时的电压值:0.56V

根据多次试验,当电压值为:0.65V时,土壤就过湿,此时的Data:0.65*4096/3300=807

六、视频演示(视频简介+链接)

1 传感器实测值.mp4

1 传感器实测值.mp4”介绍了如何测定土壤的干湿度。

1 传感器实测值

 

2 工作视频.mp4

2 工作视频.mp4”演示了花卉浇水指示器的工作流程。

2 工作视频

 

3 链接:

https://pan.baidu.com/s/14e7PXorkclUSF74BCm4Bzw

提取码:jkdf

七、项目总结(项目文字总结+帖子分享链接汇总)

花卉的浇水问题,对很多人来说是个难题。此款“花卉浇水指示器

将浇水问题,转化为土壤的干湿度问题,用传感器检测的数值,直观地指示花儿是否需要浇水,不需依仗经验,主观判断,值得推广。

八、其他

感谢平头哥提供的RVB2601 RISC-V 开发板

感谢EEWORLD电子工程世界提供的交流平台!

 

 

 

 


回复

2931

帖子

3

资源

版主

土壤传感贵不贵,我准备做个农业项目,这个传感靠谱不?

点评

土壤传感10来块钱,精度挺高的。  详情 回复 发表于 2022-5-22 21:16

回复

5748

帖子

18

资源

五彩晶圆(中级)

谢谢分享

个人签名

默认摸鱼,再摸鱼。2022、9、28


回复

7

帖子

0

资源

一粒金砂(中级)

lugl4313820 发表于 2022-5-15 22:42 土壤传感贵不贵,我准备做个农业项目,这个传感靠谱不?

土壤传感10来块钱,精度挺高的。


回复

1

帖子

0

资源

一粒金砂(初级)

您好,网盘链接已失效,跪求一份源码!305882771@qq.com


回复
您需要登录后才可以回帖 登录 | 注册

相关帖子
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表