如何用普通电脑控制电灯泡开关灯

有很多情况下我们会用到电脑控制照明的开关,比如:智能家居,如果屋里没人,那么控制系统自动关灯以达到省电的目的;比如有很多场合,当会员刷卡后,系统才给照明,或系统才会启动某个设备等等。

 

传统的实现办法要使用单片机开发接口板,电脑的软件使用232/485串口通讯协议来发送指令给接口板。这种办法的缺点是:1.需要软件人员+硬件人员来合作完成,开发周期长;2.串口等复杂参数需要配置,不利于用户方便使用。3.需要外接电源来给单片机供电;

 

我们在这里给大家介绍一种软件人员也能完成的方法:

这种方法的优点是:

1.   只需要进行软件开发;

2.   硬件使用USB线连接电脑USB接口,无需任何其他配置就可以使用;

3.   无需外接电源,直接由USB获取所需电量;

 

要准备的东西如下:

 

所需硬件:

1.1018-PhidgetInterfaceKit 8/8/8 接口板

 

天邦登峰 phidgets 1018-PhidgetsInterfaceKit 8/8/8 接口板

2.3051-Dual Relay Board (双继电器板)

 

天邦登峰 3051-Dual Relay Board (双继电器板)

3. 灯泡和灯座 (可以在普通五金店买到)

 

电灯泡和灯座

 

4.保险丝(10A 250V 可选,在各电子城都能买到)

 

保险丝

 

5. 电源线 (从中间剪断,只保留插头和一段电线就可以了)

 

电源线

 

6. 电线若干

 

 

我们先按以下步骤把所需要的硬件都搭建起来:

 

系统硬件连接草图(不是电子工程专业人员没有必要画专业的电子板图了吧)这个是用手写笔在普通纸张上画的,把接收器插入电脑就出来这

 

张图了。

 

 

 

 

电脑控制电灯开关系统连接草图

 

 

连接后的实物图如下图所示:

 

电脑控制灯泡开关系统连接实物图

 

1.   首先用一根电线一端连接 1018-PhidgetInterfaceKit 8/8/8接口板的数据输出口6(可以选择其他口,我们这里暂时用6口),另一端连接3051-Dual Relay Board(双继电器板)的开关控制 1口。

2.   把电源线从中间剪断,把尾部的电线抽出来,火线端先连接10A保险丝(可选,如果要带的电器比较多,最好加这个保险丝,1个灯泡加不加都行),然后接入3051-Dual Relay Board(双继电器板)的C1口。

3.   找另一根电线,一端连接3051-Dual Relay Board(双继电器板)的NO口,另一端连接电灯泡的正极。

4.   找另一根电线,一端连接电灯泡的负极,另一端连接电源线的地线。

 

 

硬件连接完毕!

 

 

 

好,接下来我们来看软件部分:

首先我们安装Phidgets驱动程序 然后把1018 PhidgetInterfaceKit 8/8/8接口板的USB线插入电脑的USB口。把电源线插入接线板插座中取电。

 

所需要的软件:

 

1.Net Framework 3.5 (Windows 7 自带,Windows XP请下载)

2. Visual Studio 2010 Express (下载)

3.本文范例源码(C#

 

 

运行我们提供的范例程序:

 

 

 

C#范例程序运行界面图

 

上电后电灯泡是不亮的。

点击“开”或“关”就可以打开和关闭电灯泡了!

 

 

 

软件关键源码(以C#为例,更多编程语言范例,请参考:http://www.guigujianwen.com/2016/06/17/phidgets_programming/)分析如下:

 

 

[csharp]  view plain  copy
  1. private void iniPhidget()//初始化Phidget  
  2.         {  
  3.             try  
  4.             {  
  5.                 //初始化InterfaceKit object  
  6.                 ifKit = new InterfaceKit();  
  7.                 //定义接口板基础事件  
  8.                 ifKit.Attach += new AttachEventHandler(ifKit_Attach);  
  9.                 ifKit.Detach += new DetachEventHandler(ifKit_Detach);  
  10.                 ifKit.Error += new ErrorEventHandler(ifKit_Error);  
  11.                 //定义接口板特殊事件  
  12.                 //接口板数据接收触发事件  
  13.                 ifKit.InputChange += new InputChangeEventHandler(ifKit_InputChange);  
  14.                 //接口板数据输出触发事件  
  15.                 ifKit.OutputChange += new OutputChangeEventHandler(ifKit_OutputChange);  
  16.                 //传感器数据变化事件  
  17.                 ifKit.SensorChange += new SensorChangeEventHandler(ifKit_SensorChange);  
  18.                 //Open打开连接  
  19.                 ifKit.open();  
  20.                 //等候接口板连接  
  21.                 ifKit.waitForAttachment();  
  22.             }  
  23.             catch (PhidgetException pe)  
  24.             {  
  25.                 MessageBox.Show(pe.ToString());  
  26.             }  
  27.         }  
  28.         void ifKit_SensorChange(object sender, SensorChangeEventArgs e)//传感器事件变化事件  
  29.         {  
  30.             //e.Index 传感器所插的插口编号 0-7  
  31.             //e.Value 传感器的值  
  32.         }  
  33.         void ifKit_OutputChange(object sender, OutputChangeEventArgs e)//接口板输出事件  
  34.         {  
  35.             //e.Index 输出口编号  
  36.             //e.Value 输出的值  
  37.         }  
  38.         void ifKit_InputChange(object sender, InputChangeEventArgs e)//接口板输入事件  
  39.         {  
  40.             //e.Index 输入口编号  
  41.             //e.Value 输入的值  
  42.         }  
  43.         void ifKit_Error(object sender, ErrorEventArgs e)  
  44.         {  
  45.             //e.Description; 错误信息  
  46.         }  
  47.         void ifKit_Detach(object sender, DetachEventArgs e)  
  48.         {  
  49.              //连接状态提示  
  50.             //1018-PhidgetInterfaceKit 8/8/8 接口板 "已和硬件成功断开连接!";          
  51. }  
  52.    
  53.   
  54.         void ifKit_Attach(object sender, AttachEventArgs e)  
  55.         {  
  56.             //连接状态提示  
  57.             //1018-PhidgetInterfaceKit 8/8/8 接口板 "已和硬件成功建立连接!";  
  58.         }  
  59.         private void checkBox1_CheckedChanged(object sender, EventArgs e)  
  60.         {  
  61.             if (this.checkBox1.Checked) //打勾=开  
  62.             {  
  63.                 this.checkBox1.Text = "关?";  
  64.                 ifKit.outputs[6] = true//从6信号口输出1信号打开电源(本文仅有的关键代码)  
  65.                 this.pictureBox1.Image = Image.FromFile(AppDomain.CurrentDomain.BaseDirectory + "//lights_On.png");  
  66.             }  
  67.             else//=关?  
  68.             {  
  69.                 this.checkBox1.Text = "开a";  
  70.                 ifKit.outputs[6] = false//从6信号口输出0信号打开电源(本文仅有的关键代码)  
  71.                 this.pictureBox1.Image = Image.FromFile(AppDomain.CurrentDomain.BaseDirectory + "//lights_Off.png");  
  72.             }  
  73.         }  
  74.         private void frmMain_FormClosing(object sender, FormClosingEventArgs e)//窗体退出前注销所有事件  
  75.         {  
  76.             ifKit.Attach -= new AttachEventHandler(ifKit_Attach);  
  77.             ifKit.Detach -= new DetachEventHandler(ifKit_Detach);  
  78.             ifKit.InputChange -= new InputChangeEventHandler(ifKit_InputChange);  
  79.             ifKit.OutputChange -= new OutputChangeEventHandler(ifKit_OutputChange);  
  80.             ifKit.SensorChange -= new SensorChangeEventHandler(ifKit_SensorChange);  
  81.             ifKit.Error -= new ErrorEventHandler(ifKit_Error);  
  82.             //run any events in the message queue - otherwise close will hang if there are any outstanding events  
  83.             Application.DoEvents();  
  84.             ifKit.close();  
  85.         }  

 

 

我们看到,实际起作用的仅仅用了两行代码:

 

ifKit.outputs[6] =true;//开灯

ifKit.outputs[6] =false;//关灯

 

 

用这个方法是不是超级无敌简单呢?

 

方法二:

Phidgets 1014














 

使用一块 1014 - PhidgetInterfaceKit 0/0/4 (接口板-4口) 地址:http://www.guigujianwen.com/2016/06/24/1014_2-phidgetinterfacekit-004/

就可以直接连接电脑USB来控制电灯的开关。这个接口板的特点是可以带4条线路的用电设备!保险丝和灯泡的接法同上,把上面的代码做如下修改:

 

接0口:

ifKit.outputs[0] =true;//开灯

ifKit.outputs[0] =false;//关灯


接1口:

ifKit.outputs[1] =true;//开灯

ifKit.outputs[1] =false;//关灯


接2口:

 

ifKit.outputs[2] =true;//开灯

ifKit.outputs[2] =false;//关灯


接3口:

ifKit.outputs[3] =true;//开灯

ifKit.outputs[3] =false;//关灯


------------------------------------------

转自:http://blog.csdn.net/soft2buy/article/details/6248333

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值