电话声控小车-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7818|回复: 12

电话声控小车

[复制链接]
发表于 2017-1-20 22:44 | 显示全部楼层 |阅读模式
前言
感谢 Luna 姐姐的厚爱早早就寄来了 SIM808 模块,真是抱歉这么迟才发帖。

制作
首先看一下结构框图吧:
结构.jpg

然后是组装整体图:
IMG_5235.jpg

这是一个音频线以及一个自制的衰减线,测试的时候电话录音再通过这些线接到语音模块的 MIC 接口是可以识别的,可是用 SIM 模块通话的时候却识别不了,推测可能是因为电话通话中有一些奇怪的杂音导致的:
IMG_5237.jpg

所以最后竟然是用这么土的方法:直接耳机对着语音识别模块的话筒,声音开到最大。真是不忍直视。当然识别效果也很差,因为车子跑的时候马达声音很吵……录了二三十个视频才出来一个效果过得去的:
IMG_5236.jpg

视频
下面就是精挑细选的视频了:
...呃,发表帖子的怎么没有添加视频的控件呢?
editor.png
只好直接放一下链接了:http://www.tudou.com/programs/view/rMyw9XvYw3I/

语音识别模块
代码中看不到语音识别模块的相关内容,这里解释说明一下。我用的是一个集成度很高的模块,非常方便,只需要给 TF 卡里配置上需要识别的语音就可以了,然后就可以通过串口提供结果,或者直接有 IO 引脚输出控制信号。下面是从说明书里截的一个配置说明以做展示。为了防止被奈何因打广告嫌疑封号,咱就避嫌打点码:
voice.jpg
我的配置文件如下,串口输出中使用 FA FB 做标识,在程序中识别这两个数据后的数据即是控制命令,用来控制小车的行动:
[mw_shl_code=cpp,true]90:FA FB 01 00 00:qian jin:前进.mp3
91:FA FB 02 00 00:ting zhi:停止.mp3
92:FA FB 03 00 00:hou tui:后退.mp3
93:FA FB 04 00 00:zuo zhuan:左转.mp3
94:FA FB 05 00 00:you zhuan:右转.mp3
95:FA FB 06 00 00:jia su:加速.mp3
96:FA FB 07 00 00:jian su:减速.mp3
97:FA FB 08 00 00:guan deng:关灯123.mp3
98:FA FB 09 00 00:kai deng:开灯123.mp3[/mw_shl_code]

代码
最后贴个代码片段,完整代码请下载附件压缩包: altarVoice.zip (7.27 KB, 下载次数: 2)
DF库里的判断模块是否上电,启动模块以及接听电话的接口为啥我觉得都没有起作用,好奇怪,自己用串口输出 AT 指令是正常的,反正用 AT 指令可以操作了,也就不去深究啥原因了。
[mw_shl_code=cpp,true]

#include "CarWithL9110.h"
#include "VoiceController.h"
#include "ControllerManager.h"
#include <DFRobot_sim808.h>

const uint8_t LEFT_FORWARD_PIN   = 5;
const uint8_t LEFT_BACK_PIN      = 3;
const uint8_t RIGHT_FORWARD_PIN  = 6;
const uint8_t RIGHT_BACK_PIN     = 9;
const uint8_t SOFT_SERIAL_RX_PIN = 7;
const uint8_t SOFT_SERIAL_TX_PIN = 10;
const uint8_t LED_PIN            = 11;

SoftwareSerial softSerial(SOFT_SERIAL_RX_PIN, SOFT_SERIAL_TX_PIN);

CarWithL9110 altar(LEFT_FORWARD_PIN, LEFT_BACK_PIN, RIGHT_FORWARD_PIN, RIGHT_BACK_PIN);

ControllerManager controllerMgr;
VoideController voiceController(&altar, &softSerial, LED_PIN);

DFRobot_SIM808 sim808(&Serial);

#define PERMIT_NUMBER     "13********00"
#define SIM808_POWER_PIN  12

// DF 库的 powerUpDown() 好像没作用,自己写一个
void simPowerUp(uint8_t pin)
{
    digitalWrite(pin, LOW);
    delay(100);
    digitalWrite(pin, HIGH);
    delay(1500);
    digitalWrite(pin, LOW);
}

void checkAndAnswerPermitPhoneCall(DFRobot_SIM808 sim808, char *permitPhoneNumber)
{
    char number[20];
    if (!sim808.isCallActive(number))
        return;

    Serial.println(number);
    if (strcmp(number, permitPhoneNumber) != 0)
        return;

    // sim808.answer();
    // sim808.answer() 不起作用啊好奇怪,自己发AT命令吧……
    Serial.println("ATA");
}

void initSim808()
{
    Serial.begin(9600);

    pinMode(SIM808_POWER_PIN, OUTPUT);
    if (!sim808.checkPowerUp())
        simPowerUp(SIM808_POWER_PIN);

    while(!sim808.init())
    {
        delay(1000);
        Serial.println("Sim808 init error");
    }
    Serial.println("Sim808 init success");

    // 将声音开大
    Serial.print("AT+CLVL=99\r\n");
}

void setup()
{
    Serial.begin(9600);
    softSerial.begin(9600);

    initSim808();

    altar.init();
    altar.setSpeed(80);

    voiceController.init();
    controllerMgr.registerController(&voiceController, ControllerManager::VOICE, true);
}

void loop()
{
    checkAndAnswerPermitPhoneCall(sim808, PERMIT_NUMBER);
    controllerMgr.update();
    delay(20);
}

[/mw_shl_code]

发表于 2017-1-21 07:41 | 显示全部楼层
厉害哈哈哈哈哈哈
发表于 2017-1-21 12:02 | 显示全部楼层
谢谢分享                           
 楼主| 发表于 2017-1-21 12:59 来自手机 | 显示全部楼层
单片机菜鸟 发表于 2017-1-21 07:41
厉害哈哈哈哈哈哈

谢谢支持
 楼主| 发表于 2017-1-21 12:59 来自手机 | 显示全部楼层
jackten 发表于 2017-1-21 12:02
谢谢分享

谢谢支持
发表于 2017-2-4 16:12 | 显示全部楼层
少年,你家凉席有点抢戏
发表于 2017-2-4 18:06 | 显示全部楼层
给的发帖时间还是有点紧~ 主要是到了年底了,又值春节~~下次可以考虑多给你们…………















1天!哈哈哈哈哈 (开玩笑的)
 楼主| 发表于 2017-2-8 20:13 | 显示全部楼层
dfrobot 发表于 2017-2-4 16:12
少年,你家凉席有点抢戏

小小纠正几下:
1、老年
2、草席
3、其实这是榻榻米啦,每个分隔都是可以翻开来,里面可以储物的
 楼主| 发表于 2017-2-8 20:14 | 显示全部楼层
dfrobot 发表于 2017-2-4 18:06
给的发帖时间还是有点紧~ 主要是到了年底了,又值春节~~下次可以考虑多给你们…………

其实都是拖延症啦,给多久就能拖多久,哈哈。
发表于 2017-2-14 12:03 | 显示全部楼层
seesea 发表于 2017-2-8 20:13
小小纠正几下:
1、老年
2、草席

哈哈哈~眼拙了,原来是榻榻米,上海的冬天真的好冷~~草席绝对是遥不可及的痛啊
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-1 01:08 , Processed in 0.154386 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表