783|2

138

帖子

0

资源

一粒金砂(中级)

【平头哥RVB2601创意应用开发】农田灭害虫装置的设计 [复制链接]

本帖最后由 梦溪开物 于 2022-5-12 17:09 编辑

 

农田灭害虫装置的设计

 

 

一、项目背景

该项目为农田灭虫装置的设计。农田害虫影响作物的产量,很多害虫平常匍匐在作物的茎秆上,靠吸食汁液为生,对作物危害极大,其在夜间尤为活跃,具有一定的趋光性和趋声性(尤其在繁殖季节),可以利用该种特性,并结合RISC-V生态开发板RVB2601进行灭虫装置的研制。

 

image.png

 

稻田害虫的图片

二、作品简介

通过RISC-V生态开发板研制一种专门捕捉并消灭农田害虫的装置,增加稻田作物的亩产量,减少农药的喷洒。该系统由主控模块(RISC-V生态开发板)、通信模块(4G通信协议)、电源模块(5V)、和倍压模块共四部分组成。作品图片如下所示:

image.png  

作品图片

 

三、系统框图

RVB2601内存中决策模型计算出农田害虫在夜间某一时刻最佳的趋光光色和频闪周期,并将该参数转化成电信号给驱动模块,驱动模块驱动RGB灯和喇叭开始工作,达到声光耦合的效果,从而对害虫进行引诱,功率模块通过高压放电将将引诱过来的农田害虫杀死,并将杀死的害虫释放到农田中,作为肥料使用。系统框图如下所示:

image.png  

系统框图

 

四、各部分功能说明和解析

4.1 主控模块

主控模块是以CH340单片机为核心的RVB2601开发板,该开发板上有一个功放模块用于驱动喇叭,其上的电源电路能将5V电压转换成3.3V供MCU使用,将5V转换成12V供功放模块使用,所以只需要向其提供5V电压即可。

该项目的全部软件程序都集中在在该主控模块上,包括驱动RGB变色与频闪的程序、喇叭的音频驱动程序和倍压电路间歇性工作的控制程序三部分,该项目程序在平头哥生态例程ch2601_player_demo和ch2601_rgb_marquee_demo进行再次开发。其中RGB变色和频闪程序主要通过led_refresh()程序来实现,通过PWM波实现变色控制和呼吸效果;喇叭的音频驱动程序主要由cli_reg_cmd_player()来实现,通过外部导入音频文件到内存进行循环播放;倍压电路间歇性工作通过GPIO控制MOS通断实现。主控模块的实物图如下所示:

image.png  

主控模块实物图

 

4.2 光能转换电路

光能转换电路将不稳定的太阳能稳压到3.7V给锂电池充电,以保证农田灭虫装置能够在野外长久稳定地运行。该电路在充电时,上面的红灯会亮。光能转换电路实物图如下所示:

image.png  

光能转换电路实物图

 

4.3 电源模块

电源模块将3.7V转换成5V给RVB2601开发板供电。5V电源模块实物图如下所示:

image.png  

5V电源模块实物图

 

4.4 倍压电路

倍压电路将3.7V倍压到3000V高压并传递到电网上,用于消灭引诱过来的害虫。该模块会间歇性工作,主要是为了省点,当害虫聚集到一定程度后,CH340会通过GPIO口控制MOS管驱使倍压电路工作。该电路进行了两次升压方式,第一次是通过变压器升压到750V左右,第二次是通过二极管升压到3000V高压,变压器同时也起到了一个隔离的左右。倍压电路实物图如下所示:

image.png  

倍压电路实物图

五、作品源码

#include <app_config.h>

#include <aos/aos.h>

#include <aos/cli.h>

#include <aos/kernel.h>

#include "app_main.h"

#include "app_init.h"

#include "board.h"

#include "player_demo.h"

#include "oled.h"

#include "led.c"

#define TAG "app"

#define TAG "player_demo"

extern void cxx_system_init(void);

static player_t *g_player;

static uint32_t g_ctr = 0;

static csi_pwm_t  r;

static void _player_event(player_t *player, uint8_t type, const void *data, uint32_t len)

{

    int rc;

    UNUSED(len);

    UNUSED(data);

    UNUSED(handle);

    LOGD(TAG, "=====%s, %d, type = %d", __FUNCTION__, __LINE__, type);

 

    switch (type) {

    case PLAYER_EVENT_ERROR:

        rc = player_stop(player);

        break;

 

    case PLAYER_EVENT_START: {

        media_info_t minfo;

        memset(&minfo, 0, sizeof(media_info_t));

        rc = player_get_media_info(player, &minfo);

        LOGD(TAG, "=====rc = %d, duration = %llums, bps = %llu, size = %u", rc, minfo.duration, minfo.bps, minfo.size);

        break;

    }

 

    case PLAYER_EVENT_FINISH:

        player_stop(player);

        break;

 

    default:

        break;

    }

}

 

static void cmd_ipc_func(char *wbuf, int wbuf_len, int argc, char **argv)

{

      

       char url[128];

        snprintf(url, sizeof(url), "mem://addr=%u&size=%u", (uint32_t)&_welcome_mp3, _welcome_mp3_len);

       player_play(get_player_demo(), url, 0);

}

 

player_t *get_player_demo()

{

    if (!g_player) {

        ply_conf_t ply_cnf;

        player_conf_init(&ply_cnf);

        ply_cnf.vol_en         = 1;

        ply_cnf.vol_index      = 128; // 0~255增益强度

        ply_cnf.event_cb       = _player_event;

        ply_cnf.period_num     =12;  //播放时长 12 * 5 period_ms = 60ms

        g_player = player_new(&ply_cnf);

    }

    return g_player;

}

 

int cli_reg_cmd_player(void)

{

    char url[128];

    static const struct cli_command cmd_info = {

        "player",

        "player example",

        cmd_ipc_func,

    };

  snprintf(url,sizeof(url)," mem://addr=%u&size=%u", (uint32_t)&_welcome_mp3, _welcome_mp3_len);

       player_play(get_player_demo(), url, 0);

    return 0;

}

 

void led_pinmux_init()

{

    csi_error_t ret;

    csi_pin_set_mux(PA7, PA7_PWM_CH7);

    csi_pin_set_mux(PA25, PA25_PWM_CH2);

    csi_pin_set_mux(PA4, PA4_PWM_CH4);

       csi_pwm_init(&r, 0);

}

 

void led_refresh()

{

    if (g_ctr == 0)

       {

              while(g_ctr<300)

              {

               csi_pwm_out_config(&r, 4/ 2, 600-g_ctr, g_ctr++, PWM_POLARITY_HIGH);

                  csi_pwm_out_stop(&r, 7 / 2);

                  csi_pwm_out_stop(&r, 2 / 2);

                  csi_pwm_out_start(&r, 4 / 2);

                     udelay(1000 * 5);

              }

       }

    csi_pwm_out_stop(&r, 4 / 2);

       udelay(1000 * 200); 

      

       if (g_ctr==300)

       {

              while(g_ctr>0)

              {

                  csi_pwm_out_config(&r, 4 / 2, 600-g_ctr, g_ctr--, PWM_POLARITY_HIGH);

                     csi_pwm_out_stop(&r, 7 / 2);

                     csi_pwm_out_stop(&r, 2 / 2);

                     csi_pwm_out_start(&r, 4 / 2);

                     udelay(1000 * 5);

              }

                    

       }

}

 

int main(void)

{

    cxx_system_init();

    board_yoc_init();

    oled_init();

    player_init();

       led_pinmux_init();

       while(1)

       {

        led_refresh();

              cli_reg_cmd_player();

              udelay(200 * 1000);

       }

    return 0;

}

 

 

六、视频演示

6.1 视频简介

该项目的演示视频展示了系统整体工作情况以及各局部模块详细工作情况,视频从头至尾都有文字标注进行解释。首先,RVB2601单片机根据内部导入的虫鸣音频文件控制驱动模块驱动喇叭发声,同时驱动RGB灯间歇性呼吸闪烁,模拟声光耦合吸引雌雄稻田害虫进入诱虫装置,高压电网将害虫杀灭,该系统平常主要依赖太阳能板给锂电池充电维持系统整体运行

 

6.2 视频链接


 

 

七、项目总结

 

7.1 项目总结

本文讲解了利用声光耦合诱捕并消灭稻飞虱灭虫装置的基本原理,基于RVB2601开发板进行了自上而下的软硬件的设计,利用已有的电子元器件制作了实物,通过视频展示系统总体运行情况和给个模块详细工作情况。

 

7.2 帖子分享链接

【RVB2601开发板试用】扬声器实验

GRB呼吸灯

 

八、致谢

非常感谢平头哥和EEWORLD提供了一次测评RVB2601开发板的机会,在这个测评的过程遇到了一次开发板不能下载程序的问题,通过提交工单进行了请教,最后给我重新寄了开发板,也找出了原因,就是ICE clk不能太高。同时也祝望平头哥的生态越做越好。

 

 

 

农田灭害虫装置的设计.doc

14.73 MB, 下载次数: 3


回复

2931

帖子

3

资源

版主

这个有创意可以呀,值得推广。希望产品早日上市。

回复

18

帖子

1

资源

一粒金砂(中级)

感谢楼主的分享,谢谢................


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

相关帖子
查找数据手册?

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
快速回复 返回顶部 返回列表