2012年5月7日 星期一

Arudino Ethernet Shield 手機門鎖

因為手邊拿到一片DFROBOT Ethernet Shield擴充板,
我就網路上找它的用法,找到以下這篇教學,
http://www.dotblogs.com.tw/kylin/archive/2010/11/28/19762.aspx
剛好我手邊又有一顆電腦機殼上拆下來的電磁鐵,
就把它們搞在一起變成可以用手機搖控的門鎖。

材料如下:
Arudino+Ethernet Shield擴充板+IC 2803+繼電器X2+電磁鐵

作法就是用Arduino去驅動IC 2803,然後2803再去驅動兩顆繼電器,
一顆繼電器是控制電磁鐵的開,一顆控制關,
我Arduino的code裡訊號送個1秒就會關掉,因為一直送電磁鐵會燒掉,
只要送個1秒電磁鐵有動作,訊號就可以停止,有空我再畫個電路圖。

我修改的Arduino code如下:

#include <spi.h>
#include <ethernet.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = { 192, 168, 0, 137 };      

Server server(80);
int pin1=4;
int pin2=5;
int pinLED=6;
String readString = String(50);

void setup(){
  Ethernet.begin(mac, ip);
  pinMode(pin1, OUTPUT);
  pinMode(pin2, OUTPUT);
  pinMode(pinLED, OUTPUT);
  server.begin();
  Serial.begin(9600);
}

void loop(){
Client client = server.available();
  if (client) {
    while (client.connected()) {
   if (client.available()) {
    char c = client.read();
      readString.concat(c);
      if (c == '\n')
            {
         if (readString.substring(6,10) == "PW=1")
         {
         digitalWrite(pinLED, HIGH);
         digitalWrite(pin1, HIGH);
         delay(1000);
         digitalWrite(pin1, LOW);
         }
         else if (readString.substring(6,10) == "PW=0")
        {
         digitalWrite(pinLED, LOW);
         digitalWrite(pin2, HIGH);
         delay(1000);
         digitalWrite(pin2, LOW);
        }

     client.println("HTTP/1.1 200 OK");
     client.println("Content-Type: text/html");
     client.println();

if (digitalRead(pinLED)==1)
        {
   client.println("ON");
        }
        else
        {
    client.println("OFF");
        }
        readString="";
        client.stop();
        }
        }
      }
    }
    }

然後只要是跟Ethernet Shield擴充板同一個區網的裝置,
電腦或可以上網的手機都可以,開以下網頁就可以控制電磁鐵囉。
http://192.168.0.137/?PW=1
http://192.168.0.137/?PW=0

2 則留言:

  1. 請問一下可以畫一下電路嗎?

    回覆刪除
  2. 謝謝分享,我也看著你的分享也成功了,只是如果希望能夠用自己手機3G網路也能控制要怎麼改呢?

    回覆刪除