Penerangan AC Cerdas dengan Arduino UNO dan Relay – Kontrol Otomatis
Komponen dan Perlengkapan
Arduino UNO
×
1
Lampu Hemat Energi
×
1
Adapter 5v DC
×
1
Kabel Jumper (generik)
×
1
Relay (generik)
×
1
UTSOURCE Electronic Parts
×
1
Alat dan Mesin yang Diperlukan
Obeng
Aplikasi dan Layanan Online
Microsoft Visual Studio 2015
Arduino IDE
Tentang Proyek Ini
Lampu Rumah Pintar
Dalam proyek ini kita akan mempelajari cara menggunakan relay dengan sensor ultrasonik dan Arduino untuk membuat lampu rumah (atau perangkat apa pun) lebih cerdas.
Target kami adalah membuat lampu hemat energi mati saat Anda keluar dari ruangan dan menyala saat Anda kembali. Ini sangat mudah untuk diimplementasikan dan membutuhkan waktu yang kecil.
Tutorial ini mengasumsikan pengetahuan dasar Arduino. Jika Anda pernah menggunakan Arduino sebelumnya, Anda siap melanjutkan.
Hati-hati : proyek ini menggunakan suplangan listrik AC tegangan tinggi, jika Anda berumur di bawah 16 atau tidak memiliki cukup pengalaman Anda harus memiliki orang yang berpengalaman untuk membantu Anda pada bagian AC.
Namun, Anda dapat menyelesaikan proyek menggunakan perangkat DC yang berjalan pada tegangan rendah dan akan membuktikan konsep yang sama. Saya akan menyebutkan peringatan dengan jelas saat mulai berbahaya.
Komponen
1) Arduino Uno
2) Multimeter
3) Kabel Jumper
4) Breadboard
5) Modul Relay
6) Sensor ultrasonik (HC-SR04) dan library ultrasonik untuk Arduino yang dapat Anda temukan di sini disebut (New Ping) library, jika ini pertama kalinya Anda menginstal library eksternal ke Arduino periksa tautan ini.
7) Sumber daya DC (opsional)
8) Obeng (tipe + untuk modul relay)
9) Lampu hemat energi dengan pemasangannya dan kolam dinding yang terpasang (Saya menggunakan kabel daya radio lama untuk mendapatkan kolam dinding).
Saya juga menggunakan pistol lem untuk melekatkan ujung kabel, Anda harus menggunakan pita isolasi.
10) Visual Studio untuk menulis kode Arduino, ingin tahu bagaimana? periksa tautan ini, ini sepenuhnya gratis atau Anda dapat menggunakan Arduino IDE.
Mari kita mulai.
Menyiapkan Sensor Ultrasonik
Pertama, kita akan mengetahui cara memasang sensor ultrasonik ke Arduino yang diilustrasikan dalam gambar di bawah, Kami akan nanti menjelaskan cara menguji sensor ultrasonik.
Modul Relay
Kemudian kita akan menghubungkan satu channel modul relay (karena modul saya memiliki 2 channel), pin Vcc ke 5v dan IN1 ke Pin 8 Arduino (atau pin apa pun yang Anda pilih).
Lampu
Kemudian siapkan lampu untuk dihubungkan ke kolam dinding dan relay satu terminal akan dihubungkan langsung ke kolam dinding, terminal lainnya akan memiliki potongan di tengah jalan, satu ujung potongan akan pergi ke pin Normally Open (NO1) di modul relay, yang lainnya akan pergi ke pin COM1 dan kemudian ke kolam dinding.
Rangkaian akhir menjadi (Lampu disederhanakan :))
Sekarang kami selesai dengan hardware.
Kode melakukan hal berikut
Mengukur jarak dari ultrasonik
Memeriksa apakah seseorang melewati pintu
Mengubah status lampu
Membaca Nilai dari Sensor Ultrasonik
Sekarang mari kita coba sensor ultrasonik, ini adalah contoh dari library, sangat sederhana dan mudah karena hanya mencetak jarak yang dibacanya.
Anda dapat mendapatkan jarak dalam Centimeter atau Inci menggunakan (sonar adalah nama instance ultrasonik).
sonar.ping_cm();
// Or
sonar.ping_inch();
Seperti yang dapat kita lihat ini juga mengatur pin dari sensor ultrasonik dan jangkauan maksimum yang diinginkan.
Sayangnya, kadang-kadang sensor ultrasonik membaca jarak yang salah sesekali.
Yang dapat menyebabkan lampu menyala dan mati secara tidak disengaja, untuk memperbaiki masalah ini kita harus mendapatkan sejumlah pembacaan dan memilih rata-ratanya, cara lain untuk memperbaikinya adalah menggunakan median filter yang secara sederhana mengambil sejumlah pembacaan, mengurutkannya dalam array dan memilih nilai di tengah yang sangat keren untuk menghilangkan kebisingan jika sering terjadi.
Untungnya library NewPing memiliki filter ini yang diimplementasikan dalam fungsi yang disebut
sonar.ping_median(unsigned byte numReadings);
Anda cukup memberikan jumlah pembacaan yang ingin Anda pertimbangkan sebagai sampel maksimum 512 karena mereka menggunakan unsigned byte.
fungsi ini mengembalikan waktu yang digunakan gema untuk kembali yang harus dikonversi ke satuan panjang yang Anda gunakan, ini juga sudah diimplementasikan dalam library dengan menggunakan
sonar.convert_cm(unsigned int echoTime);
// Or
sonar.convert_in(unsigned int echoTime);
Tangkap terakhir tentang ultrasonik adalah membaca 0 jika tidak ada sesuatu di depannya, ini secara sederhana diselesaikan dengan memberitahukannya untuk mengatur jarak ke MAX_DISTANCE jika membaca 0, akhirnya kode untuk membaca sensor menjadi (jarak adalah variabel global) :
Mendeteksi Sesuatu yang Melewati
Sekarang mari kita mulai coding, untuk mengetahui bahwa seseorang telah melewati ultrasonik harus membaca jarak kritis yang dapat dengan mudah setengah dari lebar pintu. jadi kita selalu yakin bahwa seseorang melewati pintu.
Satu hal lain yang ingin saya perhatikan adalah lampu akan hanya beralih saat sesuatu telah melewati di depan ultrasonik, ini berarti jika seseorang berdiri diam di depannya, tidak akan terjadi apa-apa. Kode untuk melakukan ini adalah sebagai berikut
Selamat !! Anda sekarang selesai, Saya akan melampirkan seluruh proyek Visual Studio karena saya telah melakukan perubahan kecil pada library ( menggunakan alokasi memori dinamis alih-alih array ukuran variabel -karena Visual Studio tidak mengizinkannya- ) dan menambahkan beberapa dokumentasi.
Periksa komponen elektronik di utsource.net
Tolong hormati proyek ini jika Anda menemukannya berguna, proyek lain:
Mixer warna Arduino
Mobil RC menggunakan 1Sheeld
Artikel
Mengembangkan Arduino menggunakan Visual Studio
Kode
Lampu Rumah Pintar
Tes Ultrasonik
Lampu Rumah PintarArduino
Kode ini mengambil input pembacaan dari ultrasonik dan mengontrol relay sesuai dengan itu
#define TRIGGER_PIN 12 // Pin Arduino yang terhubung ke pin trigger pada sensor ultrasonik. #define ECHO_PIN 11 // Pin Arduino yang terhubung ke pin echo pada sensor ultrasonik. #define MAX_DISTANCE 200 // Jarak maksimum yang ingin kita ping (dalam sentimeter). Jarak maksimum sensor berukuran 400-500cm. [ini adalah angka sembarangan] #define RELAY_LINE1_PIN 8 #include "NewPing.h" NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup pin dan jarak maksimum. unsigned int critical_distance_cms = 50; // Jarak kritis di mana lampu akan beralih [ini adalah angka sembarangan] bool state = 0; void setup() { Serial.begin(9600); // Buka serial monitor pada 115200 baud untuk melihat hasil ping. pinMode(RELAY_LINE1_PIN, OUTPUT); digitalWrite(RELAY_LINE1_PIN, HIGH); // Matikan lampu } void loop() { delay(50); // Tunggu 50ms antara ping (sekitar 20 ping/detik). 29ms haruslah penundaan terpendek antara ping. unsigned int distance = readDistance(); // Jarak saat ini dari objek yang menghadap sensor ultrasonik Serial.print("Ultrasonic: "); Serial.print(distance); // Kirim ping, dapatkan jarak dalam cm dan cetak hasil (0 = di luar jangkauan yang ditentukan) Serial.println("cm"); // Seseorang di dekat pintu if (distance < critical_distance_cms) { while (distance < critical_distance_cms) { // Periksa apakah mereka bergerak jauh distance = readDistance(); delay(5); // Tidak lakukan apa-apa sampai orang bergerak jauh dari pintu } state = !state; // Ubah status relay if (state) { Serial.println("Door Open!"); digitalWrite(RELAY_LINE1_PIN, LOW); // Nyalakan lampu } else { Serial.println("Door Closed!"); digitalWrite(RELAY_LINE1_PIN, HIGH); // Matikan lampu } } } // Perbarui nilai pembacaan Ultrasonik unsigned int readDistance() { // Baca 7 nilai dari ultrasonik dan dapatkan nilai median (median filter) // Menghilangkan pembacaan yang berisik unsigned int distance = sonar.convert_cm(sonar.ping_median(7)); // Nilai 0 menunjukkan bahwa sensor ultrasonik tidak membaca apa-apa di depannya // Set jarak ini ke jarak maksimum sehingga lampu tidak beralih secara tidak perlu if (distance == 0) { distance = MAX_DISTANCE; } return distance; }
Tes UltrasonikArduino
Kode untuk membuat ultrasonik mencetak nilai yang dibacanya
// --------------------------------------------------------------------------- // Contoh sketsa library NewPing yang melakukan ping sekitar 20 kali per detik. // --------------------------------------------------------------------------- #include <NewPing.h> #define TRIGGER_PIN 12 // Pin Arduino yang terhubung ke pin trigger pada sensor ultrasonik. #define ECHO_PIN 11 // Pin Arduino yang terhubung ke pin echo pada sensor ultrasonik. #define MAX_DISTANCE 200 // Jarak maksimum yang ingin kita ping (dalam sentimeter). Jarak maksimum sensor berukuran 400-500cm. NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup pin dan jarak maksimum. void setup() { Serial.begin(115200); // Buka serial monitor pada 115200 baud untuk melihat hasil ping. } void loop() { delay(50); // Tunggu 50ms antara ping (sekitar 20 ping/detik). 29ms haruslah penundaan terpendek antara ping. Serial.print("Ping: "); Serial.print(sonar.ping_cm()); // Kirim ping, dapatkan jarak dalam cm dan cetak hasil (0 = di luar jangkauan yang ditentukan) Serial.println("cm"); }
Lampu Rumah Pintar
Ini adalah proyek lengkap untuk Visual Studio dengan library yang diedithttps://github.com/shakram02/Arduino_SmartHouseLights.git
Skematik
Ini adalah skematik lengkap yang menggambarkan seluruh proyek