• 【树莓派】了解wiringPi库、控制继电器


    一、wiringPi库

      wiringPi是一个很棒的树莓派IO控制库,使用C语言开发,提供了丰富的接口:GPIO控制,中断,多线程等。

    在树莓派命令行输入gpio -v 可以查看是否安装wiringPi 库,会显示库的相关信息,有版本号就是安装好了。
    在这里插入图片描述
    在编译时需要链接上wiringPi库:

    gcc demo.c -lwiringPi
    
    • 1

    查看树莓派的引脚标号,输入命令即可查看:

    gpio readall
    
    • 1

    树莓派3b的引脚图:
    在这里插入图片描述

    二、继电器

    1、继电器介绍及接线说明

      继电器主要用于控制电路

      继电器是一种电控制器件,是当输入量的变化达到规定要求时,在电气输出电路中使被控量发生预定的阶跃变化的一种电器。继电器具有控制系统和被控制系统,通常应用于自动化的控制电路中,在电路中起着自动调节、安全保护、转换电路等作用。

      简单来说,继电器就相当于一个开关,接在任意线上,断开状态下线就断开了,没导通,闭合状态下线就接在了一起,导通了。
    在这里插入图片描述
    产品介绍
    1、常开接口限大负载:交流250V/10A,直流30V/10A
    2、采用贴片光耦隔离,驱动能力强,性能稳定;触发电流5mA
    3、模块工作电压有5v、12v、24v可供选择(请注意连接是否为所需电压)
    4、模块可以通过跳线设置高电平或低电平触发
    5、电源指示灯(绿色),继电器状态指示灯(红色)

    继电器接线图
    在这里插入图片描述
    接口说明
    1、继电器输入部分:
    a、VCC:接电源正极(电压按继电器要求,有5V、9V、12v和24v选择)
    b、GND:接电源负极
    c、IN:可以高或低电平控制继电器吸合

    2、继电器输出端:
    a、NO:继电器常开接口,继电器吸合前悬空,吸合后与COM短接
    b、COM:继电器公用接口
    c、NC:继电器常闭接口,继电器吸合前与COM短接,吸合后悬空

    高低电平触发选择端(有些继电器模块没有):
    1、跳线与LOW短接时为低电平触发
    2、跳线与HIGH短接时为高电平触发

    2、树莓派控制继电器

    注意:
    单路继电器电源只能接3.3v,接5v不能正常工作,四路继电器可接3.3v和5v。
    单路继电器:
    代码:

    #include
    #include
    #define SWITCHER 0
    
    int main()
    {
            int cmd;
    
            if(wiringPiSetup() == -1){
                    printf("硬件接口初始化失败\n");
                    return -1;
            }
    
            pinMode(SWITCHER,OUTPUT);
            digitalWrite(0,HIGH);
            while(1){
                    printf("请输入0/1:0-断开开关,1-导通开关\n");
                    scanf("%d",&cmd);
    
                    if(cmd == 1){
                            digitalWrite(SWITCHER,LOW);
                            printf("开\n");
                    }else if(cmd == 0){
                            digitalWrite(SWITCHER,HIGH);
                            printf("关\n");
                    }else{
                            printf("输入错误,请重行输入\n");
                    }
            }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    结果:
    在这里插入图片描述
    在这里插入图片描述
    四路继电器:
    代码:

    #include
    #include
    #include
    #define SWITCHER1 21
    #define SWITCHER2 22
    #define SWITCHER3 23
    #define SWITCHER4 24
    
    int main()
    {
            char cmd[12] = {'\0'};
    
            if(wiringPiSetup() == -1){
                    printf("硬件接口初始化失败\n");
                    return -1;
            }
    
            pinMode(SWITCHER1,OUTPUT);
            pinMode(SWITCHER2,OUTPUT);
            pinMode(SWITCHER3,OUTPUT);
            pinMode(SWITCHER4,OUTPUT);
    
            digitalWrite(SWITCHER1,HIGH);
            digitalWrite(SWITCHER2,HIGH);
            digitalWrite(SWITCHER3,HIGH);
            digitalWrite(SWITCHER4,HIGH);
    
            while(1){
                    printf("请输入1on(off)/2on(off)/3on(off)/4on(off):\n[off-断开开关,on-导通开关]\n");
                    memset(cmd,'\0',sizeof(cmd));
                    scanf("%s",cmd);
    
                    if(!strcmp(cmd,"1on")){
                            digitalWrite(SWITCHER1,LOW);
                            printf("1开\n");
                    }else if(!strcmp(cmd,"1off")){
                            digitalWrite(SWITCHER1,HIGH);
                            printf("1关\n");
                    }
    
                    else if(!strcmp(cmd,"2on")){
                            digitalWrite(SWITCHER2,LOW);
                            printf("2开\n");
                    }else if(!strcmp(cmd,"2off")){
                            digitalWrite(SWITCHER2,HIGH);
                            printf("2关\n");
                    }
    
                    else if(!strcmp(cmd,"3on")){
                            digitalWrite(SWITCHER3,LOW);
                            printf("3开\n");
                    }else if(!strcmp(cmd,"3off")){
                            digitalWrite(SWITCHER3,HIGH);
                            printf("3关\n");
                    }
    
                    else if(!strcmp(cmd,"4on")){
                            digitalWrite(SWITCHER4,LOW);
                            printf("4开\n");
                    }else if(!strcmp(cmd,"4off")){
                            digitalWrite(SWITCHER4,HIGH);
                            printf("4关\n");
                    }
    
                    else{
                            printf("输入错误,请重新输入\n");
                    }
            }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69

    结果:
    在这里插入图片描述
    在这里插入图片描述
    参考:
    继电器介绍及接线说明

    最后谢谢阅读,笔者乃小白,如有错误之处还请指正。

  • 相关阅读:
    从三个阶段讲讲,网关类接口都要测什么
    2022英特尔® FPGA中国技术周
    PTC:以用户为中心,消费电子制造如何解决产品多样性与复杂性?
    Java设计模式之创建型模式
    A Simple, Fast and Effective Polygon Reduction Algorithm 代码 vscode编译过程
    Matplotlib plt.plot数据可视化应用案例
    第6章 - 多无人车系统的协同控制 --> 多无人车协同控制
    用Prophet在Python中进行时间序列预测
    有效数字(表示数值的字符串),剑指offer,力扣
    102. 二叉树的层序遍历
  • 原文地址:https://blog.csdn.net/qq_46249312/article/details/128207260