文章目录

前言

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


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

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

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


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


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

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

【树莓派C语言开发】实验04:继电器模块_嵌入式硬件


1.实验器材

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

2.实验原理

2.1继电器模块

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


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

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


2.2继电器工作

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

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

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

3.电路图和接线图

3.1电路图

继电器模块的电路图如下

【树莓派C语言开发】实验04:继电器模块_嵌入式硬件_04

模块实物图如下

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


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

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


3.2接线图

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

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

树莓派

T型转接板

继电器模块

GPIO 0

GPIO 17

IN

5V

5V

DC+

GND

GND

DC-

5V

5V

COM

双色LED

T型转接板

继电器

中间(R)

*

NC

GND

GND

*

S(G)

*

NO

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

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

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

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

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


4.代码示例

这里给出C语言的代码

#include <wiringPi.h>
#include <stdio.h>

#define makerobo_RelayPin 0 //设置继电器GPIO管脚,0对应G17

int 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

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

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

4.1.2digitalWrite

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

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

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

4.2Geany编译器运行代码

老样子,三板斧

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


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

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


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

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

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

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


4.3Linux-gcc编译器

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

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

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

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

【树莓派C语言开发】实验04:继电器模块_嵌入式硬件_14

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

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


结语

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

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