树莓派接入语音模块控制继电器组

记录树莓派语音模块控制继电器组

  • 1.前言
  • 2.思路
  • 3.材料
  • 4.二次开发语音模块
    • 1.修改代码
    • 2.烧录并测试
  • 4.树莓派代码编写

1.前言

最近在做智能家居项目,做到语音模块控制继电器的开关,历经俩天,坎坎坷坷也算完成了语音模块控制继电器组的开关,记录下学习过程。
学习,无论你在什么时候开始,重要的是开始之后就不要停止!加油!

2.思路

语音模块打印信息再串口中,树莓派用字符串操作API去分析信息,并执行相应的操作,调用wiringPi库。

3.材料

树莓派3B
继电器组
语音模块
usb转ttl

树莓派接入语音模块控制继电器组_第1张图片

4.二次开发语音模块

1.修改代码

基于模块源代码,进行二次开发。
树莓派接入语音模块控制继电器组_第2张图片

树莓派接入语音模块控制继电器组_第3张图片

树莓派接入语音模块控制继电器组_第4张图片

2.烧录并测试

树莓派接入语音模块控制继电器组_第5张图片
烧录时要将语音模块断电再上电(可以将GND线拔了再插)
烧录好之后点击串口助手进行测试

4.树莓派代码编写

#include 
#include 
#include 
#include 
#include 

#define SWITCH1 21
#define SWITCH2 22
#define SWITCH3 23
#define SWITCH4 24

int initwiringPiSetup()
{
     
        int ret = wiringPiSetup();
        if (ret == -1){
     
                
                printf("init error\n");
                return -1;
        
        }
}
void initPin()
{
     
        pinMode(SWITCH1,OUTPUT);//设置引脚为输出引脚
        pinMode(SWITCH2,OUTPUT);//设置引脚为输出引脚
        pinMode(SWITCH3,OUTPUT);//设置引脚为输出引脚
        pinMode(SWITCH4,OUTPUT);//设置引脚为输出引脚
        digitalWrite(SWITCH1,HIGH);
        digitalWrite(SWITCH2,HIGH);
        digitalWrite(SWITCH3,HIGH);
        digitalWrite(SWITCH4,HIGH);
}

int main(){
     
        int fd;
        int n_read;
        char cmd[128]={
     '\0'};
        initwiringPiSetup();
        initPin();
        fd=serialOpen("/dev/ttyAMA0",9600);

        while(1) {
     
                n_read=read(fd,cmd,sizeof(cmd));
                if(strlen(cmd)==0){
     
                        printf("waiting...\n");
                        continue;
                }
                if(strstr(cmd,"KYS")!=NULL){
     
                        digitalWrite(SWITCH1,LOW);
                }
                if (strstr(cmd,"GYS")!=NULL){
     
                        digitalWrite(SWITCH1,HIGH);
                }
                if (strstr(cmd,"KCT")!=NULL){
     
                        digitalWrite(SWITCH2,LOW);
                }
                if (strstr(cmd,"GCT")!=NULL){
     
                        digitalWrite(SWITCH2,HIGH);
                }
                if (strstr(cmd,"KEL")!=NULL){
     
                        digitalWrite(SWITCH3,LOW);
                }
                if (strstr(cmd,"GEL")!=NULL){
     
                        digitalWrite(SWITCH3,HIGH);
                }

                memset(cmd,'\0',sizeof(cmd)/sizeof(char));
        }
        return 0;
}

你可能感兴趣的:(树莓派,语音模块,C,串口通信,语音识别)