智能垃圾分类垃圾桶(K210+stm32mp157)

这篇具有很好参考价值的文章主要介绍了智能垃圾分类垃圾桶(K210+stm32mp157)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

有需要源码参考的可以点赞在评论区留邮箱

K210识别垃圾

k210识别2

文章目录

  • 前言
  • 一、垃圾分类识别+舵机控制(K210)
  • 二、语音控制(K210+ld3320)(UART通信)
  • 三、满溢度距离传感器数据获取(STM32MP157)
  • 四、图像获取以及传输(STM32MP157)(UDP)
  • 总结

前言

最近做了一个多功能智能垃圾桶,主要用了k210开发板来做识别和控制以及用stm32mp157来做传感器数据采集以及图像传输。主要功能如下

垃圾分类识别+舵机控制

语音控制垃圾桶开关

检测垃圾桶的满溢程度

摄像头读取图像信息并通过UDP传输至客户端

一、垃圾分类识别+舵机控制

垃圾分类使用的开发板是K210

模型训练可以用mxyolov3平台,也可以用官方的训练平台(这个比较容易使用,但有数据集20M大小的限制),使用开发板前需要用KFLASH烧录.bin后缀的固件包,将训练完成的kmodel文件烧录至开发板,然后需要一段执行代码,后续的功能联调也是需要在识别代码基础上添加

识别完需要进行一些控制,不然结果也就只是结果。我在项目中通过pwm信号控制舵机转动,来识别垃圾桶的识别功能。

为了防止误判,我在识别代码里加了连续10帧检测同一物体才驱动舵机

k210垃圾分类,分类,stm32,arm

识别控制

以下是舵机转动角度的函数,主要是改变PWM信号的占空比

def Servo(servo,angle):
    servo.duty((angle+90)/180*10+2.5)

二、语音控制

语音控制

ld3320语音模块控制垃圾桶的开关(也就是ld3320跟K210通信,K210控制舵机转动)

ld3320跟K210通过UART串口通信

ld3320模块,识别到垃圾桶打开的指令,就通过串口向K210发送‘aa’的数据,在K210端进行UART串口信息的检测,若收到的信息为‘aa’ 就控制舵机转动

read_data = uart_wifi.read()
#下面是开盖 并进入检测 servo是转动角度的函数

if(read_data == b'bb'):
        Servo(S3,-30)
        flag = 1;
if(read_data == b'aa'):
        Servo(S3,60)
        flag = 0;
 

三、满溢度距离传感器数据获取(STM32MP157)

k210垃圾分类,分类,stm32,arm

检测垃圾桶有没有满,距离检测主要用stm32mp157开发板上的ap3216c传感器。

对传感器数据的读取是读取设备文件数据,是通过文件 I/O 的方式来实现。在应用层编写代码读取设备下的数据即可

以下为传感器数据读取的代码

QString Ap3216c::readPsData()
{
    char const *filename = "/sys/class/misc/ap3216c/ps";
    int err = 0;
    int fd;
    char buf[10];

    fd = open(filename, O_RDONLY);
    if(fd < 0) {
        close(fd);
        return "open file error!";
    }

    err = read(fd, buf, sizeof(buf));
    if (err < 0) {
        close(fd);
        return "read data error!";
    }
    close(fd);

    QString psValue = buf;
    QStringList list = psValue.split("\n");
    return list[0];
}

四、图像获取以及传输(STM32MP157)(UDP)

获取开发板摄像头的数据,并通过UDP传输至客户端

在QT中使用UDP传输流程:

服务器端创建socket,就可以直接使用writeDatagram函数发送信息,在函数的参数中需要写入数据,数据大小接收端的IP,端口号

(使用TCP的话一般服务器端是需要创建socket,bind,listen监听,并accept客户端的connect,我们这里传输视频信息,用UDP延时会比较小,当然只是理论,我并没有测试过)

客户端创建socket,绑定自己的IP和端口号,就可以用readDatagram函数接收数据

这里就用自己的电脑作为客户端,来获取垃圾桶的实时状况。(其实这个功能只是我为了学习网络编程强加的,功能比较鸡肋,主要是学习)

服务器端的代码

//摄像头通过调用opencv库获取到的数据类型为mat 需要先转成QImage类型
//QImage类型的图像放入QByteArray中,然后进行base64编码的压缩
//接收端在进行base64解码
/* udp套接字 */
     QUdpSocket udpSocket;

/* QByteArray类型 */
     QByteArray byte;

/* 建立一个用于IO读写的缓冲区 */
     QBuffer buff(&byte);
    
/* image转为byte的类型,再存入buff */
     qImage.save(&buff, "JPEG", -1);

/* 转换为base64Byte类型 */
     QByteArray base64Byte = byte.toBase64();

/* 由udpSocket以单播的形式传输数据,端口号为8888 */
     udpSocket.writeDatagram(base64Byte.data(), base64Byte.size(), QHostAddress("192.168.10.200"), 8888);

客户端代码

udpSocket = new QUdpSocket(this);
udpSocket->bind(QHostAddress("192.168.10.200"), 8888);
QByteArray datagram;
udpSocket->readDatagram(datagram.data(), datagram.size());

//String-Base64编码转QByteArray
 QByteArray decryptedByte;
decryptedByte = QByteArray::fromBase64(datagram.data());


//比如读入一张BMP格式的文件到QByteArray对象中,再调用该函数,那么该函数就会根据QByteArray中数据进行解析,分析图像的格式等
QImage image;
image.loadFromData(decryptedByte);
videoLabel->setPixmap(QPixmap::fromImage(image));

总结

整个的项目用了2个架构的开发板K210(RISV-C)和stm32mp157(cortex-A)

主要是为了学习一些嵌入式方面的知识,并把他实际运用上。文章来源地址https://www.toymoban.com/news/detail-777314.html

到了这里,关于智能垃圾分类垃圾桶(K210+stm32mp157)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于STM32的智能语音垃圾桶设计

    一. 系统设计及框图: 本设计整体功能如下: 1. 超声波感应到有人靠近时语音提示“垃圾放置请分类”。 2. 检测垃圾筒时是否满,当满时语音提示“垃圾桶已满”。 3. 光传感器检测,指示灯指示。 4. 语音识别不同的垃圾类型。 二. 离线语音模块的设计: 离线语音模块SU-0

    2024年02月01日
    浏览(30)
  • 基于STM32+华为云IOT设计的智能垃圾桶

    在商业街、小吃街和景区等人流密集的场所,垃圾桶的及时清理对于提供良好的游客体验至关重要。然而,传统的垃圾桶清理方式通常是定时或定期进行,无法根据实际情况进行及时响应,导致垃圾桶溢满,影响环境卫生,给游客带来不便和不满。 为了解决这一问题,本项目

    2024年02月08日
    浏览(95)
  • 【毕业设计】基于单片机的智能感应垃圾桶设计与实现 - 物联网 stm32 嵌入式

    Hi,大家好,这里是丹成学长,今天向大家介绍一个 单片机项目 基于单片机的智能感应垃圾桶设计与实现 大家可用于 课程设计 或 毕业设计 单片机-嵌入式毕设选题大全及项目分享: https://blog.csdn.net/m0_71572576/article/details/125409052 学长设计的系统主要使用 STC89C52 单片机为基础设

    2024年01月17日
    浏览(39)
  • Arduino智能语音识别分类垃圾桶

        该功能主要是通过ASRpro语音识别模块来实现,结合舵机部分,通过天问block编程,以达到用户输入语音指令, 通过 正确 识别后 控制舵机打开相应垃圾桶盖子, 以 实现垃圾分类(可回收垃圾、其他垃圾、厨余垃圾、有害垃圾)。 该功能是 利用Arduino Uno开发板 结合 红外

    2024年02月05日
    浏览(33)
  • 基于单片机的语音识别智能垃圾桶垃圾分类的设计与实现

           功能介绍 以51单片机作为主控系统; 液晶显示当前信息和状态; 通过语音识别模块对当前垃圾种类进行语音识别;  通过蜂鸣器进行声光报警提醒垃圾桶已满; 采用舵机控制垃圾桶打开关闭; 超声波检测当前垃圾桶满溢程度; 整个电路以5v供电;  电路图   源代

    2024年02月13日
    浏览(30)
  • 32、基于51单片机红外智能垃圾桶系统设计

    随着现代化进程的日益推进,科技越来越发达,人们的生活水平也提高了,城市化程度越来越高,与此同时也带了许多问题,生活垃圾越来越多垃圾设施却不够完善。无论是在公共场合还是家庭厨房的垃圾大都是没有盖或者有盖但需要人用手打开的,比如夏天的家庭厨房没有

    2023年04月14日
    浏览(39)
  • 嵌入式-stm32-基于HAL库的感应开关盖垃圾桶项目(开源)

    网盘资料: 《嵌入式-stm32-基于HAL库的感应开关盖垃圾桶项目(开源)》 链接:https://pan.baidu.com/s/1kFk09nMKPDvLwIUqMT9q3w 提取码:og66 –来自百度网盘超级会员V6的分享 一:项目概述 二:材料准备 三:细节分析(重点) 四:Stm32CubeMx操作步骤以及实现细节 五:Keil5业务逻辑代码编

    2024年02月03日
    浏览(43)
  • 智能语音识别垃圾桶

    主要采用Arduino单片机与LD3320语音模块结合,实现垃圾分类。 目录 设计方案 详细设计 总结 简介:传统垃圾桶都是采用不封口,手动或者脚踩的方式打开桶盖投递垃圾,不但操作麻烦,而且对人体的卫生健康有不利的影响,对空气环境也会造成污染。针对以上存在的问题,本

    2023年04月27日
    浏览(37)
  • 智能垃圾桶项目【课程设计】【全套开源】

    1.1 功能描述 当物体接近垃圾桶时,垃圾桶自动打开,并有\\\" 嘀\\\"的一声;当远离垃圾桶后,自动关闭; 当按下按键时,垃圾桶也可以自动打开,并有\\\" 嘀\\\"的一声; 当感受到震动时,也自动打开,(同上) 垃圾桶开时,led1 灯开,led2 灯关;当垃圾桶关时,led1 灯关,led2 灯开

    2024年01月16日
    浏览(39)
  • 智能垃圾桶丨悦享便捷生活

           垃圾桶是人们日常生活所必不可少的必需品,它让生活中所产生的垃圾有了一个正确的存放地方。随着生产技术的迅速发展,垃圾桶也得以更新换代。由最初的简单式的圆筒式垃圾桶,到现在出现的感应式垃圾桶、智能语音控制垃圾桶,垃圾桶也变得越来越智能,让

    2024年02月07日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包