diff --git a/ZMHW_Project_InfraredDiodeSensor.ino b/ZMHW_Project_InfraredDiodeSensor.ino index 51277a3..dbc2fda 100644 --- a/ZMHW_Project_InfraredDiodeSensor.ino +++ b/ZMHW_Project_InfraredDiodeSensor.ino @@ -53,7 +53,7 @@ #include -#include +//#include @@ -65,12 +65,12 @@ #define SICK 0 // set to 1 if using sick sensor (on analog pin) // sick sensor is a transistor activated photoelectric // sensor. More details below. -#define NORMALMODECT 0 // For a digital High motion sensor. +#define NORMALMODECT 1 // For a digital High motion sensor. /***************Ethernet ENC28J60***************/ //Mac must be unique for each sensor -byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xEA, 0x15 }; +byte mac[] = { 0xD3, 0x5D, 0xBE, 0xEF, 0xEE, 0x15 }; //Static IP of Arduino byte ip[] = { 192, 168, 1, 177 }; //IP of ZM Server @@ -108,13 +108,13 @@ char* LOCATIONOFSENSOR = "Bay Four - Tool Room"; /***************Variables************/ -uint16_t MotionSensorRead = 0; + uint8_t AlarmActive = 0; -char* ZMTriggerMessage = "1234567890123456789012345678901234"; //Initialize this with dummy data +char* ZMTriggerMessage = "1234567890123456789012345"; //Initialize this with dummy data uint8_t TEMPERATUREVALUE = 0; uint8_t TEMPERATUREVALUE2 = 0; uint8_t SOUNDVALUE = 0; -uint8_t MODECTVALUE = 0; +uint16_t MODECTVALUE = 0; /* @@ -137,7 +137,7 @@ char* monnum = "25"; //monitor number char* onoff = "on"; //command to send to zmtrigger. char* timealarm = "10"; //time to set monitor to alarm char* score = "100"; //score to assign -char* source = "ZMHW MotionSensor"; //source. Add details as needed (e.g. Hallway sensor) +char* source = "ZMHW"; //source. Add details as needed (e.g. Hallway sensor) @@ -154,7 +154,7 @@ char* source = "ZMHW MotionSensor"; //source. Add details as needed (e EthernetClient client; EthernetServer server2 = EthernetServer(LISTENPORT); - +/* void chime(int freq){ tone(SPEAKERPIN, freq, 50); delay(50); @@ -163,7 +163,7 @@ void chime(int freq){ void chimefast(int freq, int fast){ tone(SPEAKERPIN, freq, fast); delay(fast); -} +}*/ //timer/interrupt uint16_t timer1; @@ -193,13 +193,17 @@ void setup() { Serial.begin(9600); - Serial.println("ZMHW Project"); - Serial.println("Motion Sensor"); + Serial.println(F("ZMHW Project")); + Serial.println(F("Motion Sensor")); + //if sick pinMode(SICKPIN, INPUT); + //if mic pinMode(MICROPHONEPIN, INPUT); + //if speaker pinMode(SPEAKERPIN, OUTPUT); pinMode(MODECTPIN, INPUT); + pinMode(TEMPPIN, INPUT); //Be careful. This sets Areg to 1.1v!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! analogReference(INTERNAL); @@ -208,7 +212,7 @@ void setup() Ethernet.begin(mac, ip); server2.begin(); - Serial.print("server is at "); + Serial.print(F("server is at ")); Serial.println(Ethernet.localIP()); @@ -239,19 +243,19 @@ void setup() sei(); //timer needs interrupts, enable (set) interrupts - tone(SPEAKERPIN, 1000, 200); - delay(100); - tone(SPEAKERPIN, 2000, 200); - delay(100); - tone(SPEAKERPIN, 2200, 200); - delay(100); + //tone(SPEAKERPIN, 1000, 200); + //delay(100); + //tone(SPEAKERPIN, 2000, 200); + //delay(100); + //tone(SPEAKERPIN, 2200, 200); + //delay(100); } void loop() { - + //delay(50); @@ -263,33 +267,40 @@ void loop() //saves a few seconds to put a diode on the end instead of transistor //when soldering by hand. Works equally as well. Requires ADC pin. +/* if (SICK){ MotionSensorRead = analogRead(SICKPIN); Serial.print("Motion Sensor Value: "); Serial.println(String(MotionSensorRead)); //Serial.println(String(timer1)); - delay(10); + delay(30); } +*/ TEMPERATUREVALUE = analogRead(TEMPPIN); - Serial.print("Temperature Value: "); + Serial.print(F("Temperature Value: ")); // See resources. uses 1.1 aref, converts to celcius, then to Fareinheit. TEMPERATUREVALUE2 = (TEMPERATUREVALUE / 9.31)* 2 + 30; Serial.println(String(TEMPERATUREVALUE2)); - delay(10); + delay(30); +/* if (MIC){ SOUNDVALUE = analogRead(MICROPHONEPIN); Serial.print("Sound Value: "); Serial.println(String(SOUNDVALUE)); - delay(10); + delay(30); } - - //if (NORMALMODECT){ +*/ + if (NORMALMODECT){ + delay(10); MODECTVALUE = digitalRead(MODECTPIN); - Serial.print("Motion Detector Value (normal): "); - Serial.println(String(MODECTVALUE)); - //} + delay(10); + Serial.print(F("Motion Detector Value (normal): ")); + //Serial.println(String(MODECTVALUE)); + Serial.println(MODECTVALUE); + delay(30); + } if(DEBUGMODE){ @@ -307,8 +318,8 @@ void loop() //Motion sensing for Sick Photoelectric sensor only //upon boot, values are around 400 sometimes, so only alert at higher if(SICK){ - if (MotionSensorRead > 500 && AlarmActive == 0){ - Serial.println("Motion Detected on Sick"); + if (MODECTVALUE > 500 && AlarmActive == 0){ + Serial.println(F("Motion Detected on Sick")); //firstpacketsend = 0; @@ -322,7 +333,7 @@ void loop() //Want the chime to be only noticeable if you know what to listen //for. Make it a high freq. sound that is easy to miss. //Resistors to speaker should be high - chime(13000); + //chime(13000); Serial.println("Connecting..."); @@ -330,16 +341,16 @@ void loop() if (client.connect(server, ZMTRIGGERPORT)) { - chime(13000); + //chime(13000); //beware that the buffer in snprintf is big enough to hold everything snprintf(ZMTriggerMessage, 56, "%s|%s+%s|%s|%s||", monnum, onoff, timealarm, score, source); - Serial.print("the TCP Packet being sent:"); + Serial.print(F("the TCP Packet being sent:")); Serial.println(String(ZMTriggerMessage)); client.println(String(ZMTriggerMessage)); //required - Serial.println("TCP packet sent to ZMTrigger"); + Serial.println(F("TCP packet sent to ZMTrigger")); client.stop(); } else { @@ -349,14 +360,16 @@ void loop() //If you ARE connected to the network, and server is not available //then it will timeout. - Serial.println("Connection to ZM Server failed"); + Serial.println(F("Connection to ZM Server failed")); - chime(50); + + /*chime(50); delay(100); chime(50); delay(100); chime(50); delay(100); + */ } } }//end sick @@ -368,8 +381,8 @@ void loop() //Digital High Motion Sensor if(NORMALMODECT){ - if (MODECTVALUE==HIGH){ - Serial.println("Motion Detected on Normal Sensor"); + if (MODECTVALUE==HIGH && AlarmActive == 0){ + Serial.println(F("Motion Detected on Normal Sensor")); //firstpacketsend = 0; @@ -383,24 +396,25 @@ void loop() //Want the chime to be only noticeable if you know what to listen //for. Make it a high freq. sound that is easy to miss. //Resistors to speaker should be high - chime(13000); + //chime(13000); + delay(10); - Serial.println("Connecting..."); + Serial.println(F("Connecting...")); if (client.connect(server, ZMTRIGGERPORT)) { - chime(13000); - + //chime(13000); + //delay(10); //beware that the buffer in snprintf is big enough to hold everything snprintf(ZMTriggerMessage, 56, "%s|%s+%s|%s|%s||", monnum, onoff, timealarm, score, source); - Serial.print("the TCP Packet being sent:"); + Serial.print(F("the TCP Packet being sent:")); Serial.println(String(ZMTriggerMessage)); client.println(String(ZMTriggerMessage)); //required - Serial.println("TCP packet sent to ZMTrigger"); + Serial.println(F("TCP packet sent to ZMTrigger")); client.stop(); } else { @@ -410,14 +424,15 @@ void loop() //If you ARE connected to the network, and server is not available //then it will timeout. - Serial.println("Connection to ZM Server failed"); + Serial.println(F("Connection to ZM Server failed")); - chime(40); + /* chime(40); delay(100); chime(60); delay(100); chime(60); delay(100); + */ } } MODECTVALUE=LOW; @@ -449,7 +464,7 @@ void loop() // listen for incoming clients EthernetClient client = server2.available(); if (client) { - Serial.println("new client"); + Serial.println(F("web visitor")); // an http request ends with a blank line boolean currentLineIsBlank = true; while (client.connected()) { @@ -463,8 +478,8 @@ void loop() // send a standard http response header client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); - client.println("Connection: close"); // the connection will be closed after completion of the response - client.println("Refresh: 5"); // refresh the page automatically every 5 sec + //client.println("Connection: close"); // the connection will be closed after completion of the response + //client.println("Refresh: 5"); // refresh the page automatically every 5 sec client.println(); client.println(""); client.println("
");
@@ -474,6 +489,7 @@ void loop()
           //client.println("IP Address:");
           //client.println(Ethernet.localIP());
           client.println("Sensor Location:");
+          //client.println("Bay Four - Tool Room");
           client.println(LOCATIONOFSENSOR);
           client.println("Type of Sensor:");
           client.println("Microwave - HFS-DC06H");
@@ -495,7 +511,7 @@ void loop()
     delay(1);
     // close the connection:
     client.stop();
-    Serial.println("client disconnected");
+    Serial.println(F("client disconnected"));
   }