Daftar Isi:

Bel Pintu Arduino: 4 Langkah
Bel Pintu Arduino: 4 Langkah

Video: Bel Pintu Arduino: 4 Langkah

Video: Bel Pintu Arduino: 4 Langkah
Video: Menggunakan Module RF 433Mhz Arduino || Bel Pintu Wireless 2024, Juli
Anonim
bel pintu Arduino
bel pintu Arduino

Hari ini, saya akan menunjukkan cara membuat bel pintu menggunakan Arduino. Bel pintu ini memainkan nada acak dari perpustakaan lagu. Anda dapat menyesuaikan bel pintu Anda dan menambahkan lebih banyak lagu. Pasang di luar kamar tidur, ruang kelas, kantor, atau bahkan pintu depan Anda!

Perlengkapan:

  • Arduino Uno (sebagian besar tipe lain akan melakukannya)
  • Komputer dengan Arduino IDE untuk pemrograman
  • Kabel USB-A ke USB-B untuk pemrograman Arduino
  • Papan tempat memotong roti
  • 4x kabel jumper
  • Tombol tekan atau sakelar lainnya
  • Resistor 10 kOhm
  • Buzzer pasif (yaitu speaker piezoelektrik)
  • Untuk pemasangan permanen:

    • Catu Daya 9V DC atau baterai 9V untuk memberi daya pada Arduino
    • 2x kabel panjang untuk tombol kabel di luar pintu

Langkah 1: Pengaturan Perangkat Keras

Pengaturan Perangkat Keras
Pengaturan Perangkat Keras
Pengaturan Perangkat Keras
Pengaturan Perangkat Keras
Pengaturan Perangkat Keras
Pengaturan Perangkat Keras

Pertama, kita akan mengatur perangkat keras. Kita akan mulai dengan buzzer pasif (yaitu speaker). Kami ingin menghubungkan ujung positif buzzer pasif (dilambangkan dengan tanda "+") ke pin digital 8 di Arduino. Kami akan menghubungkan ujung lain dari buzzer passize ke ground.

Selanjutnya, kita akan memasang tombol tekan untuk bel pintu. Kami akan menggunakan resistor pulldown eksternal 10 kOhm untuk sakelar, sehingga tidak ada tegangan mengambang atau keadaan tidak stabil pada input ke Arduino. Dengan menggunakan resistor pulldown, Arduino membaca tegangan sebagai 0V saat tombol tidak ditekan dan 5V saat tombol ditekan. Untuk informasi lebih lanjut tentang resistor pullup atau pulldown, Anda dapat membaca artikel ini:

Kami akan menghubungkan satu sisi tombol tekan ke 5V. Sisi lain dari tombol akan dihubungkan ke ground melalui resistor pull-down 10 kOhm. Ingat: tombol tekan terhubung secara horizontal secara internal. Mereka hanya terhubung secara vertikal saat ditekan. Informasi lebih lanjut disediakan dalam artikel ini:

Langkah 2: Pengaturan Perangkat Lunak

Semua kode terlampir. Di bawah ini adalah deskripsi masing-masing fungsi dengan cuplikan kode.

mempersiapkan:

Dalam fungsi setup(), kita ingin mengonfigurasi pin digital untuk tombol dan speaker kita. Kami ingin mengonfigurasi pin 2 sebagai input untuk tombol kami, dan kami ingin mengonfigurasi pin 8 sebagai output untuk speaker kami.

Kami juga ingin "menyemai" generator nomor acak kami untuk memilih nada secara acak ketika seseorang membunyikan bel pintu kami. Menyemai generator nomor acak kami berarti memberinya input acak. Kami akan menyemai generator nomor acak kami dengan nilai tegangan pada input analog 0. Karena tidak ada yang terhubung ke input ini, akan ada tegangan "acak", berfluktuasi pada pin ini yang menyediakan generator nomor acak kami dengan banyak nilai berbeda. Ini memastikan bahwa kami akan memiliki urutan pilihan lagu yang berbeda untuk bel pintu kami. Untuk informasi lebih lanjut tentang fungsi Arduino random(), buka di sini:

#sertakan "pitches.h"

#include "songs.h" #define BUTTON_PIN 2 #define SPEAKER_PIN 8 /* set up function */ void setup() { // aktifkan pin input/output pinMode(BUTTON_PIN, INPUT); pinMode(SPEAKER_PIN, OUTPUT); // fungsi seed random() sehingga kita mendapatkan urutan yang berbeda randomSeed(analogRead(0)); }

lingkaran:

Dalam fungsi loop() kami, kami akan terus memeriksa untuk melihat apakah tombol ditekan (pin 2 digital tinggi). Jika pin high, kita tunggu 50 ms dan cek kembali untuk memastikan masih high. Ini memastikan bahwa tombol ditekan dan tidak ada suara nyasar pada pin input digital yang menyebabkan positif palsu.

Setelah kami memastikan bahwa tombol telah ditekan, kami menggunakan generator nomor acak kami untuk memilih salah satu dari 5 lagu menggunakan pernyataan sakelar. Data untuk lagu-lagu ini disimpan di "songs.h" dan informasi nada disimpan di "pitches.h". Setelah kami memilih lagu, kami meneruskan informasi ini ke fungsi play_song().

/* fungsi loop while utama */

void loop() { // periksa untuk melihat apakah tombol ditekan jika (digitalRead(BUTTON_PIN) == HIGH) { // delay 50 ms untuk memastikan tombol masih ditekan // menghindari kesalahan pembacaan delay(50); if(digitalRead(BUTTON_PIN) == HIGH) { // pilih lagu secara acak int song_choice = random(5); // pilih lagu mana yang akan diputar sakelar (pilihan_lagu) { kasus 0: play_song(Panjang potong rambut, potong rambut, Durasi potong rambut,Tempo potong rambut); merusak; kasus 1: play_song(marioLength, mario, marioDurations, marioTempo); merusak; kasus 2: play_song(miiLength, mii, miiDurations, miiTempo); merusak; kasus 3: play_song(hpLength, hp, hpDurations, hpTempo); merusak; kasus 4: play_song(takeonmeLength, takeonme, takeonmeDurations, takeonmeTempo); merusak; default: play_song(miiLength, mii, miiDurations, miiTempo); merusak; } } } }

Mainkan lagu:

play_song() membutuhkan 4 argumen: bilangan bulat not dalam lagu, larik bilangan bulat dari titinada dalam melodi, larik bilangan bulat dari durasi, dan tempo bilangan bulat untuk lagu tertentu. Anda harus menentukan masing-masing untuk setiap lagu yang ingin Anda mainkan. Untuk informasi lebih lanjut tentang cara menggunakan fungsi nada Arduino, Anda dapat melihat tutorial ini: https://www.arduino.cc/en/Tutorial/ToneMelody. Saya menambahkan beberapa fungsi di atas tutorial ini untuk catatan bertitik. Jika nilai dalam larik durasi nada negatif, artinya nada tersebut bertitik (panjangnya 1,5 kali lebih besar).

/* memutar lagu */

void play_song(int num_notes, int melody, int noteDurations, int tempo) { // melangkah dan memainkan semua not untuk (int i=0; i 0) { Duration = tempo / noteDurations; } // jika angkanya negatif, berarti not bertitik // menambah durasi setengah untuk not bertitik else if (noteDurations < 0) { Duration = tempo / abs(noteDurations) * 1.5; } nada(SPEAKER_PIN, melodi, durasi); // untuk membedakan not, atur waktu minimum di antara not tersebut. // durasi catatan + 30% tampaknya berfungsi dengan baik: int pauseBetweenNotes = durasi * 1.30; delay(jedaAntaraCatatan); // hentikan pemutaran nada: noTone(SPEAKER_PIN); } }

Contoh lagu.h:

Di bawah ini adalah contoh salah satu lagu di "songs.h". Catatan adalah makro yang didefinisikan dalam "pitches.h". Angka-angka sesuai dengan frekuensi nada dalam hertz (Hz). Durasi nada didefinisikan sebagai: 1 = nada penuh, 2 = nada setengah, 4 = nada seperempat, 8 = nada kedelapan, -4 = nada seperempat bertitik, dll. Panjangnya adalah jumlah total nada dalam lagu. Tempo adalah pembagi untuk kecepatan lagu (angka yang lebih tinggi berarti tempo yang lebih lambat). Anda harus bermain-main dengan nomor ini sampai Anda mendapatkan tempo yang Anda suka.

/*harrypotter*/

int hp = { NOTE_D4, NOTE_G4, NOTE_AS4, NOTE_A4, NOTE_G4, NOTE_D5, NOTE_C5, NOTE_A4, NOTE_G4, NOTE_AS4, NOTE_A4, NOTE_F4, NOTE_GS4, NOTE_D4 }; int hpDurations = { 4, -4, 8, 4, 2, 4, -2, -2, -4, 8, 4, 2, 4, 1 }; int hpPanjang = 14; int hpTempo = 1050;

Langkah 3: Tweak

Tambahkan lebih banyak lagu! Ikuti format yang ditunjukkan di "songs.h" dan gunakan tutorial untuk bantuan: https://www.arduino.cc/en/Tutorial/ToneMelody. Untuk setiap lagu baru yang Anda tambahkan, ingatlah untuk menambahkan kasus baru ke pernyataan switch dan tingkatkan jumlah maksimum yang dapat dihasilkan oleh fungsi random() Anda. Selamat mengkode!

Langkah 4: Lebih Banyak Proyek

Untuk proyek lainnya, kunjungi halaman saya:

  • https://dargen.io/
  • https://github.com/mjdargen
  • https://www.instructables.com/member/mjdargen/

Direkomendasikan: