<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
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

    文章

    6060

    瀏覽量

    222071
  • 指示器
    +關注

    關注

    0

    文章

    239

    瀏覽量

    38008

原文標題:應用速遞 | 智能澆花神器 養花種菜好幫手

文章出處:【微信號:芯片開放社區,微信公眾號:芯片開放社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    內置超級電容模塊的故障指示器有哪些特性?

    內置超級電容模塊的故障指示器有哪些特性?安裝在輸配電線路、電力電纜及開關柜進出線上的故障指示器在電流流通的線路中起著非常重要的作用,一旦線路發生故障,巡線人員可以利用指示燈的報警顯示快速的確定故障
    的頭像 發表于 06-04 09:39 ?115次閱讀
    內置超級電容模塊的故障<b class='flag-5'>指示器</b>有哪些特性?

    水位指示器電路圖分享

    水位指示器是一種用于測量和顯示容器內水位高度的裝置。它廣泛應用于各種場合,如工業生產、電力系統、水處理工程、農業灌溉等領域。
    的頭像 發表于 02-20 15:25 ?2079次閱讀
    水位<b class='flag-5'>指示器</b>電路圖分享

    典型指示器電路圖分享

    指示器是一種用于提供信息或指示的設備或組件。它的工作原理和作用取決于其應用領域和設計,但通常都是通過視覺、聽覺或觸覺等方式向用戶傳遞信息。
    的頭像 發表于 02-12 12:24 ?638次閱讀
    典型<b class='flag-5'>指示器</b>電路圖分享

    水位指示器電路圖分享

    水位指示器是一種用于檢測和指示水位的設備。它通常采用簡單的機制來工作,如利用靜壓力原理將水位信號轉換為電信號輸出到控制儀表,以對被測介質的液位、密度等進行自動檢測并報警。
    的頭像 發表于 02-12 09:29 ?1844次閱讀
    水位<b class='flag-5'>指示器</b>電路圖分享

    水位指示器電路圖分享

    水位指示器是一種用于檢測和指示水位的設備。它通常采用簡單的機制來工作,如利用靜壓力原理將水位信號轉換為電信號輸出到控制儀表,以對被測介質的液位、密度等進行自動檢測并報警。
    的頭像 發表于 02-12 09:20 ?839次閱讀
    水位<b class='flag-5'>指示器</b>電路圖分享

    電池電量指示器電路圖分享

    電池電量指示器是一種裝置,也被稱為電眼,用于指示蓄電池的電量或充電程度。當電量指示器顯示綠色時,表示電瓶電量充足,電瓶是完好的;當電量指示器顯示黑色時,表示電瓶電量不足需要充電了;當電
    的頭像 發表于 02-07 18:18 ?3427次閱讀
    電池電量<b class='flag-5'>指示器</b>電路圖分享

    故障指示器的作用

    故障指示器在電力系統中扮演著非常重要的角色,通過監測電力設備的狀態變化,及時反饋故障信息,以幫助運維人員快速定位和解決問題,從而提升電力系統的安全性和可靠性。 首先,故障指示器可以用來監測電力設備
    的頭像 發表于 12-27 11:06 ?696次閱讀

    對稱電源平衡指示器電路原理圖

    電源平衡指示器顯示對稱電源是否真正對稱。利用 LM339N 四路比較器的兩個比較器對,我們可以制作這樣的指示器。一對驅動紅色警告 LED3,另一對驅動黃色負極 (-) 和正極 (+)。
    的頭像 發表于 12-05 17:22 ?501次閱讀
    對稱電源平衡<b class='flag-5'>指示器</b>電路原理圖

    溫度指示器電路圖分享

    在該溫度指示器中,環境溫度中的二極管壓降用作參考電平。溫度由安裝在散熱器或功率晶體管附近的晶體管控制。
    的頭像 發表于 10-15 11:05 ?679次閱讀
    溫度<b class='flag-5'>指示器</b>電路圖分享

    立體聲平衡指示器電路圖分享

    該立體聲平衡指示器電路圖是使用很少常見的外部組件設計的。原理圖電路非常易于構建,并將提供帶有LED的視覺指示,用于左,右和中心平衡。
    的頭像 發表于 10-15 10:45 ?796次閱讀
    立體聲平衡<b class='flag-5'>指示器</b>電路圖分享

    射頻指示器電路原理圖講解

    需要一個射頻場指示器來驗證功率級和發射器天線。使用此無線電場指示器,您可以測量來自天線的輻射能量。這個電路非常靈敏,一個微弱的信號就足夠了。一根 30 厘米長的電線足以作為天線。
    的頭像 發表于 07-28 10:05 ?386次閱讀
    射頻<b class='flag-5'>指示器</b>電路原理圖講解

    遠端音頻電平指示器電路圖分享

    市場上可用的普通電平指示器電路需要連接到播放器的輸出,這可能不容易接近。這里描述的音頻電平指示器電路消除了這種限制,因為它可以放置在靠近播放器揚聲器的位置,但可以實現所需的效果。
    的頭像 發表于 07-23 16:31 ?1790次閱讀
    遠端音頻電平<b class='flag-5'>指示器</b>電路圖分享

    24v電量指示器

    指示器
    學習電子知識
    發布于 :2023年07月17日 20:21:39

    分享一個水位指示器電路

    在他們使用高架水箱的地方,浪費水確實是一個問題。在這些地方,監測水位確實是一項艱巨的任務,還可能導致水和電力的浪費。上面的電路顯示了一個簡單的水位指示器系統,該系統基于Tranistors和LED
    的頭像 發表于 07-02 09:47 ?692次閱讀
    分享一個水位<b class='flag-5'>指示器</b>電路

    帶泵控制的通用液位指示器電路

    液位指示器電路對于監測難以進入儲罐的儲罐中存在的液體液位非常有用。該電路使用壓力傳感器來檢測罐中的液位。這消除了諸如傳感電極腐蝕、液體離子傳導特性等缺點,這些缺點用于原始液位指示電路。此外,該電路中的警報還提供了額外的優勢,可以提醒用戶關閉液體泵或閥門。
    的頭像 發表于 07-02 09:42 ?465次閱讀
    帶泵控制的通用液位<b class='flag-5'>指示器</b>電路
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>