2023湖北工训大赛智能垃圾分类项目(可循环播放视频,显示垃圾分类信息,拍照识别,垃圾分类,满载报警,压缩)

一.  设计思路,灵感来源和使用说明

       设计思路来源于老师在立项之前叫我们查看相关的一篇文献(本文最后会给链接),由树莓派(一种微型电脑)为主控,arduino(一种单片机)为副控(我们当时都不知道这两个东西是什么,树莓派?是好吃的吗?),树莓派中装入先前训练好的模型(识别垃圾的模型,本文最后会给代码链接),写一个主代码在树莓派上运行,显示屏上可以播放指定路径的视频。

        1.从拍照到分类:当垃圾放在分类盒里,超声波传感器就会测出垃圾距离小于一定的值,从而触发连接在树莓派csi接口上的摄像头(值得注意的是,最好将树莓派断电后进行安装,俺就因为没断电烧坏了一个,具体看链接树莓派摄像头安装和使用)拍摄照片,等待模型处理好垃圾分类,会输出对应的垃圾名称(正确率大概只有百分之七十)。根据不同的名称会通过串口给arduino控制板输入不同的命令(如1,2,3,4分别对应别不同种类的垃圾),arduino会接受不同的命令从而给舵机不同的pwm信号,舵机会完成不一样的动作从而完成分类。

       2.显示图像和分类信息:这个也是在主代码中实现的,在没有拍照之前就会开始播放视频,模型分类成功后会显示分类信息

      3.满载和压缩:至于满载,我们原计划是在arduino上连上四套激光报警装置,满载后,由于垃圾挡住了激光,另一边的激光接收器接收不到激光,输出低电平使得蜂鸣器报警。但是在进行arduino编程的时候,我们不太懂代码,没有用多线程,而是将舵机控制代码和激光报警代码合并成了一个主代码,结果就成了舵机动一下,激光亮一下,蜂鸣器响一下这种毫无逻辑的运转。       后来,我们改用了用超声波测距报警,并且引用多线程的办法(具体使用链接arduino多线程使用链接)实现多个任务的同时进行。原理是距离小于一个值就触发蜂鸣器,并通过串口通信将满载信息传给树莓派的显示屏。    关于压缩,我们的想法是通过步进电机带动丝杠上的压缩板移动,垃圾在压缩板与可回收垃圾亚克力板壁(只要求压缩可回收垃圾)间被压缩。至于怎么触发压缩,我们设计的是可回收垃圾容器内的超声波报警(即满载)就能启动步进电机进行压缩。

二.硬件清单和连接

        老师给的预算是不多于2000,还有就是我们担心完成不了老师不给报销,所以我们都挑的便宜的买。

       清单:硬件主要有树莓派3B+及其内存卡,csi摄像头,七寸显示屏,arduino及其拓展板,亚克力板(拼多多上定制3mm厚的,感觉质量不太行)亚克力盒(用于制作分拣口),TD8120 270°舵机(家人们避坑,360度舵机会一直转,不能控制角度),sg90 180°舵机,舵机支架和设计的舵机臂,超声波传感器五个,蜂鸣器一个,杜邦线若干,两个锂电池电源(一个5伏,一个12伏),步进电机及其驱动器和丝杠,安卓数据线(不够长,比赛前临时又买了一个),arduino数据线(也是不够长,临时买了一个),升压电源稳压模块(原以为没啥用,后面连接步进电机派上了用场),usb拓展坞(电池的usb接口不够用,拿了自己电脑的拓展坞)

      连接:1.树莓派部分,树莓派和电源通过安卓数据线连接(没错,就是上面说的不够长的那个),usb口那端连电源。树莓派和显示屏通过HDMI线和专用的安卓数据线(买显示屏送的,和普通的安卓线不太一样,usb接口段连树莓派)连接。摄像头连接上面说过了就不说了,还有树莓派上的超声波传感器连接,找图片中.........

        

我们代码写的是

# 超声波引脚配置
TRIG_PIN = 23
ECHO_PIN = 24

即trig口连树莓派上的BCM23(物理引脚16,即图上右边那列从上往下数第八个),echo口同理,超声波另外两根线vcc和gnd接哪个都行。

              2.arduino部分,这会是一个大工程。如图,舵机部分,舵机1连arduino拓展板的11接口(白线是信号线s),舵机二连20接口(黄色是信号线s)。超声波部分,四个超声波的T口和E口分别连2 3 4 5 6 7 8 9。蜂鸣器连10口,步进电机ena dir pul+分别连41 42 45的信号线,ena dir pul-分别连41 42 45的接地线。另外,由于耗电较大,DC口可以连12伏的电源。

int servo1Pin = 11;
int servo2Pin = 20;

int servo1Angle = 0;
int servo2Angle = 0;

int trigPin = 2; // 超声波测距模块的触发引脚
int echoPin = 3; // 超声波测距模块的接收引脚
int trigPin1 = 4; // 超声波传感器1的触发引脚
int echoPin1 = 5; // 超声波传感器1的接收引脚
int trigPin2 = 6; // 超声波传感器2的触发引脚
int echoPin2 = 7; // 超声波传感器2的接收引脚
int trigPin3 = 8; // 超声波传感器3的触发引脚
int echoPin3 = 9; // 超声波传感器3的接收引脚
int buzzerPin = 10; // 控制蜂鸣器的引脚

int distance = 100; // 存储测距值的变量
int distance1 = 100; // 存储测距值1的变量
int distance2 = 100; // 存储测距值2的变量
int distance3 = 100; // 存储测距值3的变量

#define ENA_PIN 41  // ENA 引脚
#define DIR_PIN 42  // DIR 引脚
#define PUL_PIN 45  // PUL 引脚
int stepsPerRevolution = 200;   // 步进电机每圈的步数
int totalSteps = 27 * stepsPerRevolution;   // 总共需要运动的步数

          3.树莓派和arduino连接,通过arduino数据线连接,usb接口端连树莓派。

          4.步进电机的连接,除了arduino连接提到的ena dir pul外,步进电机的vcc和gnd还要通过升压稳压模块与电源连接。

三·.代码和运行

      1.树莓派部分,训练的代码和训练好的模型会放在最后面,其中的predictpromax.py没有播放视频和显示垃圾信息功能。而vediotest.py有这个功能但是很卡,我们弄到发车前最后一刻也没解决这个问题。

      2.arduino部分,这个的代码(也在最后的链接里,叫sichaoshengbo)比较全面,一共有六个线程,能够符合预期地运转。

      3.如果想在别的树莓派或者电脑上运行代码,需要安装所需要的环境和库(这个一两句说不完,我就说些重要的),我的python版本是3.9.13,树莓派上的python也是3.9。树莓派用的是32位系统,64位系统不方便运行摄像头,树莓派上安装torch有一定困难,需要手动去官网找到压缩包(建议去谷歌网找)安装。

四.项目总结和链接

        说实话真挺难受的,搞了那么久,学了那么多东西,最后比赛的时候运行不了。一是电池确实有点问题,不知道是电压不够还是没电了;二是比赛那天队员之间闹了小矛盾,可能还是缺乏经验吧,那两天各种难受,好几次快哭出来。不过这个过程还挺好的,一个半月的忙忙碌碌,特别是最后一个礼拜四个人一起熬夜干活的时候(说起来435的泡面真好吃)。还有就是武汉理工发的券真好用,嘎嘎吃。最后感谢我的组员和老师,虽然俺是机械的,但是通过这次比赛学到了好多电信那边的东西,以后想用单片机做一些好玩的东西。差点忘了给链接了,下面是链接:

文献:https://share.weiyun.com/5geJy3sJ

代码:https://pan.baidu.com/s/1L9L_83naq9KRZjeMmdFhOg

  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
根据你的要求,以下是一个生活垃圾智能分类装置的设计方案: 1. 自动判别与分类: 装置采用传感与检测技术,通过图像识别算法或其他智能分类技术,对投放的垃圾进行自动判别和分类。在垃圾箱上部设计一个固定投入口,选手将垃圾通过投入口投入垃圾箱内,装置会自动判断垃圾的种类,并将其存放到正确的垃圾存放桶中。 2. 垃圾压缩机构: 对于可回收垃圾,装置配备垃圾压缩机构,在垃圾分类完成后,自动对可回收垃圾进行压缩处理。压缩动作完全自动完成,禁止人为干预。压缩处理时机不做限定,但必须在垃圾分类全部任务完成之前结束。 3. 高亮显示屏: 装置配备一块高亮显示屏,用于宣传和引导垃圾分类显示屏支持各种格式的视频和图片播放,并能够显示垃圾分类的各种数据,如投放顺序、垃圾名称、数量、任务完成提示、满载情况等。在待机状态时,显示循环播放由参赛队自主创作的“垃圾分类宣传视频”。 总结: 这个生活垃圾智能分类装置能够实现自动判别、分类和投放到相应的垃圾桶的功能。它还具备垃圾压缩满载报警以及播放自主设计制作的垃圾分类宣传片等功能。装置不允许采用任何交互手段与分类装置进行通信及控制,只能由装置自动完成所有任务。同时,装置配备高亮显示屏,用于宣传和引导垃圾分类。希望这个设计方案符合你的要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值