2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 基于语音控制的智能家居系统设计(毕业设计初版)

基于语音控制的智能家居系统设计(毕业设计初版)

时间:2019-03-07 02:40:54

相关推荐

基于语音控制的智能家居系统设计(毕业设计初版)

基于语音控制的智能家居系统设计(毕业设计初版)

1、项目组成2、参考博客3、安卓APP工程(只贴主程序和主布局文件)3.1、MainActivity.java3.2、activity_main.xml 4、STM32单片机工程(只贴主函数)5、语音识别模块代码(只贴主函数)6、实物图及效果视频6.1、连接6.2、图6.3、效果展示视频

1、项目组成

1.上位机:安卓手机

2.下位机:STM32单片机(STM32F103C8T6)

3.外接模块:语音识别模块(LD3320),蓝牙模块(BLE CC2541)

4.开发软件:Android Studio 3.1.2,Keil uVision5,Keil uVision4

5.其他实物:LED灯泡2个,直流小电机1个,L298N驱动模块1个,面包板1块,面包板供电模块1个,杜邦线若干

6.下载链接:/download/qq_40093925/11020346

2、参考博客

安卓手机与蓝牙模块联合调试

STM32串口接收字符串并控制LED

感谢以上两位博主的开源项目

3、安卓APP工程(只贴主程序和主布局文件)

3.1、MainActivity.java

package com.cjt.bluetoothscm;import android.app.Activity;import android.bluetooth.BluetoothAdapter;import android.bluetooth.BluetoothDevice;import android.bluetooth.BluetoothSocket;import android.content.Intent;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.text.TextUtils;import android.util.Log;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.TextView;import android.widget.Toast;import com.github.zagum.switchicon.SwitchIconView;import com.inuker.bluetooth.library.Constants;import com.inuker.bluetooth.library.connect.options.BleConnectOptions;import com.inuker.bluetooth.library.connect.response.BleConnectResponse;import com.inuker.bluetooth.library.connect.response.BleNotifyResponse;import com.inuker.bluetooth.library.connect.response.BleWriteResponse;import com.inuker.bluetooth.library.model.BleGattProfile;import java.io.IOException;import java.util.UUID;import static com.inuker.bluetooth.library.Constants.REQUEST_SUCCESS;/****************** 包名:com.cjt.bluetoothscm* 类名:MainActivity.java* 时间:/9/11 23:28* 作者:Cao Jiangtao* 首页:https://1989jiangtao.github.io/index.html******************/public class MainActivity extends AppCompatActivity implements View.OnClickListener {private static final int REQUEST_CONNECT_DEVICE = 0x100;TextView mainTitle ;// 灯组01 ,灯组02 , 电源开关, 风扇开关SwitchIconView lamp01 , lamp02 , powerSw , fanSw ;TextView lamp01Name , lamp02Name ,powerName , fanName;// 蓝牙通信的地址和两个UUIDString MAC = "" ;UUID serviceUuid , characterUuid ;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();// 运行的时候检查是否打开蓝牙,没有打开就开启蓝牙if(!MyApp.getBluetoothClient().isBluetoothOpened())MyApp.getBluetoothClient().openBluetooth();}private void initView() {mainTitle = findViewById(R.id.main_title);//findViewById(R.id.xml文件中对应的id)lamp01 = findViewById(R.id.sw_lamp_01); //灯1开关lamp02 = findViewById(R.id.sw_lamp_02); //灯2开关powerSw = findViewById(R.id.sw_power);//灯开关fanSw = findViewById(R.id.sw_fan); //风扇开关lamp01Name = findViewById(R.id.lamp_01_name); //名字lamp02Name = findViewById(R.id.lamp_02_name);powerName = findViewById(R.id.power_name);fanName = findViewById(R.id.fan_name);// 为按钮设置点击事件lamp01.setOnClickListener(this);lamp02.setOnClickListener(this);powerSw.setOnClickListener(this);fanSw.setOnClickListener(this);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.menu_main , menu); // 加载菜单页面return super.onCreateOptionsMenu(menu);}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {if(item.getItemId() == R.id.action_scan){Intent intent = new Intent(MainActivity.this , ScanResultActivity.class);startActivityForResult(intent , REQUEST_CONNECT_DEVICE);return true;}return super.onOptionsItemSelected(item);}@Overrideprotected void onDestroy() {// 关闭蓝牙MyApp.getBluetoothClient().closeBluetooth();super.onDestroy();}@Overridepublic void onClick(View v) {// 当蓝牙有连接,并且MAC地址存在,两个UUID都不为空的情况下,点击按钮才有效// 以下只要有一个条件不满足,就不让点击按钮发送数据if(!MyApp.getBluetoothClient().isBleSupported()|| TextUtils.isEmpty(MAC)|| TextUtils.isEmpty(serviceUuid.toString())|| TextUtils.isEmpty(characterUuid.toString())){Toast.makeText(MainActivity.this , "请先检查蓝牙设备与手机是否连接正常",Toast.LENGTH_SHORT).show();return;}switch (v.getId()){case R.id.sw_lamp_01: // 灯组01lamp01.switchState();lamp01Name.setText(lamp01.isIconEnabled() ? "客厅灯开" : "客厅灯关");writeCmd(MAC , serviceUuid , characterUuid , lamp01.isIconEnabled() ? "L1ON\n" :"L1OFF\n");break;case R.id.sw_lamp_02: // 灯组02lamp02.switchState();lamp02Name.setText(lamp02.isIconEnabled() ? "房间灯开" : "房间灯关");writeCmd(MAC , serviceUuid , characterUuid , lamp02.isIconEnabled() ? "L2ON\n" :"L2OFF\n");break;case R.id.sw_power: // 电源powerSw.switchState();powerName.setText(powerSw.isIconEnabled() ? "电源开" : "电源关");writeCmd(MAC , serviceUuid , characterUuid , powerSw.isIconEnabled() ? "ON\n" :"OFF\n");break;case R.id.sw_fan: // 风扇fanSw.switchState();fanName.setText(fanSw.isIconEnabled() ? "风扇开" : "风扇关");writeCmd(MAC , serviceUuid , characterUuid , fanSw.isIconEnabled() ? "FANON\n" :"FANOFF\n");break;}}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);Log.d("CJT" , "requestCode = "+ requestCode +" , resultCode = "+ resultCode + " , data ="+data);if(requestCode == REQUEST_CONNECT_DEVICE) {// 响应结果switch (resultCode) {case Activity.RESULT_CANCELED:Toast.makeText(this , "取消了扫描!",Toast.LENGTH_SHORT).show();break;case Activity.RESULT_OK:// 选择连接的设备final BluetoothDevice device = data.getParcelableExtra(RecycleAdapter.EXTRA_DEVICE);// 得到选择后传过来的MAC地址MAC = device.getAddress();Log.d("CJT" , "address ===================== " +MAC);// 设置BLE设备的连接参数BleConnectOptions options = new BleConnectOptions.Builder().setConnectRetry(3) // 连接如果失败重试3次.setConnectTimeout(30000) // 连接超时30s.setServiceDiscoverRetry(3) // 发现服务如果失败重试3次.setServiceDiscoverTimeout(20000) // 发现服务超时20s.build();// 开始连接操作MyApp.getBluetoothClient().connect(MAC, options, new BleConnectResponse() {@Overridepublic void onResponse(int code, BleGattProfile data) {Log.d("CJT" , "getBluetoothClient().connect --- code ----- " + code);// 表示连接成功if(code == REQUEST_SUCCESS){mainTitle.setText("当前连接设备 :"+device.getName());serviceUuid = data.getServices().get(3).getUUID();Log.d("CJT" , "getBluetoothClient().connect --- serviceUuid : "+serviceUuid);characterUuid = data.getService(serviceUuid).getCharacters().get(0).getUuid();Log.d("CJT" , "getBluetoothClient().connect --- characterUuid : "+characterUuid);// 下发数据writeCmd(MAC , serviceUuid , characterUuid , "finish\r\n");}else{mainTitle.setText("当前暂无蓝牙设备连接");Toast.makeText(MainActivity.this , "蓝牙连接不成功!",Toast.LENGTH_SHORT).show();}}});break;}}}/**** 向设备下发指令* @param address 设备MAC地址* @param serviceUuid 服务UUID* @param characterUuid特征UUID* @param cmd待下发的命令*/private void writeCmd(String address , UUID serviceUuid , UUID characterUuid , String cmd){MyApp.getBluetoothClient().write(address, serviceUuid, characterUuid, cmd.getBytes(), new BleWriteResponse() {@Overridepublic void onResponse(int code) {if(code == Constants.REQUEST_SUCCESS){}}});}}

3.2、activity_main.xml

<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayout xmlns:android="/apk/res/android"xmlns:app="/apk/res-auto"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><TextViewandroid:id="@+id/main_title"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginEnd="8dp"android:layout_marginLeft="8dp"android:layout_marginRight="8dp"android:layout_marginStart="8dp"android:layout_marginTop="8dp"android:gravity="center"android:textSize="18sp"android:text="@string/scan_hint"android:textColor="@color/colorAccent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /><Viewandroid:id="@+id/top_div2"android:layout_width="wrap_content"android:layout_height="8dp"android:layout_marginBottom="20dp"android:layout_marginEnd="5dp"android:layout_marginLeft="5dp"android:layout_marginRight="5dp"android:layout_marginStart="5dp"android:layout_marginTop="8dp"android:background="@color/arc1"app:layout_constraintBottom_toTopOf="@+id/sw_lamp_01"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/main_title"app:layout_constraintVertical_chainStyle="spread_inside" /><com.github.zagum.switchicon.SwitchIconViewandroid:id="@+id/sw_lamp_01"android:layout_width="60dp"android:layout_height="60dp"android:layout_marginEnd="20dp"android:layout_marginLeft="10dp"android:layout_marginRight="20dp"android:layout_marginStart="10dp"android:layout_marginTop="20dp"app:layout_constraintEnd_toStartOf="@+id/sw_lamp_02"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/top_div2"app:si_animation_duration="200"app:si_disabled_alpha=".5"app:si_disabled_color="@color/colorOff"app:si_enabled="false"app:si_no_dash="true"app:si_tint_color="@color/colorOn"app:srcCompat="@drawable/ic_lamp" /><com.github.zagum.switchicon.SwitchIconViewandroid:id="@+id/sw_lamp_02"android:layout_width="60dp"android:layout_height="60dp"android:layout_marginEnd="20dp"android:layout_marginLeft="20dp"android:layout_marginRight="20dp"android:layout_marginStart="20dp"android:layout_marginTop="20dp"app:layout_constraintEnd_toStartOf="@+id/sw_fan"app:layout_constraintStart_toEndOf="@+id/sw_lamp_01"app:layout_constraintTop_toBottomOf="@+id/top_div2"app:si_animation_duration="200"app:si_disabled_alpha=".5"app:si_disabled_color="@color/colorOff"app:si_enabled="false"app:si_no_dash="true"app:si_tint_color="@color/colorOn"app:srcCompat="@drawable/ic_lamp" /><com.github.zagum.switchicon.SwitchIconViewandroid:id="@+id/sw_fan"android:layout_width="60dp"android:layout_height="60dp"android:layout_marginEnd="20dp"android:layout_marginLeft="20dp"android:layout_marginRight="20dp"android:layout_marginStart="20dp"android:layout_marginTop="20dp"app:layout_constraintEnd_toStartOf="@+id/sw_power"app:layout_constraintStart_toEndOf="@+id/sw_lamp_02"app:layout_constraintTop_toBottomOf="@+id/top_div2"app:si_animation_duration="200"app:si_disabled_alpha=".5"app:si_disabled_color="@color/colorOff"app:si_enabled="false"app:si_no_dash="true"app:si_tint_color="@color/colorOn"app:srcCompat="@drawable/ic_fan" /><com.github.zagum.switchicon.SwitchIconViewandroid:id="@+id/sw_power"android:layout_width="60dp"android:layout_height="60dp"android:layout_marginEnd="10dp"android:layout_marginLeft="20dp"android:layout_marginRight="10dp"android:layout_marginStart="20dp"android:layout_marginTop="20dp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toEndOf="@+id/sw_fan"app:layout_constraintTop_toBottomOf="@+id/top_div2"app:si_animation_duration="200"app:si_disabled_alpha=".5"app:si_disabled_color="@color/colorOff"app:si_enabled="false"app:si_no_dash="true"app:si_tint_color="@color/colorOn"app:srcCompat="@drawable/ic_switch" /><TextViewandroid:id="@+id/lamp_01_name"android:layout_width="60dp"android:layout_height="wrap_content"android:layout_marginTop="8dp"android:gravity="center"android:text="@string/lamp_01"app:layout_constraintEnd_toEndOf="@+id/sw_lamp_01"app:layout_constraintStart_toStartOf="@+id/sw_lamp_01"app:layout_constraintTop_toBottomOf="@+id/sw_lamp_01"tools:ignore="HardcodedText" /><TextViewandroid:id="@+id/lamp_02_name"android:layout_width="60dp"android:layout_height="wrap_content"android:layout_marginTop="8dp"android:gravity="center"android:text="@string/lamp_02"app:layout_constraintEnd_toEndOf="@+id/sw_lamp_02"app:layout_constraintStart_toStartOf="@+id/sw_lamp_02"app:layout_constraintTop_toBottomOf="@+id/sw_lamp_02" /><TextViewandroid:id="@+id/power_name"android:layout_width="60dp"android:layout_height="wrap_content"android:layout_marginTop="8dp"android:gravity="center"android:text="@string/power_sw"app:layout_constraintEnd_toEndOf="@+id/sw_power"app:layout_constraintStart_toStartOf="@+id/sw_power"app:layout_constraintTop_toBottomOf="@+id/sw_power" /><TextViewandroid:id="@+id/fan_name"android:layout_width="60dp"android:layout_height="wrap_content"android:layout_marginTop="8dp"android:gravity="center"android:text="@string/fan_sw"app:layout_constraintEnd_toEndOf="@+id/sw_fan"app:layout_constraintStart_toStartOf="@+id/sw_fan"app:layout_constraintTop_toBottomOf="@+id/sw_fan" /></android.support.constraint.ConstraintLayout>

4、STM32单片机工程(只贴主函数)

/*----------------------------------------------------´®¿Ú1·¢ËÍ×Ö·û´®¿ØÖÆLED BaudRate--9600WordLength--8bStopBit--1Parity--No·¢ËÍ LED1+ON µãÁÁLED1·¢ËÍ LED1+OFF ¹Ø±ÕLED1·¢ËÍÆäËû×Ö·û´®·­×ªLED2״̬ÐèÒª´®¿Ú µ÷ÊÔÖúÊÖÉϹ´Ñ¡·¢ËÍÐÂÐУ¬ÒòΪ´®¿Ú½ÓÊÕÊÇÒÔ/n×÷Ϊ½ÓÊÕÍê³É±êÖ¾µÄ------------------------------------------------------*/#include "stm32f10x.h"#include "led.h"#include "key.h"#include "usart.h"#include "delay.h"#include "string.h"extern char Rec_Buffer_1[];extern char Rec_Buffer_2[];extern char SendData_1[];extern char SendData_2[];extern u8 USART_REC_Finish_FLAG_1;extern u8 USART_REC_Finish_FLAG_2;int main(void){char ch='0';char LED1ON[] = "L1ON";//¶¨ÒåÏà¹ØµÄ×Ö·û´®\n ±»³ÔµôÁËchar LED1OFF[] = "L1OFF";char LED2ON[] = "L2ON";char LED2OFF[] = "L2OFF";char FANON[] = "FANON";char FANOFF[] = "FANOFF";LED_GPIO_Config();//³õʼ»¯LEDÏà¹ØµÄIO LED_ALL_OFF();//²¢¹Ø±ÕËùÓеÄLED USART1_Config();//´®¿Ú1µÄ³õʼ»¯USART1_NVIC_Config();//´®¿Ú1µÄÖжÏÅäÖÃUSART2_Config();//´®¿Ú2µÄ³õʼ»¯USART2_NVIC_Config();//´®¿Ú2µÄÖжÏÅäÖÃprintf("USART1 TEST\r\n");printf("USART2 TEST\r\n");while(1){while((USART_REC_Finish_FLAG_1 == 1)||(USART_REC_Finish_FLAG_2 == 1))//µÈ´ý´®¿Ú½ÓÊÕÍê³É±ê־λÖÃ1{delay(1000);//ÑÓʱ1msUSART_REC_Finish_FLAG_1 = 0;//ʹÓÃÍê³Éºó½«´®¿Ú±ê־λÖé–USART_REC_Finish_FLAG_2 = 0;if((strcmp(SendData_1, LED1ON)==0)||(strcmp(SendData_2, LED1ON)==0))//±È½Ï×Ö·û´® ch = '1';else if((strcmp(SendData_1, LED1OFF)==0)||(strcmp(SendData_2, LED1OFF)==0)) ch = '2';else if((strcmp(SendData_1, LED2ON)==0)||(strcmp(SendData_2, LED2ON)==0))ch = '3';else if((strcmp(SendData_1, LED2OFF)==0)||(strcmp(SendData_2, LED2OFF)==0))ch = '4';else if((strcmp(SendData_1, FANON)==0)||(strcmp(SendData_2, FANON)==0))ch = '5';else if((strcmp(SendData_1, FANOFF)==0)||(strcmp(SendData_2, FANOFF)==0))ch = '6';elsech = '7';printf("%c \r\n",ch);printf(SendData_1);printf(SendData_2);switch(ch){case '1':LED1_ON;printf("LED1 ON\r\n");break;case '2':LED1_OFF;printf("LED1 OFF\r\n");break;case '3':LED2_ON;printf("LED2 ON\r\n");break;case '4':LED2_OFF;printf("LED2 OFF\r\n");break;case '5':FAN_ON;printf("FAN ON\r\n");break;case '6':FAN_OFF;printf("FAN OFF\r\n");break;case '7':LED4_TOGGLE;printf("LED4 TOGGLE\r\n");break;default:printf("Error!\r\n");break;}strcpy(SendData_1,NULL);strcpy(SendData_2,NULL);}}}

5、语音识别模块代码(只贴主函数)

/***************************·ÉÒôÔƵç×Ó****************************** ¹¤³ÌÃû³Æ£ºYS-V0.7ÓïÒôʶ±ðÄ£¿éÇý¶¯³ÌÐò**CPU: STC11L08XE**¾§Õñ£º22.1184MHZ**²¨ÌØÂÊ£º9600 bit/S**ÅäÌײúÆ·ÐÅÏ¢£ºYS-V0.7ÓïÒôʶ±ð¿ª·¢°å**** ×÷Õߣºzdings** ÁªÏµ£º751956552@** ÐÞ¸ÄÈÕÆÚ£º.9.13** ˵Ã÷£ºÆÕͨģʽ£ºÖ±½Ó·¢ÓïÒôʶ±ð/***************************·ÉÒôÔƵç×Ó******************************/#include "config.h"/************************************************************************************///nAsrStatus ÓÃÀ´ÔÚmainÖ÷³ÌÐòÖбíʾ³ÌÐòÔËÐеÄ״̬£¬²»ÊÇLD3320оƬÄÚ²¿µÄ״̬¼Ä´æÆ÷//LD_ASR_NONE:±íʾûÓÐÔÚ×÷ASRʶ±ð//LD_ASR_RUNING£º±íʾLD3320ÕýÔÚ×÷ASRʶ±ðÖÐ//LD_ASR_FOUNDOK:±íʾһ´Îʶ±ðÁ÷³Ì½áÊøºó£¬ÓÐÒ»¸öʶ±ð½á¹û//LD_ASR_FOUNDZERO:±íʾһ´Îʶ±ðÁ÷³Ì½áÊøºó£¬Ã»ÓÐʶ±ð½á¹û//LD_ASR_ERROR:±íʾһ´Îʶ±ðÁ÷³ÌÖÐLD3320оƬÄÚ²¿³öÏÖ²»ÕýÈ·µÄ״̬/***********************************************************************************/uint8 idata nAsrStatus=0;void MCU_init(); void ProcessInt0(); //ʶ±ð´¦Àíº¯Êývoid delay(unsigned long uldata);void User_handle(uint8 dat);//Óû§Ö´ÐвÙ×÷º¯Êývoid Delay200ms();void Led_test(void);//µ¥Æ¬»ú¹¤×÷ָʾuint8_t G0_flag=DISABLE;//ÔËÐбêÖ¾£¬ENABLE:ÔËÐС£DISABLE:½ûÖ¹ÔËÐÐ sbit LED=P4^2;//ÐźÅָʾµÆ/************************************************************ Ãû ³Æ£º void main(void)* ¹¦ ÄÜ£º Ö÷º¯Êý³ÌÐòÈë¿Ú* Èë¿Ú²ÎÊý£º * ³ö¿Ú²ÎÊý£º* ˵ Ã÷£º * µ÷Ó÷½·¨£º **********************************************************/ void main(void){uint8 idata nAsrRes;uint8 i=0;Led_test();MCU_init();LD_Reset();UartIni(); /*´®¿Ú³õʼ»¯*/nAsrStatus = LD_ASR_NONE;//³õʼ״̬£ºÃ»ÓÐÔÚ×÷ASR#ifdef TESTPrintCom("L1ON\n");PrintCom("L1OFF\n");PrintCom("L2ON\n");PrintCom("L2OFF\n");PrintCom("FANON\n"); PrintCom("FANOFF\n"); #endifwhile(1){switch(nAsrStatus){case LD_ASR_RUNING:case LD_ASR_ERROR:break;case LD_ASR_NONE:{nAsrStatus=LD_ASR_RUNING;if (RunASR()==0)/*Æô¶¯Ò»´ÎASRʶ±ðÁ÷³Ì£ºASR³õʼ»¯£¬ASRÌí¼Ó¹Ø¼ü´ÊÓÆô¶¯ASRÔËËã*/{nAsrStatus = LD_ASR_ERROR;}break;}case LD_ASR_FOUNDOK: /*Ò»´ÎASRʶ±ðÁ÷³Ì½áÊø£¬È¥È¡ASRʶ±ð½á¹û*/{nAsrRes = LD_GetResult();/*»ñÈ¡½á¹û*/User_handle(nAsrRes);//Óû§Ö´Ðк¯Êý nAsrStatus = LD_ASR_NONE;break;}case LD_ASR_FOUNDZERO:default:{nAsrStatus = LD_ASR_NONE;break;}}// switch }// while}/************************************************************ Ãû ³Æ£º LEDµÆ²âÊÔ* ¹¦ ÄÜ£º µ¥Æ¬»úÊÇ·ñ¹¤×÷ָʾ* Èë¿Ú²ÎÊý£º ÎÞ * ³ö¿Ú²ÎÊý£ºÎÞ* ˵ Ã÷£º **********************************************************/void Led_test(void){LED=~ LED;Delay200ms();LED=~ LED;Delay200ms();LED=~ LED;Delay200ms();LED=~ LED;Delay200ms();LED=~ LED;Delay200ms();LED=~ LED;}/************************************************************ Ãû ³Æ£º void MCU_init()* ¹¦ ÄÜ£º µ¥Æ¬»ú³õʼ»¯* Èë¿Ú²ÎÊý£º * ³ö¿Ú²ÎÊý£º* ˵ Ã÷£º * µ÷Ó÷½·¨£º **********************************************************/ void MCU_init(){P0 = 0xff;P1 = 0xff;P2 = 0xff;P3 = 0xff;P4 = 0xff;P1M0=0XFF;//P1¶Ë¿ÚÉèÖÃΪÍÆÍìÊä³ö¹¦ÄÜ£¬¼´Ìá¸ßIO¿ÚÇý¶¯ÄÜÁ¦£¬´ÓÇý¶¯¼ÌµçÆ÷Ä£¿é¹¤×÷P1M1=0X00;LD_MODE = 0;//ÉèÖÃMD¹Ü½ÅΪµÍ£¬²¢ÐÐģʽ¶ÁдIE0=1;EX0=1;EA=1;}/************************************************************ Ãû ³Æ£ºÑÓʱº¯Êý* ¹¦ ÄÜ£º* Èë¿Ú²ÎÊý£º * ³ö¿Ú²ÎÊý£º* ˵ Ã÷£º * µ÷Ó÷½·¨£º **********************************************************/ void Delay200us()//@22.1184MHz{unsigned char i, j;_nop_();_nop_();i = 5;j = 73;do{while (--j);} while (--i);}void delay(unsigned long uldata){unsigned int j = 0;unsigned int g = 0;while(uldata--)Delay200us();}void Delay200ms()//@22.1184MHz{unsigned char i, j, k;i = 17;j = 208;k = 27;do{do{while (--k);} while (--j);} while (--i);}/************************************************************ Ãû ³Æ£º Öжϴ¦Àíº¯Êý* ¹¦ ÄÜ£º* Èë¿Ú²ÎÊý£º * ³ö¿Ú²ÎÊý£º* ˵ Ã÷£º * µ÷Ó÷½·¨£º **********************************************************/ void ExtInt0Handler(void) interrupt 0 { ProcessInt0();/*LD3320 ËͳöÖжÏÐźţ¬°üÀ¨ASRºÍ²¥·ÅMP3µÄÖжϣ¬ÐèÒªÔÚÖжϴ¦Àíº¯ÊýÖзֱð´¦Àí*/}/************************************************************ Ãû ³Æ£ºÓû§Ö´Ðк¯Êý * ¹¦ ÄÜ£ºÊ¶±ð³É¹¦ºó£¬Ö´Ðж¯×÷¿ÉÔڴ˽øÐÐÐÞ¸Ä * Èë¿Ú²ÎÊý£ºÎÞ * ³ö¿Ú²ÎÊý£ºÎÞ* ˵ Ã÷£º **********************************************************/void User_handle(uint8 dat){//UARTSendByte(dat);//´®¿Úʶ±ðÂ루ʮÁù½øÖÆ£©switch(dat) /*¶Ô½á¹ûÖ´ÐÐÏà¹Ø²Ù×÷,¿Í»§ÐÞ¸Ä*/{case 1:/*ÃüÁî¡°¿ÍÌüµÆ´ò¿ª¡±*/PrintCom("L1ON\n"); break;case 2: /*ÃüÁî¡°¿ÍÌüµÆ¹Ø±Õ¡±*/PrintCom("L1OFF\n"); break;case 3:/*ÃüÁî¡°·¿¼äµÆ´ò¿ª¡±*/PrintCom("L2ON\n"); break;case 4: /*ÃüÁî¡°·¿¼äµÆ¹Ø±Õ¡±*/PrintCom("L2OFF\n"); break;case 5:/*ÃüÁî¡°¿ª·çÉÈ¡±*/PrintCom("FANON\n"); break;case 6:/*ÃüÁî¡°¹Ø·çÉÈ¡±*/PrintCom("FANOFF\n"); break;default:PrintCom("ÇëÖØÐÂʶ±ð·¢¿ÚÁî\r\n"); /*text.....*/break;}}

6、实物图及效果视频

6.1、连接

6.1.1、电源模块+5V供电给32单片机

6.1.2、电源模块+5V供电给L298N驱动模块

6.1.3、蓝牙模块与单片机连接(左边蓝牙针脚,右边单片机针脚)

VCC----->电源+5v

GND----->电源地

RXD----->TXD(PA9)

TXD----->RXD(PA10)

6.1.4、语音模块与单片机连接(左边语音模块针脚,右边单片机针脚)

VCC----->电源+3.3v

GND----->电源地

RXD----->TXD(PA2)

TXD----->RXD(PA3)

6.1.5、LED与单片机连接

LED1----->PA15

LED2----->PA14

6.1.6、L298N驱动模块与单片机连接

IN1----->PB11

IN2----->GND

6.1.7、L298N驱动模块与直流电机连接

OUT1的两个端子分别接电机的红黑线

6.2、图

6.3、效果展示视频

基于语音识别的智能家居识别系统设计

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。