Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- volatile int NbTopsFan; //measuring the rising edges of the signal
- int Calc;
- int hallsensor = 2; //The pin location of the sensor
- int total = 0;
- int temp=0;
- int counter =0;
- int hitung = 0;
- char buffer_kirim[100];
- char url[]="www.cobaserver.hosting.com";
- int8_t answer, respond;
- byte gsmDriverPin[3] = {
- 3,4,5};
- void rpm () //This is the function that the interupt calls
- {
- NbTopsFan++; //This function measures the rising and falling edge of the hall effect sensors signal
- }
- void setup()
- {
- for(int i = 0 ; i < 3; i++){
- pinMode(gsmDriverPin[i],OUTPUT);
- }
- //Output GSM Timing
- digitalWrite(5,HIGH);
- delay(1500);
- digitalWrite(5,LOW);
- delay(2000);
- pinMode(hallsensor, INPUT);
- Serial.begin(9600); //set the baud rate
- delay(5000);
- attachInterrupt(0, rpm, RISING);
- delay(5000);
- Serial.println("Starting...");
- power_on();
- delay(3000);
- sendATcommand("AT+CPIN=****", "OK", 2000);
- delay(3000);
- /*Konfigurasi APN*/
- while (sendATcommand2("AT+CREG?", "+CREG: 0,1", "+CREG: 0,5", 2000) == 0);
- sendATcommand("AT+SAPBR=3,1,\"Contype\",\"GPRS\"", "OK", 2000);
- sendATcommand("AT+SAPBR=3,1,\"APN\",\"indosatgprs\"", "OK", 2000);
- sendATcommand("AT+SAPBR=3,1,\"USER\",\"\"", "OK", 2000);
- sendATcommand("AT+SAPBR=3,1,\"PWD\",\"\"", "OK", 2000);
- if ((sendATcommand("AT+SAPBR=1,1", "OK", 10000)) == 0)
- Serial.println ("Waiting...");
- }
- void loop()
- {
- /*Fungsi mengambil data dari sensor flowemeter*/
- NbTopsFan = 0; //Set NbTops to 0 ready for calculations
- sei(); //Enables interrupts
- delay (1000); //Wait 1 second
- cli(); //Disable interrupts
- Calc = (NbTopsFan / 7.5); //(Pulse frequency x 60) / 7.5Q, = flow rate in L/hour
- Serial.print("Counter : ");
- Serial.println(counter);
- Serial.print(Calc);
- Serial.println(" L/min");
- if(Calc == 0 && total!=0 && counter==4)
- {
- HTTP(total); //kirim data melalui HTTP POST
- total=0; //ubah data total menjadi 0
- }
- else
- {
- temp=Calc;
- total=total+temp;
- }
- counter++;
- if(counter==5)
- {
- Serial.print("Total : ");
- Serial.println(total);
- Serial.println("");
- counter=0;
- }
- }
- /*Fungsi Kirim data via HTTP*/
- void HTTP(int data)
- {
- Serial.println("AT+HTTPINIT");
- delay(5000);
- Serial.println("AT+HTTPPARA=\"CID\",1");
- delay(5000);
- sprintf(buffer_kirim,"AT+HTTPPARA=\"URL\",\"http://%s/insert_data.php?lat=70.0000&lon=140.00000&data_air=%d\" ",url,data);
- Serial.println(buffer_kirim);
- delay(5000);
- Serial.println("AT+HTTPACTION=0");
- delay(5000);
- Serial.println("AT+HTTPREAD=0");
- }
- /*Fungsi Inisialisasi Hardware*/
- uint8_t power_on(){
- uint8_t answer=0;
- // checks if the module is started
- answer = sendATcommand("AT", "OK", 2000);
- if (answer == 0)
- {
- // power on pulse
- digitalWrite(4,HIGH); //Disable GPS
- delay(2000);
- digitalWrite(3,LOW); //Enable GSM
- // waits for an answer from the module
- while(answer == 0){
- // Send AT every two seconds and wait for the answer
- answer = sendATcommand("AT", "OK", 2000);
- }
- }
- return answer;
- }
- /*Fungsi sendATcommand untuk memudahkan komunikasi dengan output 1 jawaban*/
- int8_t sendATcommand(char* ATcommand, char* expected_answer1, unsigned int timeout){
- uint8_t x=0, answer=0;
- char response[100];
- unsigned long previous;
- memset(response, '\0', 100); // Initialize the string
- delay(100);
- while( Serial.available() > 0) Serial.read(); // Clean the input buffer
- Serial.println(ATcommand); // Send the AT command
- x = 0;
- previous = millis();
- // this loop waits for the answer
- do{
- if(Serial.available() != 0){
- response[x] = Serial.read();
- x++;
- // check if the desired answer is in the response of the module
- if (strstr(response, expected_answer1) != NULL)
- {
- answer = 1;
- }
- }
- // Waits for the asnwer with time out
- }
- while((answer == 0) && ((millis() - previous) < timeout));
- return answer;
- }
- /*Fungsi sendATcommand untuk memudahkan komunikasi dengan output 2 jawaban*/
- int8_t sendATcommand2(char* ATcommand, char* expected_answer1,
- char* expected_answer2, unsigned int timeout){
- uint8_t x=0, answer=0;
- char response[100];
- unsigned long previous;
- memset(response, '\0', 100); // Initialize the string
- delay(100);
- while( Serial.available() > 0) Serial.read(); // Clean the input buffer
- Serial.println(ATcommand); // Send the AT command
- x = 0;
- previous = millis();
- // this loop waits for the answer
- do{
- if(Serial.available() != 0){
- response[x] = Serial.read();
- x++;
- // check if the desired answer 1 is in the response of the module
- if (strstr(response, expected_answer1) != NULL)
- {
- answer = 1;
- }
- // check if the desired answer 2 is in the response of the module
- if (strstr(response, expected_answer2) != NULL)
- {
- answer = 2;
- }
- }
- // Waits for the asnwer with time out
- }while((answer == 0) && ((millis() - previous) < timeout));
- return answer;
- }
Advertisement
Add Comment
Please, Sign In to add comment