Appendix

Preview:

DESCRIPTION

extra

Citation preview

Pamantasan ng Cabuyao Laguna, Philippines 4025

COLLEGE OF ENGINEERING

i

PAGE

APPENDICES

Pamantasan ng Cabuyao Laguna, Philippines 4025

COLLEGE OF ENGINEERING

ii

PAGE

APPENDIX A

Datasheets and Components Specifications

Pamantasan ng Cabuyao Laguna, Philippines 4025

COLLEGE OF ENGINEERING

iii

PAGE

MK II Power Analyzer

Pamantasan ng Cabuyao Laguna, Philippines 4025

COLLEGE OF ENGINEERING

iv

PAGE

Arduino Uno R3 and Arduino Pro Mini

Pamantasan ng Cabuyao Laguna, Philippines 4025

COLLEGE OF ENGINEERING

v

PAGE

SIM900 GSM Module

Pamantasan ng Cabuyao Laguna, Philippines 4025

COLLEGE OF ENGINEERING

vi

PAGE

XBee Series 1 Module

Pamantasan ng Cabuyao Laguna, Philippines 4025

COLLEGE OF ENGINEERING

vii

PAGE

APPENDIX B

Source Codes

Pamantasan ng Cabuyao Laguna, Philippines 4025

COLLEGE OF ENGINEERING

viii

PAGE

Receiver Section Source Code

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

#include <LiquidCrystal.h>

#include <SoftwareSerial.h>

#include <String.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

SoftwareSerial mySerial(20, 21);

const long interval = 2000, interval2=60000;

unsigned long previousMillis = 0, previousMillis2=0;

int powerServer; // power sa server / receiver

int powerXbee; // power na narereceive sa xbee / transmitter

String readString; //main captured String

String stat, ver, vrms, irms, preal, va, qaverage, qinstant, pf,

temperature, pharmonic, pfundamental, pqfundamental, watthr,

intetx; //data String

int ind1, ind2, ind3, ind4, ind5, ind6, ind7, ind8, ind9, ind10,

ind11, ind12, ind13, ind14, ind15, ind16;

String inputString1 = ""; // a string to hold incoming

data

String inputString2 = "";

String inputString3 = "";

boolean stringComplete1 = false; // whether the string is

complete

Pamantasan ng Cabuyao Laguna, Philippines 4025

COLLEGE OF ENGINEERING

ix

PAGE

boolean stringComplete2 = false;

boolean stringComplete3 = false;

void setup() {

mySerial.begin(9600);

mySerial.print("\r");

Serial.begin(9600); // programmer

Serial1.begin(9600); // GSM

Serial1.print("\r");

delay(1000);

Serial2.begin(9600); // xbee

Serial3.begin(9600); // power analyzer

inputString1.reserve(200);

inputString2.reserve(200);

inputString3.reserve(200);

lcd.begin(16, 2);

pinMode(8, OUTPUT);

digitalWrite(8,LOW);

delay(1000);

digitalWrite(8,HIGH);

delay(2000);

digitalWrite(8,LOW);

delay(1000);

Pamantasan ng Cabuyao Laguna, Philippines 4025

COLLEGE OF ENGINEERING

x

PAGE

}

void loop() {

unsigned long currentMillis = millis();

unsigned long currentMillis2 = millis();

if (stringComplete2 && stringComplete3) {

powerXbee=inputString2.toInt();

lcd.setCursor(0,0);

lcd.print("Total Load: ");

lcd.print(powerServer); // display the total load to

lcd

lcd.setCursor(0,1);

lcd.print(" ");

lcd.setCursor(0,1);

lcd.print("Tx Load: ");

lcd.print(powerXbee); // display the power throw by

xbee

if(currentMillis - previousMillis >= interval) {

previousMillis = currentMillis;

if(powerServer > powerXbee){

lcd.setCursor(0,1);

Pamantasan ng Cabuyao Laguna, Philippines 4025

COLLEGE OF ENGINEERING

xi

PAGE

lcd.print(" ");

lcd.setCursor(0,1);

lcd.print("Jumper Detected");

if(currentMillis2 - previousMillis2 >= interval2) {

previousMillis2 = currentMillis2;

SendMessage();

Serial.print("SEND SMS");

lcd.setCursor(0,1);

lcd.print(" ");

lcd.setCursor(0,1);

lcd.print("Sending SMS");

delay(1000);

}

}

// clear the string:

inputString2 = "";

stringComplete2 = false;

stringComplete3 = false;

}

}

}

//GSM

void serialEvent1(){

Pamantasan ng Cabuyao Laguna, Philippines 4025

COLLEGE OF ENGINEERING

xii

PAGE

while (Serial1.available()) {

// get the new byte:

char inChar1 = (char)Serial1.read();

// add it to the inputString:

inputString1 += inChar1;

// if the incoming character is a newline, set a flag

// so the main loop can do something about it:

if (inChar1 == '\n') {

stringComplete1 = true;

}

}

}

//xbee

void serialEvent2(){

while (Serial2.available()) {

// get the new byte:

char inChar2 = (char)Serial2.read();

// add it to the inputString:

inputString2 += inChar2;

// if the incoming character is a newline, set a flag

// so the main loop can do something about it:

if (inChar2 == '\n') {

stringComplete2 = true;

Pamantasan ng Cabuyao Laguna, Philippines 4025

COLLEGE OF ENGINEERING

xiii

PAGE

}

}

}

//Power Analyzer

void serialEvent3() {

while (Serial3.available()) {

char c = Serial3.read(); //gets one byte from serial buffer

if (c == 0x03) {

ind1 = readString.indexOf(','); //finds location of first

,

stat = readString.substring(0, ind1); //captures first

data String

ind2 = readString.indexOf(',', ind1+1 ); //finds location

of second ,

ver = readString.substring(ind1+1, ind2); //captures

second data String

ind3 = readString.indexOf(',', ind2+1 );

vrms = readString.substring(ind2+1, ind3);

ind4 = readString.indexOf(',', ind3+1 );

irms = readString.substring(ind3+1, ind4);

ind5 = readString.indexOf(',', ind4+1 );

preal = readString.substring(ind4+1, ind5);

ind6 = readString.indexOf(',', ind5+1 );

Pamantasan ng Cabuyao Laguna, Philippines 4025

COLLEGE OF ENGINEERING

xiv

PAGE

va = readString.substring(ind5+1, ind6);

ind7 = readString.indexOf(',', ind6+1 );

qaverage = readString.substring(ind6+1, ind7);

ind8 = readString.indexOf(',', ind7+1 );

qinstant = readString.substring(ind7+1, ind8);

ind9 = readString.indexOf(',', ind8+1 );

pf = readString.substring(ind8+1, ind9);

ind10 = readString.indexOf(',', ind9+1 );

temperature = readString.substring(ind9+1, ind10);

ind11 = readString.indexOf(',', ind10+1 );

pharmonic = readString.substring(ind10+1, ind11);

ind12 = readString.indexOf(',', ind11+1 );

pfundamental = readString.substring(ind11+1, ind12);

ind13 = readString.indexOf(',', ind12+1 );

pqfundamental = readString.substring(ind12+1, ind13);

ind14 = readString.indexOf(',', ind13+1 );

watthr = readString.substring(ind13+1, ind14);

ind15 = readString.indexOf(',', ind14+1 );

intetx = readString.substring(ind14+1, ind15);

ind16 = readString.indexOf(',', ind15+1 );

powerServer = preal.toInt();

powerServer -=5;

Pamantasan ng Cabuyao Laguna, Philippines 4025

COLLEGE OF ENGINEERING

xv

PAGE

preal="";

readString=""; //clears variable for new input

stringComplete3 = true;

}

else {

readString += c; //makes the string readString

}

}

}

void SendMessage() // send to cabuyao hospital

{

mySerial.print("AT+CMGF=1\r"); //Because we want to send the

SMS in text mode

delay(500);

mySerial.println("AT + CMGS = \"09367374546\"");//send sms

message, be careful need to add a country code before the

cellphone number

delay(500);

mySerial.println("Jumper Detected at Matalino St.,");//the

content of the message

delay(1000);

Pamantasan ng Cabuyao Laguna, Philippines 4025

COLLEGE OF ENGINEERING

xvi

PAGE

mySerial.println("Katapatan Vill., Banay-banay, City of

Cabuyao");//the content of the message

delay(1000);

mySerial.println((char)26);//the ASCII code of the ctrl+z is 26

delay(500);

mySerial.println();

}

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

Pamantasan ng Cabuyao Laguna, Philippines 4025

COLLEGE OF ENGINEERING

xvii

PAGE

Transmitter Section Source Code

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

#include <SoftwareSerial.h>

#include <LiquidCrystal.h>

LiquidCrystal lcd(4, 5, 6, 7, 8, 9);

SoftwareSerial mySerial(2, 3);

String readString; //main captured String

String stat, ver, vrms, irms, preal, va, qaverage, qinstant, pf,

temperature, pharmonic, pfundamental, pqfundamental, watthr,

intetx; //data String

int ind1, ind2, ind3, ind4, ind5, ind6, ind7, ind8, ind9, ind10,

ind11, ind12, ind13, ind14, ind15, ind16;

unsigned long previousMillis = 0; // will store last time

LED was updated

const long interval = 500; // interval at which to

blink (milliseconds)

void setup() {

Pamantasan ng Cabuyao Laguna, Philippines 4025

COLLEGE OF ENGINEERING

xviii

PAGE

mySerial.begin(9600);

Serial.begin(9600);

lcd.begin(16, 2);

lcd.print(“Power Analyzer”);

delay(2000);

lcd.clear();

}

//#define C_STX 0x02

//#define C_ETX 0x03

void loop() {

unsigned long currentMillis = millis();

if (mySerial.available()) {

char c = mySerial.read(); //gets one byte from serial buffer

if (c == 0x03) {

//do stuff

ind1 = readString.indexOf(‘,’); //finds location of first

,

Pamantasan ng Cabuyao Laguna, Philippines 4025

COLLEGE OF ENGINEERING

xix

PAGE

stat = readString.substring(0, ind1); //captures first

data String

ind2 = readString.indexOf(‘,’, ind1+1 ); //finds location

of second ,

ver = readString.substring(ind1+1, ind2); //captures

second data String

ind3 = readString.indexOf(‘,’, ind2+1 );

vrms = readString.substring(ind2+1, ind3);

ind4 = readString.indexOf(‘,’, ind3+1 );

irms = readString.substring(ind3+1, ind4);

ind5 = readString.indexOf(‘,’, ind4+1 );

preal = readString.substring(ind4+1, ind5);

ind6 = readString.indexOf(‘,’, ind5+1 );

va = readString.substring(ind5+1, ind6);

ind7 = readString.indexOf(‘,’, ind6+1 );

qaverage = readString.substring(ind6+1, ind7);

ind8 = readString.indexOf(‘,’, ind7+1 );

qinstant = readString.substring(ind7+1, ind8);

ind9 = readString.indexOf(‘,’, ind8+1 );

pf = readString.substring(ind8+1, ind9);

ind10 = readString.indexOf(‘,’, ind9+1 );

temperature = readString.substring(ind9+1, ind10);

ind11 = readString.indexOf(‘,’, ind10+1 );

Pamantasan ng Cabuyao Laguna, Philippines 4025

COLLEGE OF ENGINEERING

xx

PAGE

pharmonic = readString.substring(ind10+1, ind11);

ind12 = readString.indexOf(‘,’, ind11+1 );

pfundamental = readString.substring(ind11+1, ind12);

ind13 = readString.indexOf(‘,’, ind12+1 );

pqfundamental = readString.substring(ind12+1, ind13);

ind14 = readString.indexOf(‘,’, ind13+1 );

watthr = readString.substring(ind13+1, ind14);

ind15 = readString.indexOf(‘,’, ind14+1 );

intetx = readString.substring(ind14+1, ind15);

ind16 = readString.indexOf(‘,’, ind15+1 );

if(currentMillis – previousMillis >= interval) {

previousMillis = currentMillis;

Serial.println(preal);

}

lcd.setCursor(0, 0);

lcd.print(“RP:”+preal);

lcd.print(“ V:”+vrms);

lcd.setCursor(0, 1);

lcd.print(“VA:”+va);

Pamantasan ng Cabuyao Laguna, Philippines 4025

COLLEGE OF ENGINEERING

xxi

PAGE

lcd.print(“ W/H:”+watthr);

readString=””; //clears variable for new input

stat=””;

ver=””;

vrms=””;

irms=””;

preal=””;

va=””;

qaverage=””;

qinstant=””;

pf=””;

temperature=””;

pharmonic=””;

pfundamental=””;

pqfundamental=””;

watthr=””;

intetx=””;

}

else {

readString += c; //makes the string readString

}

}

Pamantasan ng Cabuyao Laguna, Philippines 4025

COLLEGE OF ENGINEERING

xxii

PAGE

}

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

Pamantasan ng Cabuyao Laguna, Philippines 4025

COLLEGE OF ENGINEERING

xxiii

PAGE

Source Code for the LCD Screen:

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

#include <SoftwareSerial.h>

char rxbyte;

int i;

char * range;

char * watts;

char * va;

char * var;

char * pf;

char * volts;

char * amps;

char padata[53];

bool StartDataReceived = false;

bool DataAvailable = false;

SoftwareSerial mySerial(2, 3);

void setup()

{

Serial.begin(9600);

mySerial.begin(9600);

Pamantasan ng Cabuyao Laguna, Philippines 4025

COLLEGE OF ENGINEERING

xxiv

PAGE

}

void loop()

{

if (mySerial.available() > 0)

{

rxbyte = mySerial.read();

if ( rxbyte == 'I')

{

StartDataReceived = true;

padata[0] = rxbyte;

}

}

if (( StartDataReceived == true) && (

mySerial.available() > 0))

{

for ( i = 1; i < 53; i++ )

{

while (mySerial.available() ==

0){}

padata[i] = mySerial.read();

}

StartDataReceived = false;

Pamantasan ng Cabuyao Laguna, Philippines 4025

COLLEGE OF ENGINEERING

xxv

PAGE

DataAvailable = true;

}

if ( DataAvailable == true)

{

range = strtok(padata, ",");

watts = strtok(NULL, ",");

va = strtok(NULL, ",");

var = strtok(NULL, ",");

pf = strtok(NULL, ",");

volts = strtok(NULL, ",");

amps = strtok(NULL, ",");

Serial.print("WATTS: ");

Serial.println(watts);

Serial.print("VA: ");

Serial.println(va);

Serial.print("VAR: ");

Serial.println(var);

Serial.print("PF: ");

Serial.println(pf);

Serial.print("VOLTS: ");

Serial.println(volts);

Pamantasan ng Cabuyao Laguna, Philippines 4025

COLLEGE OF ENGINEERING

xxvi

PAGE

Serial.print("AMPS: ");

Serial.println(amps);

memset(padata, NULL, 53);

DataAvailable = false;

}

}

Pamantasan ng Cabuyao Laguna, Philippines 4025

COLLEGE OF ENGINEERING

xxvii

PAGE

APPENDIX C

Schematic Diagrams

Pamantasan ng Cabuyao Laguna, Philippines 4025

COLLEGE OF ENGINEERING

xxvii

i

PAGE

Schematic Diagram of the Receiver Section

Pamantasan ng Cabuyao Laguna, Philippines 4025

COLLEGE OF ENGINEERING

xxix

PAGE

Schematic Diagram of the

Transmitter Section

Pamantasan ng Cabuyao Laguna, Philippines 4025

COLLEGE OF ENGINEERING

xxx

PAGE

APPENDIX D

(Bill of Materials)

Pamantasan ng Cabuyao Laguna, Philippines 4025

COLLEGE OF ENGINEERING

xxxi

PAGE

Components/Materials Quantity Unit Price (Php) Amount

Arduino Uno R3 1 500 500

Arduino Pro Mini 1 350 350

MK II Power Analyzer 2 1,000 2,000

Xbee Series 1 Module 2 1,442 2,884

Xbee Shield 2 300 600

LCD Screen 2 400 800

Potentiometer 2 15 30

SIM900 GSM Module 1 2,100 2,100

Platform 1 200 200

PVC Tubes 2 100 200

Paint 1 100 100

Power Supply 2 50 100

Casing 2 50 100

Total Amount 9,964

Pamantasan ng Cabuyao Laguna, Philippines 4025

COLLEGE OF ENGINEERING

xxxii

PAGE

APPENDIX E

Curriculum Vitae of the Researchers

Recommended