基于语音控制的居民小区智能分类垃圾桶设计(单片机、C语言、高质量、STM32)

发布时间:2025-03-03 19:06

智能垃圾桶,识别并分类垃圾,提高垃圾分类效率 #生活技巧# #健康生活小窍门# #居家生活建议# #智能生活设备推荐#

基于STM32单片机的智能分类垃圾桶设计

摘  要

最近几年,随着当前我国的经济不断发展,人们的生活垃圾也越来越多。智能分类垃圾桶的设计,在一定程度上可以减轻环卫工人的工作量及其环卫工作管理需要花费的财力和物力。

此次设计的垃圾桶采用STM32单片机作为此次设计的主控芯片,通过4个舵机分别带动对应的垃圾桶盖,然后配合红外对射管对垃圾桶量的检测,当监测到垃圾桶满,红色指示灯点亮,反之绿色指示灯点亮,监测到垃圾桶垃圾装满时,通过WiFi模块及时将垃圾桶的信息传输到环卫管理工作人员的手机上,用户可以通过语音对各种垃圾进行识别,并打开对应的垃圾桶盖子。此次设计通过对实物的硬件和软件进行设计,最终对实现的功能和性能进行测试,使其可以具有较高的稳定性和可靠性。

关键词:垃圾桶;WiFi模块;STM32;语音播报;舵机


Intelligent Garbage can based on SCM

Abstract

 In recent years, with the continuous development of China's economy, people's household waste has also increased. The design of intelligent sorting garbage bins can to some extent reduce the workload of sanitation workers and the financial and material resources required for sanitation work management.

The garbage bin in this design uses the STM32 microcontroller as the main control chip. Four servo motors drive the corresponding garbage bin covers, and then cooperate with infrared radiation tubes to detect the amount of garbage bin. When the garbage bin is detected to be full, the red indicator light will light up, and vice versa, the green indicator light will light up. When the garbage bin is detected to be full, the information of the garbage bin will be promptly transmitted to the mobile phones of environmental sanitation management personnel through the WiFi module, Users can recognize various types of garbage through voice and open the corresponding trash can lid. This design involves designing the physical hardware and software, and ultimately testing the functionality and performance of the implementation to ensure high stability and reliability.

Key words: trash can; WiFi module; STM32; Voice broadcasting; steering engine


目录

摘  要

Abstract

1绪论

1.1  选题背景及实际意义

1.2  国内外研究现状

1.3  安全与环保问题分析:

1.4  本论文研究目标与框架

2  系统设计方案

2.1  整体设计方案

2.2  主要元器件选择

2.2.1 主控芯片选择

2.2.2 电机模块方案选择

2.1.3 电源方案的选择

3  硬件设计

3.1  主控模块电路

3.2  红外对管模块电路

3.3  语音识别模块电路

3.4  WiFi模块电路

3.5  舵机模块电路

3.6  按键指示灯模块电路

4  系统程序设计

4.1  编程软件介绍

4.2  系统主流程设计

4.3  舵机模块子流通

4.4  WiFi模块子流程设计

5  实物测试

5.1  整体实物测试

5.2  语音识别控制垃圾桶实物测试

5.3  垃圾桶状态实物测试

6 结论与展望

6.1总结

6.2 安全与环保问题分析

6.3技术经济与成本分析

6.4 展望

参考文献

附录A:原理图

附录B:PCB

附录C:主程序

致谢

1绪论

1.1  选题背景及实际意义

当前随着我国经济的不断发展,人们的生活水平大幅度提高,人们对资源的大量消耗,也导致我给国当前城市生活中的垃圾也不断增加,当前我国对垃圾的可回收利用和持续发展重视程度越来越高。

对当前垃圾的处理是每个人的责任。处理好垃圾问题,不仅仅造福我们自己,也会造福我们的后代。中国作为世界第一大国,对垃圾处理的结果好坏,对我国及其全球都具有较大的影响[1]。当前对垃圾的处理,只有我们每个人都从自己做起,才能从源头解决这个问题。垃圾桶作为当前人们生活必不可少的生活用户产品,也作为当前关注度较高的一种工具。

垃圾桶从之前的简易的垃圾桶,最开始就是一些在户外进行使用的垃圾桶,然后进步到一些较为简易的垃圾桶,后来发展的一些脚踏垃圾桶到当前的一些可进行分类的垃圾桶,通过垃圾桶的不断改进,从中也可以看出当前我国社会在不断进步,也是人类文明的一种象征。最开始的垃圾桶,主要在垃圾桶的外观上进行设计,虽然造型较多,但是这些垃圾桶的功能较为简单,只是用来盛放用户丢弃的物品,对垃圾的识别率较低[2]。且传统的垃圾桶需要环卫工人定时进行检测,然后对其进行搬运,但是对垃圾桶的具体量不好把控,不但会造成垃圾运输不及时,垃圾桶满的没有及时运送,而对垃圾桶没满的进行处理,垃圾桶垃圾较多,没有及时进行处理,使得垃圾桶周围经,常出现刺鼻气体及其较多的蚊虫[3]。且进行垃圾处理的过程也较为复杂。此次设计为了解决当前垃圾桶处理速度低,设计一款成本低,可进行垃圾分类,及其及时将垃圾桶的消息发送到管理员手机中智能垃圾桶。使得垃圾可以回收利用,处理及时提高人们的生活环境。

1.2  国内外研究现状

当前国内的垃圾桶和国外的垃圾桶技术相比较,国内的垃圾桶智能化程度较低,且垃圾桶的发展和国家的经济及其国家当前的发展水平及其当前人们的素质等有很大的关系。当前我国设计的垃圾桶,虽然价格较为低廉,操控较为简单,但是存在质量较差很容易被损毁[4],且功能较为单一等缺点,虽然当前也存在一些较为智能的垃圾桶,如采用人体红外设计的垃圾桶,通过采用红外对管或者采用超声波检测是否有人,检测到有人,垃圾桶自动打开垃圾桶盖,等到用户放完垃圾桶后,会自动关闭垃圾桶,通过这种方式设计的垃圾桶,可以解决当前人为打开垃圾桶或者脚踩式打开垃圾桶带来的麻烦,可以减少人们触碰到垃圾、减少细菌的感染,这种垃圾桶也是当前使用较多的一款垃圾桶,一经发现就被广泛进行使用。

到2006年的时候,在美国设计了一款太阳能垃圾桶,采用太阳能设计的垃圾桶或者一些作为商业使用的垃圾桶。太阳能表面采用太阳能板进行设计,然后将检测的太阳能转换为电能进行存储[5],在因与天或者在夜晚时给系统进行供电,并且将太阳能点亮路灯,作为夜晚的路灯使用,或者垃圾桶的外面贴放一些广告牌,作为城市的宣传栏使用。

我国当前也设计了使用太阳那作为动能,然后对垃圾进行自动压缩处理,减少垃圾的体积。如我国的汇丰设计的垃圾桶,可以将当前的垃圾桶进行压缩,使得垃圾可以减少到原来的1/8[6],这款太阳能垃圾桶在没有用户仍垃圾的区间,其具有较好的封闭性,使得垃圾向周围发散的气味较小,但是这种设计主要利用在太阳光较为充足的地方。

商业广告垃圾桶,采用垃圾桶作为广告栏,采用这种垃圾桶虽然可以对商业的推广起到一定的作用,也会当前的经济起到一定的促进作用,也可以给行人提供热点或者充电口,但是这种设计其布线较为麻烦,其推广度较小,只适宜用在一些商业中。

1.3  安全与环保问题分析:

随着科技的发展,智能垃圾通也逐渐得到了普片应用。在我国,智能产业得到快速的发展,自动分类垃圾作为影响环保问题的重要因素,随着市场的发展壮大,智能垃圾桶也在被在市场上得到细分。经过研究发现,目前的市场上智能垃圾桶具有很好的发展优势。

在各大发展城市中,很多环保企业通过回收可回收利用垃圾作为经济收益,从而,智能分类垃圾通也在市场中的到更加广泛的应用。当在相应的范围内感应到有物体接近,通过语音识别模块,识别各类垃圾,并打开相对应的垃圾桶盖,将不同种类的垃圾进行分类处理,避免了有的垃圾在一起发生化学反应带来危害,且自动关闭或打开垃圾桶盖不需要人们近距离接触垃圾桶,解决了卫生感染带来的隐患,有效的防止了交叉感染带来的问题。通过红外对射管监测垃圾是否装满,没有装满就亮绿灯,装满了就亮红灯,装满后还可以通过WIFI发送提示信息到管理员处,管理员通过收到消息进行及时的处理,避免了垃圾堆积过多溢出垃圾桶,减少了蚊虫、难闻的味道给人们带来困扰,减少了对空气质量的污染,也美化了环境。智能分类垃圾桶给不仅给人们的生活带来了方便,还起到了节约资源的作用,所以智能分类垃圾桶具有安全和环保的性能。

1.4  本论文研究目标与框架

此次设计一款结构较为简单,可以自动控制垃圾桶盖的开关,可以检测垃圾桶是否装满,当检测到垃圾桶装满的情况时,垃圾桶的指示灯变红,且及时通过短信发送给环卫工人进行处理,减少环卫工人定期进行检测但是效率低的问题,用户可以语音控制不同垃圾桶盖的打开。

此次设计主要实现以下功能。

(1)通过4个舵机分别带动对应的垃圾桶盖(可回收垃圾、厨余垃圾、有害垃圾、其他垃圾)

    (2)通过语音识别模块,识别各垃圾,并自动打开对应垃圾桶盖

    (3)通过按键可手动打开垃圾桶盖

    (4)通过红外对管检测垃圾是否装满,没满则亮绿灯,满了则亮红灯,装满则通过WIFI将提示信息发送到管理员手机上

(5)手机端APP可控制垃圾桶打开和关闭

此次设计框架结构:

第一章:绪论,针对此次设计的垃圾桶,对当前垃圾桶的研究背景及其意义进行了解,对当前垃圾桶的背景和研究意义进行了解,分析当前国内和国外研究现状进行分析,得出此次设计需要实现的功能。

第二章:系统方案设计,根据第一章对此次系统功能的设计,然后进行主要器件的选型,最后根据此次选择的主要器件对此次功能的系统框图进行绘制。

第三章:硬件电路,根据第二章方案设计进行此次设计原理图的绘制,然后对主要模块在此次设计中的功能及其工作原理进行详细介绍。

第四章:软件设计,通过KEIL5进行程序的撰写,然后对此次设计的程序进行流程图的绘制。

第五章:实物测试,对此次设计的实物进行焊接,然后对实物和代码进行综合调试,使得最终得此次设计的需求。


2  系统设计方案

2.1  整体设计方案

本设计以单片机为核心控制器,加上其他模块一起组成此次设计的整个系统,其中包括中控部分、输入部分和输出部分。中控部分采用了单片机控制器,其主要作用是获取输入部分的数据,经过内部处理,逻辑判断,最终控制输出部分。输入由四部分组成,第一部分是红外避障检测模块,通过该模块检测垃圾是否装满;第二部分是语音识别检测模块,该模块通过语音识别模块,识别各垃圾,并自动打开对应垃圾桶盖;第三部分是分离式红外开关模块,通过红外对管检测垃圾是否装满,没满则亮绿灯,满了则亮红灯,装满则通过WIFI将提示信息发送到管理员手机上;第四部分是供电模块,通过该模块可给整个系统进行供电。输出由一部分组成,第一部分是舵机模块,该模块通过4个舵机分别带动对应的垃圾桶盖(可回收垃圾、厨余垃圾、有害垃圾、其他垃圾)。除此之外,WIFI模块既作为输入又作为输出,WIFI模块和手机进行连接,可以将监测的数据传输到用户手机端,用户也可以通过手机端发送指令控制继电器的工作及其模式的切换。具体系统框图如图2.1所示。

图2.1 系统框图

2.2  主要元器件选择

2.2.1 主控芯片选择

方案一:选择STM32单片机,选择STM32单片机作为此次智能垃圾桶的主控芯片,使用STM32具有很多的优点:该模块可供用户使用的串口较多,可支持无线通信等功能,且该单片机的运行速度较快,使得该设计灵敏度更高。

方案二:采用STC89C52单片机,选择这款单片机具有的优点:这款单片机结构较为简单,可供用户使用的输入输出口较多,具有8K的闪存。

使用方案一会使得此次设计更加的灵敏、运行速度更快,且此次设计需要使用两个串口,使用STC89C52单片机不能实现此次设计的功能需求,[7]所以最后选择采用STM32单片机。

2.2.2 电机模块方案选择

方案一:采用步进作为此次设计的电机驱动方式,使用步进电机,可以通过单片机产生不同的PWM脉冲控制步进电机转动的角度,实现用户的不同需求,且控制方式较为简单。

方案二:使用舵机作为此次设计的电机驱动方式,使用舵机也可以实现不同角度进行控制,且使用舵机进行控制速度较快。

虽然使用步进电机和舵机都可以实现此次设计,但是使用步进电机进行控制其驱动能力小,且转速也较慢,使用舵机进行控制,其控制速度较快,因此选择方案二。

2.1.3 电源方案的选择

开关电源计划的选择与所有系统软件的可靠性直接相关。选择必要性是显而易见的。提前准备2个计划。现在通过如下证明这两个计划,最后确定相对好的计划。

方案1:选择12V插入式开关电源,再加上用于降低电压的集成IC的开关电源,使得最后得到我们此次需要的稳定的5V电源,而且从下图可以发现,该设计方案相对简单,但是该设计现在主要面临一个不好解决的问题,就是该电源的设计存在散热的问题,这个问题可能会使得我们的设备功能受到很多的影响使得我们最后的成品效果达不到我们之前的设计预期[8]。

方案2:使用5V开关电源直接驱动。可以选择一个电源适配器来提供稳定的5V。然后再在开关接口上接点解电容,如下图所示的接法,该目的是滤除那些有干扰的波形和没有用的波形。使得我们最后电路的稳定性可以更好,第二种方案使每个人都拥有一个相对稳定的电源电路,因此在成本以及稳定性方面来说采用第二种方案。


5.1  整体实物测试

此次设计的垃圾桶,实物焊接如图5.1所示,通过实物可以看出此次设计的垃圾桶实物包括[14]:STM32单片机及其组成的最小系统、4对分离式红外对管、4各舵机、WiFi模块、指示灯模块、语音识别模块以及电源模块等构成。

图5.1 整体实物测试图

5.2  语音识别控制垃圾桶实物测试

实物焊接完成之后,进行程序的烧录,上电运行实物测试如图5.2所示;通过分离式红外对管检测当前垃圾桶内垃圾的状态,当检测到用户语音控制可回收垃圾信息时,通过舵机旋转启动打开对应的垃圾桶,当语音播报“报纸”,系统控制“可回收垃圾桶已打开”,实物测试如图5.3所示,用户也可以通过手机远程控制打开垃圾桶。


6 结论与展望

6.1总结

此次设计的基于单片机的智能垃圾桶,主要解决当前垃圾桶监测主要使用较为传统的方式:环卫工人定期进行监测,工作量大,浪费很多的人力和物力。此次设计一款一款垃圾桶,可以实时监测垃圾桶是否满,垃圾桶没满的情况下,自动控制垃圾桶的打开,当检测到垃圾桶满的情况下,发送垃圾桶已经满的消息给环卫工人。此次设计可以解决当前垃圾桶满,环卫工人无法及时进行处理的问题,用户扔垃圾需要手动打开垃圾桶的问题,用户可以通过按键或者语音识别控制垃圾桶的打开。

由于时间和当前自己知识的问题,此次设计还存在很多的缺点:此次设计的外观等没有进行设计,对此次设计的电源获取的设计也可以进行研究,未来人们可以使用太阳能进行此次设计的研究。还可以对垃圾桶的外观的辅助功能进行设计,并可以实现对垃圾的自动分类。

6.2 安全与环保问题分析

当前社会的发展,更多人选者使用智能垃圾桶,这样更加方便、安全。合格的智能垃圾桶具有稳定性能、使用寿命也比较长,使用起来方便、操作简单、灵活方便等特点,通过语音唤醒无需手动或者脚踩,就能轻松丢垃圾,从而帮助使用者有效预防接触性感染,而且造型新颖,设计感强烈,可以增加家居装修的特色。

当前垃圾桶的造型多样化,但是很多并没有起到环保、节能的作用。此次设计的智能垃圾通设计精密、环保卫生、节能低耗,当装满垃圾时就不会打开垃圾桶盖,会自动进行报警,发送消息给管理员进行相应的处理,不会造成垃圾溢出来,滋生蚊虫而污染环境,而且自动打开垃圾通盖人离开就关闭,将垃圾进行分类,有的可以回收再利用,这样就节约了能越,使废物得到在此利用。

6.3技术经济与成本分析

当前趋势下,将垃圾进行分类,技术也在不端的提升,将垃圾分类,设置分类垃圾通,将其分为可回收、不可回收、有毒等;这样方便管理,当垃圾达到一定量时就进行处理,不会对垃圾桶造成挤压而瘫痪,延长了垃圾桶的使用寿命,通过对不同的垃圾分类处理,使废物达到适宜的回收循环利用,这样在技术经济方面得到了提升,同时也节约了成本。

从成本角度,谈谈前分类和后分类。

前分类的成本,对于居民来说,有垃圾桶或垃圾袋、垃圾分类处理的时间、生活便利程度。可重复利用的垃圾桶属于一次性投入,可忽略不计;关于垃圾袋的使用可能是一个问题,我们必须提倡使用可多次利用的垃圾桶,否则塑料垃圾袋的使用数量反而增加了,会产生更多的塑料垃圾。垃圾分类的时间,每个人都需要一些时间来做,尤其是刚开始的时候。

另外,有些小区规定要按时间投放垃圾,因为需要有人看管垃圾扔得对不对,但看管的人不是一天中的每个时间都在。这个方式方法给人们生活带来很多不便,按时投放垃圾,对垃圾桶的承载能力提出了非常高的要求。还有个问题,其他时间,看管的人不在,垃圾桶锁着,人们拿着垃圾出来,桶锁着,看管的人不在,大部分就放在桶旁了,后面还需要有人处理,而且还影响小区环境卫生。笔者认为按时扔垃圾这个情况,需要改进。

后分类的成本有集中垃圾分类从业者、垃圾分类处理设备、垃圾分类处理空间。居民垃圾分类后,集中垃圾分类从业者可以从垃圾处理厂到社区监督垃圾投放,换个地方、换个方式工作,没什么影响,当然也可以从事其他相关工作,问题不大。垃圾分类处理设备,如果居民垃圾分类做得好,这种机器的作用可能就不大了。土地,市场化运作即可,基本生产要素应该可以充分利用。

从经济发展和技术进步的角度看,前分类促进的是为居民提供垃圾分类的产品或服务,比如智能垃圾桶、提供垃圾分类服务的人;后分类促进的是垃圾分类和垃圾处理设备的更新与创新,因为是规模化处理,其有效性要高一些。需求决定市场,后分类的技术需求一直存在,需要保持,因为后分类处理技术的提升是根本,有希望大幅度提高城市运营管理水平和居民生活质量;前分类的技术需求和市场需求是增量,对于经济发展很有帮助。

无论垃圾是前分类还是后分类,总归要分类,需要综合考虑环境治理、经济发展、技术进步和生活便利等多方面因素。笔者认为,居民垃圾分类是一个渐进的过程,习惯不是一天养成,一蹴而就难度大。同时,还要意识到,对于垃圾处理这个问题,不仅要分类,而且还要注意链条的两端减少垃圾的产生,提高垃圾处理效率。

6.4 展望

此次设计的智能垃圾桶通过对各类元器件的选择对比,进行焊接测试得出结论,它具有安全环保、节能的特性,在以后大垃圾桶设计领域中具有有一定的参考价值,同时,希望以后的设计发展中具有更加智能的垃圾桶,一种拥有隐藏功能的垃圾桶,通过一层来装垃圾,里面装有净化器可以自己处理,可以用来当肥料给庄稼作物施肥;可以通过对垃圾的处理存储能量转化为电,在夜晚的时候释放出光,这样,人们就拥有了一个美好的生活环境。


参考文献

于雯,王艳,张佳佳,陈思思.多功能智能垃圾桶结构设计和功能实现[J].工业仪表与自动化装置,2022(01):117-120.DOI:10.19950/j.cnki.cn61-1121/th.2022.01.024.魏洁锋,黄志芳,陈德鹏,姚凯茵.基于声纹识别及远程控制的分类垃圾桶[J].物联网技术,2022,12(02):91-94.DOI:10.16667/j.issn.2095-1302.2022.02.025.祝朝坤,陈记文.基于目标检测的智能垃圾分类垃圾桶的设计[J].电子产品世界,2022,29(02):26-29.李琳,胡方圆,邹青龙,刘淑妍,邹欣.基于STM32的校园内智能垃圾桶测满系统[J].黑龙江科学,2022,13(02):44-45.王菊萍,李建红.一种医院专用医疗垃圾桶的设计与应用[J].护理与康复,2022,21(01):101-102.贺连升,周扬理,于新畅,牛子夫,赵一林.基于语音识别的智能垃圾桶设计与实现[J].机电工程技术,2022,51(01):122-125.李斐,陈芃均,侯丽萍.智能分类垃圾桶[J].电子世界,2022(01):191-192.DOI:10.19353/j.cnki.dzsj.2022.01.089.胡振山,江振青,吕海燕.基于GSM的垃圾桶溢出报警系统设计[J].物联网技术,2022,12(01):4-6.DOI:10.16667/j.issn.2095-1302.2022.01.001.吴伟烈,刘如军.便于智能化管理的公共垃圾桶的设计与实现[J].物联网技术,2022,12(01):67-69.DOI:10.16667/j.issn.2095-1302.2022.01.020.潘仲勋,葛宇童,董京伟,牛爽,刘振晔.基于深度学习的智能垃圾桶设计[J].科技与创新,2022(01):66-68.DOI:10.15913/j.cnki.kjycx.2022.01.021.徐云平.基于语音识别的智能分类垃圾桶[J].电子测试,2022(01):23-25.DOI:10.16520/j.cnki.1000-8519.2022.01.005.徐瑞超,线晨,胡艳凯,田雨露,郭乐乐.基于多传感器的智能垃圾桶[J].装备机械,2021(04):42-44.Pradeep Rathore,Sarada Prasad Sarmah,Arti Singh. Location–allocation of bins in urban solid waste management: a case study of Bilaspur city, India[J]. Environment, Development and Sustainability,2020,22(4):Chandni Joshi,Shelby Browning,Jeffrey Seay. Combating plastic waste via Trash to Tank[J]. Nature Reviews Earth & Environment,2020,1(3):Environmental Research; Investigators from Chinese Academy of Sciences Target Environmental Research (Effect of Source-classified and Mixed Collection From Residential Household Waste Bins On the Emission Characteristics of Volatile Organic Compounds)[J]. Ecology, Environment & Conservation,2020:

附录A:原理图


附录B:PCB

附录C:主程序

/**********************************

包含头文件

**********************************/

#include "sys.h"

#include "stdio.h"

#include "string.h"

#include "delay.h"

#include "gpio.h"

#include "key.h"

#include "usart.h"

#include "aliyun.h"

#include "esp8266.h"

#include "MqttKit.h"

#include "timer.h"

/**********************************

变量定义

**********************************/

uint8_t key_num = 0; //按键扫描标志位

uint32_t time_num = 0; //10ms计时

_Bool flag_duoji_1 = 0; //可回收垃圾桶标志位

_Bool flag_send_1 = 0; //可回收垃圾桶发送标志位

_Bool flag_IR_1 = 0; //可回收垃圾桶红外触发标志位

extern uint16_t pwm_duoji_1; //可回收垃圾桶舵机pwm值

extern _Bool flag_time_duoji_1_begin; //可回收垃圾桶开盖计时开始标志位

extern _Bool flag_time_duoji_1_end; //可回收垃圾桶开盖计时结束标志位

_Bool flag_duoji_2 = 0; //厨余垃圾桶标志位

_Bool flag_send_2 = 0; //厨余垃圾桶发送标志位

_Bool flag_IR_2 = 0; //厨余垃圾桶红外触发标志位

extern uint16_t pwm_duoji_2; //厨余垃圾桶舵机pwm值

extern _Bool flag_time_duoji_2_begin; //厨余垃圾桶开盖计时开始标志位

extern _Bool flag_time_duoji_2_end; //厨余垃圾桶开盖计时结束标志位

_Bool flag_duoji_3 = 0; //有害垃圾桶标志位

_Bool flag_send_3 = 0; //有害垃圾桶发送标志位

_Bool flag_IR_3 = 0; //有害垃圾桶红外触发标志位

extern uint16_t pwm_duoji_3; //有害垃圾桶舵机pwm值

extern _Bool flag_time_duoji_3_begin; //有害垃圾桶开盖计时开始标志位

extern _Bool flag_time_duoji_3_end; //有害垃圾桶开盖计时结束标志位

_Bool flag_duoji_4 = 0; //其它垃圾桶标志位

_Bool flag_send_4 = 0; //其它垃圾桶发送标志位

_Bool flag_IR_4 = 0; //其它垃圾桶红外触发标志位

extern uint16_t pwm_duoji_4; //其它垃圾桶舵机pwm值

extern _Bool flag_time_duoji_4_begin; //其它垃圾桶开盖计时开始标志位

extern _Bool flag_time_duoji_4_end; //其它垃圾桶开盖计时结束标志位

char send_data[512]; //发送数据数组

const char *topics_set[] = {"/sys/a1iVXLi0ogm/dz-155/thing/service/property/set"};    //需要订阅的主题,需要修改“a1iVXLi0ogm”及“dz-155”

const char topics_post[] = {"/sys/a1iVXLi0ogm/dz-155/thing/event/property/post"};     //需要发布的主题,需要修改“a1iVXLi0ogm”及“dz-155”

uint8_t *dataPtr = NULL; //设备返回的格式

uint8_t *receive_data = NULL; //下发的数据

char *result = NULL;   //结果

extern uint8_t usart1_buf[256]; //串口1接收数组

/**********************************

函数声明

**********************************/

void Key_function(void); //按键函数

void Monitor_function(void); //监测函数

void Manage_function(void); //处理函数

void Aliyun_Send_Data(char *message,char *value); //数据上报函数

/****

******* 主函数

*****/

int main(void)

{

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //配置中断优先分组

Delay_Init();        //延时初始化

Gpio_Init();    //IO初始化

Key_Init();    //按键初始化

Usart1_Init(9600); //串口1初始化

Usart2_Init(115200); //串口2初始化

TIM2_Init(9,719); //定时器2初始化

ESP8266_Init(); //初始化ESP8266

while(Aliyun_DevLink()) //接入阿里云

Delay_ms(500);

Aliyun_Subscribe(topics_set, 1); //订阅主题

while(1)

{

Key_function(); //按键函数

Monitor_function(); //监测函数

Manage_function(); //处理函数

time_num++; //计时变量+1

if(time_num % 10 == 0)

      LED_SYS = ~LED_SYS;

if(time_num >= 5000)

{

time_num = 0;

}

}

}

/****

*******按键函数

*****/

void Key_function(void)

{

key_num = Chiclet_Keyboard_Scan(0); //按键扫描

if(key_num != 0) //有按键按下

{

switch(key_num)

{

case 1: //按键1:打开可回收垃圾桶

if(LED1_R == 1)

{

pwm_duoji_1 = 15;

flag_time_duoji_1_begin = 1;

}

break;

case 2: //按键2:打开厨余垃圾桶

if(LED2_R == 1)

{

pwm_duoji_2 = 15;

flag_time_duoji_2_begin = 1;

}

break;

case 3: //按键3:打开有害垃圾桶

if(LED3_R == 1)

{

pwm_duoji_3 = 15;

flag_time_duoji_3_begin = 1;

}

break;

case 4: //按键4:打开其他垃圾桶

if(LED4_R == 1)

{

pwm_duoji_4 = 15;

flag_time_duoji_4_begin = 1;

}

break;

default:

break;

}

}

}

/****

*******监测函数

*****/

void Monitor_function(void)

{

if(USART1_WaitRecive() == 0) //如果收到数据

{

if(usart1_buf[0] == 0x01) //收到语音指令是“玻璃瓶|牙膏|旧玩具|旧鞋子|旧纸袋|纸盒|旧帽子|易拉罐|塑料瓶|铁锅|书籍|报纸|塑料篮子|可回收垃圾|打开可回收垃圾桶”,打开可回收垃圾桶

{

if(LED1_R == 1)

{

pwm_duoji_1 = 15;

flag_time_duoji_1_begin = 1;

}

}

else if(usart1_buf[0] == 0x02) //收到语音指令是“菜叶|剩菜|剩饭|果皮|蛋壳|茶渣|骨头|鱼刺|汤渣|饮料|纸巾|中药|药材|汤汁|面包|馒头|饼干|薯片|糖果|话梅|罐头|厨余垃圾|打开厨余垃圾桶”,打开厨余垃圾桶

{

if(LED2_R == 1)

{

pwm_duoji_2 = 15;

flag_time_duoji_2_begin = 1;

}

}

else if(usart1_buf[0] == 0x03) //收到语音指令是“发胶|酒精|过期药片|废旧电池|过期化妆品|荧光棒|农药瓶|蓄电池|水银温度计|煤气罐|消毒剂|油漆|杀虫剂|创可贴|注射器|有害垃圾|打开有害垃圾桶”,打开有害收垃圾桶

{

if(LED3_R == 1)

{

pwm_duoji_3 = 15;

flag_time_duoji_3_begin = 1;

}

}

else if(usart1_buf[0] == 0x04) //收到语音指令是“脏衣服|尿裤|陶瓷碗|砖块|海绵|卫生纸|盘子|篮球|烟蒂|渣土|坏马桶|花生壳|木制梳子|扫把|其它垃圾|打开其它垃圾桶”,打开其他垃圾桶

{

if(LED4_R == 1)

{

pwm_duoji_4 = 15;

flag_time_duoji_4_begin = 1;

}

}

USART1_Clear(); //清空缓存

}

dataPtr = ESP8266_GetIPD(0); //获取平台返回的数据

if(dataPtr != NULL)

{

Aliyun_RevPro(dataPtr); //平台返回数据检测

result = strstr((char *)receive_data, "DUOJI_1"); //判断是否为改变可回收垃圾桶状态

if(result != NULL)

{

result = strstr(result, ":") + 1;

flag_duoji_1 = atoi((const char *)result);

if(flag_duoji_1 == 0)

        pwm_duoji_1 = 5;

else

        pwm_duoji_1 = 15;

}

result = strstr((char *)receive_data, "DUOJI_2"); //判断是否为改变厨余垃圾桶状态

if(result != NULL)

{

result = strstr(result, ":") + 1;

flag_duoji_2 = atoi((const char *)result);

if(flag_duoji_2 == 0)

        pwm_duoji_2 = 5;

else

        pwm_duoji_2 = 15;

}

result = strstr((char *)receive_data, "DUOJI_3"); //判断是否为有害垃圾桶状态

if(result != NULL)

{

result = strstr(result, ":") + 1;

flag_duoji_3 = atoi((const char *)result);

if(flag_duoji_3 == 0)

        pwm_duoji_3 = 5;

else

        pwm_duoji_3 = 15;

}

result = strstr((char *)receive_data, "DUOJI_4"); //判断是否为其它垃圾桶状态

if(result != NULL)

{

result = strstr(result, ":") + 1;

flag_duoji_4 = atoi((const char *)result);

if(flag_duoji_4 == 0)

        pwm_duoji_4 = 5;

else

        pwm_duoji_4 = 15;

}

}

MQTT_FreeBuffer(receive_data); //释放内存

}

/****

*******处理函数

*****/

void Manage_function(void)

{

if(IR_1 == 1) //可回收垃圾桶装满,红灯亮,并通过WIFI发送"垃圾桶已满"

{

if(flag_IR_1 == 0)

{

Delay_ms(1000);

flag_IR_1 = 1;

}

if(IR_1 == 1)

{

LED1_G = 1;

LED1_R = 0;

if(flag_send_1 == 1)

{

Aliyun_Send_Data("message_1","\xe5\x9e\x83\xe5\x9c\xbe\xe6\xa1\xb6\xe5\xb7\xb2\xe6\xbb\xa1");

flag_send_1 = 0;

}

}

}

else //未装满,绿灯亮,并通过WIFI发送"正常"

{

LED1_G = 0;

LED1_R = 1;

flag_IR_1 = 0;

if(flag_send_1 == 0)

{

Aliyun_Send_Data("message_1","\xe6\xad\xa3\xe5\xb8\xb8");

flag_send_1 = 1;

}

}

if(IR_2 == 1) //厨余垃圾桶装满,红灯亮,并通过WIFI发送"垃圾桶已满"

{

if(flag_IR_2 == 0)

{

Delay_ms(1000);

flag_IR_2 = 1;

}

if(IR_2 == 1)

{

LED2_G = 1;

LED2_R = 0;

if(flag_send_2 == 1)

{

Aliyun_Send_Data("message_2","\xe5\x9e\x83\xe5\x9c\xbe\xe6\xa1\xb6\xe5\xb7\xb2\xe6\xbb\xa1");

flag_send_2 = 0;

}

}

}

else //未装满,绿灯亮,并通过WIFI发送"正常"

{

LED2_G = 0;

LED2_R = 1;

flag_IR_2 = 0;

if(flag_send_2 == 0)

{

Aliyun_Send_Data("message_2","\xe6\xad\xa3\xe5\xb8\xb8");

flag_send_2 = 1;

}

}

if(IR_3 == 1) //有害垃圾桶装满,红灯亮,并通过WIFI发送"垃圾桶已满"

{

if(flag_IR_3 == 0)

{

Delay_ms(1000);

flag_IR_3 = 1;

}

if(IR_3 == 1)

{

LED3_G = 1;

LED3_R = 0;

if(flag_send_3 == 1)

{

Aliyun_Send_Data("message_3","\xe5\x9e\x83\xe5\x9c\xbe\xe6\xa1\xb6\xe5\xb7\xb2\xe6\xbb\xa1");

flag_send_3 = 0;

}

}

}

else //未装满,绿灯亮,并通过WIFI发送"正常"

{

LED3_G = 0;

LED3_R = 1;

flag_IR_3 = 0;

if(flag_send_3 == 0)

{

Aliyun_Send_Data("message_3","\xe6\xad\xa3\xe5\xb8\xb8");

flag_send_3 = 1;

}

}

if(IR_4 == 1) //其它垃圾桶装满,红灯亮,并通过WIFI发送"垃圾桶已满"

{

if(flag_IR_4 == 0)

{

Delay_ms(1000);

flag_IR_4 = 1;

}

if(IR_4 == 1)

{

LED4_G = 1;

LED4_R = 0;

if(flag_send_4 == 1)

{

Aliyun_Send_Data("message_4","\xe5\x9e\x83\xe5\x9c\xbe\xe6\xa1\xb6\xe5\xb7\xb2\xe6\xbb\xa1");

flag_send_4 = 0;

}

}

}

else //未装满,绿灯亮,并通过WIFI发送"正常"

{

LED4_G = 0;

LED4_R = 1;

flag_IR_4 = 0;

if(flag_send_4 == 0)

{

Aliyun_Send_Data("message_4","\xe6\xad\xa3\xe5\xb8\xb8");

flag_send_4 = 1;

}

}

if(flag_time_duoji_1_end == 1) //3s后自动关闭可回收垃圾桶

{

pwm_duoji_1 = 5;

flag_time_duoji_1_begin = 0;

}

if(flag_time_duoji_2_end == 1) //3s后自动关闭厨余垃圾桶

{

pwm_duoji_2 = 5;

flag_time_duoji_2_begin = 0;

}

if(flag_time_duoji_3_end == 1) //3s后自动关闭有害垃圾桶

{

pwm_duoji_3 = 5;

flag_time_duoji_3_begin = 0;

}

if(flag_time_duoji_4_end == 1) //3s后自动关闭其它垃圾桶

{

pwm_duoji_4 = 5;

flag_time_duoji_4_begin = 0;

}

}

/****

*******数据上报函数

 数据更改时,将数据发布给服务器

*****/

void Aliyun_Send_Data(char *message,char *value)

{

sprintf(send_data,"{\"method\":\"thing/event/property/post\",\"id\":\"203302322\",\"params\":{\"%s\":'%s'},\"version\":\"1.0.0\"}",message,value);

Aliyun_Publish(topics_post, send_data);  //添加数据,发布给服务器

Delay_ms(500);

}


致谢

本论文是在指导教师的悉心指导下完成的。导师渊博的专业知识,严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师德,严以律己、宽以待人的崇高风范,朴实无华、平易近人的人格魅力对我影响深远。不仅使我树立了远大的学术目标、掌握了基本的研究方法,还使我明白了许多待人接物与为人处世的道理。本论文从选题到完成,每一步都是在导师的指导下完成的,倾注了导师大量的心血。在此,谨向导师表示崇高的敬意和衷心的感谢! 本论文的顺利完成,离不开各位老师、同学和朋友的关心和帮助。

他们循循善诱的教导和不拘一格的思路给予我无尽的启迪。本课题在选题及研究过程中得到老师的悉心指导。并为我指点迷津,帮助我开拓研究思路,精心点拨、热忱鼓励。老师一丝不苟的作风,严谨求实的态度,踏踏实实的精神,不仅授我以文,而且教我做人,虽历时四载,却给以终生受益无穷之道。对老师的感激之情是无法用言语表达的。 感谢老师等对我的教育培养。他们细心指导我的学习与研究,在此,我要向诸位老师深深地鞠上一躬,在论文完成之际,我的心情万分激动。从论文的选题、资料的收集到论文的撰写编排整个过程中,我得到了许多的热情帮助。并对我的研究提出了很多宝贵的意见,使我的研究工作有了目标和方向。在这近的时间里,他对我进行了悉心的指导和教育。使我能够不断地学习提高,而且这些课题的研究成果也成为了本论文的主要素材。同时,老师渊博的学识、严谨的治学态度也令我十分敬佩,是我以后学习和工作的榜样。还要再次感谢老师对我的关心和照顾,在此表示最诚挚的谢意。

网址:基于语音控制的居民小区智能分类垃圾桶设计(单片机、C语言、高质量、STM32) https://www.yuejiaxmz.com/news/view/805079

相关内容

基于STM32的智能语音垃圾桶
基于单片机的语音识别智能垃圾桶垃圾分类的设计与实现
基于STM32的智能垃圾分类系统设计
基于STM32的智能垃圾桶系统设计
基于单片机的智能垃圾桶设计(51基础版)
基于STM32的语音控制智能家居
基于STM32的语音控制智能家居系统设计
基于stm32的智能家居语音控制系统
【智能家居】感应垃圾桶DIY
【基于STM32单片机的智能家居 语音识别控制系统 语音互动 成品 DIY 系统设计(实物+程序+原理图+其他资料)】

随便看看