Mari kita belajar lagi, kali ini membahas sensor LDR. Dimana sensor ini nilainya akan berubah menyesuaikan cahaya yang diterima oleh sensor. Semakin banyak cahaya yang diterima, semakin bertambah nilai resistansinya dan sebaliknya. Nah data yang didapat akan kita kirim ke thingspeak. Berikut ini cara lengkapnya.
Alat dan bahan :
- Nodemcu CH340/amica, BELI
- Sensor LDR, BELI
- Kabel Jumper, BELI
- Projectbord, BELI
- Resistor 10K ohm, BELI
Rangkaian
Keterangan :
- Pemasangan kaki sensor ldr boleh terbalik
- Kaki 1 dihubungkan ke 3.3v
- kaki 2 ke pin A0 dan resistor 10K dan GND
Untuk terhubung ke thingspeak, silahkan login terlebih dahulu ke thingspeak.com.
- Buat Channel baru > nama field harus sama dengan nama field di sketch program arduino.
- Masuk ke menu API Keys copy write api ke sketch program
pada program berikut :
String apiKey = "9ME1X3TME6O1EDRI";
Sketch Program
#include <ESP8266WiFi.h> #include <WiFiClient.h> #include <ESP8266WebServer.h> const char *ssid = "xxxxxxx"; //nama wifi const char *password = "xxxxxxxx"; //password wifi const char *host = "api.thingspeak.com"; String apiKey = "9ME1X389jkDRI"; //ENTER YOUR API KEY <<<<<<<<<<< void setup() { delay(1000); Serial.begin(115200); 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("."); } Serial.println(""); Serial.print("Connected to "); Serial.println(ssid); Serial.print("IP address: "); Serial.println(WiFi.localIP()); //IP address assigned to your ESP } void loop() { WiFiClient client; const int httpPort = 80; //Port 80 is commonly used for www if (!client.connect(host, httpPort)) { Serial.println("Connection Failed"); delay(300); return; //Keep retrying until we get connected } String ldr; int adcvalue = analogRead(A0); //Read Analog value of LDR ldr = String(adcvalue); //String to interger conversion String Link = "GET /update?api_key=" + apiKey + "&field1="; //Requeste webpage Link = Link + ldr; Link = Link + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n"; client.print(Link); delay(100); int timeout = 0; while ((!client.available()) && (timeout < 1000)) { delay(10); //Use this with time out timeout++; } if (timeout < 500) { while (client.available()) { Serial.println(client.readString()); //Response from ThingSpeak } } else { Serial.println("Request timeout.."); } delay(5000); //Read Web Page every 5 seconds }
- Upload sketch program di atas
- Board : NodeMCU 1.0
- Port : terceklis
Hasilnya seperti di bawah ini :
Silahkan uji coba dengan cahaya yang terang dan gelap. Data akan updte setiap 5 detik sekali.
Terima kasih.