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:
- NodeMCU ESP32S dan USB
- Servo Motor
- LED light
- 220 Ohm resistor
- Telefon Pintar Android
- Jumper wire
- Software Arduino IDE
Litar:
Servo Motor
- VCC → 3.3V Arduino
- Signal pin → Pin 13 Arduino
- GND → GND Arduino
LED light
- Signal pin → Pin 23 Arduino
- GND → GND Arduino
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.