Advertisement
Guest User

Untitled

a guest
Nov 16th, 2017
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.77 KB | None | 0 0
  1.  
  2. #include <SoftwareSerial.h>
  3. #include <TinyGPS++.h>
  4. #include "SIM900.h"
  5. #include "inetGSM.h"
  6.  
  7.  
  8. // indikator led ...
  9. #define gsmConnect 10
  10. #define ledGPS 9
  11.  
  12. TinyGPSPlus gps;
  13.  
  14.  
  15. InetGSM inet;
  16.  
  17. char msg[50];
  18. int numdata;
  19. char inSerial[50];
  20. int i=0;
  21. boolean started=false;
  22.  
  23. //+++++++++++++++++++++++++++++++++++++++++++++++++++
  24. // Koneksi internet //
  25. char* apn  = "internet"; // Telkomsel
  26. char* user = "";
  27. char* pass = "";
  28.  
  29. char* host = "lacakternak.ga";  // alamat website
  30. char php[20]  = "/update.php";
  31.  
  32. //+++++++++++++++++++++++++++++++++++++++++++++++++++
  33.  
  34. char* get_id    = "?id_sapi=1" ; // Identitas sapi 1
  35. char* get_data1 = "&lat=";
  36. char* get_data2 = "&lon=";
  37. char* get_data3 = "&up=";
  38. char* get_data4 = "&suhu=";
  39. char* get_data5 = "&batt=";
  40.  
  41.  
  42. char path[90] ; // penampung data yg dikirim
  43. char buff[12];
  44.  
  45. double latitude, longitude, battery, suhu  ;  
  46. int uplink ,lm35, batt ;
  47. unsigned long last ;
  48. unsigned long now   ;
  49. unsigned int  waktu  ;
  50. char update_time = 4 ;  // Delay pengiriman data = tiap 4 menit ;
  51.  
  52. void setup()
  53. {
  54.      resetGSM();
  55.  
  56.      analogReference(INTERNAL);
  57.      
  58.      Serial.begin(9600); Serial.println(F("GSM Shield testing..."));
  59.        
  60.      getGPS(); // ambil data dari GPS  
  61.      
  62.      pinMode(gsmConnect,OUTPUT); digitalWrite(gsmConnect, HIGH);
  63.      pinMode(ledGPS,OUTPUT); digitalWrite(ledGPS, HIGH);
  64.  
  65.      //==== Inisialisasi GSM / Start GSM ===
  66.      if (gsm.begin(4800)) {
  67.           Serial.println(F("status=READY"));
  68.           started=true;
  69.      } else Serial.println(F("status=IDLE"));
  70.  
  71.      // Konek ke internet. Dapat IP Address  
  72.      if (inet.attachGPRS(apn, user, pass))  {     //GPRS attach, put in order APN, username and password.
  73.           Serial.println(F("status=ATTACHED"));
  74.           digitalWrite(gsmConnect, LOW);
  75.      } else Serial.println(F("status=ERROR"));          
  76. }
  77.  
  78. void loop()
  79. {
  80.      getGPS();
  81.      if(uplink > 0) {digitalWrite(ledGPS,LOW) ;}
  82.      else{digitalWrite(ledGPS,HIGH) ;}
  83.  
  84.      if(latitude != 0 || longitude != 0) {digitalWrite(ledGPS,LOW) ;}
  85.      else{digitalWrite(ledGPS,HIGH) ;}
  86.  
  87.      lm35    = analogRead(0) ; // Baca Suhu
  88.      suhu    = lm35 * 0.1075 ; // Kalibrasi
  89.  
  90.      batt    = analogRead(1) ;      // Baca Baterai
  91.      battery = batt * (1.1 /1023) ; // Analog Reference = 1,1 V
  92.      battery = battery * 23 ;       // Kalibrasi Baterai,
  93.                                     // Resistor Pembagi tegangan R1= 220K, R2= 10K
  94.  
  95.      // ====== Memasukkan data sensor ke buffer Pengiriman =====
  96.      // strcat = gabung/menyambungkan string
  97.      strcpy(path,php);    
  98.      strcat(path,get_id);
  99.      strcat(path,get_data1); dtostrf(latitude,3,6,buff) ; // Float/Double to String
  100.      strcat(path,buff);
  101.      strcat(path,get_data2); dtostrf(longitude,3,6,buff);
  102.      strcat(path,buff);
  103.      strcat(path,get_data3); itoa(uplink,buff,10);        // Integer to String
  104.      strcat(path,buff);
  105.      strcat(path,get_data4); dtostrf(suhu,3,2,buff);
  106.      strcat(path,buff);
  107.      strcat(path,get_data5); dtostrf(battery,4,3,buff);;
  108.      strcat(path,buff);
  109.      // path = data yang siap kirim
  110.      //==========================================================
  111.  
  112.      Serial.println(F("My data string im POSTing looks like this: "));
  113.      Serial.println((path));
  114.      Serial.println(strlen(path));
  115.  
  116.      now   = millis();
  117.      waktu = (now - last )/1000 ;
  118.      Serial.print(F("\nTiming S: ")); Serial.println(waktu);
  119.      //delay(1000);
  120.  
  121.      if ((waktu) >= (update_time + 60)) {
  122.         //====== Mengirim data Ke Internet ====
  123.         if(started)
  124.         {
  125.             gsm.SimpleWriteln("AT+CIFSR");  //Cek IP address.
  126.             delay(5000);
  127.             gsm.WhileSimpleRead();
  128.          
  129.             //Kirim data ke internet
  130.             inet.httpGET(host, 80,path, msg, 50);    
  131.         }
  132.         //=============================================================================
  133.        
  134.         last = millis();
  135.      }
  136. }
  137.  
  138. //====================================================================================
  139. void getGPS(){
  140.   while (Serial.available() > 0){
  141.     if (gps.encode(Serial.read())){
  142.      
  143.       displayInfo();  
  144.     }
  145.    
  146.   }
  147.   if (millis() > 5000 && gps.charsProcessed() < 10)
  148.   {
  149.     Serial.println(F("No GPS Detected"));
  150.     //while(true);
  151.   }
  152. }
  153.  
  154. //====================================================================================
  155. void displayInfo()
  156. {
  157.   if (gps.location.isValid())
  158.   {
  159.       uplink = gps.satellites.value();
  160.       latitude  = gps.location.lat();
  161.       longitude = gps.location.lng();
  162.   }
  163. }
  164.  
  165. //====================================================================================
  166. void resetGSM(){
  167.  
  168.      pinMode(4,OUTPUT);
  169.      digitalWrite(4,HIGH); digitalWrite(4,LOW);
  170.      delay(200); digitalWrite(4,HIGH);
  171.  
  172. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement