历史上的今天
今天是:2025年03月08日(星期六)
2019年03月08日 | 技术文章—教你使用树莓派控制灯
2019-03-08

最近正在研究微控制器和基于物联网的设备安全。因此,我开始考虑建立一个小型家庭系统化系统,虽然目前还没完成,但我想先在文章中分享一下我如何使用树莓派2及一些其他电子元件来控制房间的灯光。当然,我在这里不会介绍树莓派的初始设置,因为你可以在网上发现各种各样的教程。
注意事项
在我们继续实验之前,我想有必要提醒一下关于实验中“电流”的危险性。一旦出现任何状况,最糟糕的情况就是死掉或者烧了你的房子。所以,请不要试图完成任何文中提到但是你不理解事情,或者你可以在制作的时候寻求一些有经验的电工的帮助。
好啦,让我们开始DIY吧!
实验准备
硬件需求
1、树莓派2(或者任何5V输出功率的型号,均可)
2、USB无线软件狗
3、8路继电器
4、一些Female-Female跳线(40 PCS FEMALE TO FEMALE JUMPER WIRES)
5、灯头电线
(以上硬件,某宝均有销售)
其他要求
1、了解基本Python语言或者其他任何语言(我会用到Python)
2、对Linux系统有基本了解
3、专心致志
流程要求
首先,用ssh链接到树莓派上,并安装“apache”和“php5”:
你会需要安装python的GPIO库来控制树莓派的GPIO插脚:
了解元件
现在,在我们继续制作之前,你需要了解一下我们将使用到的电子元件。
1、继电器
继电器是一种使用非常低的电压输入控制高压电的电气设备。由一个线圈缠绕的金属杆和两个小型金属节点构成的闭合电路。其中一个节点是固定的,其他的都是可移动的。无论何时,当电流通过线圈的时候,它会产生一个磁场,吸引可移动节点向静态节点运动,形成电路。通过给线圈供应小额电压,我们就能完成高压电路的轮回。同时,静态节点并非在物理上与线圈有联系,因此一旦有地方出错,微控制器驱动的线圈也很少出现故障。

试验中,我使用一个8路继电器,可以同时控制8个设备。你可以选择自己的继电器或者继电板,但是请确保你在继电器的额定电压之内处理,以避免任何事故的发生。
2、跳线
跳线就是我们链接树莓派GPIO插脚与继电器的简单连接电线。
3、树莓派2
我们使用树莓派2作为一个微控制器来操纵继电器。它有40个GPIO(通用输入/输出)插脚。你可以看到下面这些插脚的布局,我们将使用这些接口为继电器加电和控制开关。

连接电路
电路非常简单。我们将连接GPIO插脚到继电板上。首先连接继电器板上的“GND”与树莓派上的任意“GND”。然后链接继电器的“IND1”到GPIO PIN 17,我们会把GPIO PIN 17作为一个控制第一继电器的输出。最后,将继电器的“VCC”连接到树莓派的“5V”GPIO插脚。让我们简单直接设置一下:

现在我们到了最为棘手的部分,我们要将继电器连接到接通主电路供电的灯头上。但是,我想先给你介绍一个如何通过直流屏电源开启及关闭灯光的简单操作。
我们通常连接两根电线到灯泡上,来提供电流供给。其中一根电线是“中性”电线,另一根则是实际带着电流的“负极”电线,同样的这里也有一个控制整个电路的开关。因此,当开关(闭合)连接到流经灯泡的电流和负极电线时,电路便完整了。灯泡从而亮了起来。当开关(断开),破坏了电路和灯泡的电流,因此灯泡不亮。这里有一个小的电路图来解释具体情况:

当我们在试验中,我们需要“负极电线”通过我们的继电器来打破电路,从而使用继电器开关的控制流经的电流。因此,当继电器打开,在闭合电路中灯泡也应该亮起来,反之亦然。请参考一下完整的电路:

控制脚本
现在,终于到了软件的部分。我编写了一个简单的python脚本来控制继电器开关,使用了GPIO PIN 17和一个PHP代码可以在任何移动终端上面来运行python脚本。你可以从我的Github(和CSS)上找到这段代码。


注意:你将会需要添加“www-data”用户到sudoers文件。
注意+:PHP代码只是为了测试,我们不建议在公共环境中运行。
不久我将完成这个设置,希望回来更新一个新的帖子。请在那时之前,自己动手试一下这个控制灯,但是一定要注意安全。
史海拾趣
|
TMIGS系统是由北京交通大学、北京市市政工程研究院、北京索通紫蜂通讯工程技术有限公司联合研制。该系统具有卓越的性能,配套专业化软件,适用于各种地下工程的施工监测与管理。它集多元信息(钢弦式频率类、电流电压类、开关量、数字信号类、声音 ...… 查看全部问答> |
|
一个网络编程方面的问题,connect()老是报错,请高手帮忙! 客户端程序每次都提示下面的错误,不知道是什么原因: -> socket_client addr: 192.168.10.34 create socket OK!!!!!!! : OK connect error: S_errno_EHOSTUNREACH value = -1 = 0xffffffff 下面是客户端的代码: #include #include #i ...… 查看全部问答> |
|
我专门做fpga的芯片驱动代码,但是我代码写好了,但是芯片fpga还没有写完。 是否有什么方法可以验证我写的代码 写reg是否正确? 大家一般是如何测试的?… 查看全部问答> |
|
1、请问第二级运放的两个15K电阻在此图中起的是什么作用,是否是为第二级运放提供偏置? 2、第二级运放是否为反向比列运算? 2.图中标号3都接地,若要使量输入端电阻对称,第二级运放的同相输入端应加多大的电阻后接地,这个电阻是否是R1||R2||R3 ...… 查看全部问答> |
|
关于使用8-bits D/A(DAC0808.digital-to-analog).数字和模拟信号转换接口编程 我现在有一个问题.如果eeworld的前辈能指教的话.我很感激.数字和模拟信号转换接口编程: 就是如何设计数字和模拟信号转换机器的.使用8-bits D/A(DAC0808.digital-to-analog). 信号发生器有三种波形.是正弦波.矩形波,三角波.使用switch来输入0001,0 ...… 查看全部问答> |
|
我在线调试C51的外部中断时,外部中断1怎么就是跳不出去呢?当INT1发生时,就一直循环着INT1,不再回到主程序了。下面是整个儿程序的代码(谢谢啦) #include #define LED P0 void delay(int); main() { unsigned char i; ...… 查看全部问答> |
|
mini2440 官方5.0bsp 移植dm9000 驱动的问题 现在移植dm9000到mini2440 发现能够识别到id 但是我从台式机上ping开发板ping不通。用的驱动是mini2440 自带的dm9000驱动 各位觉得是什么原因呢,是中断没弄好吗 我发现在5.0的bsp包中关于中断的enable.done disa ...… 查看全部问答> |
|
WINCE5.0,三星2440 CPU,已安装了Macromedia Flash Player 7 for Pocket PC,安装成功,但不能在IE播放FLASH动画网页,浏览动画网页FLASH处空白,请高手帮助,万分感谢!… 查看全部问答> |




