iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >智能垃圾分类垃圾桶(K210+stm32mp157)
  • 221
分享到

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

分类stm32arm 2023-09-04 06:09:11 221人浏览 八月长安
摘要

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 有需要源码参考的可以点赞在评论区留邮箱 K210识别垃圾 k210识别2 文章目录 前言一、垃圾分类识别+舵机控制(K210)二、语音控制(K

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

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

K210识别垃圾

k210识别2

文章目录

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

前言

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

垃圾分类识别+舵机控制

语音控制垃圾桶开关

检测垃圾桶的满溢程度

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

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

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

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

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

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

识别控制

以下是舵机转动角度的函数,主要是改变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)

检测垃圾桶有没有满,距离检测主要用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解码     QUdpSocket udpSocket;     QByteArray byte;     QBuffer buff(&byte);         qImage.save(&buff, "JPEG", -1);     QByteArray base64Byte = byte.toBase64();     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://blog.csdn.net/weixin_53776127/article/details/125258823

--结束END--

本文标题: 智能垃圾分类垃圾桶(K210+stm32mp157)

本文链接: https://www.lsjlt.com/news/393071.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 智能垃圾分类垃圾桶(K210+stm32mp157)
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 有需要源码参考的可以点赞在评论区留邮箱 K210识别垃圾 k210识别2 文章目录 前言一、垃圾分类识别+舵机控制(K210)二、语音控制(K...
    99+
    2023-09-04
    分类 stm32 arm
  • 破解垃圾分类难题,智能分类如何实现最优解?
    如果看过郝景芳获得雨果奖的《北京折叠》,你一定会对小说中“第三空间”的设定印象深刻。在一个按照48小时进行循环折叠的城市系统中,第一空间享有完整的24小时时间,而第二、第三空间共享翻转后的24小时,只不过第三空间只能分到从深夜到黎明仅有的8...
    99+
    2023-06-05
  • JVM类加载,垃圾回收
    目录类加载子系统双亲委派模型垃圾回收判断对象已死JDK1.2之后的四种引用类型:1.强引用:2.软引用:3.弱引用:4.虚引用:常见的垃圾回收算法:1.标记–清除算法:(Mark–S...
    99+
    2024-04-02
  • 怎么用python编写垃圾分类系统
    编写垃圾分类系统可以利用Python的图像识别和机器学习库,以下是一个简单的实现思路:1. 数据收集:收集垃圾分类的图像数据集,包括...
    99+
    2023-10-08
    python
  • C++11中的智能指针和垃圾回收使用
    在C/C++中,我们需要自己管理动态内存区,我们在写代码中可能会出现如下3中内存管理的缺陷 野指针:内存单元已经释放,但是指向它的指针还在使用重复释放:试图是释放已经释放过的内存单元...
    99+
    2023-02-02
    C++11 智能指针和垃圾回收 C++11 智能指针 C++11 垃圾回收
  • 怎么使用Python轻松完成垃圾分类
    本篇内容介绍了“怎么使用Python轻松完成垃圾分类”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!思路这问题的解决思路或许不止一条。这里只是...
    99+
    2023-06-02
  • JavaGC垃圾回收算法分析
    目录对象探活强-软-弱-虚引用标记清除标记复制标记整理回收算法的在堆内存上的应用对象探活 在讨论回收算法前,更为重要的问题是如何判断一个对象是否可以被回收? 引用计数算法 每个对象会...
    99+
    2022-12-20
    Java GC垃圾回收 Java GC回收算法
  • 基于springboot+vue实现垃圾分类管理系统
    本文实例为大家分享了springboot+vue实现垃圾分类管理系统的具体代码,供大家参考,具体内容如下 一、项目概述 1.项目内容 本项目利用IDEA,Visual Studio ...
    99+
    2024-04-02
  • 分析PHP的垃圾回收机制
    如果用过C语言,那么申请内存的方式是malloc或者是calloc,然后你用完这个内存后,一定不要忘了用free函数去释放掉,这就是传说中手动垃圾回收,一般都是扫地神僧用这种方式。很...
    99+
    2024-04-02
  • 阿里云Windows服务器垃圾桶问及解决方法
    在使用阿里云Windows服务器时,有时会遇到只能看到垃圾桶的问题,而无法正常登录服务器的情况。本文将介绍这个问题的原因,并提供一些解决方法。详细说明:1. 垃圾桶问题的原因当你只能看到垃圾桶时,可能是因为你的账号已经被禁用了。阿里云服务...
    99+
    2024-01-01
    阿里 解决方法 垃圾桶
  • 分析python垃圾回收机制原理
    目录引用计数引用计数案例导致引用计数 +1 的情况导致引用计数-1 的情况循环引用导致内存泄露分代回收垃圾回收gc 模块常用函数:引用计数 Python 语言默认采用的垃圾...
    99+
    2024-04-02
  • Java垃圾回收的示例分析
    这篇文章将为大家详细讲解有关Java垃圾回收的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Java垃圾回收是一项自动化的过程,用来管理程序所使用的运行时内存。通过这一自动化过程,JVM解除了程序...
    99+
    2023-05-30
    java
  • Django的基本运用之Django垃圾分类详解
    title: 利用Django实现一个能与用户交互的初级框架 author: Sun-Wind date: September 1, 2021 Django实现基本的框架 ...
    99+
    2024-04-02
  • Python垃圾邮件的逻辑回归分类示例分析
    这篇文章主要介绍“Python垃圾邮件的逻辑回归分类示例分析”,在日常操作中,相信很多人在Python垃圾邮件的逻辑回归分类示例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python垃圾邮件的逻辑回归...
    99+
    2023-06-21
  • 怎么用springboot+vue实现垃圾分类管理系统
    这篇文章主要介绍“怎么用springboot+vue实现垃圾分类管理系统”,在日常操作中,相信很多人在怎么用springboot+vue实现垃圾分类管理系统问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用...
    99+
    2023-06-20
  • Python垃圾回收及Linux Fork实例分析
    这篇文章主要介绍了Python垃圾回收及Linux Fork实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python垃圾回收及Linux Fork实例分析文章都会有所收获,下面我们...
    99+
    2023-06-26
  • PHP垃圾回收机制原理分析
    这篇文章主要介绍了PHP垃圾回收机制原理分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。PHP垃圾回收机制1、每一个变量定义时都保存在一个...
    99+
    2024-04-02
  • 怎么提高.NET垃圾回收性能
    本篇内容介绍了“怎么提高.NET垃圾回收性能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!对于GC垃圾回收,很多人不会陌生。我们这里讲的是提...
    99+
    2023-06-17
  • Linux下垃圾文件的示例分析
    这篇文章主要介绍Linux下垃圾文件的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Linux 计算机安装后,在我们不断的使用过程中,因为添加、删除软件和上网冲浪、调试程序等行为,硬盘中会产生各种各...
    99+
    2023-06-12
  • 基于Tkinter实现一个垃圾分类答题软件
    🤵‍♂️ 个人主页:@艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬...
    99+
    2023-08-31
    python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作