Talaan ng mga Nilalaman:

Arduino Doorbell: 4 na Hakbang
Arduino Doorbell: 4 na Hakbang

Video: Arduino Doorbell: 4 na Hakbang

Video: Arduino Doorbell: 4 na Hakbang
Video: 7 ПОЛЕЗНЫХ устройств на АРДУИНО, которые можно собрать за 15 минут. 2024, Hulyo
Anonim
Arduino Doorbell
Arduino Doorbell

Ngayon, ipapakita ko sa iyo kung paano gumawa ng isang doorbell gamit ang isang Arduino. Ang doorbell na ito ay tumutugtog ng isang random na tune mula sa isang silid-aklatan ng mga kanta. Maaari mong ipasadya ang iyong doorbell at magdagdag ng higit pang mga kanta. I-install ito sa labas ng iyong silid-tulugan, silid-aralan, opisina, o kahit sa iyong pintuan!

Mga Pantustos:

  • Arduino Uno (gagawin ng karamihan sa iba pang mga uri)
  • Computer na may Arduino IDE para sa programa
  • USB-A hanggang USB-B cable para sa programa ng Arduino
  • Breadboard
  • 4x wum jumper
  • Pushbutton o iba pang switch
  • 10 kOhm Resistor
  • Passive buzzer (ibig sabihin, piezoelectric speaker)
  • Para sa permanenteng pag-install:

    • 9V DC Power Supply o 9V na baterya upang mapagana ang Arduino
    • 2x mahabang wires para sa mga pindutan ng mga kable sa labas ng pintuan

Hakbang 1: Pag-setup ng Hardware

Pag-setup ng Hardware
Pag-setup ng Hardware
Pag-setup ng Hardware
Pag-setup ng Hardware
Pag-setup ng Hardware
Pag-setup ng Hardware

Una, i-set up namin ang hardware. Magsisimula kami sa passive buzzer (ibig sabihin, speaker). Nais naming ikonekta ang positibong pagtatapos ng passive buzzer (na tinukoy ng tanda na "+") sa digital pin 8 sa Arduino. Ikonekta namin ang kabilang dulo ng passize buzzer sa lupa.

Susunod, mai-install namin ang pushbutton para sa doorbell. Gumagamit kami ng isang 10 kOhm panlabas na pulldown risistor para sa switch, kaya walang lumulutang boltahe o hindi matatag na estado sa pag-input sa Arduino. Sa pamamagitan ng paggamit ng pulldown resistor, binabasa ng Arduino ang boltahe bilang 0V kapag ang pindutan ay hindi pinindot at 5V kapag pinindot ang pindutan. Para sa karagdagang impormasyon tungkol sa pullup o pulldown resistors, maaari mong basahin ang artikulong ito:

Ikonekta namin ang isang bahagi ng pushbutton sa 5V. Ang kabilang panig ng pushbutton ay konektado sa lupa sa pamamagitan ng isang 10 kOhm pulldown risistor. Tandaan: ang mga pushbutton ay konektado nang pahalang sa loob. Nakakonekta lamang sila nang patayo kapag pinindot. Ibinibigay ang karagdagang impormasyon sa artikulong ito:

Hakbang 2: Pag-setup ng Software

Nakalakip ang lahat ng code. Nasa ibaba ang mga paglalarawan ng bawat isa sa mga pagpapaandar na may mga snapshot ng code.

setup:

Sa pag-andar ng pag-setup (), nais naming i-configure ang mga digital na pin para sa aming pindutan at aming speaker. Nais naming i-configure ang pin 2 bilang isang input para sa aming pindutan, at nais naming i-configure ang pin 8 bilang isang output para sa aming speaker.

Nais din naming "binhi" ang aming random na generator ng numero para sa sapalarang pagpili ng isang tono kapag may nag-ring ng aming doorbell. Ang pag-seeding ng aming random number generator ay nangangahulugang pagpapakain nito ng isang random na input. Sasabihin namin ang aming random number generator na may halaga ng boltahe sa analog input 0. Dahil walang konektado sa input na ito, magkakaroon ng isang "random", pabagu-bago na boltahe sa pin na ito na nagbibigay ng aming random number generator na may maraming iba't ibang mga halaga. Tinitiyak nito na magkakaroon kami ng magkakaibang pagkakasunud-sunod ng mga pagpipilian ng kanta para sa aming doorbell. Para sa karagdagang impormasyon sa pag-andar ng Arduino random (), pumunta dito:

# isama ang "mga pitches.h"

# isama ang "songs.h" #define BUTTON_PIN 2 # tukuyin ang SPEAKER_PIN 8 / * i-set up ang function * / void setup () {// paganahin ang input / output pin pinMode (BUTTON_PIN, INPUT); pinMode (SPEAKER_PIN, OUTPUT); // function ng random na binhi () upang makakuha kami ng ibang pagkakasunod-sunod na randomSeed (analogRead (0)); }

loop:

Sa aming pag-andar ng loop (), patuloy naming susuriin upang makita kung ang pindutan ay pinindot (ang digital pin 2 ay mataas). Kung ang pin ay mataas, naghihintay kami ng 50 ms at suriin muli upang matiyak na ito ay mataas pa rin. Tinitiyak nito na ang pindutan ay pinindot at hindi ito ligaw na ingay sa digital input pin na nagiging sanhi ng maling positibo.

Sa sandaling nakumpirma namin na ang pindutan ay pinindot, ginagamit namin ang aming random number generator upang pumili ng isa sa 5 mga kanta gamit ang isang switch statement. Ang data para sa mga awiting ito ay nakaimbak sa "songs.h" at ang impormasyon ng pitch ay nakaimbak sa "pitches.h". Kapag pumili kami ng isang kanta, ipinapasa namin ang impormasyong ito sa pag-andar ng play_song ().

/ * pangunahing habang pagpapaandar ng loop * /

void loop () {// suriin upang makita kung ang pindutan ay pinindot kung (digitalRead (BUTTON_PIN) == TAAS) {// antala ang 50 ms upang matiyak na pinindot pa rin ito // umiiwas sa anumang pagkaantala ng maling pag-unawa (50); kung (digitalRead (BUTTON_PIN) == TAAS) {// sapalarang pumili ng isang kanta int song_choice = random (5); // select which song to play switch (song_choice) {case 0: play_song (haircutLength, haircut, haircutDurations, haircutTempo); pahinga; case 1: play_song (marioLength, mario, marioDurations, marioTempo); pahinga; kaso 2: play_song (miiLength, mii, miiDurations, miiTempo); pahinga; kaso 3: play_song (hpLength, hp, hpDurations, hpTempo); pahinga; kaso 4: play_song (takeonmeLength, takeonme, takeonmeDurations, takeonmeTempo); pahinga; default: play_song (miiLength, mii, miiDurations, miiTempo); pahinga; }}}}

play_song:

Ang play_song () ay tumatagal ng 4 na argumento: isang bilang ng integer ng mga tala sa kanta, isang integer na hanay ng mga pitches sa himig, isang integer array ng tagal, at isang integer tempo para sa partikular na kanta. Dapat mong tukuyin ang bawat isa sa mga ito para sa bawat kanta na nais mong i-play. Para sa karagdagang impormasyon sa kung paano gamitin ang mga function ng tono ng Arduino, maaari kang tumingin sa tutorial na ito: https://www.arduino.cc/en/Tutorial/ToneMelody. Nagdagdag ako ng ilang pagpapaandar sa tuktok ng tutorial na ito para sa mga may tuldok na tala. Kung ang isang halaga sa hanay ng tagal ng tala ay negatibo, nangangahulugan ito na ito ay isang may tuldok na tala (ang haba ay 1.5 beses na mas malaki).

/ * tumugtog ng kanta * /

void play_song (int num_notes, int melody , int noteDurations , int tempo) {// step through and play all of the note for (int i = 0; i 0) {duration = tempo / noteDurations ; } // kung ito ay isang negatibong numero, nangangahulugang may tuldok na tala // pinatataas ang tagal ng kalahati para sa mga may tuldok na tala kung (noteDurations <0) {tagal = tempo / abs (noteDurations ) * 1.5; } tono (SPEAKER_PIN, himig , tagal); // upang makilala ang mga tala, magtakda ng isang minimum na oras sa pagitan nila. // ang tagal ng tala + 30% ay tila gumagana nang maayos: int pauseBetweenNotes = tagal * 1.30; antala (pauseBet pagitanNotes); // ihinto ang pag-play ng tono: noTone (SPEAKER_PIN); }}

Sample ng mga kanta.h:

Nasa ibaba ang isang sample ng isa sa mga kanta sa "songs.h". Ang mga tala ay macros na tinukoy sa "pitches.h". Ang mga numero ay tumutugma sa mga dalas ng mga tala sa hertz (Hz). Ang tagal ng mga tala ay tinukoy bilang: 1 = buong tala, 2 = kalahating tala, 4 = kwartong tala, 8 = ikawalong tala, -4 = tuldok na tala ng kuwarter, atbp Ang haba ay ang kabuuang bilang ng mga tala sa kanta. Ang tempo ay isang divider para sa bilis ng kanta (ang isang mas mataas na bilang ay nangangahulugang isang mas mabagal na tempo). Kailangan mong maglaro sa numerong ito hanggang sa makakuha ka ng isang tempo na gusto mo.

/ * 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;

Hakbang 3: Mga Tweaks

Magdagdag ng maraming kanta! Sundin ang format na ipinapakita sa "songs.h" at gamitin ang tutorial para sa tulong: https://www.arduino.cc/en/Tutorial/ToneMelody. Para sa bawat bagong kanta na idinagdag mo, tandaan na magdagdag ng isang bagong kaso sa switch statement at dagdagan ang maximum na bilang na maaaring mabuo ng iyong random () na function. Maligayang pag-coding!

Hakbang 4: Maraming Mga Proyekto

Para sa higit pang mga proyekto, bisitahin ang aking mga pahina:

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

Inirerekumendang: