当前位置:   article > 正文

毕业设计 单片机语音识别分类智能垃圾桶(STM32 ESP8266 LD3320)_物联网基于stm32环保垃圾桶自动翻盖实现

物联网基于stm32环保垃圾桶自动翻盖实现

一、电路设计

离线语音识别识别垃圾种类并且垃圾桶自动翻盖:
说出唤醒词“垃圾桶”后,再说一句垃圾名称,语音识别模块端识别到相应关键词,便会将结果通过串口发送到STM32端,STM32端接着会发送打开相应垃圾桶盖的指令,6s后,垃圾桶盖自动关闭。其中翻盖功能是通过STM32端控制舵机实现。

语音播报功能:
STM32端若判断到有人说出唤醒词了,通过串口发送指令给语音播报模块,外放喇叭便会播报“你好”的音频,若判断到相应的垃圾种类,便会播报相应的垃圾种类音频。

APP/网页端远程控制垃圾桶:
STM32端通过串口连接WIFI模块esp8266-01s,接入Onenet云平台,实现联网功能,通过云端下达指令给设备,从而控制垃圾桶实现翻盖及控制继电器通断。

OLED屏显示信息: OLED屏可以显示作者的相关信息、及每次语音播报也会显示相应文字信息。

硬件组成

智能垃圾桶的开发板用到的是STM32F103C8T6最小系统板,各个模块间都是通过串口和主控进行通信。硬件电路上的连接画一个PCB接口板即可,所有模块都可以通过排针或排母直接插上去。由于用到了4个舵机,所以整个系统的供电系统需要用5V2A的电源适配器。所用到的各个模块材料清单如下图:

二、原理图

三、部分代码



    //单片机头文件
    #include "stm32f10x.h"
    #include "stm32f10x_gpio.h"
    #include "stm32f10x_rcc.h"
    //网络协议层
    #include "onenet.h"
    //网络设备
    #include "esp8266.h"
    //硬件驱动
    #include "delay.h"
    #include "usart.h"
    //C库
    #include 
    #include "PWM.h"
    #include "jidianqi.h"
    
    #include "YuYin.h"
    #include "MP3.h"
    #include "SysTick.h"
    #include "oled.h" 


    char T[5]={0,0,0};
    char H[5]={0,0,0};
    u16 temperature=0,humidity=0;
    char ret; 
    u8 hump_temp[10];


    unsigned short timeCount = 0;	//发送间隔变量
    
    unsigned char *dataPtr = NULL;
    
    short flag = 0;
    
    u8 Target1=0;
    u8 Target2=0;
    u8 Target3=0;
    u8 Target4=0;
    
    u8 all_staus = 0;
    
    u8 Open_JumpEdge=0;
    u8 WakeUp_Flag=0;


    /功能函数
    
    /*
    ************************************************************
    *	函数名称:	Hardware_Init
    *
    *	函数功能:	硬件初始化
    *
    *	入口参数:	无
    *
    *	返回参数:	无
    *
    *	说明:		初始化单片机功能以及外接设备
    ************************************************************
    */
    void Hardware_Init(void)
    {
    	
    		NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);	//中断控制器分组设置
    	
    		delay_init();									//systick初始化
    	  Usart3_Init(115200);				  //串口3,驱动ESP8266用
     		PWM_Init();                   //初始化PWM
    	  ESP8266_Init();					      //初始化ESP8266
    		LED_Config();									//初始化LED指示灯或者说是继电器
    		
    		YuYin_Init();									//语音识别初始化
    		MP3_Init();										//播放模块初始化
    		SysTick_Init();								//公共定时器初始化
    	
    		OLED_Init();									//OLED屏初始化


    }


    /*
    ************************************************************
    *	函数名称:	 Keep_Connet_Esp8266
    *
    *	函数功能:	不断上传数据,使之保持接入物联网平台
    *
    *	入口参数:	无
    *
    *	返回参数:	无
    *
    *	说明:		一旦停止数据上传,物联网平台会断开
    ************************************************************
    */
    void Keep_Connet_Esp8266 (void)
    {
    	
    			if(++timeCount >= 2000)									//发送间隔20s
    				{
    					OneNet_SendData();									//发送数据		
    					timeCount = 0;
    					ESP8266_Clear();
    				}
    				
    				dataPtr = ESP8266_GetIPD(0);
    				if(dataPtr != NULL)
    					OneNet_RevPro(dataPtr);
    				
    				delay_ms(10);
    				
    }


    /*
    ************************************************************
    *	函数名称:	main
    *
    *	函数功能:	
    *
    *	入口参数:	无
    *
    *	返回参数:	0
    *
    *	说明:		
    ***
    *********************************************************
    */
    int main(void)
    {


    	Hardware_Init();				//初始化外围硬件
    
    	while(OneNet_DevLink())			//接入OneNET
    		delay_ms(500);
    
    	OLED_CLS();
    	ShowSmartTrash();				//显示“智能垃圾桶”
    	Show_Author();					//显示“设计·作者名“
    	//ShowTemperature();			//显示”温湿度”
	

    	while(1)
    	{

    				Keep_Connet_Esp8266();
	

    				if(YuYin_RX_STA == 1)
    				{
    					if(MP3_State() == 0)
    					{
    						if(YuYin_RX_CMD==49 || YuYin_RX_CMD==50)
    						{
    							WakeUp_Flag = 1;
    							MP3_Star(5);
    						}
    						else if(WakeUp_Flag == 1)
    						{
    							WakeUp_Flag=0;
    							
    							if(YuYin_RX_CMD%4 == 1)
    							{
    								MP3_Star(1);
    								Target1 = 1;
    								Show_chiyu();
    							}
    							else if(YuYin_RX_CMD%4 == 2)
    							{
    								MP3_Star(2);
    								Target2 = 1;
    								Show_qita();
    							}
    							else if(YuYin_RX_CMD%4 == 3)
    							{
    								MP3_Star(3);
    								Target3 = 1;
    								Show_youhai();
    							}
    							else
    							{
    								MP3_Star(4);
    								Target4 = 1;
    								Show_kehuishou();
    							}
    						}
    					}
    					
    					YuYin_RX_STA = 0;
    				}
    		
    		if(SysTick_JumpEdge(&Open;_JumpEdge, &SysTickBit.Time1s;)==1)
    		{
    		  if(Target1 != 0)
    			{
    			  Target1++;
    				TIM_SetCompare1(TIM4,700);
    				if(Target1>6)
    				{					
    					TIM_SetCompare1(TIM4,500);					
    				  Target1 = 0;
    					ShowTrashNoPeople();
    				}					
    			}
    			if(Target2 != 0)
    			{
    				Target2++;
    				TIM_SetCompare2(TIM4,900);
    				if(Target2>6)
    				{
    					TIM_SetCompare2(TIM4,600);
    					ShowTrashNoPeople();
    					Target2 = 0;
    				}	
    			}	
    			if(Target3 != 0)
    			{
    				Target3++;
    				TIM_SetCompare4(TIM4,900);			//有害
    				if(Target3>6)
    				{
    					TIM_SetCompare4(TIM4,500);
    					ShowTrashNoPeople();
    					Target3 = 0;
    				}	
    			}
    			if(Target4 != 0)
    			{
    				Target4++;
    				TIM_SetCompare3(TIM4,900);			//可回收
    				if(Target4>6)
    				{
    					TIM_SetCompare3(TIM4,550);
    					ShowTrashNoPeople();
    					Target4 = 0;
    				}	
    			}
    		}
    		
    		switch( flag )
    		{
    			case 1 :GPIO_SetBits(GPIOA,GPIO_Pin_1); break;
    			case 2 :GPIO_ResetBits(GPIOA, GPIO_Pin_1); break; 
    			case 3 :TIM_SetCompare1(TIM4,700);break;
    			case 4 :TIM_SetCompare1(TIM4,500);break;
    			case 5 :TIM_SetCompare2(TIM4,900);break;
    			case 6 :TIM_SetCompare2(TIM4,600);break;
    			case 7 :TIM_SetCompare4(TIM4,900);break;
    			case 8 :TIM_SetCompare4(TIM4,500);break;
    			case 9 :TIM_SetCompare3(TIM4,900);break;
    			case 10:TIM_SetCompare3(TIM4,550);break;
    
    		}


    	}
    }


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 249
  • 250
  • 251
  • 252
  • 253
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262

项目获取:

https://gitee.com/feifei1122/simulation-project

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/560109
推荐阅读
相关标签
  

闽ICP备14008679号