一种寻物系统设计
该设计的目的是可以让用户说出物品的名字,该物品便会进行响应,从而让用户找到物品的所在位置,同时也可以通过蓝牙使用APP来下发指令,让物体进行响应。
采用32单片机与51单片机作为主控,若采用模块化的方式进行实现可以使用stm32核心以及LD332语音识别模块进行实现,其中stm32与蓝牙模块进行通信接收上位机的指令,语音识别模块的51芯片与stm32进行通信,当stm32接收到蓝牙信号时会反转PB10引脚的电平,51判断引脚电平的变化,从而去亮灯与驱动蜂鸣器让物体响起来。
同时语音识别模块会根据拨码开关的设置状态进行识别响应,比如改设计的拨码开关是4位,按照二进制2^4=16,有16种状态,其中第一种作为一级指令,剩余15种作为物品的类型。全部都是0的时候作为一级指令,对着模块喊“寻物”,接值将拨码调至0001,喊“钥匙”,识别成功会亮灯同时蜂鸣器响起,依次类推调整拨码开关换不同的物品。具体的指令设置如下:
uint8 code sRecog[DATE_A][DATE_B] =
{
"xun wu",
"yao shi",
"qian bao",
"yao kong qi",
"xiao yuan ka",
"shou ji",
"shu biao",
"men ka",
"you pan",
"bei zi",
"yao xiang",
"er ji",
"ji shi ben",
"cun qian guan",
"dian nao",
"xue ya ji"};
使用蓝牙与上位机进行通信,上位机APP只需要下发1即可,单片机中断的代码如下,APP的代码放在文章末尾的Github。
if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中断(接收到的数据必须是0x0d 0x0a结尾)
{
Res = USART_ReceiveData(USART1); //读取接收到的数据
printf("收到数据:%c\r\n", Res);
if (Res == '1')
{
GPIO_ResetBits(GPIOB, GPIO_Pin_10); //PB.10 输出低
printf("收到正确的指令\r\n");
}
}
使用模块搭建完成设计的原理图设计如下:
实现的实物图如下,各项功能都达到预期效果。
同时该设计也可以集成进行设计,同样按照该思路重新设计电路板,原理图如下:
代码及其他资料访问,进去需全点star。