Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SoftwareSerial.h>
- #include <TinyGPS++.h>
- #include "SIM900.h"
- #include "inetGSM.h"
- // indikator led ...
- #define gsmConnect 10
- #define ledGPS 9
- TinyGPSPlus gps;
- InetGSM inet;
- char msg[50];
- int numdata;
- char inSerial[50];
- int i=0;
- boolean started=false;
- //+++++++++++++++++++++++++++++++++++++++++++++++++++
- // Koneksi internet //
- char* apn = "internet"; // Telkomsel
- char* user = "";
- char* pass = "";
- char* host = "lacakternak.ga"; // alamat website
- char php[20] = "/update.php";
- //+++++++++++++++++++++++++++++++++++++++++++++++++++
- char* get_id = "?id_sapi=1" ; // Identitas sapi 1
- char* get_data1 = "&lat=";
- char* get_data2 = "&lon=";
- char* get_data3 = "&up=";
- char* get_data4 = "&suhu=";
- char* get_data5 = "&batt=";
- char path[90] ; // penampung data yg dikirim
- char buff[12];
- double latitude, longitude, battery, suhu ;
- int uplink ,lm35, batt ;
- unsigned long last ;
- unsigned long now ;
- unsigned int waktu ;
- char update_time = 4 ; // Delay pengiriman data = tiap 4 menit ;
- void setup()
- {
- resetGSM();
- analogReference(INTERNAL);
- Serial.begin(9600); Serial.println(F("GSM Shield testing..."));
- getGPS(); // ambil data dari GPS
- pinMode(gsmConnect,OUTPUT); digitalWrite(gsmConnect, HIGH);
- pinMode(ledGPS,OUTPUT); digitalWrite(ledGPS, HIGH);
- //==== Inisialisasi GSM / Start GSM ===
- if (gsm.begin(4800)) {
- Serial.println(F("status=READY"));
- started=true;
- } else Serial.println(F("status=IDLE"));
- // Konek ke internet. Dapat IP Address
- if (inet.attachGPRS(apn, user, pass)) { //GPRS attach, put in order APN, username and password.
- Serial.println(F("status=ATTACHED"));
- digitalWrite(gsmConnect, LOW);
- } else Serial.println(F("status=ERROR"));
- }
- void loop()
- {
- getGPS();
- if(uplink > 0) {digitalWrite(ledGPS,LOW) ;}
- else{digitalWrite(ledGPS,HIGH) ;}
- if(latitude != 0 || longitude != 0) {digitalWrite(ledGPS,LOW) ;}
- else{digitalWrite(ledGPS,HIGH) ;}
- lm35 = analogRead(0) ; // Baca Suhu
- suhu = lm35 * 0.1075 ; // Kalibrasi
- batt = analogRead(1) ; // Baca Baterai
- battery = batt * (1.1 /1023) ; // Analog Reference = 1,1 V
- battery = battery * 23 ; // Kalibrasi Baterai,
- // Resistor Pembagi tegangan R1= 220K, R2= 10K
- // ====== Memasukkan data sensor ke buffer Pengiriman =====
- // strcat = gabung/menyambungkan string
- strcpy(path,php);
- strcat(path,get_id);
- strcat(path,get_data1); dtostrf(latitude,3,6,buff) ; // Float/Double to String
- strcat(path,buff);
- strcat(path,get_data2); dtostrf(longitude,3,6,buff);
- strcat(path,buff);
- strcat(path,get_data3); itoa(uplink,buff,10); // Integer to String
- strcat(path,buff);
- strcat(path,get_data4); dtostrf(suhu,3,2,buff);
- strcat(path,buff);
- strcat(path,get_data5); dtostrf(battery,4,3,buff);;
- strcat(path,buff);
- // path = data yang siap kirim
- //==========================================================
- Serial.println(F("My data string im POSTing looks like this: "));
- Serial.println((path));
- Serial.println(strlen(path));
- now = millis();
- waktu = (now - last )/1000 ;
- Serial.print(F("\nTiming S: ")); Serial.println(waktu);
- //delay(1000);
- if ((waktu) >= (update_time + 60)) {
- //====== Mengirim data Ke Internet ====
- if(started)
- {
- gsm.SimpleWriteln("AT+CIFSR"); //Cek IP address.
- delay(5000);
- gsm.WhileSimpleRead();
- //Kirim data ke internet
- inet.httpGET(host, 80,path, msg, 50);
- }
- //=============================================================================
- last = millis();
- }
- }
- //====================================================================================
- void getGPS(){
- while (Serial.available() > 0){
- if (gps.encode(Serial.read())){
- displayInfo();
- }
- }
- if (millis() > 5000 && gps.charsProcessed() < 10)
- {
- Serial.println(F("No GPS Detected"));
- //while(true);
- }
- }
- //====================================================================================
- void displayInfo()
- {
- if (gps.location.isValid())
- {
- uplink = gps.satellites.value();
- latitude = gps.location.lat();
- longitude = gps.location.lng();
- }
- }
- //====================================================================================
- void resetGSM(){
- pinMode(4,OUTPUT);
- digitalWrite(4,HIGH); digitalWrite(4,LOW);
- delay(200); digitalWrite(4,HIGH);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement