树莓派与语音模块实现开关小灯

源码

#include <wiringSerial.h>
#include <wiringPi.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/time.h>
#define SWITCHER 25//定义25口为继电器口
int main ()
{
    int fd;
    char cmd[128]={'\0'};
    int nread;
    wiringPiSetup();//初始化
    pinMode(SWITCHER,OUTPUT);//初始化端口
     if(wiringPiSetup() == -1){ //如果初始化失败,就输出错误信息 程序初始化时务必进行
        printf("setup wiringPi failed !");
        return 1;
     }
    fd = serialOpen("/dev/ttyAMA0",9600);//语音模块打开
    digitalWrite(SWITCHER,HIGH);//高电平关断 
    
    while(1){
        nread = read (fd, cmd, sizeof(cmd));//读取数据
        if(strlen(cmd)==0){//如果没有数据就显示超时
                printf("chaoShi\n");
                continue;
        }
        if (strstr(cmd,"open")!=NULL){//如果收到打开字样
            printf("open light\n");//树莓派界面输出开灯
            digitalWrite(SWITCHER,LOW);//低电平开灯
        }
        if(strstr(cmd,"close")!=NULL){//如果收到关断字样
            printf("close light\n");//打印关灯
            digitalWrite(SWITCHER,HIGH);//高点平关灯
        }
        memset(cmd,'\0',sizeof(cmd)/sizeof(char));//回收,关断
    }
    return 0;

}

树莓派语音实现继电器开关

树莓派(Raspberry Pi)是一个小型、低功耗的单板计算机,常用于 DIY 项目和教育环境中。通过它,我们可以轻松地连接LED小灯和按键,实现简单的交互式控制。 首先,你需要准备以下材料: 1. **树莓派**:作为控制中心 2. **GPIO(General Purpose Input/Output)扩展模块**:树莓派上用于数字输入输出的接口 3. **LED小灯**:一般使用RGB或单一颜色的LED 4. **按键**:如BCM(Broadcom Chipset Module)编码的机械开关 5. **电阻器**:保护LED免受短路 6. **杜邦线**:用于连接电路 接下来是步骤: 1. **硬件连接**:将LED的正极接到树莓派GPIO的某个引脚,负极接GND;按键的一端连接到GPIO的另一引脚,另一端接地。 2. **添加电阻**:为了保护电路,通常会在LED和GPIO之间接入一个合适值的电阻。 3. **配置GPIO**:使用树莓派的GPIO库,如RPi.GPIO或picamera下的wiringPi等,初始化GPIO并设置为输出模式。 4. **编写Python代码**:创建一个循环,监听GPIO上的按键输入。当按键按下时,改变LED的状态(亮起或熄灭),释放按键则恢复原状。 下面是一个简单的Python示例代码: ```python import RPi.GPIO as GPIO import time # 设置GPIO引脚 led_pin = 18 # LED连接的GPIO口 button_pin = 23 # 按键连接的GPIO口 GPIO.setmode(GPIO.BCM) # 初始化GPIO GPIO.setup(led_pin, GPIO.OUT) # LED设置为输出 GPIO.setup(button_pin, GPIO.IN, pull_up_down=GPIO.PUD_UP) # 按键设置为浮空输入 try: while True: if not GPIO.input(button_pin): # 如果按键按下 GPIO.output(led_pin, GPIO.HIGH) # 将LED点亮 else: GPIO.output(led_pin, GPIO.LOW) # 否则LED关闭 time.sleep(0.1) # 等待一段时间再检查 except KeyboardInterrupt: GPIO.cleanup() # 键盘中断时清理GPIO资源
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值