Block-Code Definition
Block-Code Definition
Penelitian ini menggunakan Arduino Sketch yang dituis mengguankan bahasa C++.
Tools yang digunakan untuk menjalankan kode program adalah Arduino IDE.
Berikut Penjelasan dari tiap-tiap blok kode program IoT Monitoring Kadar Air Gabah.
- Library
#include <Arduino.h>
#include <WiFi.h>
#include <Firebase_ESP_Client.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#include "time.h"
#include "addons/TokenHelper.h"
#include "addons/RTDBHelper.h"
#define PIN_Moisture 36
#define PIN_Ntc 34
- LCD Configuration
- LED Indicator
- Wifi Credentials
- Firebase Configuration
*/
#define USER_EMAIL "_INSERT EMAIL_"
#define USER_PASSWORD "_INSERT PASSWORD_"
// Database main path (to be updated in setup with the user UID)
String databasePath;
// Database child nodes
String tempGrainPath = "/GrainTemperature";
String moisPath = "/GrainMoisture";
String tempEnvPath = "/RoomTemperature";
String timePath = "/timestamp";
int timestamp;
FirebaseJson json;
float moisture;
Adafruit_BME280 bme; // I2C
float temperatureEnv;
//NTC Sensor
const double VCC = 3.3; // NodeMCU on board 3.3v vcc
const double R2 = 10000; // 10k ohm series resistor
const double adc_resolution = 1023; // 10-bit adc
double Vout, Rth, adc_value;
double ntc_analog_value;
float temperatureGrain;
// Initialize BME280
void initBME(){
if (!bme.begin(0x76)) {
Serial.println("Could not find a valid BME280 sensor, check
wiring!");
while (1);
}
}
// Temperature in kelvin
temperatureGrain = (1 / (A + (B * log(Rth)) + (C*pow((log(Rth)),3))));
// Temperture in degree censius
temperatureGrain = temperatureGrain - 273.15;
}
void moistureStart(){
float value = analogRead(PIN_Moisture);
moisture = abs(map(value, 2500, 4095, 0, 100));
void lcdDisplay(){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("TG:");
lcd.print(temperatureGrain,1);
lcd.print("C ");
lcd.print("M:");
lcd.print(moisture);
lcd.setCursor(0, 1);
lcd.print("temp:");
lcd.print(bme.readTemperature());
lcd.print("C");
}
- Fungsi untuk mengambil waktu saat ini dalam format epoch time (format hitungan detik)
void setup(){
Serial.begin(115200);
pinMode(ledGreen, OUTPUT);
pinMode(ledRed, OUTPUT);
//initialize LCD
lcd.init();
lcd.backlight();
Firebase.reconnectWiFi(true);
fbdo.setResponseSize(4096);
// Assign the callback function for the long running token generation
task */
config.token_status_callback = tokenStatusCallback; //see
addons/TokenHelper.h
- Prosedure untuk menjalankan perintah utama program, meliputi pemabcaan data sensor,
menampilkan data pada LCD dan mengirimkannnya ke Firebase
void loop(){
ntcStart();
moistureStart();
lcdDisplay();