树莓派项目实践 [1] —— 编程控制继电器组件实现电路开闭(C语言)

原创首发于CSDN,转载请注明出处,谢谢!
https://blog.csdn.net/weixin_46959681/article/details/115145982



所用的树莓派与继电器组件

在这里插入图片描述

| 树莓派的引脚编号

数据交互成功后,使用命令 gpio readall 调出树莓派的引脚全图。参照实际的树莓派板子,图片中左边一侧引脚标号对应树莓派靠近 CPU 一侧的引脚,右边对应树莓派靠外侧一排的引脚。可以看到树莓派的引脚具有特定的编号,如 IN、ALTO(RxD、TxD)、0(GND)。
在这里插入图片描述

|继电器

继电器是一类电子控制元器件,具有输入回路(控制系统)和输出回路(被控制系统),多用于自动控制电路中。在实际工作中输入低电流控制高电流的一种自动开关,在电路中起着自动调节、安全保护、转换电路等作用。

继电器的工作原理可以参考文章:详解继电器的工作原理及电路
继电器工作效果教学视频:电子元件从零到精通-通过实验认识“继电器”


通过树莓派引脚编程操作继电器组件

|源代码: gpioRelay.c

/* gpioRelay.c */
#include <stdio.h>
#include <string.h>
#include <wiringPi.h>
//笔者用杜邦线将树莓派的第27、28、29引脚与继电器组件相连。
#define SWIT1 29
#define SWIT2 28
#define SWIT3 27

int main()
{
    
    	
	char cmd[12] = {
    
    '\0'};
	if(wiringPiSetup()== -1){
    
    
		printf("Fialed.\n");
		return -1;
	}
	
	//将配置的引脚设为输出状态。
	pinMode(SWIT1,OUTPUT);
	pinMode(SWIT2,OUTPUT);
	pinMode(SWIT3,OUTPUT);
	
	//默认为关闭状态。
	digitalWrite(SWIT1,HIGH);
	digitalWrite(SWIT2,HIGH);
	digitalWrite(SWIT3,HIGH);
	
	while(1){
    
    
		printf("Please input the number 1/2/3:off-break,on-pass.\n");
		memset(cmd,'\0',sizeof(cmd));
		//函数 sacnf 没起作用。
		gets(cmd);
		
		if(strcmp(cmd,"1 on") == 0){
    
    
			digitalWrite(SWIT1,LOW);
		}else (strcmp(cmd,"1 off") == 0){
    
    
			digitalWrite(SWIT1,HIGH);
		}
		if(strcmp(cmd,"2 on") == 0){
    
    
			digitalWrite(SWIT2,LOW);
		}else (strcmp(cmd,"2 off") == 0){
    
    
			digitalWrite(SWIT2,HIGH);
		}
		if(strcmp(cmd,"3 on") == 0){
    
    
			digitalWrite(SWIT3,LOW);
		}else(strcmp(cmd,"3 off") == 0){
    
    
			digitalWrite(SWIT3,HIGH);
		}
		if(strcmp(cmd,"all on") == 0){
    
    
			digitalWrite(SWIT1,LOW);
			digitalWrite(SWIT2,LOW);
			digitalWrite(SWIT3,LOW);
		}else(strcmp(cmd,"all off") == 0){
    
    
			digitalWrite(SWIT1,HIGH);
			digitalWrite(SWIT2,HIGH);
			digitalWrite(SWIT3,HIGH);
		}
	}
}

|操作继电器组件

在正确使用杜邦线连接继电器组与树莓派的前提下,终端运行源码 gpioRelay.c ,看到交互软件界面跳出输入指令提示,按提示输入指令即可实现与引脚相对应的继电器的开闭。或者输入 all onall off 实现全开、全闭。具体的效果实现,笔者就不在粘贴效果图了。

在这里插入图片描述


思索

不停地输入 0、1 唤起电路,使得继电器启动、闭合,看着绿灯时而亮起时而熄灭,笔者也不禁陷入了深深的思索。从应用的层面上看,确实成功实现了操作树莓派控制了继电器的开闭。但这是通过操作一个类如“巨大的黑箱”般的函数得到的,内里整个组件所应用的原理和庞大的设计全部都被封装了,我对其还是一无所知。

IO流的输入、输出也是一个比较抽象的东西,输入0、1实现控制继电器的开闭,若将输入的 0、1 改为人脸面部特征数据,那就是人脸识别相关产品的研发了。输入可以是红外线、人体的温度、人的行走步态等等(万物皆可输入),输出可以是蜂鸣器的吼叫、人体热成像图、山林等高线地势图、机器学习中关于的人体动态图谱以及电动车辅助驾驶等等。

扫描二维码关注公众号,回复: 13126872 查看本文章

【关于电路原理、遥感理论、传感器、信息论的课程以后必须要补起来。】


参考资料


文章更新记录

  • “树莓派的引脚编号”一节完成。 「2021.3 23 21:55」
  • “沉思”一节完成。 「2021.3.24 11:39」
  • “使用的树莓派与继电器组”一节完成。 「2021.3.26 11:44」
  • “通过树莓派引脚编程操作继电器组”一节完成。 「2021.3.26 17:02」

P.S. 学习不耗费时间,写博客最耗费时间。

猜你喜欢

转载自blog.csdn.net/weixin_46959681/article/details/115145982