Isi kandungan:

Teman Pagi: 8 Langkah
Teman Pagi: 8 Langkah

Video: Teman Pagi: 8 Langkah

Video: Teman Pagi: 8 Langkah
Video: 5 HAL WAJIB DI PAGI HARI YANG BISA MENGUBAH MASA DEPAN SELAMANYA | Motivasi Merry | Merry Riana 2024, November
Anonim
Image
Image

Beberapa orang mempunyai jadual yang sangat sibuk, yang menjadikannya mudah untuk melupakan satu atau dua perkara. Dengan jam penggera ini, anda boleh menetapkan banyak penggera agar anda tetap mengikut jadual. Jam berjalan 24 jam dan yang harus anda lakukan adalah memprogramnya agar tidak berfungsi pada waktu yang berlainan dalam sehari yang sesuai dengan jadual anda. Apabila anda melakukan ini, waktu yang telah anda tetapkan akan muncul di layar LCD, sehingga anda dapat memeriksa untuk memastikannya benar dan berfungsi sebagai peringatan tambahan.

Langkah 1: Mencetuskan idea

Lakaran dan Bahan
Lakaran dan Bahan

Semasa kami berusaha menyelesaikan masalah, kami menggunakan kaedah tulang ikan untuk menghasilkan idea dan menghasilkan jam penggera kami.

Langkah 2: Membuat lakaran dan Bahan

Lakaran dan Bahan
Lakaran dan Bahan

Semasa langkah ini, kami cuba membuat senarai semua perkara yang kami fikir akan kami perlukan untuk selongsong elektronik dan luaran. Kemudian kami membuat sketsa seperti apa yang kami mahukan agar jam penggera kelihatan dan bagaimana kami memasang selongsong luarnya.

Langkah 3: Membuat Selongsong Outter

Membuat Selongsong Luar
Membuat Selongsong Luar
Membuat Selongsong Luar
Membuat Selongsong Luar

Untuk prototaip pertama, saya hanya ingin melihat bagaimana sendi jari sesuai, jadi saya menggunakan kotak kasut dan tidak menggunakan ukuran yang tepat.

Langkah 4: Laser Memotong Sarung Luar

Laser Memotong Selongsong Luar
Laser Memotong Selongsong Luar

Untuk prototaip kedua, saya ingin mendapatkan ukuran yang tepat dan perlu membuat pdf untuk dihantar ke pemotong laser. Untuk melakukan ini, saya menggunakan laman web aplikasi pembuat kotak, https://boxdesigner.connectionlab.org. Di laman web itu, saya kemudian memasukkan dimensi kotak 3-D, ketebalan bahan kami, unit ukuran, dan jenis fail yang saya mahukan. Dimensi kotak adalah 7.5 dalam x 3 dalam x 5 inci dan saya menggunakan bahan akrilik tebal 1/8. Pengukuran takik sendi jari kemudian secara automatik dikonfigurasi menjadi 0,46875 inci. Saya memilih versi pdf kerana itulah jenis fail yang dibaca oleh pemotong laser dan saya ingin membuat beberapa perubahan pada adobe pada fail tersebut. Saya menukar warna garis menjadi merah, supaya pemotong laser tahu memotongnya daripada mengukir bentuknya, dan saya menambahkan kotak segi empat tepat dengan dimensi 3,92 inci dengan 1,56 inci pada apa yang akan menjadi bahagian depan kotak. Saya juga menambah segi empat tepat dengan dimensi 1in hingga 0.5in di bahagian kanan di bahagian bawah untuk berfungsi sebagai pembuka kabel yang disambungkan ke jam penggera. Terakhir saya menambah tiga bukaan bulat di bahagian atas untuk dua buzzer dan butang. Bukaan bel mempunyai diameter 0,5 in dan bukaan butang 0,375 in.

Langkah 5: Menyatukannya

Menggabungkannya
Menggabungkannya

Semasa semua kepingan dipotong, saya menggunakan picagari dan gam akrilik untuk menutupnya bersama. Saya memegang kepingan itu bersama-sama dan meneteskan gam di antara takik untuk membuat sisi bersatu, tetapi bahagian atasnya tidak terpaku.

Langkah 6: Kod

Pengenalan:

Projek ini dikodkan menggunakan bahasa c ++ pada perisian Arduino IDE. Pengawal mikro yang digunakan adalah NodeMCU dengan ESP8266. Untuk projek ini, kita memerlukan cara untuk menyimpan waktu dengan tepat, bel berbunyi, sistem penggera menyebabkan penggera berdengung, dan layar untuk memaparkan waktu semua dan waktu penggera. Untuk kod lengkap rujuk pautan ini

Mengimport Perpustakaan

Pertama, kita perlu mengimport perpustakaan yang diperlukan.

#sertakan "RTClib.h"

#include "Wire.h" #include #include #include #include

Memulakan Pemboleh ubah

Selanjutnya kita perlu memulakan pemboleh ubah untuk kemudian, menetapkan tata letak pin untuk butang buzzer, mengatur RTC, dan menetapkan alamat I2C paparan LCD.

LiquidCrystal_I2C lcd (0x27, 20, 4);

const int buzzer1 = 12; const int buzzer2 = 0; butang const int = 2; RTC_DS3231 rtc; char daysOfTheWeek [7] [12] = {"Ahad", "Isnin", "Selasa", "Rabu", "Khamis", "Jumaat", "Sabtu"} waktu mula; waktu aktivti; int prevoustime = 0; char ahours1 [3]; char amins1 [3]; int jam1 = 0; int min1 = 0; char ahours2 [3]; char amins2 [3]; int jam2 = 0; int min2 = 0; char ahours3 [3]; char amins3 [3]; int jam3 = 0; int min3 = 0; penggera int = 0; int ByteReceived; char diterima semulaChar; const byte numChars = 32; char diterimaChars [numChars];

Persediaan

Seterusnya, kita perlu mempunyai fungsi yang memulakan semua proses yang diperlukan. Dalam fungsi ini, kita perlu menghidupkan LCD dan mencetak waktu awal, membuat fungsi yang lebih kecil yang memberikan waktu nyata RTC jika belum memilikinya, dan memulai monitor bersiri.

batal persediaan () {

#ifndef ESP8266 sambil (! bersiri); #endif if (! rtc.begin ()) {Serial.println ("Tidak dapat menemui RTC"); sementara (1); } if (rtc.lostPower ()) {Serial.println ("RTC hilang kuasa, mari tetapkan masa!"); rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_)))} lcd.init (); lcd.backlight (); // menjadikan Baklight AKTIF. lcd.clear (); // Membersihkan LCD lcd.print ("00:00"); // paparan pada LCD selepas muat naik kod lcd.setCursor (10, 0); lcd.print ("00:00"); lcd.setCursor (0, 1); lcd.print ("Masa"); lcd.setCursor (10, 1); lcd.print ("Penggera 1"); lcd.setCursor (0, 3); lcd.print ("Penggera 2"); lcd.setCursor (0, 2); lcd.print ("00:00"); lcd.setCursor (10, 3); lcd.print ("Penggera 3"); lcd.setCursor (10, 2); lcd.print ("00:00"); rtc.begin (); pinMode (butang, INPUT); // Tetapkan pin untuk senyap pinMode (buzzer1, OUTPUT); // tetapkan pin untuk pinMode output buzzer (buzzer2, OUTPUT); // tetapkan pin untuk output buzzer Serial.begin (9600); Serial.println ("Masa input penggera dalam format HHMM tanpa ruang di antara penggera"); waktu mula = milis () / 1000; }

Menerima Data

Sekarang, kita perlu dapat menerima masa penggera. Untuk melakukan itu, kami membuat fungsi untuk menerima data dari monitor bersiri dan menyimpannya dalam pelbagai.

batal recvWithEndMarker () {

int statik ndx = 0; String timein = Serial.readString (); untuk (ndx = 0; timein [ndx]; ndx ++) {diterimaChars [ndx] = timein [ndx]; } diterimaChars [ndx] = '\ 0'; Serial.print (diterimaChars); }

Menetapkan Penggera

Langkah seterusnya ialah mengatur alarm. Berikut adalah kod untuk penggera 1. Untuk penggera 2 dan 3 proses yang sama diulang dengan beberapa perubahan nombor.

/ * Penggera 1 * /

recvWithEndMarker (); int h, m; untuk (h = 0; h <2; h ++) {ahours1 [h] = diterimaChars [h]; } untuk (m = 2; m <4; m ++) {amins1 [m-2] = diterimaChars [m]; } ahours1 [h] = '\ 0'; amins1 [m-2] = '\ 0'; Serial.print (ahours1); Serial.print (amins1); jam1 = atoi (ahours1); min1 = atoi (amins1); Cetakan bersiri (jam1); Cetakan bersiri (min1);

Buzzer / Butang

Dengan selesai, kita perlu mematikan buzzer apabila masa sebenar dan waktu penggera sama. Juga dalam langkah ini kita membuat butang tunda seperti yang menghentikan bel semasa anda menahannya.

/ * Butang Senyap * /

kesunyian int; int b; b = digitalRead (2); jika (b == RENDAH) {diam = 1; } lain {diam = 0; } / * Mulakan Penggera * / jika (jam == jam1 && mins == min1) {penggera = 1; } lain jika (jam == jam2 && mins == min2) {penggera = 1; } lain jika (jam == jam3 && mins == min3) {alarm = 1; } lain {alarm = 0; senyap = 0; } jika (penggera == 1 && diam == 0) {nada (buzzer1, 4000, 1000); nada (buzzer2, 4000, 1000); kelewatan (1000); noTone (buzzer1); noTone (buzzer2); kelewatan (1000); }

Masa Percetakan

Akhirnya, kita perlu mencetak masa penggera dan masa nyata ke skrin LCD.

DateTime now = rtc.now ();

jam int = (sekarang.jam ()); int mins = (now.minute ()); / * Waktu penggera dalam format 00:00 * / lcd.setCursor (10, 0); lcd.print (ahours1); lcd.setCursor (13, 0); lcd.print (amins1); lcd.setCursor (0, 2); lcd.print (ahours2); lcd.setCursor (3, 2); lcd.print (amins2); lcd.setCursor (10, 2); lcd.print (ahours3); lcd.setCursor (13, 2); lcd.print (amins3); / * Waktu Paparan dari RTC * / lcd.setCursor (0, 0); lcd.print (jam); lcd.print (":"); lcd.print (min);

Langkah 7: Elektronik

Elektronik
Elektronik
Elektronik
Elektronik
Elektronik
Elektronik

Terdapat banyak komponen elektronik dari projek ini, seperti yang terlihat dalam bil bahan. Imej Pertama adalah skema elektronik akhir projek. Imej Kedua adalah reka bentuk elektronik terakhir kami. Gambar Ketiga adalah projek kami di tengah-tengah prototaip kedua.

Untuk mula pasangkan NodeMCU anda ke hujung papan roti anda. Anda kemudian perlu menyambungkan semua elektronik anda yang lain ke NodeMCU dan papan roti. Mulakan dengan menyambungkan skrin LCD anda ke pin D1 untuk SCL dan D2 untuk SDA. LCD akan membolehkan pengguna melihat masa semasa dan masa penggera yang ditetapkan. Sekarang ada wayar yang menyambungkan buzzer anda ke pin D3 dan D6. Pengeras suara akan membolehkan penggera memberi amaran kepada pengguna apabila masa yang telah ditentukan telah dicapai. Anda sekarang mesti memasang butang untuk membolehkan penggera dihentikan. Pasang butang ini ke pin D4. Sekarang anda akan melekatkan jam Masa Nyata anda ke papan roti. Kawat jam Masa Nyata sehingga menggunakan pin SDA dan SCL yang sama yang digunakan untuk paparan LCD.

Langkah 8: Akhir

Akhir
Akhir

Sekiranya anda mengikuti maklumat yang diberikan projek anda mungkin kelihatan seperti gambar di atas. Kami mengucapkan semoga berjaya dalam usaha anda membuat projek ini dan apabila anda telah menyelesaikan projek ini, kami menggalakkan anda untuk berkongsi gambar dan komen dengan kami dalam komen. Terima kasih dan semoga berjaya rakan-rakan Pembuat.

Disyorkan: