目录

1.继电器说明

1.1 继电器输入端:

1.2 继电器输出端

2、树莓派控制继电器

3、树莓派控制继电器组


1.继电器说明

低电平有效,它是一些功能设备的控制开关。

● LOW:给到低电平时,电路接通;

● HIGH:给到高电平时,电路断开;

继电器通常应用于自动化的控制电路中,它实际上是用小电流去控制大电流运作的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。

继电器

继电器组

python 获取继电器端口状态 python控制继电器模块_python 获取继电器端口状态

python 获取继电器端口状态 python控制继电器模块_单片机_02

 继电器工作原理说明:

python 获取继电器端口状态 python控制继电器模块_单片机_03

1.1 继电器输入端:

1、DC+:接电源正极(电压按继电器要求,有5V.9V.12V和24V选择)
2、DC-:接电源负极
3、IN:可以高或低电平控制继电器吸合

1.2 继电器输出端

1、NO: 继电器常开接口,继电器吸合前悬空,吸合后与COM短接
2、COM:继电器公用接口
3、NC: == 继电器常闭接口==,继电器吸合前与COM短接,吸合后悬空

高低电平触发选择端:
1.跳线与LOW短接时为低电平触发;
2.跳线与high短接时为高电平触发;

2、树莓派控制继电器

(单个继电器)接好电源线和自己设置的控制引脚:

● 继电器vcc——树莓5v;

● 继电器Gnd——树莓0v;

● 继电器In——树莓GPIO.7(自己设置);

#include <stdio.h>
#include <wiringPi.h>
#include <stdlib.h>
 
#define PIN 28  //#define宏定义控制引脚为GPIO.28
 
int main()
{
        int cmd;
 
        if(wiringPiSetup() == -1){  //初始化wiringPi库
                printf("init error\n");
                return -1;
        }
 
        pinMode(PIN,OUTPUT); //设置为输出io口
        digitalWrite(PIN,HIGH);//默认断电状态
        while(1){
                printf("please input 0 or 1:0-close,1-open\n");//输入0或1,0关闭,1打开
                scanf("%d",&cmd);
 
                if(cmd == 1){
                        digitalWrite(PIN,LOW);//输入的是1,就给低电平,闭合供电     
                }else if(cmd == 0){
                        digitalWrite(PIN,HIGH);//输入的是0,就给高电平,打开断电 
                }else{
                        printf("输出指令错误\n");//如果输入的不是1或0
                        exit(-1);            //退出
                }
        }
        return 0;
}

编译结果:

python 获取继电器端口状态 python控制继电器模块_python 获取继电器端口状态_04

3、树莓派控制继电器组

若要控制多个开关元件需要接很多杜邦线,很麻烦,所以要引入继电器组,其实控制继电器组和控制单个继电器操作一样,只是继电器组要多设置一些控制的io口而已!

● 本次用的继电器组是4个继电器组;

● 针脚有gnd vcc in1 in2 in3 in4共6个。其中in1 in2 in3 in4分别控制继电器的4个灯;

● 首先电源正负级接通开发板,in1 in2 in3 in4分别接入树莓的GPIO口(自选);

python 获取继电器端口状态 python控制继电器模块_python 获取继电器端口状态_05

#include <stdio.h>
#include <wiringPi.h>
#include <stdlib.h>
#include <string.h>
 
#define PIN1 29  //#define宏定义控制引脚为29
#define PIN2 28  //#define宏定义控制引脚为28
#define PIN3 27  //#define宏定义控制引脚为27
#define PIN4 26  //#define宏定义控制引脚为26
 
int main()
{
        char cmd[12] = {'\0'};
 
        if(wiringPiSetup() == -1){  //初始化wiringPi库
                printf("init error\n");
                return -1;
        }
 
        pinMode(PIN1,OUTPUT);//配置引脚为输出引脚
        pinMode(PIN2,OUTPUT);
        pinMode(PIN3,OUTPUT);
        pinMode(PIN4,OUTPUT);
 
        digitalWrite(PIN1,HIGH);//4个控制口默认断电状态
        digitalWrite(PIN2,HIGH);
        digitalWrite(PIN3,HIGH);
        digitalWrite(PIN4,HIGH);
 
        while(1){
                printf("please input 1/2/3/4 off/on:off-close,on-open\n");
                memset(cmd,'\0',sizeof(cmd));
                gets(cmd);//不用scanf是因为输入的带有空格,scanf读到空格以后就不读了。
 
                if(strcmp(cmd,"1 on") == 0){
                        digitalWrite(PIN1,LOW);//输入1 on,给低电平,供电  
                }else if(strcmp(cmd,"1 off") == 0){
                        digitalWrite(PIN1,HIGH);//输入0 off,给高电平,断电 
                }
 
                if(strcmp(cmd,"2 on") == 0){
                        digitalWrite(PIN2,LOW);//输入2 on,给低电平,供电  
                }else if(strcmp(cmd,"2 off") == 0){
                        digitalWrite(PIN2,HIGH);//输入2 off,给高电平,断电 
                }
 
                if(strcmp(cmd,"3 on") == 0){
                        digitalWrite(PIN3,LOW);//输入3 on,给低电平,供电  
                }else if(strcmp(cmd,"3 off") == 0){
                        digitalWrite(PIN3,HIGH);//输入3 off,给高电平,断电 
                }
 
                if(strcmp(cmd,"4 on") == 0){
                        digitalWrite(PIN4,LOW);//输入4 on,给低电平,供电  
                }else if(strcmp(cmd,"4 off") == 0){
                        digitalWrite(PIN4,HIGH);//输入4 off,给高电平,断电 
                }
 
                if(strcmp(cmd,"all on") == 0){
                        digitalWrite(PIN1,LOW);//输入all on,给低电平,4个灯全部供电  
                        digitalWrite(PIN2,LOW); 
                        digitalWrite(PIN3,LOW); 
                        digitalWrite(PIN4,LOW);
                }else if(strcmp(cmd,"all off") == 0){
                        digitalWrite(PIN1,HIGH);//输入all off,给高电平,全部断电 
                        digitalWrite(PIN2,HIGH);
                        digitalWrite(PIN3,HIGH);
                        digitalWrite(PIN4,HIGH); 
                }
                else{
                        printf("OUTPUT error!\n");//输入其它 提示错误
                }
        }
        return 0;
}

 运行结果:

python 获取继电器端口状态 python控制继电器模块_#define_06