年前張欣有一個比較好的想法,想用Digi的MF闆驅動一個小型繼電器,這樣就可以用MF直接控制家中的小功率220V的電器了。由于我們公司非純軟體公司,軟硬體部門都有,是以比張欣多了點接觸硬體的機會。
Digi開發闆标準電壓是3.3V,是以繼電器的工作電壓要小于或等于3.3V,此外繼電器吸合點要能承受220V,1~3A的電流,否則實用價值不大。最終我選擇的繼電器的型号為:HUIKE HK4100F-DC3V-SHG 觸點名額:交流220V 3A 直流30V 3A。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5SNmRDOyUTMzM2YxEDOwEGOiljZ0ATY4Q2YlNjY3IWM18CX5d2bs92Yl1iclB3bsVmdlR2LcNWaw9CXt92Yu4GZjlGbh5yYjV3Lc9CX6MHc0RHaiojIsJye.png)
先看一看Digi開發闆的原理圖,看看怎麼接入我們的繼電器。
CR14 是一個LED燈,R23是一個限流電阻,對應的GPIO的Pin值為6,我們就對它下手。原理圖很簡單,從圖上看出我們必須去掉CR14 LED燈,如果繼電器直接連接配接到接線柱上,則繼電器和CR14 LED燈并聯,LED燈會分流。此外不短接電阻,則電阻會分壓(繼電器和電阻是串聯關系)。好了我們改造後的闆子如下:
namespace DigiTest
{
using System;
using System.Collections;
using System.Net;
using System.Net.Sockets;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using Microsoft.SPOT.Net;
using Microsoft.SPOT.Net.NetworkInformation;
public class DigiTest
{
public static void Main()
{
OutputPort[] output = new OutputPort[5];
//InputPort[] input = new InputPort[5];
Cpu.Pin[] pin = new Cpu.Pin[5] { (Cpu.Pin)0, (Cpu.Pin)1, (Cpu.Pin)2, (Cpu.Pin)5, (Cpu.Pin)6 };
for (int i = 0; i < 5; i++)
{
//input[i] = new InputPort(pin[i], false, Port.ResistorMode.PullUp);
output[i] = new OutputPort(pin[i], false);
}
while (true)
{
for (int i = 0; i < 5; i++)
{
output[i].Write(!output[i].Read());
}
//Debug.Print(input[0].Read().ToString() + " " + input[1].Read().ToString() + " " + input[2].Read().ToString() + " " + input[3].Read().ToString() + " " + input[4].Read().ToString());
Thread.Sleep(1000);
}
}
}
}
把程式部署到Digi開發闆,運作一下,是不是聽到繼電器在啪啪作響,用萬用表量一量常開觸電是否通斷正常?我想如果沒出什麼意外,一切正常,下一步你就可以控制家用電器了。