Loading...
OUR BLOG

Kawal Servo dan LED menggunakan Android Apps dan Firebase

Hi BDx-ian!

 

Dalam tutorial kali ini kita akan belajar macam mana nak kawal servo dan LED menggunakan gyroscope dan light sensor telefon pintar melalui Kodular dan Firebase dengan ESP32S . 

 

Fungsi sensor cahaya yang digunakan ialah untuk mengukur atau memastikan jumlah cahaya yang ada lalu memalapkan skrin telefon pintar sewajarnya untuk memadankan keadaan sekeliling dan kecerahan telefon pintar anda. Tutorial ini menjelaskan contoh pengunaan sensor cahaya ini untuk diintegrasi di dalam projek menggunakan Kodular dan ESP32.

 

Data - data seperti “illuminance” iaitu pencahayaan yang diperolehi dari telefon anda boleh digunakan untuk mencerahkan atau memalapkan LED menggunakan ESP32S dan proses ini dilakukan dengan menghubungkan Kodular Companion dari telefon pintar anda dan data - data yang diperolehi akan di hantar ke Firebase dan dengan sedikit coding dilakukan menggunakan Arduino, anda boleh menghubungkan dengan perkakasan seperti LED dan servo.

 

Peralatan yang diperlukan:

 

Litar:

Servo Motor

 

LED light

 

Code

 

Setelah selesai memasang komponen seperti gambar rajah di atas, anda boleh upload code yang disediakan seperti berikut ke dalam Arduino IDE anda.

 

#include <WiFi.h>

#include <FirebaseESP32.h>

#include <Wire.h>

#include <Servo.h>


// Define Firebase credentials

#define FIREBASE_HOST "Database URL Anda"

#define FIREBASE_AUTH "Database Secret Anda" 

#define DATABASE_PATH "Project Bucket Anda"


// Define Wi-Fi credentials

#define WIFI_SSID "Nama WiFi Anda"

#define WIFI_PASSWORD "Password WiFi Anda"


// Define pins

#define SERVO_PIN 13       // adjust as per your connection

#define LED_PIN 23         // adjust as per your connection


// Variables to store sensor data

float gyroscopeX, gyroscopeY, gyroscopeZ, lightSensor;


// Objects

FirebaseData firebaseData;

Servo servoMotor;


void setup() {

  // Initialize serial communication

  Serial.begin(115200);


  // Initialize servo

  servoMotor.attach(SERVO_PIN);


  // Connect to Wi-Fi

  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);

  while (WiFi.status() != WL_CONNECTED) {

    delay(1000);

    Serial.println("Connecting to WiFi...");

  }

  Serial.println("Connected to WiFi");


  // Initialize Firebase

  Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);

}


void loop() {

  // Read data from Firebase

  String path;


  path = String(DATABASE_PATH) + "/gyroscopeX";

  if (Firebase.getFloat(firebaseData, path.c_str())) {

      gyroscopeX = firebaseData.floatData();

  }


  path = String(DATABASE_PATH) + "/gyroscopeY";

  if (Firebase.getFloat(firebaseData, path.c_str())) {

      gyroscopeY = firebaseData.floatData();

  }


  path = String(DATABASE_PATH) + "/gyroscopeZ";

  if (Firebase.getFloat(firebaseData, path.c_str())) {

      gyroscopeZ = firebaseData.floatData();

  }


  path = String(DATABASE_PATH) + "/lightSensor";

  if (Firebase.getFloat(firebaseData, path.c_str())) {

      lightSensor = firebaseData.floatData();

  }


  // Print sensor data

  Serial.print("Gyro X: ");

  Serial.println(gyroscopeX);

  Serial.print("Gyro Y: ");

  Serial.println(gyroscopeY);

  Serial.print("Gyro Z: ");

  Serial.println(gyroscopeZ);

  Serial.print("Light Intensity: ");

  Serial.println(lightSensor);


  // Control servo based on Gyroscope X

  if (gyroscopeX < 0) {

      servoMotor.write(0);   // Turn left

  } else {

      servoMotor.write(180); // Turn right

  }


  // Control LED brightness based on light intensity

  int ledBrightness = map((int)lightSensor, 1, 100, 0, 255);

  analogWrite(LED_PIN, ledBrightness);


  delay(1000); // Read data every 1 second

}

 

1. KODULAR

Bagi tutorial ini, kita akan menggunakan Kodular sebagai medium pengantara untuk mendapatkan nilai dari sensor cahaya dan gyroscope telefon pintar anda. Bagi anda yang terlepas tutorial sebelumnya boleh rujuk di Kawal Servo menggunakan Android Apps untuk lebih memahami langkah - langkah menggunakan Kodular dalam projek ini. 1. Masukkan ‘Light Sensor’ yang boleh didapati di bahagian ‘Sensor’ dan kemudian klik pada Enabled untuk mengaktifkan penggunaan sensor ini.

 

 

2. Masukkan juga ‘Firebase Database’ yang boleh didapati di ruangan ‘Google’. 

 

Jika anda belum pernah membuat projek dengan Firebase, lihat tutorial kami sebelum ini Setup Aplikasi Android menggunakan Kodular dan Firebase untuk mengikuti langkah di bawah. 

 

 

Kemudian, masukkan Firebase URL yang boleh didapati di ‘Realtime Database’ di bahagian ‘Data’. Bagi Firebase Token pula untuk tutorial ini kita menggunakan Database Secret yang boleh diperolehi di bahagian ‘Project Setting’ > ‘Service Accounts’ > ‘Database Secret’. 

 

3. Bagi Code Block pula anda boleh mengikut seperti yang telah disiapkan di bawah ini.

 

 

 

2. FIREBASE

 

Bagi menggunakan Firebase pula ini adalah paparan Realtime Database setelah selesai disediakan. Bagi meletakkan nilai paksi X,Y dan Z ini kita boleh menggunakan key ‘gyroscopeX’ sebagai contoh dan ‘lightSensor’ untuk mengenal pasti nilai - nilai yang diperolehi. Di bahagian Value pula, tinggalkan ruangan kosong kerana di situ nilai akan muncul menunjukkan sambungan dari Kodular telah berjaya.

 

 

OUTPUT

 

 

Ini adalah contoh paparan dari Kodular Companion menunjukkan antaramuka pengguna di telefon pintar. Walau bagaimanapun, paparan ini boleh diubah suai mengikut kehendak pengguna. Dari paparan ini, kita dapat memantau nilai paksi X, paksi Y, paksi Z dan nilai keamatan cahaya yang diperolehi dari telefon pengguna. 

 

 

Setelah di sambungkan dengan ESP32S melalui WiFi, pengguna boleh menggerakkan telefon ke kanan dan servo motor akan bertindak dengan turut pusing ke kanan. Namun apabila telefon digerakkan ke kiri, pengguna akan dapat saksikan servo motor akan berpusing ke kiri. Bagi kecerahan LED pula, apabila pengguna berada di tempat yang cerah, LED akan menyala dengan lebih cerah. Namun apabila sensor cahaya mengesan kegelapan, LED akan turut malap juga.

 

 

 

 

 

 

Unsure Whether You Need Our Help?

Have you got an awesome new idea or project that you want to talk about? We're here to talk you through it. Flick us an email or give us a call to get started.