commit 9bad96d9f7ed359fc5690392703d1a565a4c089e Author: ismiaprilia Date: Mon Jul 22 15:03:05 2024 +0700 first commit diff --git a/1.dht11/1.dht11.ino b/1.dht11/1.dht11.ino new file mode 100644 index 0000000..57bc3b4 --- /dev/null +++ b/1.dht11/1.dht11.ino @@ -0,0 +1,25 @@ +#include "DHT.h" + +#define DHTPIN 4 // Pin data DHT11 terhubung ke pin 4 Arduino +#define DHTTYPE DHT11 // Tipe sensor DHT (DHT11 untuk sensor DHT11) + +DHT dht(DHTPIN, DHTTYPE); + +void setup() { + Serial.begin(9600); // Mulai komunikasi serial dengan kecepatan 9600 bps + Serial.println("DHT11 test!"); + dht.begin(); // Inisialisasi sensor DHT +} + +void loop() { + // Baca data suhu dan kelembaban + float temperature = dht.readTemperature(); + float humidity = dht.readHumidity(); + + Serial.print("Suhu (C): "); + Serial.println(temperature); + Serial.print("Kelembaban (%): "); + Serial.println(humidity); + + delay(2000); // Tunggu 2 detik sebelum membaca data lagi +} diff --git a/2.suhu_ds18_esp/2.suhu_ds18_esp.ino b/2.suhu_ds18_esp/2.suhu_ds18_esp.ino new file mode 100644 index 0000000..5816e52 --- /dev/null +++ b/2.suhu_ds18_esp/2.suhu_ds18_esp.ino @@ -0,0 +1,33 @@ +#include +#include + +// Pin data sensor DS18B20 terhubung ke pin D4 (GPIO2) pada ESP8266 +const int oneWireBus = 2; // D4 pada NodeMCU + +// Inisialisasi sensor suhu DS18B20 +OneWire oneWire(oneWireBus); +DallasTemperature sensors(&oneWire); + +void setup() { + Serial.begin(115200); + sensors.begin(); // Inisialisasi sensor suhu +} + +void loop() { + sensors.requestTemperatures(); // Mengambil data suhu dari sensor + + // Membaca suhu dalam derajat Celsius + float temperatureC = sensors.getTempCByIndex(0); + + // Membaca suhu dalam derajat Fahrenheit + float temperatureF = sensors.getTempFByIndex(0); + + // Menampilkan hasil ke Serial Monitor + Serial.print("Suhu Celsius: "); + Serial.print(temperatureC); + Serial.print(" C, Suhu Fahrenheit: "); + Serial.print(temperatureF); + Serial.println(" F"); + + delay(1000); // Delay 1 detik +} diff --git a/2.suhu_ds18_esp/2.suhu_ds18_esp.rar b/2.suhu_ds18_esp/2.suhu_ds18_esp.rar new file mode 100644 index 0000000..7bf27c8 Binary files /dev/null and b/2.suhu_ds18_esp/2.suhu_ds18_esp.rar differ diff --git a/3.dht11_pH_uno/3.dht11_pH_uno.ino b/3.dht11_pH_uno/3.dht11_pH_uno.ino new file mode 100644 index 0000000..dde43f6 --- /dev/null +++ b/3.dht11_pH_uno/3.dht11_pH_uno.ino @@ -0,0 +1,33 @@ +#include "DHT.h" + +#define DHTPIN 4 // Pin data DHT11 terhubung ke pin 4 Arduino +#define DHTTYPE DHT11 // Tipe sensor DHT (DHT11 untuk sensor DHT11) + +#define SENSOR_PH A0 // Pin analog untuk sensor pH air + +DHT dht(DHTPIN, DHTTYPE); + +void setup() { + Serial.begin(9600); // Mulai komunikasi serial dengan kecepatan 9600 bps + Serial.println("DHT11 & pH Sensor test!"); + dht.begin(); // Inisialisasi sensor DHT +} + +void loop() { + // Baca data suhu dan kelembaban + float temperature = dht.readTemperature(); + float humidity = dht.readHumidity(); + + // Baca data pH air + float pHValue = analogRead(SENSOR_PH); + pHValue = (5.0 / 1023.0) * pHValue; // Konversi nilai bacaan analog menjadi nilai pH + + Serial.print("Suhu (C): "); + Serial.println(temperature); + Serial.print("Kelembaban (%): "); + Serial.println(humidity); + Serial.print("pH Air: "); + Serial.println(pHValue); + + delay(2000); // Tunggu 2 detik sebelum membaca data lagi +} diff --git a/4.suhu_air_blynk_esp/4.suhu_air_blynk_esp.ino b/4.suhu_air_blynk_esp/4.suhu_air_blynk_esp.ino new file mode 100644 index 0000000..3d7103e --- /dev/null +++ b/4.suhu_air_blynk_esp/4.suhu_air_blynk_esp.ino @@ -0,0 +1,38 @@ +#define BLYNK_TEMPLATE_ID "TMPL6a-maPvoQ" // Ganti dengan ID template Blynk Anda +#define BLYNK_TEMPLATE_NAME "TUGAS AKHIR" // Ganti dengan nama template Blynk Anda + +#define BLYNK_PRINT Serial + +#include +#include +#include +#include +#include + +char auth[] = "ywaI_EsL3VnfWJZn8PGXb03-FDaXU_vY"; // Ganti dengan token otentikasi Blynk Anda + +// Pin data sensor DS18B20 terhubung ke pin D4 (GPIO2) pada ESP8266 +const int oneWireBus = 2; // D4 pada NodeMCU + +// Inisialisasi sensor suhu DS18B20 +OneWire oneWire(oneWireBus); +DallasTemperature sensors(&oneWire); + +void setup() { + Serial.begin(115200); + Blynk.begin(auth, "JTI12", "12345678"); // Ganti dengan SSID dan password WiFi Anda + sensors.begin(); // Inisialisasi sensor suhu +} + +void loop() { + Blynk.run(); + sensors.requestTemperatures(); // Mengambil data suhu dari sensor + + // Membaca suhu dalam derajat Celsius + float temperatureC = sensors.getTempCByIndex(0); + + // Kirim nilai suhu ke widget Value Display di Blynk + Blynk.virtualWrite(V3, temperatureC); // V3 adalah pin virtual yang digunakan di aplikasi Blynk + + delay(1000); // Delay 1 detik +} diff --git a/5.dht11_pH_Uno_kirim_data_esp/5.dht11_pH_Uno_kirim_data_esp.ino b/5.dht11_pH_Uno_kirim_data_esp/5.dht11_pH_Uno_kirim_data_esp.ino new file mode 100644 index 0000000..aa48a63 --- /dev/null +++ b/5.dht11_pH_Uno_kirim_data_esp/5.dht11_pH_Uno_kirim_data_esp.ino @@ -0,0 +1,57 @@ +#include "DHT.h" +#include + +#define DHTPIN 4 // Pin data DHT11 terhubung ke pin 4 Arduino +#define DHTTYPE DHT11 // Tipe sensor DHT (DHT11 untuk sensor DHT11) +#define SENSOR_PH A0 // Pin analog untuk sensor pH air + +#define RX_PIN 2 // Pin TX untuk komunikasi serial dengan ESP8266 +#define TX_PIN 3 // Pin RX untuk komunikasi serial dengan ESP8266 + +//data sensor ph +int nilai_analog_PH; +double TeganganPh; +float Po = 0; +float PH_step; +float PH4 = 3.9; +float PH7 = 3.6; + +DHT dht(DHTPIN, DHTTYPE); +SoftwareSerial espSerial(RX_PIN, TX_PIN); // Mendefinisikan pin RX dan TX untuk komunikasi serial + +void setup() { + Serial.begin(9600); // Mulai komunikasi serial dengan kecepatan 9600 bps + Serial.println("DHT11 & pH Sensor test!"); + dht.begin(); // Inisialisasi sensor DHT + espSerial.begin(9600); // Serial untuk komunikasi dengan ESP8266 +} + +void loop() { + // Baca data suhu dan kelembaban + float temperature = dht.readTemperature(); + float humidity = dht.readHumidity(); + + // Baca data pH air + + float nilai_analog_PH = analogRead(SENSOR_PH); + TeganganPh = (5.0 / 1024.0) * nilai_analog_PH; // Konversi nilai bacaan analog menjadi nilai pH + PH_step = (PH4 - PH7) / 3; + Po = 7.00 + ((PH7 - TeganganPh) / PH_step); + + // Print data ke Serial Monitor + Serial.print("Suhu (C): "); + Serial.println(temperature); + Serial.print("Kelembaban (%): "); + Serial.println(humidity); + Serial.print("pH Air: "); + Serial.println(Po); + + // Kirim data ke ESP8266 + espSerial.print(temperature); + espSerial.print(","); + espSerial.print(humidity); + espSerial.print(","); + espSerial.println(Po); + + delay(2000); // Tunggu 2 detik sebelum membaca data lagi +} diff --git a/6.ds18_menerima_data_uno_esp_blynk/6.ds18_menerima_data_uno_esp_blynk.ino b/6.ds18_menerima_data_uno_esp_blynk/6.ds18_menerima_data_uno_esp_blynk.ino new file mode 100644 index 0000000..7ed6c6a --- /dev/null +++ b/6.ds18_menerima_data_uno_esp_blynk/6.ds18_menerima_data_uno_esp_blynk.ino @@ -0,0 +1,70 @@ +#define BLYNK_TEMPLATE_ID "TMPL6jOeJtdWS" // Ganti dengan ID template Blynk Anda +#define BLYNK_TEMPLATE_NAME "PALING AKHIR" // Ganti dengan nama template Blynk Anda + +#define BLYNK_PRINT Serial + +#include +#include +#include +#include + +char auth[] = "f_-VsN8jII8HDoku_MxUJB-4zTC76FxE"; // Ganti dengan token otentikasi Blynk Anda + +// Pin data sensor DS18B20 terhubung ke pin D4 (GPIO2) pada ESP8266 +const int oneWireBus = 2; // D4 pada NodeMCU + +OneWire oneWire(oneWireBus); +DallasTemperature sensors(&oneWire); + +void setup() { + Serial.begin(9600); // Mulai komunikasi serial + Blynk.begin(auth, "JTI12", "12345678"); // Ganti dengan SSID dan password WiFi Anda + sensors.begin(); // Inisialisasi sensor suhu +} + +void loop() { + Blynk.run(); + + // Membaca data dari sensor DS18B20 + sensors.requestTemperatures(); + float temperatureC = sensors.getTempCByIndex(0); + + // Tampilkan suhu DS18B20 ke Serial Monitor + Serial.print("Suhu DS18B20 (C): "); + Serial.println(temperatureC); + + // Kirim nilai suhu DS18B20 ke widget Value Display di Blynk + Blynk.virtualWrite(V3, temperatureC); // V3 adalah pin virtual yang digunakan di aplikasi Blynk + + // Periksa apakah ada data dari Arduino Uno + if (Serial.available() > 0) { + String data = Serial.readStringUntil('\n'); + float temperature, humidity, pHValue; + sscanf(data.c_str(), "%f,%f,%f", &temperature, &humidity, &pHValue); + + // Tampilkan data yang diterima dari Arduino Uno ke Serial Monitor + Serial.print("Suhu DHT11 (C): "); + Serial.println(temperature); + Serial.print("Kelembaban (%): "); + Serial.println(humidity); + Serial.print("pH Air: "); + Serial.println(pHValue); + + // Kirim nilai ke Blynk + Blynk.virtualWrite(V0, temperature); // V0 untuk Suhu dari DHT11 + Blynk.virtualWrite(V1, humidity); // V1 untuk Kelembaban dari DHT11 + Blynk.virtualWrite(V2, pHValue); // V2 untuk pH + } + + // Menampilkan Notifikasi Pada Blynk + // if(temperatureC > 30){ + // //Blynk.email("calvasskamollak@gmail.com", "notifikasi", "Temperature over 30C!"); + // Blynk.logEvent("notifikasi","Suhu Mencapai " + temperature + " Derajat"); + // } + // else if (temperatureC <= 25){ + // Blynk.logEvent("info","Suhu Normal" + temperature); + // } + + delay(1000); // Delay 1 detik + +} diff --git a/7.esp8266_telegram/7.esp8266_telegram.ino b/7.esp8266_telegram/7.esp8266_telegram.ino new file mode 100644 index 0000000..1d6cbfd --- /dev/null +++ b/7.esp8266_telegram/7.esp8266_telegram.ino @@ -0,0 +1,188 @@ +#define BLYNK_TEMPLATE_ID "TMPL6jOeJtdWS" +#define BLYNK_TEMPLATE_NAME "PALING AKHIR" + +#define BLYNK_PRINT Serial + +#include +#include +#include +#include +#include "CTBot.h" +#include +#include +#include + +char auth[] = "f_-VsN8jII8HDoku_MxUJB-4zTC76FxE"; // Ganti dengan token otentikasi Blynk Anda +String ssid = "JTI12"; // Ganti dengan nama WiFi Anda +String pass = "12345678"; // Ganti dengan password WiFi Anda + +// Pin data sensor DS18B20 terhubung ke pin D4 (GPIO2) pada ESP8266 +const int oneWireBus = 2; // D4 pada NodeMCU + +OneWire oneWire(oneWireBus); +DallasTemperature sensors(&oneWire); + +CTBot myBot; +String token = "7246926173:AAFE3s8hO86IIgqN5zbrs_k3apSR9wzfBuk"; // Token bot telegram yang telah dibuat +int64_t chat_id = 1333761230; // Ganti dengan chat ID Anda + +// NTPClient setup +WiFiUDP ntpUDP; +NTPClient timeClient(ntpUDP, "id.pool.ntp.org", 25300, 60000); // GMT+7 offset (seconds), polling interval + +// Last notification times +int lastNotificationHour = -1; +int lastNotificationMinute = -1; + +// Sensor data variables +float temperature = 0.0; +float humidity = 0.0; +float pHValue = 0.0; + +// Notification tracking variables +int highTempNotificationCount = 0; +bool notificationSent = false; + +void setup() { + Serial.begin(9600); + + // Convert String to const char* + const char* ssid_cstr = ssid.c_str(); + const char* pass_cstr = pass.c_str(); + + // Initialize Blynk + Blynk.begin(auth, ssid_cstr, pass_cstr); // Use converted SSID and password + sensors.begin(); // Inisialisasi sensor suhu + + // Connect to WiFi + WiFi.begin(ssid_cstr, pass_cstr); + while (WiFi.status() != WL_CONNECTED) { + delay(1000); + Serial.println("Connecting to WiFi..."); + } + + Serial.println("Connected to WiFi."); + + // Initialize NTPClient + timeClient.begin(); + + // Initialize Telegram bot + myBot.wifiConnect(ssid_cstr, pass_cstr); + myBot.setTelegramToken(token); + + // Check if all things are ok + if (myBot.testConnection()) { + Serial.println("\ntestConnection OK"); + myBot.sendMessage(chat_id, "Sistem Notifikasi Tambak Sudah Aktif!"); + } else { + Serial.println("\ntestConnection NOK"); + myBot.sendMessage(chat_id, "Failed to connect to Telegram bot."); + } + // Handle incoming Telegram messages + TBMessage msg; + if (myBot.getNewMessage(msg)) { + String reply = "Sistem Notifikasi Tambak Sudah Aktif!"; + myBot.sendMessage(msg.sender.id, reply); + } +} + + +void loop() { + TBMessage msg; + + if (myBot.getNewMessage(msg)) { + String reply; + reply = "Sistem Notifikasi Tambak Sudah Aktif!"; + myBot.sendMessage(msg.sender.id, reply); + } + + Blynk.run(); + timeClient.update(); + + // Get current time + time_t rawTime = timeClient.getEpochTime(); + setTime(rawTime); // Set time based on NTP + int currentHour = hour(); + int currentMinute = minute(); + + // Membaca data dari sensor DS18B20 + sensors.requestTemperatures(); + float temperatureC = sensors.getTempCByIndex(0); + + // Tampilkan suhu DS18B20 ke Serial Monitor + Serial.print("Suhu DS18B20 (C): "); + Serial.println(temperatureC); + + // Kirim nilai suhu DS18B20 ke widget Value Display di Blynk + Blynk.virtualWrite(V3, temperatureC); // V3 adalah pin virtual yang digunakan di aplikasi Blynk + + // Periksa apakah ada data dari Arduino Uno + if (Serial.available() > 0) { + String data = Serial.readStringUntil('\n'); + sscanf(data.c_str(), "%f,%f,%f", &temperature, &humidity, &pHValue); + + // Tampilkan data yang diterima dari Arduino Uno ke Serial Monitor + Serial.print("Suhu DHT11 (C): "); + Serial.println(temperature); + Serial.print("Kelembaban (%): "); + Serial.println(humidity); + Serial.print("pH Air: "); + Serial.println(pHValue); + + // Kirim nilai ke Blynk + Blynk.virtualWrite(V0, temperature); // V0 untuk Suhu dari DHT11 + Blynk.virtualWrite(V1, humidity); // V1 untuk Kelembaban dari DHT11 + Blynk.virtualWrite(V2, pHValue); // V2 untuk pH + } + + // Format date and time + String formattedDate = String(day()) + "/" + String(month()) + "/" + String(year()); + String formattedTime = String(hour()) + ":" + String(minute()) + ":" + String(second()); + + // Display date and time to Serial Monitor + Serial.print("Tanggal: "); + Serial.println(formattedDate); + Serial.print("Waktu: "); + Serial.println(formattedTime); + + // Check if it's time to send notification + if ((currentMinute == 0 || currentMinute == 20 || currentMinute == 40) && + (currentHour == 7 || currentHour == 12 || currentHour == 18) && + (currentHour != lastNotificationHour || currentMinute != lastNotificationMinute)) { + + // Format and send notification via Telegram + String notificationMessage = "Data Sensor:\n"; + notificationMessage += "Suhu Air: " + String(temperatureC, 2) + " C\n"; + notificationMessage += "Suhu Sekitar: " + String(temperature, 2) + " C\n"; + notificationMessage += "Kelembaban Sekitar: " + String(humidity, 2) + " %\n"; + notificationMessage += "pH Air: " + String(pHValue, 2) + "\n" + "\n"; + notificationMessage += "Tanggal: " + formattedDate + "\n"; + notificationMessage += "Waktu: " + formattedTime + "\n"; + + myBot.sendMessage(chat_id, notificationMessage); + + // Update last notification time + lastNotificationHour = currentHour; + lastNotificationMinute = currentMinute; + } + + // Check if the temperature exceeds 30 degrees + if (temperatureC > 30.0 && highTempNotificationCount < 3 && !notificationSent) { + String alertMessage = "Perhatian! Suhu air melebihi 30 derajat Celcius.\n"; + alertMessage += "Suhu saat ini: " + String(temperatureC, 2) + " C\n"; + alertMessage += "Tanggal: " + formattedDate + "\n"; + alertMessage += "Waktu: " + formattedTime + "\n"; + + myBot.sendMessage(chat_id, alertMessage); + highTempNotificationCount++; // Tingkatkan jumlah notifikasi yang telah dikirim + notificationSent = true; // Setel flag notifikasi sudah dikirim + } + + // Reset flag if the temperature goes back below 30 degrees + if (temperatureC <= 30.0) { + notificationSent = false; // Reset flag notifikasi + highTempNotificationCount = 0; // Reset counter notifikasi + } + + delay(1000); // Delay 1 detik +}