参考:树莓派接入语音模块控制继电器组
作者:糯米啊啊
发布时间: 2021-04-18 17:07:08
网址:https://blog.csdn.net/weixin_43732386/article/details/115834317?spm=1001.2014.3001.5501
目录
- 1.前言
- 2.思路
- 3.材料
- 4.二次开发语音模块
- 1.修改代码
- 2.烧录并测试
- 3.树莓派代码编写
1.前言
最近在做智能家居项目,做到语音模块控制继电器的开关,历经俩天,坎坎坷坷也算完成了语音模块控制继电器组的开关,记录下学习过程。
学习,无论你在什么时候开始,重要的是开始之后就不要停止!加油!
2.思路
语音模块打印信息再串口中,树莓派用字符串操作API去分析信息,并执行相应的操作,调用wiringPi库。
3.材料
树莓派3B
继电器组
语音模块
usb转ttl
4.二次开发语音模块
1.修改代码
基于模块源代码,进行二次开发。
2.烧录并测试
烧录时要将语音模块断电再上电(可以将GND线拔了再插)
烧录好之后点击串口助手进行测试
3.树莓派代码编写
#include <stdio.h>
#include <string.h>
#include <wiringPi.h>
#include <wiringSerial.h>
#include <unistd.h>#define SWITCH1 21
#define SWITCH2 22
#define SWITCH3 23
#define SWITCH4 24int 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;
}