Jumat, 03 November 2017

Send Data Sensor Arduino to URL Use Ethernet Shield RJ45 - Wireless

Misalkan kita sudah membuat penampungan data di thingspeak.com

dan kita uji simpan data via URL Berhasil:
https://api.thingspeak.com/update?api_key=RX25Q5K1OKOXXXXX&field1=34



LANJUT....
misalkan kita ada 8 sensor yang hendak di pantau:

Sensor Wind Direction: 35
Sensor Average Wind Speed (One Hour): 34.56m/s
Sensor Max Wind Speed (Five Minutes): 67.66m/s
Sensor Rain Fall (One Hour): 17.78mm
Sensor Rain Fall (24 Hour): 17.78mm
Sensor Temperature: 33.33C
Sensor Humidity: 61%
Sensor Barometric Pressure: 1510.00hPa

Sehingga jadinya adalah sebagai berikut:


Jika kita Uji menggunakan brower:

https://api.thingspeak.com/update?api_key=ZZ6YIIZXXVIXXXXXX&field1=0&field2=0.00&field3=0.00&field4=17.78&field5=17.78&field6=33.33&field7=61&field8=1510.00&ok=ok


Adapun code Uji Arduinonya adalah sbb:



#include <SPI.h>
#include <Ethernet.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
char server[] ="api.thingspeak.com";


IPAddress ip(192,168,1,212);//ip client sesuaikan dengan ip router
EthernetClient client;

void setup() {
  Serial.begin(9600);
   while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }

  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    Ethernet.begin(mac, ip);
  }
}

void loop(){
  while(true){
    if (client.connect(server, 80)) {
    Serial.println("connected");
    long randNumber = random(10, 75);
    long randNumber2 = random(10, 80);
    
    client.print("GET /update?api_key=BDA3EM7DMJFXXXXX&field1="+String(randNumber)+"&field2="+String(randNumber2)+"&ok=ok");
    Serial.println("https://api.thingspeak.com/update?api_key=BDA3EM7DMJFXXXXX&field1="+String(randNumber)+"&field2="+String(randNumber2)+"&ok=ok");
     
    //client.print("GET /insertdata.php?data="+String(randNumber)+"X");
    
    client.println("Connection: close");
    client.println();
    client.stop();
    delay(1000);
  }
  else {
    Serial.println("connection failed");
  }
  }

  if (!client.connected()) {
    Serial.println("disconnecting.");
    client.stop();
    while(true);
  }
}


+++++++++++++++++++++++++++
Sehingga code + sensornya :

#include <SPI.h>
#include <Ethernet.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
char server[] ="api.thingspeak.com";

IPAddress ip(192,168,1,212);
EthernetClient client;

char                 databuffer[35];
double               temp;

void getBuffer() {
  int index;
  for (index = 0; index < 35; index ++)  {
     if (Serial.available())  {
         databuffer[index] = Serial.read();
     if (databuffer[0] != 'c'){
         index = -1; }    }
    else {
      index --;
    }
  }
}


int transCharToInt(char *_buffer, int _start, int _stop)  {  //char to int?
   int _index;
   int result = 0;
   int num = _stop - _start + 1;
   int _temp[num];
   for (_index = _start; _index <= _stop; _index ++)     {
        _temp[_index - _start] = _buffer[_index] - '0';
        result = 10 * result + _temp[_index - _start];   }
   return result;  }

int WindDirection()  {                                        //Wind Direction
   return transCharToInt(databuffer, 1, 3);   }

float WindSpeedAverage()    {                                //air Speed (1 minute)
    temp = 0.44704 * transCharToInt(databuffer, 5, 7);
    return temp;   }

float WindSpeedMax()   {                                     //Max air speed (5 minutes)
  temp = 0.44704 * transCharToInt(databuffer, 9, 11);
  return temp;   }

float Temperature()  {                                        //Temperature ("C")
   temp = (transCharToInt(databuffer, 13, 15) - 32.00) * 5.00 / 9.00;
  return temp;   }

float RainfallOneHour()  {                      //Rainfall (1 hour)
  temp = transCharToInt(databuffer, 17, 19) * 25.40 * 0.01;
  return temp;    }

float RainfallOneDay() {                            //Rainfall (24 hours)
  temp = transCharToInt(databuffer, 21, 23) * 25.40 * 0.01;
  return temp;  }

int Humidity()  {                                   //Humidity
  return transCharToInt(databuffer, 25, 26);  }

float BarPressure() { //Barometric Pressure
  temp = transCharToInt(databuffer, 28, 32);
  return temp / 10.00;  }

void setup() {
  Serial.begin(9600);   
    while (!Serial) {
      ; 
    }

 if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    Ethernet.begin(mac, ip);
  }
}

void loop() {

  while(true){
  getBuffer();  //Begin!
  Serial.print("Wind Direction: ");
  Serial.print(WindDirection());
  Serial.println("  ");
  Serial.print("Average Wind Speed (One Hour): ");
  Serial.print(WindSpeedAverage());
  Serial.println("m/s  ");
  Serial.print("Max Wind Speed (Five Minutes): ");
  Serial.print(WindSpeedMax());
  Serial.println("m/s");
  Serial.print("Rain Fall (One Hour): ");
  Serial.print(RainfallOneHour());
  Serial.println("mm  ");
  Serial.print("Rain Fall (24 Hour): ");
  Serial.print(RainfallOneDay());
  Serial.println("mm");
  Serial.print("Temperature: ");
  Serial.print(Temperature());
  Serial.println("C  ");
  Serial.print("Humidity: ");
  Serial.print(Humidity());
  Serial.println("%  ");
  Serial.print("Barometric Pressure: ");
  Serial.print(BarPressure());
  Serial.println("hPa");
  Serial.println("");
  Serial.println("");
  
    if (client.connect(server, 80)) {
    Serial.println("connected");
   
    String URL="GET /update?api_key=RX25Q5K1OKOXXXXX&field1="+String(WindDirection())+"&field2="+String(WindSpeedAverage())+"&field3="+String(WindSpeedMax())+"&field4="+String(RainfallOneHour())+"&field5="+String(RainfallOneDay())+"&field6="+String(Temperature())+"&field7="+String(Humidity())+"&field8="+String(BarPressure())+"&ok=ok";
    client.print(URL);
    Serial.println(URL);
     

    client.println("Connection: close");
    client.println();
    client.stop();
    
    delay(1000);
  }
  else {
    Serial.println("connection failed");
  }
  }

  if (!client.connected()) {
    Serial.println("disconnecting.");
    client.stop();
    while(true);
  }

  

}

OK teman teman.....mudah yaaaaaaaaaaaaaaaaaaaaaaaa....
Artinya kita bisa juga mengaplikasikan arduino + Ethernet shield tanpa menggunakan ESP8266

Ethernet Shieldnya di sambungkan ke router menggunakan kabel RJ-45.