【树莓派C语言开发】实验04:继电器模块

article/2025/11/10 5:15:16

文章目录

  • 前言
  • 1.实验器材
  • 2.实验原理
    • 2.1继电器模块
    • 2.2继电器工作
  • 3.电路图和接线图
    • 3.1电路图
    • 3.2接线图
  • 4.代码示例
    • 4.1部分函数解释
      • 4.1.1pinMode
      • 4.1.2digitalWrite
    • 4.2Geany编译器运行代码
    • 4.3Linux-gcc编译器
  • 结语

前言

学习树莓派的时候经常要查找前辈们留下的资料

但我发现,有一些博客,写的真的不敢恭维。

无注释源码一贴,电路图一贴,什么解释都没有,就发出来了。

这是写给谁看的?恐怕自己过几个月回头看自己都不知道那是什么意思。这样的学习有啥意义呢?

有的人可能觉得我是想抄作业,的确!嵌入式学习需要了解各个元件的工作原理,我的资料单有电路图远远不够啊……即便有源码,也需要自己去弄明白每个函数的作用,不然这样的学习依旧没有意义😥

关注本专栏,和我一起学习树莓派开发板30+经典实验

C语言代码,0基础剖析!

  • 还等什么😍心动不如行动!👉点我关注

  • 本专栏代码仓库📝:Raspberry-practice

1.实验器材

  • 树莓派开发板
  • 40p软排线+T型转接板+面包板
  • 继电器模块+十字螺丝刀
  • 双色LED模块(实验1使用过)
  • 跳线一堆

2.实验原理

2.1继电器模块

继电器模块是一种电控制期间,当输入量的变化达到规定要求时,在电气输出电路中使被控制量发生预定阶跃变化的一种电器。它具有控制系统和被控制系统之间的互动关系,通常运用于自动化的控制电路中。它实际上是用小电流去控制大电流运作的一种“自动开关”,在电路中起到自动调节、安全保护、转换电路等作用。


说人话就是,继电器是一个电动开关,通过接收外部源的电信号来打开和关闭电路

例如:按下电视机遥控器的开启按钮,它向电视节内部的“继电器”发出电信号,从而打开电视机的主电源开关。不过电视机内部还有另外的信号接收器,继电器本身不一定能接收红外信号(个人理解)


2.2继电器工作

  • 当继电器供电时,电流开始经过控制线圈
  • 电磁体开始通电,将上部衔铁吸附到线圈上,带动触点向右移动,从而与常开触点链接
  • 带负载的电路通电
  • 继电器断开供电,弹簧会将触头复位,电路断开

image-20220406120535701

image-20220406120712182

3.电路图和接线图

3.1电路图

继电器模块的电路图如下

4.继电器模块原理图

模块实物图如下

IMG_20220406_104634

引用另外一篇博客对各个接口的介绍👉原文链接

image-20220406120947670

3.2接线图

继电器的主控制型号源接在GPIO17,和端口0对应(后面代码会用到)

04_Relay module_bb

树莓派T型转接板继电器模块
GPIO 0GPIO 17IN
5V5VDC+
GNDGNDDC-
5V5VCOM
双色LEDT型转接板继电器
中间(R)*NC
GNDGND*
S(G)*NO

由于双色LED模块的G接口(Green)接到了继电器的常闭端口NC(即继电器未接通时默认接上的端口)

所以在接线完毕后,LED模块会亮绿灯

IMG_20220406_110827

这里需要注意的是,在对继电器接线的时候,需要用螺丝锁住各条线位,不然它们是接不稳的

光影魔术手拼图


4.代码示例

这里给出C语言的代码

#include <wiringPi.h>
#include <stdio.h>#define makerobo_RelayPin 0 //设置继电器GPIO管脚,0对应G17int main()
{//初始化连接失败时,将消息打印到屏幕	if(wiringPiSetup() == -1){ printf("setup wiringPi failed !");return 1; }	//将继电器管脚设置为输出模式pinMode(makerobo_RelayPin, OUTPUT);int k=2;while(k--){digitalWrite(makerobo_RelayPin, HIGH); // 打开继电器delay(1000);                           // 延时1s		digitalWrite(makerobo_RelayPin, LOW);  // 关闭继电器			delay(1000);                           // 延时1s}return 0;
}

4.1部分函数解释

4.1.1pinMode

该函数的作用是设置针脚当前的模式

pinMode函数解释

4.1.2digitalWrite

可以看到,这里提到了在使用该函数之前,需要用pinMode函数将针脚设置为OUTPUT模式

  • 0 代表low值
  • 非0都代表high

image-20220406122020432

4.2Geany编译器运行代码

老样子,三板斧

image-20220401163706498

在Geany里面用生成命令引用wiringPi库(后续的博客不再说明)

在Geany的build(生成)-->set build commands(设置生成命令)中输入以下指令
gcc -Wall -c "%f" -lwiringPi

最终运行的效果如下,当digitalWrite写入high时,继电器接通,红灯电路亮起

写入low时继电器关闭,恢复原本绿灯常亮状态

效果图

使用ctrl+c关闭程序运行面板,停止程序运行


4.3Linux-gcc编译器

在linux控制台里面,用cd打开你的文件夹后,输入如下编译指令

gcc -Wall 04relay.c -o TEST -lwiringPi

如果编译没有报错,那就是成功编译了,ls会发现多出了TEST可执行文件,使用./TEST执行它

执行结束后,会显示下一行的待定输入

image-20220406123120015

为了避免linux-gcc中程序运行后无法终止,请不要使用while(1)死循环!

使用结束后请先断开5V跳线后,再断开其他跳线


结语

本实验只是简单演示了继电器的使用,再后续更复杂的实验中,我们可以使用它控制更复杂的模块

如果对你有帮助,还请点个👍,万分感谢!

image-20220406123703458


http://chatgpt.dhexx.cn/article/xeA8SA54.shtml

相关文章

Ardunio开发实例-使用继电器模块控制家用灯泡

使用继电器模块控制家用灯泡 继电器(英文名称:relay)是一种电控制器件,是当输入量(激励量)的变化达到规定要求时,在电气输出电路中使被控量发生预定的阶跃变化的一种电器。它具有控制系统(又称输入回路)和被控制系统(又称输出回路)之间的互动关系。通常应用于自动化…

Arduino开发之如何连接继电器模块?

文章目录 0.引言1.继电器模块和交流同步电机说明2.编写代码 0.引言 继电器的作用是扩大控制范围&#xff1a;例如&#xff0c;多触点继电器控制信号达到某一定值时&#xff0c;可以按触点组的不同形式&#xff0c;同时换接、开断、接通多路电路。可以放大控制效果&#xff0c;例…

【STM32-扩展模块】继电器模块Relay

前言&#xff1a; 继电器模块工作电压5V&#xff0c;吸合电流约70mA每路&#xff0c;带继电器状态指示灯&#xff1b;I/O信号输入直接与单片机IO口或数字电路连接&#xff0c;输入高电平继电器吸合&#xff0c;输入低电平继电器释放&#xff1b; 全贴片元件&#xff0c;最合理驱…

Arduino笔记-继电器模块的使用

这里以一个小实验为例&#xff0c;当串口输入a时亮灯&#xff1a; 当输入b的时候&#xff0c;灭灯&#xff0c;这里主要是使用了继电器 后台打印如下&#xff1a; 这里说下继电器的理论&#xff1a; ab之间是线圈&#xff0c;只要在ab两端上加上一定的电压&#xff0c;线圈中就…

21、ZigBee 开发教程之基础篇—继电器模块

文章目录 1、实验目的2、实验设备3、实验相关电路图4、实验相关寄存器5、源码分析6、实验现象1、实验目的 1)通过实验掌握 CC2530 芯片 GPIO 的配置方法 2)掌握 HC-SR501 人体红外传感器的使用 2、实验设备 硬件:1、PC机一台;2、ZigBee(CC2530)(底板、核心板、仿真器、…

raspberryPi_继电器模块(relay)+风扇模块(fan)连接原理图/硬件调试

文章目录 继电器模块型号和样式型号样式1&#xff1a;端口介绍左侧 右侧(指示灯侧)双侧图 样式2&#xff1a;DC/IN 引脚介绍 继电器的使用和接入风扇的可用性调试 ⛔注意测试代码触发电平code (new)code&#xff08;old) 测试继电器模块可用性可选材料Fritzing 接线图 关于继电…

matlab simulink继电器,4.2 齿隙及继电器模块

课时:117节课 时长:20.1小时 课级:中级提高 simulink是matlab中的一种可视化仿真工具, 是一种基于matlab的框图设计环境,是实现动态系统建模、仿真和分析的一个软件包,被广泛应用于线性系统、非线性系统、数字控制及数字信号处理的建模和仿真中,在空气动力学、导航制导、…

继电器模块使用

继电器是一种小电压控制大电压的东西&#xff0c;由于在使用过程中出现过错误&#xff0c;在这里写一下记录一下使用方法。 这里是2路5v的继电器模块示意图&#xff0c;右边是它的控制部分及电源&#xff0c;in1、in2是他的输入引脚&#xff0c;即控制引脚&#xff0c;可通过单…

继电器模块

电路中各元器件的作用 晶体管T1为控制开关。电阻R1主要起限流作用&#xff0c;降低晶体管T1功耗。电阻R2使晶体管T1可靠截止。二极管D1反向续流&#xff0c;为三极管由导通转向关断时为继电器线圈中的提供泄放通路&#xff0c;并将其电压箝位在12V上。 工作原理简介 当输入高…

继电器模块的基本使用(高低电平触发)

一.继电器的基本原理 一个继电器拥有一个动触点以及两个静触点A和B。 当开关K断开时&#xff0c;继电器线路无电流通过&#xff0c;此时动触点与静触点B相接触&#xff0c;上半部分的电路导通。静触点B被称为常闭触点&#xff08;NC&#xff09; 常闭——NC&#xff08;normal …

继电器模块讲解

在上一篇(“常用继电器模块的PCB设计与实物分享”)里我分享了一个自己制作的继电器模块&#xff0c;今天我来讲解一下继电器模块的作用和原理。 我们先来看一下这里的继电器实物图&#xff1a; 继电器模块的结构&#xff1a; 继电器的内部结构其实很简单&#xff0c;就是很…

单片机上面的继电器工作原理及其作用

继电器简介 单片机接继电器电路&#xff0c;用偏小的信号&#xff0c;达到直接控制大电流负载的目的&#xff0c;即弱电控制强电。单片机的引脚输出来控制继电器的闭合与断开。 从电路图可得知&#xff0c;继电器只有一个接口J2与单片机相连接。当接低电平时&#xff0c;继电…

继电器介绍及接线说明

继电器 继电器主要用于控制电路 继电器&#xff1a;是一种电控制器件&#xff0c;是当输入量的变化达到规定要求时&#xff0c;在电气输出电路中使被控量发生预定的阶跃变化的一种电器。继电器具有控制系统和被控制系统&#xff0c;通常应用于自动化的控制电路中&#xff0c;…

必备模块知识——继电器

一、继电器的概念 1.1、什么是继电器 继电器是一种电控制器件&#xff0c;是当输入量的变化达到规定要求时&#xff0c;在电气输出电路中使被控量发生预定的阶跃变化的一种电器。继电器具有控制系统和被控制系统&#xff0c;通常应用于自动化的控制电路中&#xff0c;在电路中…

继电器模块的的使用方法、引脚说明、内部结构、接线说明(超通俗超详细看了就能给别人讲)

最近老师让做课程设计&#xff0c;同学们用继电器模块的人不少&#xff0c;但是同学们貌似都不会用继电器模块&#xff0c;这次我就写一个文章记录一下&#xff0c;详细的讲解一下继电器的模块使用&#xff0c;以及引脚的定义。 首先说最普通的继电器模块吧&#xff08;在本文图…

日期操作类(DateFormat、SimpleDateFormat)

1.DateFormat类 此类是一个日期的格式化类,专门格式化日期的操作,因为java.util.Date类本身就已经包含了完整的日期,所以只需要将些日期按照一些好的格式格式化一下显示就好了. 观察DateFormat类的定义&#xff1a;此类是定义在java.test包中的。 public abstract class Dat…

@DateFormat与@JsonFormat

一、目的 代码中使用到了DateFormat 与JsonFormat &#xff0c;但是不知道是什么意思。所以进行总结 二、分析 DateFormat 作用: 将从数据库中查询出来的数据格式化对应的格式 我们从数据库查询出来然后返回到前台&#xff0c;发现Date属性是类似 2022-05-22T11:04:42.000…

DateTime日期格式化

在C#中DateTime是一个包含日期、时间的类型&#xff0c;此类型通过ToString()转换为字符串时&#xff0c;可根据传入给Tostring()的参数转换为多种字符串格式。 目录 1. 分类 2. 制式类型 3. 自定义格式类型 1. 分类 DateTime调用ToString()传入的参数可分为制式和自定义…

DateFormat

DateFormat是日期/时间格式化子类的’抽象类’ 作用&#xff1a; 格式化&#xff08;日期——>文本&#xff09;、解析&#xff08;文本——>日期&#xff09;Date 成员方法&#xff1a; 1.String format(Date date)&#xff1a;按照指定模式&#xff0c;把Date日期&…

DATE_FORMAT()用法

SELECT DATE_FORMAT(now(), ‘%Y-%m-%d %H:%i:%S’); 查询结果为