#include #include // Enter a MAC address for your controller below. // Newer Ethernet shields have a MAC address printed on a sticker on the shield byte mac[] = { 0xDD, 0xAD, 0xBE, 0xEF, 0xFE, 0xEE }; IPAddress server(192,168,1,6); // Jarvis // Initialize the Ethernet client library // with the IP address and port of the server // that you want to connect to (port 80 is default for HTTP): EthernetClient client; /* waveshield pins */ int RST = 3; int CLK = 9; int DAT = 8; /* pir sensor pin */ int PIR = 4; int pirState = LOW; void setup() { Serial.begin(9600); if (Ethernet.begin(mac) == 0) { Serial.println("Failed to configure Ethernet using DHCP"); for(;;) ; } delay(1000); Serial.println("connecting..."); pinMode(RST, OUTPUT); pinMode(CLK, OUTPUT); pinMode(DAT, OUTPUT); pinMode(PIR, INPUT); digitalWrite(RST, HIGH); digitalWrite(CLK, HIGH); digitalWrite(DAT, HIGH); digitalWrite(RST, LOW); delay(5); digitalWrite(RST, HIGH); delay(20000); /* warming up */ } void loop() { if(digitalRead(PIR) == HIGH){ if(pirState == LOW){ // motion detected send(0x0000); delay(5000); pirState = HIGH; telljarvis(); } } else{ if(pirState == HIGH){ // motion ended pirState = LOW; } } delay(200); } void send(int data) { digitalWrite(CLK, LOW); delay(2); for (int i=15; i>=0; i--) { delayMicroseconds(50); if((data>>i)&0x0001 >0) { digitalWrite(DAT, HIGH); } else { digitalWrite(DAT, LOW); } delayMicroseconds(50); digitalWrite(CLK, HIGH); delayMicroseconds(50); if(i>0) digitalWrite(DAT, LOW); else digitalWrite(DAT, HIGH); delayMicroseconds(50); if(i>0) digitalWrite(CLK, LOW); else digitalWrite(CLK, HIGH); } delay(20); } void telljarvis() { if (client.connect(server, 80)) { Serial.println("connected to jarvis"); client.println("GET /doorbell/doorbell.php?action=new HTTP/1.0"); client.println(); } else { Serial.println("connection failed"); } while (client.connected()){ while (client.available()){ char c = client.read(); Serial.print(c); } if (!client.connected()) { Serial.println(); Serial.println("disconnecting."); client.stop(); } delay(1000); } return; }