Raspberry Pi 树莓派GPIO学习 – 控制家用电灯

如果不是那天偶然看到有位盆友在炫耀他的新技能:用树莓派通过Java实现远程控制电灯,上次购置折腾系列配件的时候也不会多买一个继电器,ok,既然买了,就把他折腾起来。

目的:
用程序控制家用灯泡,好像很酷的样子。

准备材料:
1. 树莓派一只
2. 5V低电平继电器扩展版
3. 家用灯泡一只
4. 公对母杜邦线三根
5. 面包板一块(可无)
6. 普通电线一段,用于连接灯泡

先来张图树莓派、面包板、继电器连接图

原理图是很简单的,继电器扩展版上低电端有三个引脚,分别是VCC、GND、IN,名词解释为:电源,接地,输入引脚。

简单的连线图(Fritzing还不会用):

树莓派连接5V低电平继电器示意图

所用继电器扩展版

继电器针脚接线图

VCC接树莓派5V针脚(红色)
GND 接树莓派GND针脚(棕色)
IN接树莓派GPIO25,或者其他的GPIO也可以,只要与程序控制的pin脚是一致的(橙色)

红色、棕色、橙色的杜邦线接法与下图“面包板接线图”是一致的

接好之后继电器扩展版的电源灯是亮的(红色LED)

继电器正面图这是继电器的玉照,有必要说明一下三个端点,常开、公共、常闭。

常开,正常状态为开路(开路即断开的),通电后关闭(连通)
公共端,顾名思义
常闭,正常状态为闭合(连通状态),通电后断开(开路)

因此,继电器是没有正负极之分,正负极可以任意接在常开或常闭,是否有电流通过取决于当前低电端给予的电平情况。

PS:接入家用电之后,强电端与继电器扩展版底部都是有电的,需谨慎操作,不幸的我就被电过一次,所以折腾的时候请小心。

再来张面包板的接线图:

面包板PIN接线图

很简单,没什么多说的,关于上图中针脚p*与GPIO对应关系,参考这里的关系图:https://lison.cc/?p=54

 

最终要实现的开关效果并不是带有ON/OFF的那种,往上按开,往下按关,而是类似电脑的开机键,按一下开,再按一下关。(有谁知道这种开关专业名称叫什么,老师说过,不过我忘了)

具体实现原理是读取GPIO针脚的电平状态,如果高电,说明已经打开,此时需关闭;如果低电,说明已经关闭,此时需打开。

程序中没有用到循环,而是执行一次开,再执行一次关。

还是直接贴代码:

wiringPi控制电灯源码light.c

 

唯一注意一点是为GPIO口设置高低电平时需先设置pin的模式,INPUT/OUTPUT。

wiringPi的官方资料还是要仔细看看的。

再来个演示视频:

后记
视频最后没有录制完,最后使用手机安装ConnectBot,可以远程用putty连接树莓派,并执行sudo ./light,从而以另一种欺骗的方式实现手机远程智能家居,以后研究一下android做个app控制家用电器。

参考文章:
http://wiringpi.com/reference/core-functions/
http://cafe.miwor.com/SAH/12.html

树莓派编号引脚说明:
http://blog.csdn.net/jcdjx/article/details/41866219

 

Raspberry Pi 树莓派GPIO学习 – wiringPi控制LED灯闪烁

目的:
用树莓派点亮LED,并控制LED灯的亮与灭。

准备材料(如下图):
硬件:
LED灯一只
220欧姆电阻一只
树莓派一只
母对母杜邦线三根

树莓派控制LED灯准备材料

软件:
1.wiringPi,开源树莓派GPIO操作库,C语言版,安装方法:http://blog.csdn.net/xukai871105/article/details/17737005

今晚是第二次折腾树莓派的GPIO口,昨晚没搞定,因为完全没有仔细看wiringPi与GPIO对应图:9825bc315c6034a8f3056360ca13495408237668

举个栗子:

3.3v是树莓派26个针脚的第一个,6是GND口,1口+6口接通LED灯是亮的,这是普通的电流回路,但是无法通过高低电平控制,也就无法通过程序控制。可以看到上图中3.3v对应wiringPi Pin中都是“—“,姑且理解为不使用吧。而wiringPi的pin是从GPIO1开始的,上图中的第六行第五列,wiringPi是1,这个1就是程序可以控制高低电平的。这就是树莓派的GPIO与wiringPi的对应关系。

GPIO口的接线细节图

程序代码:
树莓派GPIO控制LED程序代码

编译运行,引用wiringPi库,位于/usr/local/lib:
gcc blink.c -o blink -lwiringPi
sudo ./blink

演示视频:

结论:

昨晚x宝来货,于是开始戳树莓派的GPIO口,正极接了3.3V,负极接了GND,灯亮了,很开心。但是wiringPi控制的digitalWrite却始终没反应,终了,搞不定,不能睡太晚,还要赶班车,于是便睡下了。
[ 是的,走马观花注定一事无成。]