当前位置:主页 > 查看内容

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

发布时间:2021-08-10 00:00| 位朋友查看

简介:记录树莓派语音模块控制继电器组 1.前言 2.思路 3.材料 4.二次开发语音模块 1.修改代码 2.烧录并测试 4.树莓派代码编写 1.前言 最近在做智能家居项目做到语音模块控制继电器的开关历经俩天坎坎坷坷也算完成了语音模块控制继电器组的开关记录下学习过程。 学……

1.前言

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

2.思路

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

3.材料

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

在这里插入图片描述

4.二次开发语音模块

1.修改代码

基于模块源代码,进行二次开发。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.烧录并测试

在这里插入图片描述
烧录时要将语音模块断电再上电(可以将GND线拔了再插)
烧录好之后点击串口助手进行测试

4.树莓派代码编写

#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 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;
}
;原文链接:https://blog.csdn.net/weixin_43732386/article/details/115834317
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐