Iklan

Posts tagged ‘Arduino’

Request Data Ke Web Server dengan Metode POST pada ESP8266


Pada tutorial ini kita akan mencoba membahas tentang penggunaan ESP8266 untuk meminta (request) ke web server. Pada artikel ini metode yang akan digunakan adalah metode POST. Metode ini adalah salah satu metode untuk request data ke web server, karena selain metode POST ada juga metode  GET. Seperti kita ketahui bahwa semua pertukaran data melalui web adalah menggunakan protokol HTTP, nah sekarang apakah yang dimaksud dengan HTTP?

Apakah HTTP?

The Hypertext Transfer Protocol (HTTP) didesain untuk memungkinkan berlangsungnya komunikasi antara client dan server.

HTTP bekerja berdasarkan protokol permintaan-respon (request-response) antara client dan server. Setiap pesan HTTP adalah antara request ataun respon. Pada sebuah server mekanismenya adalah, server akan memperhatikan koneksi request, parsing setiap pesan yang diterima, menginterpretasikan pesan dan mengidentifikasi pesan berdasarkan target request, terakhir adalah merespon request dengan sebuah pesan atau lebih yang sesuai. Pada sisi client akan merekontruksi pesan yang diterima sesuai dengan tujuan komunikasi awal, dan mencoba memeriksa respon server untuk menentukan hasilnya.

Dua Metode HTTP Request: POST dan GET

Pada umumnya metode yang digunakan adalah POST dan GET:

  • POST: request data dari resource tertentu
  • GET: submit data untuk diproses pada resource tertentu

Contoh Coding ESP8266 Menggunakan Metode POST

/*
 * HTTP Client POST Request
 * Copyright (c) 2018, circuits4you.com
 * All rights reserved.
 * https://circuits4you.com 
 * Connects to WiFi HotSpot. 
 * source: https://circuits4you.com/2018/03/10/esp8266-nodemcu-post-request-data-to-website/
 */

#include <ESP8266WiFi.h>
#include <WiFiClient.h> 
#include <ESP8266WebServer.h>
#include <ESP8266HTTPClient.h>

/* Set these to your desired credentials. */
const char *ssid = "SSID_NAME";  //Ganti dengan nama SSID
const char *password = "SSID_PASSWORD"; //Ganti dengan password SSID

//Web/Server address to read/write from 
const char *host = "produk-inovatif.com";   //nama website atau IP address dari server

//=======================================================================
//                    Power on setup
//=======================================================================

void setup() {
  delay(1000);
  Serial.begin(115200);
  WiFi.mode(WIFI_OFF);        //Prevents reconnection issue (taking too long to connect)
  delay(1000);
  WiFi.mode(WIFI_STA);        //This line hides the viewing of ESP as wifi hotspot
  
  WiFi.begin(ssid, password);     //Connect to your WiFi router
  Serial.println("");

  Serial.print("Connecting");
  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  //If connection successful show IP address in serial monitor
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());  //IP address assigned to your ESP
}

//=======================================================================
//                    Main Program Loop
//=======================================================================
void loop() {
  HTTPClient http;    //Declare object of class HTTPClient

  String ADCData, ADC2,ADC3, station, postData, ADC4;
  int adcvalue=analogRead(A0);  //Read Analog value of LDR
  
  ADCData = String(adcvalue);   //String to interger conversion
  ADC2 = String(adcvalue*2);   //String to interger conversion
  ADC3 = String(adcvalue*3);   //String to interger conversion
  ADC4 = String(adcvalue*0.5);   //String to interger conversion
  station = "A";

  //Post Data
  postData = "lembab=" + ADCData + "&suhuUdara=" + ADC2 + "&suhuAir=" + ADC3 + "&tinggiAir=" + ADC4 ;
  
  http.begin("http://produk-inovatif.com/esp8266/post_demo.php");              //Specify request destination
  http.addHeader("Content-Type", "application/x-www-form-urlencoded");    //Specify content-type header

  int httpCode = http.POST(postData);   //Send the request
  String payload = http.getString();    //Get the response payload

  Serial.println(httpCode);   //Print HTTP return code
  Serial.println(payload);    //Print request response payload

  http.end();  //Close connection
  
  delay(5000);  //Post Data at every 5 seconds
}
//=======================================================================

Program Pada Sisi Server

<?php
//Creates new record as per request

    //Connect to database
    $servername = "localhost";
    $username = "root";
    $password = "password";
    $dbname = "dbcontoh";

    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error) {
        die("Database Connection failed: " . $conn->connect_error);
    }

    //Get current date and time
    date_default_timezone_set('Asia/Jakarta');
    $d = date("Y-m-d");
    //echo " Date:".$d."<BR>";
    $t = date("H:i:s");

    if(!empty($_POST['lembab']) && !empty($_POST['suhuUdara']) && !empty($_POST['suhuAir']) && !empty($_POST['tinggiAir']))
    {
        $lembab = $_POST['lembab'];
        $suhuUdara = $_POST['suhuUdara'];
        $suhuAir = $_POST['suhuAir'];
        $tinggiAir = $_POST['tinggiAir'];
        
        echo " lembab:".$lembab."<BR>";
        echo " suhu Udara:".$suhuUdara."<BR>";
        echo " suhu Air:".$suhuAir."<BR>";
        echo " tinggi Air:".$tinggiAir."<BR>";

        $sql = "UPDATE  dbcontoh.dataTemp SET kelembaban='".$lembab."', suhuUdara='".$suhuUdara."', suhuAir='".$suhuAir."', tinggiAir='".$tinggiAir."' WHERE id='1'";
// mysql_query($SQL);
        if ($conn->query($sql) === TRUE) {
            echo "OK";
        } else {
            echo "Error: " . $sql . "<br>" . $conn->error;
        }
    }


    $conn->close();
?>

Selanjutnya Anda dapat mengembangkan sendiri sesuai dengan kebutuhan.

Semoga bermanfaat.

 

Referensi:

ESP8266 (NodeMCU) post request data to website

 

Iklan

Timbangan 5kg HX711


CAM00451CAM00470 CAM00471 CAM00472

[Full Gallery Foto]

Gambaran Umum
HX711 adalah modul timbangan, yang memiliki prinsip kerja mengkonversi perubahan yang terukur dalam perubahan resistansi dan mengkonversinya ke dalam besaran tegangan melalui rangkaian yang ada. Modul melakukan komunikasi dengan computer/mikrokontroller melalui TTL232.
Kelebihan
Struktur yang sederhana, mudah dalam penggunaan, hasil yang stabil dan reliable, memiliki sensitivitas tinggi, dan mampu mengukur perubahan dengan cepat.

 

Aplikasi
Digunakan pada bidang aerospace, mekanik, elektrik, kimia, konstruksi, farmasi dan lainnya, digunakan untuk mengukur gaya, gaya tekanan, perpindahan, gaya tarikan, torsi, dan percepatan.
Fitur
– Differential input voltage: ±40mV(Full-scale differential input voltage is ± 40mV)
– Data accuracy: 24 bit (24 bit A / D converter chip.)
– Refresh frequency: 80 Hz
– Operating Voltage : 5V DC
– Operating current : <10 mA
– Size:38mm21mm10mm

Prinsip Kerja

HX711 1

Prinsip kerja sensor regangan ketika mendapat tekanan beban. (sumber datasheet HX711)
Ketika bagian lain yang lebih elastic mendapat tekanan, maka pada sisi lain akan mengalami perubahan regangan yang sesuai dengan yang dihasilkan oleh straingauge, hal ini terjadi karena ada gaya yang seakan melawan pada sisi lainnya. Perubahan nilai resistansi yang diakibatkan oleh perubahan gaya diubah menjadi nilai tegangan oleh rangkaian pengukuran yang ada. Dan berat dari objek yang diukur dapat diketahui dengan mengukur besarnya nilai tegangan yang timbul.

[Baca selengkapnya]

Testing Sensor Inframerah MLX90614 Dengan Arduino dan AVR


Tulisan kali ini adalah posting yang saya tulis ulang dari beberapa sumber yang memiliki kesamaan tema, jadi bukan seluruhnya adalah hasil eksperimen saya. Saya hanya mencoba mencoba petunjuk yang diberikan dan mencoba eksperimen dengan beberapa referensi tersebut.

MLX90614 adalah termometer inframerah yang sangat berguna karena dalam pemakaiannya tidak diperlukan kontak antara sensor dan objek yang akan diukur. Sensor memberikan pembacaan suhu rata-rata dari semua objek yang tercover oleh view dari sensor, sehingga tidak suhu mutlak dari sebuah objek yang diamati. Dengan prinsip ini, maka dapat dimanfaatkan untuk mendeteksi kehadiran ataupun perubahan suhu objek dalam range jangkaun sensor baik itu gerakan objek ataupun kehadiran suatu objek.

Gambar Wiring

Dengan mengikuti gambar di atas, maka kita dapat dengan mudah membuat sebuah sistem pembaca suhu menggunakan MLX90614 dan board arduino Uno. Jika merasa kesulitan menggunakan rangkaian di atas, dapat juga membeli modul sensor yang sudah jadi tinggal menambahkan jumper kabel dari modul ke board arduino.

[Baca selengkapnya]

Arduino dan Sensor Ultrasonic HC SR04


Arduino dan Sensor Ultrasonic HC SR04 dapat di susun untuk membuat sebuah sistem pengukur jarak. Arduino UNO yang digunakan sangat mudah didapatkan dan HC SR04 juga tidak mahal. Dengan biaya kurang dari Rp. 200.000,- kita bisa membuat sebuah pengukur jarak.

HC-SR04

Rangkaian yang dibuat dapat mengikuti skema diatas. Selanjutnya dapat digunakan program sketch berikut pada software Arduino.

#define trigPin 13
#define echoPin 12

void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}

void loop() {
long duration, distance;
digitalWrite(trigPin, LOW);  // Added this line
delayMicroseconds(2); // Added this line
digitalWrite(trigPin, HIGH);
delayMicroseconds(10); // Added this line
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;

Serial.print(distance);
Serial.println(” cm”);

delay(500);
}

 Gallery Foto

[Baca selengkapnya]

Membuat Database Logger Sensor Jarak HC SR04-Arduino


Merujuk dari artikel sebelum tentang bagaimana membuat sebuah database menggunakan Visual Basic 6. Pada artikel lain yang membahas bagaiman cara mengukur jarak menggunakan sensor ultra sonic HC SR04 yang dikombinasikan dengan Arduino Uno. Maka pada posting ini akan di coba dijelaskan bagaimana salah satu cara untuk membuat sebuah database logger dari data pengukuran tersebut.

Video Terkait:

Desain sistem yang akan dibuat terdiri dari dua bagian yaitu hardware dan software yang dikombinasikan melalui teknik interfacing sederhana melalui port serial yang dapat dipelajari lebih mendalam pada posting sebelumnya.

Bagian hardware dibuat mengikuti skema dibawah ini:

Arduino HC SR04 LED BuzzerLangkah Pertama:

[Baca selengkapnya]

 

Membaca Sensor Suhu DS1820 Dengan Arduino


Pada posting ini dicoba untuk melakukan testing membaca sensor DS1820 dengan menggunakan board Arduino Uno.

Untuk melakukan testing, ikut petunjuk berikut:

1. Buatlah sebuah rangkaian tambahan dengan sebuah resistor sebagai berikut

Resistor

(sumber: http://www.instructables.com/id/Temperature-with-DS18B20/)

CAM00003

2. Kemudian hubungkan pin pada sensor suhu DS1820 waterproof seperti berikut:

– Kabel warna hitam ke pin GND board arduino

CAM00004

– Kabel warna merah ke pin +5v board Arduino

CAM00007

– kabel warna kuning ke pin nomer 2 board Arduino

CAM00008

3. Copy program dibawah ini dan download ke board Arduino Uno.

#include <OneWire.h>

int DS18S20_Pin = 2; //DS18S20 Signal pin on digital 2

//Temperature chip i/o
OneWire ds(DS18S20_Pin); // on digital pin 2

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

void loop(void) {
float temperature = getTemp();
Serial.println(temperature);

delay(100); //just here to slow down the output so it is easier to read

}

float getTemp(){
//returns the temperature from one DS18S20 in DEG Celsius

byte data[12];
byte addr[8];

if ( !ds.search(addr)) {
//no more sensors on chain, reset search
ds.reset_search();
return -1000;
}

if ( OneWire::crc8( addr, 7) != addr[7]) {
Serial.println(“CRC is not valid!”);
return -1000;
}

if ( addr[0] != 0x10 && addr[0] != 0x28) {
Serial.print(“Device is not recognized”);
return -1000;
}

ds.reset();
ds.select(addr);
ds.write(0x44,1); // start conversion, with parasite power on at the end

byte present = ds.reset();
ds.select(addr);
ds.write(0xBE); // Read Scratchpad

for (int i = 0; i < 9; i++) { // we need 9 bytes
data[i] = ds.read();
}

ds.reset_search();

byte MSB = data[1];
byte LSB = data[0];

float tempRead = ((MSB << 8) | LSB); //using two’s compliment
float TemperatureSum = tempRead / 16;

return TemperatureSum;

}

Selanjutnya perhatikan video berikut:

sumber:

http://bildr.org/2011/07/ds18b20-arduino/

http://www.instructables.com/id/Temperature-with-DS18B20/

Testing W1500 Ethernet Shield


ethernet shield

Pada posting kali ini, Anda akan dapat melakukan testing dan pengetahuan dasar bagaimana menggunakan ethernet W1500 shield.

Ethernet W1500 shield dapat digunakan untuk menghubungkan modul arduino ke dalam jaringan internet melalui koneksi kabel RJ45 (tidak termasuk dalam paket). Penggunaan modul W1500 sangat mudah dan cepat dilakukan, karena pada program IDE arduino sudah terdapat contoh programnya. Sehingga dalam hitungan menit Anda akan dapat melakukannya.

Untuk dapat melakukan testing modul ini, komponen yang dibutuhkan adalah:

 

ethernet shield 1

Program yang digunakan untuk melakukan testing dapat diambil dari bawaan software IDE Arduino:


/*
Web Server

A simple web server that shows the value of the analog input pins.
using an Arduino Wiznet Ethernet shield.

Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13
* Analog inputs attached to pins A0 through A5 (optional)

created 18 Dec 2009
by David A. Mellis
modified 9 Apr 2012
by Tom Igoe

*/

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

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1,177);

// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);

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

// start the Ethernet connection and the server:
Ethernet.begin(mac, ip);
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
}

void loop() {
// listen for incoming clients
EthernetClient client = server.available();
if (client) {
Serial.println("new client");
// an http request ends with a blank line
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
// if you've gotten to the end of the line (received a newline
// character) and the line is blank, the http request has ended,
// so you can send a reply
if (c == '\n' && currentLineIsBlank) {
// send a standard http response header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");  // the connection will be closed after completion of the response
client.println("Refresh: 5");  // refresh the page automatically every 5 sec
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
// output the value of each analog input pin
for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
int sensorReading = analogRead(analogChannel);
client.print("analog input ");
client.print(analogChannel);
client.print(" is ");
client.print(sensorReading);
client.println("<br />");
}
client.println("</html>");
break;
}
if (c == '\n') {
// you're starting a new line
currentLineIsBlank = true;
}
else if (c != '\r') {
// you've gotten a character on the current line
currentLineIsBlank = false;
}
}
}
// give the web browser time to receive the data
delay(1);
// close the connection:
client.stop();
Serial.println("client disonnected");
}
}

 

Langkah untuk testing dapat diikuti melalui video berikut:

Untuk mengetahui lebih lanjut tentang shield ini dapat merujuk ke artikel lengkap disini Arduino Ethernet Shield.

%d blogger menyukai ini: