树莓派控制语音模块 / 错误排查

 树莓派库(wiringPi)详解:

 https://www.cnblogs.com/lulipro/p/5992172.html

1. 修改语音代码的口令和串口输出     

      需要注意的是:

                              1、一级口令可能会影响到树莓派的识别(即使串口能正常识别)

                              2、语音输出的内容要英文,最好不要超过8个字节(树莓派一次只接收8个字节),除了要输出给树莓派必要接收的,其他输出全部注释掉。

2. 修改文件,使得串口变为可通信状态。

/* 修改 cmdline.txt文件 */
>cd /boot/
>sudo vim cmdline.txt


删除【】之间的部分
dwc_otg.lpm_enable=0 【console=ttyAMA0,115200】 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait


/*修改 inittab文件 */ (没有这个文件就跳过)
>cd /etc/
>sudo vim inittab

注释掉最后一行内容:,在前面加上 # 号 
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100


sudo reboot 重启

3. 语音模块和树莓派的接线

     VCC: 5V

     树莓派和语音模块的TXD和RXD是交叉接线的。

     共地:树莓派和语音模块的GND相连

4. 编写代码验证树莓派能接收语音模块的数据

这验证之前,一定要单独测试语音模块和串口通信没有问题

                     树莓派的和PC串口通信接发数据没有问题

每喊一次一级口令,语音模块在亮着的灯的对角,就会再有一个灯亮起

这时再喊二级口令。

根据这样来,就不会经常喊着没反应,或者识别出错的概率会降低

#include <wiringPi.h>
#include <stdio.h>
#include <wiringSerial.h>
#include <unistd.h>
#include <string.h>

int main()
{
        int fd;
        int nread;
        char cmd[128] = {'\0'};

        wiringPiSetup();

        fd = serialOpen("/dev/ttyAMA0",9600);       //打开并初始化串口
        //printf("fd = %d\n",fd);

        while(1){
                memset(cmd,'\0',sizeof(cmd));

                nread = read(fd,cmd,sizeof(cmd));
                if(nread == 0){
                        printf("waiting for\n");
                        continue;
                }else{
                        printf("getData=%d,context:%s\n",nread,cmd);
                }                
        }

        return 0;
}
                     

 

注意:

如果read的返回值是有数据的,但是打印不出缓存buf里面的内容

1、很有可能就是语音模块的代码没有改对  ,参照步骤一去排查

2、对于read缓存buf里面的内容,可以for 0到7  把buf 0到buf 7一个字节一个字节按16进制输出,然后对比下ascii表,看看到底传输过来的是啥数据

for(i=0;i<7;i++){                    
        printf("do divice contrl: %X \n",voiceHandler->comand[i]);
}

3、如果觉得电压不够,可以将语音模块的 VCC5v 和 GND 和 串口转ttl 的那个硬件的 vcc 和 GND 相连,直接插入电脑或者插入手机充电头供电。

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

枕上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值