0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于花卉浇水指示器的实现过程

芯片开放社区 来源:芯片开放社区 作者:芯片开放社区 2022-12-12 13:47 次阅读

开发者 张同学 通过外接湿度传感器,利用RVB2601处理湿度传感器送来的信号,用RVB2601点亮不同颜色的LED灯及OLED显示不同数量的横线表示花卉土壤的干湿度,完成了创意应用开发——花卉浇水指示器。

花卉浇水指示器的实现过程,请见本文详细介绍。

01项目背景

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

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

02作品简介

2.1设置湿度传感器

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

4ff96526-79db-11ed-8abf-dac502259ad0.png

实测图1-红色灯亮

2.2此传感器与RVB2601相连

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

503ecc6a-79db-11ed-8abf-dac502259ad0.png

实测图2-绿色灯亮

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

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

50c27f38-79db-11ed-8abf-dac502259ad0.png

实测图3-蓝色灯亮

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

03系统框图

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

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

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

512b7ede-79db-11ed-8abf-dac502259ad0.jpg

图4湿度传感器外形图

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

电路图参见图5:

51500df8-79db-11ed-8abf-dac502259ad0.jpg

图5电路图

04各部分功能说明和解析

4.1 土壤湿度传感器

参见图6:

51776970-79db-11ed-8abf-dac502259ad0.png

图6土壤湿度传感器

4.2 土壤湿度信号放大处理模块

参见图7:

519dc3e0-79db-11ed-8abf-dac502259ad0.png

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

4.3湿度处理、显示模块

即RVB2601,参见图8:

51c2e13e-79db-11ed-8abf-dac502259ad0.png

图8RVB2601

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

5.1作品源码

#define _DEFAULT_SOURCE /* needed for usleep() */
#include 
#include 
#include 
#include 
#include 
#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 
#include 


#include 
#include 


#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!
");
 aos_msleep(1000); //by me
 oled_init();
 
 //PA4 - BLUE PA7-REDPA25 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);
 //editfind in filesfind in files 搜索“EXAMPLE_ADC_CHANNEL0_PIN”可得:
//g:C-SkyCDKCSKYPACKch2601_evbv7.4.3includeoard_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!
", aos_get_app_version());

 while(1) 
 {
  /* Read result */
 data = csi_adc_read(&adc);
 printf("get adc result: %d
", data);//在串口调试助手中显示
  printf("the voltage is: %d mV
", 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;k2800)
  {
 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.
");
     return 0;
}

5.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

06视频演示

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

提取码:jkdf

07项目总结

花卉的浇水问题,对很多人来说是个难题。此款“花卉浇水指示器”将浇水问题,转化为土壤的干湿度问题,用传感器检测的数值,直观地指示花儿是否需要浇水,不需依仗经验,主观判断,值得推广。


审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • OLED
    +关注

    关注

    119

    文章

    6172

    浏览量

    223751
  • 指示器
    +关注

    关注

    0

    文章

    249

    浏览量

    38250

原文标题:应用速递 | 智能浇花神器 养花种菜好帮手

文章出处:【微信号:芯片开放社区,微信公众号:芯片开放社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    线路故障指示器为什么变成红色

    线路故障指示器变成红色,通常是因为检测到了线路中的特定电气量变化,这些变化与线路故障紧密相关。具体来说,以下是一些导致线路故障指示器变红的主要原因: 1. 短路或接地故障 短路故障 :当线路中发
    的头像 发表于 09-24 11:04 317次阅读

    线路故障指示器如何复位

    线路故障指示器是一种用于监测电力线路故障的设备,它可以帮助电力维护人员快速定位故障点,从而提高故障处理的效率。复位线路故障指示器是故障处理过程中的一个重要步骤,确保设备能够恢复正常工作状态。以下
    的头像 发表于 09-24 11:01 238次阅读

    线路故障指示器工作原理是什么

    线路故障指示器是一种用于检测和定位电力系统中故障的设备,它能够帮助电力维护人员快速准确地找到故障点,从而提高电力系统的可靠性和安全性。 线路故障指示器的工作原理概述 1. 基本概念 线路故障指示器
    的头像 发表于 09-24 10:54 329次阅读

    线路故障指示器怎么判断故障点

    线路故障指示器在判断故障点时,主要通过检测线路中的电气量变化来实现。以下是一些具体的判断方法和步骤: 一、工作原理 线路故障指示器一般具备电流采集、电场测量和无线通信功能。当线路出现短路或接地故障
    的头像 发表于 09-24 10:52 383次阅读

    使用电源正常状态指示器实现输出放电功能

    电子发烧友网站提供《使用电源正常状态指示器实现输出放电功能.pdf》资料免费下载
    发表于 08-29 09:45 0次下载
    使用电源正常状态<b class='flag-5'>指示器</b><b class='flag-5'>实现</b>输出放电功能

    内置超级电容模块的故障指示器有哪些特性?

    内置超级电容模块的故障指示器有哪些特性?安装在输配电线路、电力电缆及开关柜进出线上的故障指示器在电流流通的线路中起着非常重要的作用,一旦线路发生故障,巡线人员可以利用指示灯的报警显示快速的确定故障
    的头像 发表于 06-04 09:39 379次阅读
    内置超级电容模块的故障<b class='flag-5'>指示器</b>有哪些特性?

    电力电缆故障指示器|误差探讨|行波故障定位的选项

    以往电力电缆故障指示器误差过大的原因可能有以下几点:  1. 设备自身问题:故障指示器设备本身可能存在制造或设计上的缺陷,导致其指示精度不够。 2. 安装环境影响:故障指示器可能受到安
    的头像 发表于 03-28 10:49 839次阅读

    汽车制动失效指示器电路分享

    几乎 40%的事故是由于制动故障问题而发生的。通过及早发现这种情况,我们可以降低事故率。“汽车制动失效指示器”项目是解决这一全球性问题的方法。
    的头像 发表于 02-25 16:02 1018次阅读
    汽车制动失效<b class='flag-5'>指示器</b>电路分享

    水位指示器电路图分享

    水位指示器是一种用于测量和显示容器内水位高度的装置。它广泛应用于各种场合,如工业生产、电力系统、水处理工程、农业灌溉等领域。
    的头像 发表于 02-20 15:25 4313次阅读
    水位<b class='flag-5'>指示器</b>电路图分享

    典型指示器电路图分享

    指示器是一种用于提供信息或指示的设备或组件。它的工作原理和作用取决于其应用领域和设计,但通常都是通过视觉、听觉或触觉等方式向用户传递信息。
    的头像 发表于 02-12 12:24 1266次阅读
    典型<b class='flag-5'>指示器</b>电路图分享

    水位指示器电路图分享

    水位指示器是一种用于检测和指示水位的设备。它通常采用简单的机制来工作,如利用静压力原理将水位信号转换为电信号输出到控制仪表,以对被测介质的液位、密度等进行自动检测并报警。
    的头像 发表于 02-12 09:29 3641次阅读
    水位<b class='flag-5'>指示器</b>电路图分享

    水位指示器电路图分享

    水位指示器是一种用于检测和指示水位的设备。它通常采用简单的机制来工作,如利用静压力原理将水位信号转换为电信号输出到控制仪表,以对被测介质的液位、密度等进行自动检测并报警。
    的头像 发表于 02-12 09:20 1432次阅读
    水位<b class='flag-5'>指示器</b>电路图分享

    电池电量指示器电路图分享

    电池电量指示器是一种装置,也被称为电眼,用于指示蓄电池的电量或充电程度。当电量指示器显示绿色时,表示电瓶电量充足,电瓶是完好的;当电量指示器显示黑色时,表示电瓶电量不足需要充电了;当电
    的头像 发表于 02-07 18:18 8024次阅读
    电池电量<b class='flag-5'>指示器</b>电路图分享

    故障指示器的作用

    故障指示器在电力系统中扮演着非常重要的角色,通过监测电力设备的状态变化,及时反馈故障信息,以帮助运维人员快速定位和解决问题,从而提升电力系统的安全性和可靠性。 首先,故障指示器可以用来监测电力设备
    的头像 发表于 12-27 11:06 1225次阅读

    对称电源平衡指示器电路原理图

    电源平衡指示器显示对称电源是否真正对称。利用 LM339N 四路比较的两个比较对,我们可以制作这样的指示器。一对驱动红色警告 LED3,另一对驱动黄色负极 (-) 和正极 (+)。
    的头像 发表于 12-05 17:22 878次阅读
    对称电源平衡<b class='flag-5'>指示器</b>电路原理图