聚丰项目 > 适用于办公场所的语音控制物联系统

适用于办公场所的语音控制物联系统

目前市场上的家居物联、智能插座等产品,虽然功能很炫,但使用或应用对象不对,因此销量较低,发展进入低潮。不适用高端人群,他们可以选择高档家居或有专门保姆、管家。不适用低层人群,居住环境小,电器少;中层或中高层是唯一有发展潜力的人群。但普通通过手机遥控的方式不是非常实用,方便程度不一定比传统方式来的高端。 本项目在物联系统的基础上加入语音识别、控制功能。包括对智能插座、红外设备(空调等)、功率可调设备(台灯、加热器、风扇等)等的控制以及实时资讯、天气预报、通讯(手机、QQ、微信、邮件等)的自动在线显示、转接、控制等,非常适合于工程师、管理者等在办公环境中使用,能够大大提高使用者的工作效率和智能化程度。试想,当你使用此产品后,可以在手中工作不停下的同时,打开空调,接听电话,打开电烙铁,打开示波器,收听即时消息,这样的产品是不是非常适合办公场合的应用呢? 项目中结合科大讯飞的语音识别模块,并制作桌面接收/控制的硬件,完成所介绍的功能。

liqijian101 liqijian101

分享
3 喜欢这个项目
团队介绍

liqijian101 liqijian101

团队成员

李其建 助理工程师

赵丹丹

分享
项目简介
目前市场上的家居物联、智能插座等产品,虽然功能很炫,但使用或应用对象不对,因此销量较低,发展进入低潮。不适用高端人群,他们可以选择高档家居或有专门保姆、管家。不适用低层人群,居住环境小,电器少;中层或中高层是唯一有发展潜力的人群。但普通通过手机遥控的方式不是非常实用,方便程度不一定比传统方式来的高端。 本项目在物联系统的基础上加入语音识别、控制功能。包括对智能插座、红外设备(空调等)、功率可调设备(台灯、加热器、风扇等)等的控制以及实时资讯、天气预报、通讯(手机、QQ、微信、邮件等)的自动在线显示、转接、控制等,非常适合于工程师、管理者等在办公环境中使用,能够大大提高使用者的工作效率和智能化程度。试想,当你使用此产品后,可以在手中工作不停下的同时,打开空调,接听电话,打开电烙铁,打开示波器,收听即时消息,这样的产品是不是非常适合办公场合的应用呢? 项目中结合科大讯飞的语音识别模块,并制作桌面接收/控制的硬件,完成所介绍的功能。
硬件说明

一、演示硬件说明

  1. 1.    设计中语音识别功能使用科大讯飞的语音识别资源库,利用易安卓编写APP程序,使用安卓手机作为识别硬件。

  2. 2.    电灯、电烙铁、智能插座、窗户等使用继电器控制,演示中使用5mm蓝色LED代表,以电灯和窗户作为演示示例。

  3. 3.    台灯等功率可调设备利用PWM直接驱动LED演示。

  4. 4.    室内温度采用DS18B20温度传感器检测。

  5. 5.    无线WIFI采用EMW3080模块。

  6. 6.    温度等的显示使用OLED显示。

  7. 7.    控制器为STM32F401型号。

说明实际控制时电灯、电烙铁、智能插座、窗户、台灯亮度等的控制,需要专用的驱动电路,或者需要无线组网控制,此处演示中使用基础功能代替。

二、演示硬件功能框图

QQ截图20171126220330.png

说明:由于没有空调设备,故演示中以OLED显示解析后语音指令来说明可以实现红外通信类的控制。

 


软件说明

1.    语音识别程序

    运行平台:安卓手机

    编程环境:易安卓

    原始代码:语音识别E4A程序.ziphttp://www.elecfans.com/webapi/public/project/js/ueditor/dialogs/attachment/fileTypeImages/icon_rar.gif

        APP程序:语音识别APP.zip

        APP使用说明:需要先安装讯飞语音+APP,并下载离线识别库。  软件启动-->确定(无密码)-->点击讯飞语音识别进行中-->点击右上角开始.

2.  STM32程序

1)主程序:    完整程序Nucleo_work_iar_nucleo_f401re.ziphttp://www.elecfans.com/webapi/public/project/js/ueditor/dialogs/attachment/fileTypeImages/icon_rar.gif

#include "mbed.h"
#include "Adafruit_SSD1306.h"
#include "DS18B20.h"
#define READBUFFERSIZE (16)

#define ON 0
#define OFF 1


Serial pc(SERIAL_TX, SERIAL_RX,115200);
Serial wifi_serial(D8, D2,115200);  //wifi;
//DigitalOut myled(LED1);

PwmOut mypwm(LED1);

DigitalOut mylight(PC_5,1);
DigitalOut window(PC_6,1);

DigitalInOut sensor(PC_11);     // sensor connected to pin 5

// an SPI sub-class that provides a constructed default
class SPIPreInit : public SPI
{
public:
    SPIPreInit(PinName mosi, PinName miso, PinName clk) : SPI(mosi,miso,clk) {
        format(8,3);
        frequency(2000000);
    };
};
SPIPreInit gSpi(PB_5,NC,PB_3);//SPI_SCK= PB_13, SPI_MOSI= PB_15,
Adafruit_SSD1306_Spi gOled1(gSpi,PB_1,PB_14,PB_2);//spi  DC(PB_1)   RST(PB_14)   CS(PB_2)<--->


float gHome_Temperature;
void Serial_Receive_Callback()
{
    char buffer[32];
    wifi_serial.gets(buffer,13);
    pc.printf("I heard %s\n",buffer);

    if(buffer[0]=='F' && buffer[1]=='F') {
        if(buffer[3]=='1') {
            if(buffer[5]=='1') {
                gOled1.setTextCursor(38,32);
                gOled1.printf("Light ON       ");
                mylight=ON;
            } else {
                gOled1.setTextCursor(38,32);
                gOled1.printf("Light OFF      ");
                mylight=OFF;
            }
        }
        if(buffer[3]=='2') {
            if(buffer[5]=='1') {
                gOled1.setTextCursor(38,32);
                gOled1.printf("Window ON      ");
                window=ON;
            } else {
                window=OFF;
                gOled1.setTextCursor(38,32);
                gOled1.printf("Window OFF     ");
            }
        }
        if(buffer[3]=='6') {
            if(buffer[5]=='1') {
                gOled1.setTextCursor(38,32);
                gOled1.printf("Desk Lamp %d   %",buffer[6]);
                mypwm.pulsewidth_us(buffer[6]*10);
            } else {
                gOled1.setTextCursor(38,32);
                gOled1.printf("Desk Lamp OFF  ");
                mypwm.pulsewidth_us(0);
            }
        }
        if(buffer[3]=='7') {
            if(buffer[5]=='1') {
                gOled1.setTextCursor(38,32);
                gOled1.printf("Conditioner %dC",buffer[6]);
            } else
                gOled1.printf("Conditioner OFF" );
        }

    }
    gOled1.display();
}
int main()
{
    int i = 1;

    wifi_serial.attach(&Serial_Receive_Callback);
    mypwm.period_ms(1);
    mypwm.pulsewidth_us(0);

    gOled1.setTextSize(1);
    gOled1.printf(" Voice Control System");
    gOled1.drawLine(0, 10, 128,10, 1);
    gOled1.setTextCursor(2,16);
    gOled1.printf("Temp:");
    gOled1.setTextCursor(2,32);
    gOled1.printf("Order:");
    gOled1.display();

    sensor.mode(PullUp);

    while(1) {
        wait(1);
        gHome_Temperature=DS18B20_Temperature();
        gOled1.setTextCursor(36,16);
        gOled1.printf("%2.1fC",gHome_Temperature);

        gOled1.display();
    }
}

 


演示效果

演示效果.jpg

评论区(0 )