GSM PHP MySQL Datatransfer.ino

download GSM PHP MySQL Datatransfer.ino

If you can't read please download the document

description

ouii

Transcript of GSM PHP MySQL Datatransfer.ino

/* Arduino Sketch for logging Data over the GSM Network. Code inspired and snippets taken from: Tom Igoe: http://arduino.cc/en/Tutorial/GSMExamplesWebClien User Poldi: http://jleopold.de/2011/03/16/arduino-daten-logger-mysql-php Anders Hedberg: http://forum.arduino.cc/index.php?topic=163449.0 */// libraries#include // PIN Number#define PINNUMBER "" // SIM card PIN Number// APN data#define GPRS_APN "" // replace your GPRS APN#define GPRS_LOGIN ""// replace with your GPRS login#define GPRS_PASSWORD"" // replace with your GPRS password// Pin that the thermistor is connected to#define PINOTERMISTOR A0// Nominal temperature value for the thermistor#define TERMISTORNOMINAL 10000// Nominl temperature depicted on the datasheet#define TEMPERATURENOMINAL 25// Number of samples #define NUMAMOSTRAS 60// Beta value for our thermistor#define BCOEFFICIENT 3977// Value of the series resistor#define SERIESRESISTOR 10000// initialize the library instanceGSMClient client;GPRS gprs;GSM gsmAccess; // URL, path & port (for example: arduino.cc)char server[] = "";char path[] = "/datatransfer/pass.php";char key[] = ""; // Security key from pass.phpint port = 80; // port 80 is the default for HTTPlong delay_intervall = 600000; //Intervall in ms (10min)int amostra[NUMAMOSTRAS];int i;float temperature;void setup() {// initialize serial communications and wait for port to open:Serial.begin(9600);analogReference(EXTERNAL);/*while (!Serial) {; // wait for serial port to connect. Needed for Leonardo only}*/Serial.println("Starting Arduino remote data logger.");}void loop() {Serial.print("--Read Temperature "); //Read temperatureSerial.print("(Average of ");Serial.print(NUMAMOSTRAS);Serial.println(" samples over 60 seconds)--");Read_sensor();Serial.println("--Check Connection--"); //Check if connection to server possibleif (!client.connect(server, port)) {Serial.println("No connection to GSM Network. Connecting...");establish_connection();}//Connect to server and pass data and key to PHP scriptSerial.println("Connect to server and send data"); Daten_senden(); //Read answer from server (NOT WORKING YET)if (client.available()) {char c = client.read();Serial.print(c);}// If server has disconnected stop clientif (!client.available() && !client.connected()) {Serial.println();Serial.println("disconnecting.");client.stop();client.flush();}delay(delay_intervall); // Wait for time stated in setup}void establish_connection() {GSM gsmAccess(true); // True for debuggingSerial.println(F("GSM start"));unsigned long myTimeout = 120000; // YOUR LIMIT IN MILLISECONDS theGSM3ShieldV1ModemCore.println("AT");gsmAccess.begin(PINNUMBER,true,false); //Use async mode and requires that GSM debug mode has been set on GSM object creationboolean notConnected = true;unsigned long timeConnect = millis();// connection statewhile(notConnected && (millis()-timeConnect < myTimeout)) {int ok = 0;gsmAccess.ready(); //Call this if debugging is on. Otherwise we will never reach GSM_READY...?!?delay(1000); //might not call ready too often.??? See GSM3ShieldV1AccessProvider.cpp, GSM3ShieldV1AccessProvider::beginok = gsmAccess.getStatus();if (ok != GSM_READY && ok != GPRS_READY) {Serial.print(F("GSM status: "));Serial.println(ok);continue;}if(gprs.attachGPRS(GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD)==GPRS_READY) {notConnected = false;}}}void Read_sensor( ) {float media;for (i=0; i< NUMAMOSTRAS; i++) {amostra[i] = analogRead(PINOTERMISTOR);delay(10);}media = 0;for (i=0; i< NUMAMOSTRAS; i++) {media += amostra[i];delay(1000);}media /= NUMAMOSTRAS;// Convert the thermal stress value to resistancemedia = 1023 / media - 1;media = SERIESRESISTOR / media;//Calculate temperature using the Beta Factor equationtemperature = media / TERMISTORNOMINAL; // (R/Ro)temperature = log(temperature); // ln(R/Ro)temperature /= BCOEFFICIENT; // 1/B * ln(R/Ro)temperature += 1.0 / (TEMPERATURENOMINAL + 273.15); // + (1/To)temperature = 1.0 / temperature; // Invert the valuetemperature -= 273.15; // Convert it to CelsiusSerial.print("The temperature is: ");Serial.println(temperature);}void Daten_senden() {//Connect to server and pass the data to php scriptSerial.println("connecting...");// if you get a connection, report back via serial:if (client.connect(server, port)) {// Make a HTTP request:client.print("GET ");client.print(path);client.print("?data=");client.print(temperature);client.print("&check=");client.print(key);client.println(" HTTP/1.1");client.print("Host: ");client.println(server);client.println();Serial.println("Done!");} else {Serial.println("No Connetion");}}