Isi kandungan:
- Langkah 1: Persediaan Perkakasan
- Langkah 2: Persediaan Perisian
- Langkah 3: Tweaks
- Langkah 4: Lebih Banyak Projek
Video: Bel Arduino: 4 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:06
Hari ini, saya akan menunjukkan cara membuat bel pintu menggunakan Arduino. Loceng pintu ini memainkan lagu secara rawak dari perpustakaan lagu. Anda boleh menyesuaikan bel pintu anda dan menambahkan lebih banyak lagu. Pasang di luar bilik tidur, bilik darjah, pejabat, atau bahkan pintu depan anda!
Bekalan:
- Arduino Uno (kebanyakan jenis lain akan dilakukan)
- Komputer dengan Arduino IDE untuk pengaturcaraan
- Kabel USB-A ke USB-B untuk memprogram Arduino
- Papan roti
- Wayar pelompat 4x
- Butang tekan atau suis lain
- Perintang 10 kOhm
- Buzzer pasif (iaitu pembesar suara piezoelektrik)
-
Untuk pemasangan tetap:
- Bekalan Kuasa 9V DC atau bateri 9V untuk memberi kuasa kepada Arduino
- Kabel panjang 2x untuk butang pendawaian di luar pintu
Langkah 1: Persediaan Perkakasan
Pertama, kami akan menyediakan perkakasan. Kami akan bermula dengan buzzer pasif (iaitu pembesar suara). Kami ingin menghubungkan hujung positif buzzer pasif (dilambangkan dengan tanda "+") ke pin digital 8 di Arduino. Kami akan menghubungkan hujung buzzer passize yang lain ke tanah.
Seterusnya, kami akan memasang butang tekan untuk bel pintu. Kami akan menggunakan resistor pulldown luaran 10 kOhm untuk suis, jadi tidak ada voltan terapung atau keadaan tidak stabil pada input ke Arduino. Dengan menggunakan perintang pulldown, Arduino membaca voltan sebagai 0V ketika butang tidak ditekan dan 5V ketika butang ditekan. Untuk maklumat lebih lanjut mengenai penarik pullup atau pulldown, anda boleh membaca artikel ini:
Kami akan menghubungkan satu sisi butang tekan ke 5V. Bahagian lain butang tekan akan disambungkan ke tanah melalui perintang pulldown 10 kOhm. Ingat: butang tekan disambungkan secara mendatar secara dalaman. Mereka hanya disambungkan secara menegak semasa ditekan. Maklumat lebih lanjut disediakan dalam artikel ini:
Langkah 2: Persediaan Perisian
Semua kod dilampirkan. Berikut adalah penerangan setiap fungsi dengan tangkapan kod.
persediaan:
Dalam fungsi setup (), kami ingin mengkonfigurasi pin digital untuk butang dan pembesar suara kami. Kami ingin mengkonfigurasi pin 2 sebagai input untuk butang kami, dan kami ingin mengkonfigurasi pin 8 sebagai output untuk pembesar suara kami.
Kami juga ingin "membuat" penjana nombor rawak kami untuk memilih lagu secara rawak ketika seseorang membunyikan loceng pintu kami. Menyemai penjana nombor rawak kami bermaksud memberi input secara rawak. Kami akan menghasilkan penjana nombor rawak kami dengan nilai voltan pada input analog 0. Oleh kerana tidak ada yang dihubungkan ke input ini, akan ada voltan berfluktuasi "rawak" pada pin ini yang menyediakan penjana nombor rawak kami dengan banyak nilai yang berbeza. Ini memastikan bahawa kita akan mempunyai urutan pilihan lagu yang berbeza untuk bel pintu kita. Untuk maklumat lebih lanjut mengenai fungsi Arduino random (), pergi ke sini:
#masuk "pitches.h"
#include "songs.h" #define BUTTON_PIN 2 #define SPEAKER_PIN 8 / * fungsi persediaan * / batal setup () {// aktifkan input / output pinMode (BUTTON_PIN, INPUT); pinMode (SPEAKER_PIN, OUTPUT); // seed random () berfungsi supaya kita mendapat urutan randomSeed yang berbeza (analogRead (0)); }
gelung:
Dalam fungsi loop () kami, kami akan terus memeriksa untuk melihat apakah butang ditekan (pin digital 2 tinggi). Sekiranya pin tinggi, kita tunggu 50 ms dan periksa lagi untuk memastikan bahawa pin masih tinggi. Ini memastikan bahawa butang ditekan dan tidak ada bunyi sesat pada pin input digital yang menyebabkan positif palsu.
Setelah kami mengesahkan bahawa butang ditekan, kami menggunakan penjana nombor rawak kami untuk memilih salah satu daripada 5 lagu menggunakan pernyataan beralih. Data untuk lagu-lagu ini disimpan di "songs.h" dan maklumat nada disimpan di "pitches.h". Setelah memilih lagu, kami menyampaikan maklumat ini ke dalam fungsi play_song ().
/ * fungsi utama semasa gelung * /
gelung void () {// periksa untuk melihat apakah butang ditekan jika (digitalRead (BUTTON_PIN) == TINGGI) {// tunda 50 ms untuk memastikan ia masih ditekan // mengelakkan kelewatan salah membaca (50); jika (digitalRead (BUTTON_PIN) == TINGGI) {// pilih secara rawak lagu int song_choice = random (5); // pilih suis lagu mana yang hendak dimainkan (song_choice) {case 0: play_song (potongan rambut Panjang, potongan rambut, potongan rambutDurations, potongan rambutTempo); rehat; kes 1: play_song (marioLength, mario, marioDurations, marioTempo); rehat; kes 2: play_song (miiLength, mii, miiDurations, miiTempo); rehat; kes 3: play_song (hpLength, hp, hpDurations, hpTempo); rehat; kes 4: play_song (takeonmeLength, takeonme, takeonmeDurations, takeonmeTempo); rehat; lalai: play_song (miiLength, mii, miiDurations, miiTempo); rehat; }}}}
main_song:
play_song () mengambil 4 argumen: bilangan nota bilangan bulat dalam lagu, susunan bilangan bulat dalam nada melodi, susunan bilangan bulat durasi, dan tempo integer untuk lagu tertentu. Anda mesti menentukan masing-masing untuk setiap lagu yang anda mahu mainkan. Untuk maklumat lebih lanjut mengenai cara menggunakan fungsi nada Arduino, anda boleh melihat tutorial ini: https://www.arduino.cc/en/Tutorial/ToneMelody. Saya menambahkan beberapa fungsi di atas tutorial ini untuk nota putus-putus. Sekiranya nilai dalam susunan durasi nota negatif, itu bermaksud bahawa itu adalah nota putus-putik (panjangnya 1.5 kali lebih besar).
/ * memainkan lagu * /
batal play_song (int num_notes, int melody , int noteDurations , int tempo) {// melangkah dan mainkan semua nota untuk (int i = 0; i 0) {durasi = tempo / noteDurations ; } // jika nombor negatif, bermaksud nota putus-putus // meningkatkan durasi sebanyak setengah untuk nota bertitik yang lain jika (noteDurations <0) {tempoh = tempo / abs (noteDurations ) * 1.5; } nada (SPEAKER_PIN, melodi , jangka masa); // untuk membezakan nota, tetapkan masa minimum di antara mereka. // tempoh nota + 30% nampaknya berfungsi dengan baik: int pauseBetweenNotes = tempoh * 1.30; kelewatan (pauseBetweenNotes); // hentikan bermain nada: noTone (SPEAKER_PIN); }}
Contoh lagu.h:
Di bawah ini adalah contoh salah satu lagu dalam "songs.h". Nota adalah makro yang ditentukan dalam "pitches.h". Angka-angka sesuai dengan frekuensi not dalam hertz (Hz). Tempoh nota ditakrifkan sebagai: 1 = nota keseluruhan, 2 = nota setengah, 4 = nota suku, 8 = nota kelapan, -4 = nota seperempat putus-putus, dll. Panjangnya adalah jumlah nota dalam lagu. Tempo adalah pembahagi untuk kelajuan lagu (bilangan yang lebih tinggi bermaksud tempo yang lebih perlahan). Anda mesti bermain-main dengan nombor ini sehingga anda mendapat tempo yang anda suka.
/ * harry potter * /
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 hpLength = 14; int hpTempo = 1050;
Langkah 3: Tweaks
Tambahkan lebih banyak lagu! Ikuti format yang ditunjukkan dalam "songs.h" dan gunakan tutorial untuk bantuan: https://www.arduino.cc/en/Tutorial/ToneMelody. Untuk setiap lagu baru yang anda tambahkan, ingat untuk menambahkan casing baru pada pernyataan beralih dan meningkatkan jumlah maksimum yang dapat dihasilkan oleh fungsi rawak () anda. Selamat pengekodan!
Langkah 4: Lebih Banyak Projek
Untuk lebih banyak projek, lawati halaman saya:
- https://dargen.io/
- https://github.com/mjdargen
- https://www.instructables.com/member/mjdargen/
Disyorkan:
Cara Membuat Bel Tanpa Sentuhan, Pengesanan Suhu Badan, GY-906, 433MHz Menggunakan Arduino: 3 Langkah
Cara Membuat Bel Tanpa Sentuhan, Pengesanan Suhu Badan, GY-906, 433MHz Menggunakan Arduino: Hari ini kita akan membuat bel pintu Tanpa sentuh, ia akan mengesan suhu badan anda. Dalam keadaan sekarang, sangat penting untuk mengetahui sama ada suhu badan seseorang lebih tinggi daripada biasa, ketika seseorang sedang bergurau. Projek ini akan menunjukkan lampu Merah jika mengesan ada
Pintu Bel Pintar Raspberry Pi DIY Yang Boleh Mengesan Orang, Kereta, Dll .: 5 Langkah
Pintu Pintar Pintar Raspberry Pi DIY Yang Dapat Mengesan Orang, Kereta, dan lain-lain: Reka bentuk bertema steampunk ini bergabung dengan pembantu rumah dan sistem audio pelbagai bilik kami untuk berkomunikasi dengan seluruh rumah pintar DIY kami. Sebaliknya daripada membeli Ring Doorbell (atau Nest, atau salah satu pesaing lain) Saya membina pintu pintar kami sendiri
Suis Bantuan Bel: 21 Langkah
Doorbell Assistive Switch: Doorbell Assistive Switch adalah contoh teknologi bantu menggunakan bahan sehari-hari. Ia adalah suis yang mengubah suis bel pintu biasa sehingga dapat memberi kuasa kepada kanak-kanak berkeperluan khas untuk menggunakan barang-barang sehari-hari
Bel Dikendalikan 3D Pedal Bercetak: 3 Langkah
Pintu Pedal Bercetak 3D yang Dikendalikan: Saya sendiri telah membuat banyak pesanan dari Amazon sejak beberapa bulan yang lalu. Lelaki penghantaran yang memenuhi semua pesanan ini berisiko berterusan, kerana mereka membunyikan ratusan bel pintu dan mengetuk pintu yang tidak terkira banyaknya dalam satu minggu. Untuk menolong ini, saya mempunyai
Bel Arduino: 5 Langkah
Arduino Doorbell: SUPPLIES-2 papan roti-kabel buzzer-jumper-2 arduino / genuino dengan kabel kuasa-pemancar rf dan butang tekan-penerima-perintang-100 ohm perintang