first commit

This commit is contained in:
ismiaprilia 2024-07-22 15:03:05 +07:00
commit 9bad96d9f7
8 changed files with 444 additions and 0 deletions

25
1.dht11/1.dht11.ino Normal file
View File

@ -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
}

View File

@ -0,0 +1,33 @@
#include <OneWire.h>
#include <DallasTemperature.h>
// 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
}

Binary file not shown.

View File

@ -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
}

View File

@ -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 <SPI.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <OneWire.h>
#include <DallasTemperature.h>
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
}

View File

@ -0,0 +1,57 @@
#include "DHT.h"
#include <SoftwareSerial.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
#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
}

View File

@ -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 <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <OneWire.h>
#include <DallasTemperature.h>
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
}

View File

@ -0,0 +1,188 @@
#define BLYNK_TEMPLATE_ID "TMPL6jOeJtdWS"
#define BLYNK_TEMPLATE_NAME "PALING AKHIR"
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include "CTBot.h"
#include <NTPClient.h>
#include <WiFiUdp.h>
#include <TimeLib.h>
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
}