Jam Penggera Menggunakan RTC Arduino 101: 5 Steps

Jam Penggera Menggunakan RTC Arduino 101: 5 Steps

Isi kandungan:

Anonim

Ini adalah fully berfungsi jam penggera digital dengan butang berhenti dan tunda, serta paparan untuk masa dan tarikh semasa. Ia menggunakan terbina dalam Real-Time-Clock (RTC) papan Arduino 101 untuk memaparkan tarikh dan masa semasa, seperti yang diasumsikan oleh pengguna. Masa penggera juga ditentukan oleh pengguna dengan memasukkan tarikh dan masa yang dia mahu bangun. Di samping itu, ia direka untuk menjadi serba boleh, terutamanya untuk burung hantu malam yang mempunyai masalah bangun pada waktu pagi, di mana kekerapan dan selang buzzer boleh diselaraskan, dan juga larastunda masa.

Saya bermotivasi untuk membuat projek ini kerana saya selalu menghadapi masalah bangun pada waktu pagi walaupun dengan 3 jam penggera yang berasingan!

Bekalan:

Langkah 1: Alat dan Bahan

  • Arduino 101
  • 2 separuh + papan roti
  • Buzzer
  • LED
  • 2 keping suis butang tekan
  • 2 keping 10kΩ resistor
  • 100Ω perintang
  • Potentiometer
  • Paparan LCD
  • Banyak wayar jumper

Langkah 2: Menghidupkan LCD

LCD digunakan untuk memaparkan masa dan tarikh semasa seperti mana-mana jam penggera digital tradisional. Keseluruhan paparan LCD akan memakan salah satu daripada separuh papan + roti.

Sila ambil perhatian, Ia lebih mudah untuk mengikuti skema untuk skrin LCD, tetapi susunan sambungan berikut membantu memastikan proses pendawaian lebih teratur. Oleh kerana banyak kabel jumper diperlukan, untuk menjaga wayar dengan teratur, saya memilih untuk mewakili wayar tanah sebagai wayar jumper berwarna hitam atau putih dan wayar 3.3V sebagai wayar merah atau oren dalam litar.

  1. Sambungkan keretapi kuasa 3.3V breadboard kepada PIN skrin LCD 2 dan 15
  2. Sambungkan rel kereta bawah tanah kepada PIN skrin 1 dan 16 skrin LCD.
  3. Sambungkan PIN skrin LCD 4 kepada pin pertengahan potensiometer.
  4. Sambungkan salah satu pin luar potensiometer itu untuk kereta api kuasa merah, sementara PIN potentiometer luar yang lain akan disambungkan ke keretapi tanah dari papan roti.
  5. Sambungkan Arduino pin isyarat digital 2 hingga 5 kepada PIN skrin LCD 14 hingga 11, mengikut urutan masing-masing.
  6. Terakhir, sambungkan PIN skrin 4 dan 6 kepada Arduino pin isyarat digital 11 dan 12.

Langkah 3: Menghidupkan Sistem Penggera

Sistem penggera akan dipasang pada satu lagi papan roti + separuh untuk menjaga kabel secara teratur, kerana papan roti pertama sudah penuh. The merah butang adalah "Berhenti Penggera" butang. Sementara hijau butang adalah "Tunda" butang. Kerana, kedua-duanya adalah butang tekan, mereka rendah aktif, yang bermaksud bahawa mereka akan menghasilkan a digital rendah atau 0 apabila ditolak.

  • Letakkan semua komponen yang lain (LED, dua butang tolak, dan buzzer) pada lubang papan roti yang tidak disambungkan.

Menyambungkan Buzzer

  1. Sambungkan salah satu pin buzzer kepada pin 9 pada Arduino Lembaga.
  2. Sambungkan rmemegang pin buzzer kepada kereta api tanah di papan roti.

Menyambungkan LED

  1. Sambungkan LED itu anod kepada a 100Ω perintang dalam siri kepada pin 10 pada Arduino papan.
  2. Sambungkan LED itu katod kepada tanahkereta api bukan dia papan roti.

Menyambungkan Tukar suis butang

  1. Sambungkan salah satu pin dari setiap suis ke a 10kΩ perintang dalam siri ke rel kereta api merah bukan dia papan roti, masing-masing.
  2. Sambungkan baki pin kedua-dua suis kepada yang biasa kereta api tanah di papan roti.
  3. Sambungkan setiap pin suis yang disambungkan kepada perintang 10kΩ ke pin 7 dan 8 pada Arduino, yang ditunjukkan sebagai dawai pelompat coklat dalam imej.

Piggybacking the Sumber kuasa

  1. Sambungkan kuasa 3.3V dari papan Arduino 101 dan hubungkannya dengan kereta api kuasa merah yang putih pada papan pertama.
  2. Sambungkan GND dari papan Arduino 101 ke rel hitam pada papan pertama.
  3. Sambungkan rel kuasa merah dan hitam dari papan roti pertama ke rel kuasa hitam dan hitam papan kedua, masing-masing, untuk mengedarkan kuasa selari.

Langkah 4: Pengekodan

Tetapkan masa dan tarikh yang anda mahu bangun menggunakan pembolehubah bulan1, hari1, tahun1, jam1, minit1, dan second1. Anda juga boleh menetapkan pilihan kekerapan penggera (buzzerFrequency), tunda masa (snoozeTime), dan selang antara penggera / LED bip atau berkelip (buzzerInterval).

// termasuk CurieTime Library #include #include

int ledPin = 10; int buzzerPin = 9; int snooze = 7; int stopAlarm = 8;

int snoozeTime = 60000 /// 1 minute int buzzerFrequency = 1000 int buzzerInterval = 100; // instantiate lcd LiquidCrystal lcd (12, 11, 5, 4, 3, 2);

void setup () {pinMode (9, OUTPUT); pinMode (10, OUTPUT); pinMode (8, INPUT); pinMode (7, INPUT); // memulakan lcd pada 16 x 2 lcd.begin (16, 2);

// jelas lcd lcd.clear ();

// set masa untuk Hari Ini: 1 Ogos 2017. 9:16 PM Sila tukar ke setTime / tarikh anda (9, 16, 00, 8, 1, 2017);

Serial.begin (9600); nada (buzzerPin, 1000); kelewatan (100); noTone (buzzerPin);

bulan yang panjang = bulan (); day1 = hari (); tahun yang panjang = tahun (); jam 1 = jam () + 8.0; // 8 jam dari sekarang minit yang panjang1 = minit (); lama kedua = kedua ();

}

void loop () {if (month () == month1) {Serial.println ("hello"); } jika (month () == day1 && day () == day1 && year () == year1 && hour () == hour1 && minute () == minute1 && second () == second1) {Serial.println ("Hai dunia"); untuk (int i = 0; i <60 / (buzzerInterval / 1000); i ++) {digitalWrite (ledPin, HIGH); nada (buzzerPin, buzzerFrequency); kelewatan (buzzerInterval); noTone (buzzerPin); kelewatan (buzzerInterval); nada (buzzerPin, buzzerFrequency); kelewatan (buzzerInterval); noTone (buzzerPin); digitalWrite (ledPin, LOW); kelewatan (buzzerInterval); jika (digitalRead (stopAlarm) == 0) {noTone (buzzerPin); pecah; } jika (digitalRead (tunda) == 0) {noTone (buzzerPin); kelewatan (snoozeTime); }}} // buat watak watak 16 karakter untuk jam char timeTime 16; // gunakan sprintf untuk membuat rentetan masa jam, minte dan detik sprintf (clockTime, "% 2d:% 2d:% 2d", jam (), minit (), kedua ());

// membuat pelbagai watak sebanyak 15 aksara untuk tarikh char dateTime 16; // gunakan sprintf untuk membuat rentetan tarikh dari bulan, hari dan tahun sprintf (dateTime, "% 2d /% 2d /% 4d", bulan (), hari (), tahun ());

/ // set kursor ke lajur 0, baris 0 lcd.setCursor (0, 0); // mencetak rentetan tarikh melalui lcd lcd.print (dateTime); / // set kursor ke lajur 0, baris 1 lcd.setCursor (0, 1); // mencetak rentetan masa di atas lcd lcd.print (clockTime); }

Langkah 5: Demonstrasi Penggera

Nota: Video demonstrasi dipotong pendek sehingga tidak ada penantian yang terlibat sebelum cincin penggera, kerana itu adalah video yang agak membosankan untuk ditonton.