Created
December 9, 2018 11:20
-
-
Save artistio/05dbf6b931c79d8458e50d17222befd7 to your computer and use it in GitHub Desktop.
Mengirimkan data DHT22 ke ThingSpeak, dengan Deep Sleep
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Program untuk membaca suhu dan kelembaban dari sensor DHT22 | |
* menggunakan NodeMCU | |
* | |
* Hak cipta (c) 2016 x.benny.id. All rights reserved. | |
* https://x.benny.id | |
*/ | |
// Konfigurasi DHT22 | |
#include <DHT.h> | |
#define DHTPIN 0 // PIN D3 (GPIO 0) dari NodeMCU terhubung dengan PIN Data dari DHT22 | |
#define DHTTYPE DHT22 // Kita menggunakan tipe DHT22 | |
DHT dht(DHTPIN, DHTTYPE); // Inisialisasi DHT22 | |
// Konfigurasi WiFi | |
#include <ESP8266WiFi.h> | |
#define WIFI_SSID "corsica" // Ganti dengan SSID WiFi yang digunakan | |
#define WIFI_PASS "br0wnispis4ng" // Ganti dengan password WiFi yang benar | |
// Konfigurasi ThingSpeak | |
#include <PubSubClient.h> | |
#define THINGSPEAK_CLIENT_ID "YD0SPU-13" // Bisa diganti dengan Client ID Sembarang | |
#define THINGSPEAK_MQTT_API "SO9F3X3I52MUX0W7" // Ganti dengan User MQTT API Key dari ThingSpeak | |
#define THINGSPEAK_CHANNEL_API "TN6NIKBPQEIFKYWF" // Ganti dengan Channel API Key dari ThingSpeak | |
#define THINGSPEAK_CHANNEL_ID 647364 // Ganti dengan Channel ID dari ThingSpeak | |
// Konfigurasi Deep Sleep | |
#define SCAN_INTERVAL 600 // Inteval pembacaan cuaca dalam detik | |
// Mempersiapkan NodeMCU melalui fungsi setup() | |
// Catatan: Nama fungsi dibawah ini tidak boleh dirubah | |
void setup() { | |
// Inisialisasi Serial port untuk debugging | |
Serial.begin(115600); | |
Serial.setTimeout(2000); | |
while(!Serial) { } | |
Serial.println("NodeMCU Siap Dipakai"); | |
// Mengaktifkan koneksi WiFi | |
Serial.print("Menhubungkan dengan WiFi: "); | |
Serial.println(WIFI_SSID); | |
int wifiStatus = startWiFi(WIFI_SSID, WIFI_PASS); | |
Serial.println("Membaca sensor DHT22"); | |
} | |
int timeSinceLastRead = 0; | |
void loop() { | |
// Report every 10 seconds. | |
if(timeSinceLastRead > (10000)) { | |
// Membaca kelembaban | |
float h = dht.readHumidity(); | |
// Membaca suhu dalam derajat celcius | |
float t = dht.readTemperature(); | |
// Membaca suhu dalam derajat farenheit | |
float f = dht.readTemperature(true); | |
// Memastikan kalau semua pembacaan sukses | |
if (isnan(h) || isnan(t) || isnan(f)) { | |
Serial.println("Failed to read from DHT sensor!"); | |
timeSinceLastRead = 0; | |
return; | |
} | |
// Menghitung index suhu dalam farenheit | |
float hif = dht.computeHeatIndex(f, h); | |
// Menghitung index suhu dalam farenheit | |
float hic = dht.computeHeatIndex(t, h, false); | |
// Menulis hasil pembacaan melalui Serial | |
Serial.print("\Kelembaban: "); | |
Serial.print(h); | |
Serial.print(" %\t"); | |
Serial.print("Suhu: "); | |
Serial.print(t); | |
Serial.print(" *C "); | |
Serial.print(f); | |
Serial.print(" *F\t"); | |
Serial.print("Persepsi Suhu: "); | |
Serial.print(hic); | |
Serial.print(" *C "); | |
Serial.print(hif); | |
Serial.println(" *F"); | |
timeSinceLastRead = 0; | |
int mqttThingSpeakResult = sendThingSpeak(t, h); // Di kita mengirimkan data ke ThingSpeak | |
// Memasuki Mode Deep Sleep | |
Serial.println("Entering Deep Sleep"); | |
ESP.deepSleep(SCAN_INTERVAL*1000000); | |
} | |
delay(1000); // Menunggu pembacaan selanjutnya | |
timeSinceLastRead += 1000; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment