Tentang proyek ini
Lampu Rumah Pintar
Dalam proyek ini kita akan mempelajari cara menggunakan relai dengan sensor ultrasonik dan Arduino untuk membuat lampu rumah kita (atau perangkat apa pun) lebih pintar.
Target kami adalah membuat bohlam lampu hemat energi mati saat Anda keluar ruangan dan menyala saat Anda masuk kembali. Ini sangat mudah untuk diimplementasikan dan membutuhkan sedikit waktu.
Tutorial ini mengasumsikan dasar pengetahuan Arduino. Jika Anda pernah menggunakan Arduino sebelumnya, Anda sudah siap.
Perhatian :proyek ini menggunakan catu daya tegangan tinggi AC, jika Anda berusia kurang dari 16 tahun atau tidak memiliki pengalaman yang cukup, Anda harus memiliki orang yang berpengalaman untuk membantu Anda menangani bagian AC.
Namun, Anda dapat menyelesaikan proyek menggunakan perangkat DC yang beroperasi pada tegangan rendah dan akan membuktikan konsep yang sama. Saya akan menyatakan peringatan dengan jelas saat mulai berbahaya.
Komponen
1) Arduino Uno
2) Multimeter
3) Kabel Jumper
4) Papan tempat memotong roti
5) Modul Nyata
6) Sensor ultrasonik ( HC-SR04 ) dan library Ultrasonic untuk Arduino Anda dapat menemukannya di sini bernama library ( Ping Baru ), jika Anda baru pertama kali menginstal library eksternal ke Arduino, periksa link ini.
7) Sumber daya DC (opsional)
8) Obeng ( + jenis untuk modul relai )
9) Bola lampu hemat energi dengan dudukan dan steker dinding terpasang (saya menggunakan kabel daya radio lama untuk mendapatkan stekernya).
Saya juga menggunakan lem untuk merekatkan ujung kabel, Anda harus menggunakan selotip.
10) Visual Studio untuk menulis kode Arduino, ingin tahu caranya? periksa tautan ini, ini benar-benar gratis atau Anda dapat menggunakan Arduino IDE.
Mari kita mulai.
Mempersiapkan Ultrasonik
Pertama, kita akan mengetahui cara memasang sensor ultrasonik ke Arduino yang diilustrasikan pada gambar di bawah ini, Nanti akan dijelaskan cara menguji sensor ultrasonik.
Modul Relai
Kemudian kita akan menghubungkan satu saluran modul relai ( karena yang saya miliki memiliki 2 saluran ), pin Vcc masuk ke 5v dan IN1 masuk ke Arduino Pin 8 (atau pin pilihan Anda).
Perlu dicatat bahwa modul relai saya aktif-rendah, untuk mengetahui apa perbedaan antara aktif-rendah dan aktif-tinggi, periksa tautan ini. Jadi, sebelum melanjutkan sebaiknya anda mengetahui mode aktif relay anda, untuk melakukan itu anda cukup menghubungkan Vcc dan GND secara normal lalu sambungkan pin IN ke 5V jika tidak terjadi apa-apa maka aktif low untuk memastikannya sambungkan pin IN ke GND.
Lampu
Kemudian siapkan lampu untuk disambungkan ke colokan tembok dan relay satu terminal akan langsung disambungkan ke colokan, yang satunya lagi putus ditengah jalan, salah satu ujung putus akan masuk ke Normal Open pin (NO1 ) di modul relai, yang lain akan masuk ke pin COM1 dan kemudian steker.
Sirkuit terakhir menjadi ( Lampu disederhanakan :) )
Sekarang kita sudah selesai dengan perangkat kerasnya.
Kode melakukan hal berikut
- Mengukur jarak dari ultrasonik
- Memeriksa apakah seseorang melewati pintu
- Mengubah status lampu
Membaca Nilai dari Ultrasonik
Sekarang mari kita coba sensor ultrasonik, ini adalah contoh dari perpustakaan Anda, sangat sederhana dan lurus ke depan karena hanya mencetak jarak yang dibaca.
Anda dapat memperoleh jarak dalam Sentimeter atau Inci menggunakan ( sonar adalah nama instans ultrasonik).
sonar.ping_cm();
// Atau
sonar.ping_inch();
Seperti yang kita lihat, ini juga mengatur pin sensor Ultrasonik dan jangkauan maksimal yang diinginkan.
Sayangnya, terkadang sensor ultrasonik membaca jarak yang salah sesekali.
Yang dapat membuat lampu menyala dan mati secara tidak sengaja, untuk memperbaiki masalah ini kita harus mendapatkan sejumlah bacaan dan memilih rata-ratanya, cara lain untuk memperbaikinya adalah dengan menggunakan filter median yang hanya mengambil sejumlah bacaan, mengurutkannya dalam array dan memilih nilai di tengah yang sangat keren untuk menghilangkan noise jika sering terjadi.
Untungnya perpustakaan NewPing menerapkan filter ini dalam fungsi yang disebut
sonar.ping_median(unsigned byte numReadings);
Anda cukup meneruskan jumlah pembacaan yang ingin Anda pertimbangkan sebagai sampel maksimum 512 karena menggunakan byte yang tidak ditandatangani .
fungsi ini mengembalikan waktu gema yang digunakan untuk memantul kembali yang harus dikonversi ke satuan panjang yang Anda gunakan, ini juga siap diimplementasikan di perpustakaan dengan menggunakan
sonar.convert_cm(unsigned int echoTime);
// Atau
sonar.convert_in(unsigned int echoTime);
Hasil terakhir tentang ultrasonik adalah ia membaca 0 jika tidak ada apa pun di depannya , ini hanya diselesaikan dengan menyuruhnya mengatur jarak ke MAX_DISTANCE jika terbaca 0, akhirnya kode untuk membaca sensor menjadi ( distance is a global variable ):
Mendeteksi Sesuatu yang Telah Lewat
Sekarang mari kita mulai coding, untuk mengetahui bahwa seseorang telah melewati ultrasonik harus membaca jarak kritis yang bisa saja setengah dari lebar pintu. jadi kami selalu yakin bahwa seseorang sedang melewati pintu.
Satu hal lain yang ingin saya ingat adalah bahwa cahaya akan hanya beralih ketika sesuatu telah lewat di depan ultrasonik, ini berarti bahwa jika seseorang berdiri diam di depannya, tidak akan terjadi apa-apa. Kode untuk melakukannya adalah sebagai berikut
Selamat !! Anda sekarang selesai, saya akan melampirkan seluruh proyek Visual Studio saat saya membuat sedikit edit ke perpustakaan (menggunakan alokasi memori dinamis alih-alih array ukuran variabel -karena Visual Studio tidak mengizinkannya-) dan menambahkan beberapa dokumentasi.
Lihat komponen elektronik di utsource.net
Harap hormati proyek ini jika Anda merasa berguna, proyek lain:
Pencampur warna Arduino
Mobil RC menggunakan 1Sheeld
Artikel
Mengembangkan Arduino menggunakan Visual Studio
Kode
- Lampu Rumah Pintar
- Uji ultrasonik
Lampu Rumah PintarArduino
Kode ini mengambil pembacaan input dari ultrasonik dan mengontrol relai sesuai#define TRIGGER_PIN 12 // Pin Arduino diikat ke pin pemicu pada sensor ultrasonik.#define ECHO_PIN 11 // Pin Arduino diikat ke pin gema pada sensor ultrasonik .#define MAX_DISTANCE 200 // Jarak maksimum yang ingin kita ping (dalam sentimeter). Jarak sensor maksimum dinilai pada 400-500cm. [ini adalah nomor arbitrer]#define RELAY_LINE1_PIN 8#sertakan "NewPing.h"Sonar Ping Baru(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // Setup pin baru dan jarak maksimum.unsigned int critical_distance_cms =50; // Jarak batas di mana lampu akan beralih [ini adalah angka arbitrer] status bool =0;void setup() { Serial.begin(9600); // Buka monitor serial pada 115200 baud untuk melihat hasil ping. pinMode(RELAY_LINE1_PIN, OUTPUT); digitalWrite(RELAY_LINE1_PIN, TINGGI); // Matikan lampu}void loop() { delay(50); // Tunggu 50 md di antara ping (sekitar 20 ping/dtk). 29ms harus menjadi penundaan terpendek antara ping. unsigned int jarak =readDistance(); // Jarak saat ini dari objek apa pun yang menghadap sensor ultrasonik Serial.print("Ultrasonic:"); Serial.print(jarak); // Kirim ping, dapatkan jarak dalam cm dan hasil cetak (0 =di luar rentang jarak yang ditetapkan) Serial.println("cm"); // Seseorang berada di dekat pintu if (distance Uji ultrasonikArduino
Kode untuk membuat ultrasonik mencetak nilai yang dibacanya// ----------------------------------- ----------------------------------------// Contoh sketsa perpustakaan NewPing yang melakukan ping sekitar 20 kali per detik.// ------------------------------------------ ---------------------------------#include #define TRIGGER_PIN 12 // Pin Arduino diikat ke trigger pin pada sensor ultrasonik.#define ECHO_PIN 11 // Pin Arduino diikat ke echo pin pada sensor ultrasonik.#define MAX_DISTANCE 200 // Jarak maksimum yang ingin kita ping (dalam sentimeter). Jarak sensor maksimum dinilai pada 400-500cm.Sonar Ping Baru(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // Setup pin baru dan jarak maksimum.void setup() { Serial.begin(115200); // Buka serial monitor pada 115200 baud untuk melihat hasil ping.}void loop() { delay(50); // Tunggu 50 md di antara ping (sekitar 20 ping/dtk). 29ms harus menjadi penundaan terpendek antara ping. Serial.print("Ping :"); Serial.print(sonar.ping_cm()); // Kirim ping, dapatkan jarak dalam cm dan hasil cetak (0 =di luar rentang jarak yang ditetapkan) Serial.println("cm");}
Lampu Rumah Pintar
Ini adalah proyek lengkap untuk Visual Studio dengan perpustakaan yang diedithttps://github.com/shakram02/Arduino_SmartHouseLights.git
Skema
Ini adalah rangkaian lengkap yang menggambarkan keseluruhan proyek