ESP8266 adalah modul Wi-Fi dengan fitur TCP/IP yang lengkap dan bisa dihubungkan dengan mikrokontroler melalui protokon AT-Command. TCP/IP (Transmission Control Protocol / Internet Protocol) adalah protokol komunikasi antara dua perangkat yang terhubung dengan sebuah metode paket termasuk metode pengalamatan dan metode transmisi dalam jaringan internet.
Dalam komunikasi TCP/IP dikenal beberapa metode request/permintaan yaitu : HEAD, GET, POST, PUT, DELETE, TRACE, OPTIONS, CONNECT, PATCH.
Metode POST sering digunakan untuk mengirimkan data-data ter-enkripsi dan langsung ke server sehingga lebih menjamin kerahasiaan data. berbeda dengan metode GET yang mengirimkan requeat dalam bentuk URL.
Skematik ESP8266/ESP01 (+Arduino Uno) request metode post:
Sketch/koding pemrograman komunikasi ESP01 + arduino dengan server menggunakan metode POST :
char ssid[] = "xxxx"; // your network SSID (name) char pass[] = "xxxxxxxx"; // your network password char server[] = "api.thingspeak.com"; byte port = 80; char APIKey[] = "XXXXXXXXXXXXXX"; uint32_t periodeKirim = 20000; #include <WiFiEsp.h> #include <SoftwareSerial.h> SoftwareSerial SerialEsp(10, 11); WiFiEspClient client; int status = WL_IDLE_STATUS; // the Wifi radio's status uint32_t millisKirim; bool statusKirim; void setup() { Serial.begin(9600); Serial.println("Mengirim data melalui jaringan Wifi menggunakan ESP01 dengan metode POST"); Serial.println("https://www.project.semesin.com/"); Serial.println(); SerialEsp.begin(115200); SerialEsp.println("AT+UART_DEF=9600,8,1,0,0"); delay(500); SerialEsp.begin(9600); WiFi.init(&SerialEsp); if (WiFi.status() == WL_NO_SHIELD) { Serial.println("WiFi shield not present"); } millisKirim = millis(); } void loop() { if (millisKirim < millis()) { millisKirim = millis() + periodeKirim; // hubungkan ke jaringan wifi jika belum tersambung atau terputus (auto reconnect) if (WiFi.status() != WL_CONNECTED) { Serial.print("Menghubungkan ke jaringan SSID: "); Serial.println(ssid); while (WiFi.status() != WL_CONNECTED) { WiFi.begin(ssid, pass); Serial.print("."); delay(5000); } printWifiStatus(); Serial.println("Berhasil terhubung ke jaringan"); } if (WiFi.status() == WL_CONNECTED) { Serial.println(); Serial.println("Menghubungkan dengan server..."); if (client.connect(server, port)) { Serial.println(); Serial.println("Terhubung dengan server."); char content[30]; sprintf(content, "field1=%d", millis() % 100); client.println("POST /update HTTP/1.1"); client.println("Host: api.thingspeak.com"); client.println("User-Agent: tslib-arduino/1.5.0"); client.print("X-THINGSPEAKAPIKEY: "); client.println(APIKey); client.println("Content-Type: application/x-www-form-urlencoded"); client.print("Content-Length: "); client.println(strlen(content)); client.println("Connection: close"); client.println(); client.print(content); statusKirim = true; } } } if (statusKirim) { while (client.available()) { char c = client.read(); Serial.write(c); } if (!client.connected()) { Serial.println(); Serial.println("Memutuskan hubungan dengan server..."); delay(10); client.stop(); statusKirim = false; } } } void printWifiStatus() { // print the SSID of the network you're attached to Serial.print("SSID: "); Serial.println(WiFi.SSID()); // print your WiFi shield's IP address IPAddress ip = WiFi.localIP(); Serial.print("IP Address: "); Serial.println(ip); // print the received signal strength long rssi = WiFi.RSSI(); Serial.print("Signal strength (RSSI):"); Serial.print(rssi); Serial.println(" dBm"); }
Library :