#include <WiFi.h>
#include "HX711.h"
#include <FirebaseESP32.h> //Dengan menggunakan FirebaseESP32, ESP32 dapat terhubung ke layanan Firebase, platform pengembangan aplikasi mobile dan web dari Google
#include <HTTPClient.h> //
// HX711 circuit wiring
const int LOADCELL_DOUT_PIN = 2;
const int LOADCELL_SCK_PIN = 4;
HX711 scale;
const char* ssid = "Wokwi-GUEST"; //nama jaringan wifi SSID yang akan dihubungkan dan digunakan
const char* password = "";
FirebaseData fbdo;
FirebaseAuth auth;
FirebaseConfig config;
void wifiConnection() { //Memulai proses koneksi WiFi dengan menggunakan nama jaringan (SSID) dan kata sandi yang sudah ditentukan
WiFi.begin(ssid, password); // Memulai proses koneksi WiFi dengan menggunakan nama jaringan (SSID) dan kata sandi (password) yang telah ditentukan
while (WiFi.status() != WL_CONNECTED) { //Sebuah loop while yang akan dijalankan selama perangkat belum terhubung ke jaringan WiFi, memberikan kesempatan sampai koneksi berhasil
Serial.print("."); //untuk mengirim data ke Serial Monitor
delay(500); // perangkat menunggu selama 500 milidetik (setengah detik) sebelum melanjutkan eksekusi kode berikutnya
}
Serial.println("Wifi Connected"); //Mencetak pesan bahwa perangkat telah terhubung ke WiFi
Serial.println(WiFi.SSID()); //Mencetak SSID jaringan WiFi yang terhubung
Serial.println(WiFi.RSSI());//Mencetak kekuatan sinyal (RSSI) WiFi
Serial.println(WiFi.macAddress()); //Mencetak alamat MAC perangkat WiFi
Serial.println(WiFi.localIP()); //Mencetak alamat IP lokal perangkat
Serial.println(WiFi.gatewayIP()); //Mencetak alamat IP gateway WiFi
Serial.println(WiFi.dnsIP()); //Mencetak alamat IP server DNS yang digunakan
}
void firebase(void) { //Membuat fungsi bernama firebase yang bertanggung jawab untuk inisialisasi koneksi ke Firebase Realtime Database
Firebase.begin(&config, &auth); //Memulai koneksi ke Firebase dengan menggunakan host dan token otentikasi yang telah ditentukan
Firebase.reconnectWiFi(true); //untuk memastikan bahwa koneksi WiFi tetap aktif dan menghubungkan kembali jika koneksi terputus
}
void setup() {
Serial.begin(115200);
config.api_key = "https://iotgas-cd9a3-default-rtdb.asia-southeast1.firebasedatabase.app";
config.database_url = "AIzaSyAIMiCIl--HjP77RuRpSkO7y3nuOzIKYLE";
wifiConnection();
//rtc_clk_cpu_freq_set(RTC_CPU_FREQ_80M);
scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN); //Mengkonfigurasi pin yang terhubung ke LED (led) sebagai pin keluaran (OUTPUT)
firebase();
}
void loop() {
if (scale.is_ready()) {
scale.set_scale();
Serial.println("Tare... remove any weights from the scale.");
delay(5000);
scale.tare();
Serial.println("Tare done...");
Serial.print("Place a known weight on the scale...");
delay(5000);
long reading = scale.get_units(10);
Serial.print("Result: ");
Serial.println(reading);
if (Firebase.setFloat(fbdo, "/condition", reading)) {
Serial.println("Firebase updated successfully");
} else {
Serial.print("Firebase update failed: ");
Serial.println(fbdo.errorReason());
}
}
else {
Serial.println("HX711 not found.");
}
delay(1000);
}
//calibration factor will be the (reading)/(known weight)