สารบัญ:

Morning Buddy: 8 ขั้นตอน
Morning Buddy: 8 ขั้นตอน

วีดีโอ: Morning Buddy: 8 ขั้นตอน

วีดีโอ: Morning Buddy: 8 ขั้นตอน
วีดีโอ: Full EP.8 | Morning routine ตื่นเช้ามาหมากทำไรบ้าง? 2024, กรกฎาคม
Anonim
Image
Image

บางคนมีตารางงานที่ยุ่งมาก ซึ่งทำให้ลืมสิ่งหนึ่งหรือสองสิ่งได้ง่าย ด้วยนาฬิกาปลุกนี้ คุณสามารถตั้งเวลาปลุกได้หลายแบบเพื่อให้คุณตรงต่อเวลา นาฬิกาทำงานแบบ 24 เวลา และสิ่งที่คุณต้องทำคือตั้งโปรแกรมให้ทำงานตามเวลาต่างๆ ของวันที่ตรงกับตารางเวลาของคุณ เมื่อคุณทำเช่นนี้ เวลาที่คุณตั้งค่าไว้จะปรากฏขึ้นบนหน้าจอ LCD เพื่อให้คุณสามารถตรวจสอบเพื่อให้แน่ใจว่าถูกต้องและใช้เป็นเครื่องเตือนความจำเพิ่มเติม

ขั้นตอนที่ 1: การระดมความคิดของไอเดีย

การร่างภาพและวัสดุ
การร่างภาพและวัสดุ

เมื่อเราพยายามแก้ปัญหานี้ เราใช้วิธีก้างปลาเพื่อคิดไอเดียและได้ผลลัพธ์เป็นนาฬิกาปลุก

ขั้นตอนที่ 2: การร่างภาพและวัสดุ

การร่างภาพและวัสดุ
การร่างภาพและวัสดุ

ในระหว่างขั้นตอนนี้ เราพยายามสร้างรายการของทุกสิ่งที่เราคิดว่าเราต้องการสำหรับอุปกรณ์อิเล็กทรอนิกส์และตัวเครื่องด้านนอก จากนั้น เราก็ได้ภาพร่างของสิ่งที่เราต้องการให้นาฬิกาปลุกมีหน้าตาเป็นอย่างไร และเราจะประกอบปลอกหุ้มด้านนอกอย่างไร

ขั้นตอนที่ 3: การสร้าง Outter Casing

การสร้างปลอกด้านนอก
การสร้างปลอกด้านนอก
การสร้างปลอกด้านนอก
การสร้างปลอกด้านนอก

สำหรับต้นแบบแรก ฉันแค่ต้องการดูว่าข้อต่อนิ้วจะพอดีกันอย่างไร ฉันจึงใช้กล่องรองเท้าและไม่ได้ใช้ขนาดที่แน่นอน

ขั้นตอนที่ 4: เลเซอร์ตัดปลอกด้านนอก

การตัดด้วยเลเซอร์ปลอกด้านนอก
การตัดด้วยเลเซอร์ปลอกด้านนอก

สำหรับต้นแบบที่สอง ฉันต้องการได้การวัดที่แน่นอนและต้องสร้าง pdf เพื่อส่งไปยังเครื่องตัดเลเซอร์ ในการทำเช่นนี้ ฉันใช้เว็บไซต์แอป box maker https://boxdesigner.connectionlab.org ในเว็บไซต์นั้น ฉันได้ป้อนมิติข้อมูลสามมิติของกล่อง ความหนาของวัสดุ หน่วยการวัด และไฟล์ประเภทใดที่ฉันต้องการให้สร้าง ขนาดกล่องคือ 7.5 x 3 ใน x 5 นิ้ว และฉันใช้วัสดุอะคริลิคหนา 1/8 ใน จากนั้น การวัดรอยบากของรอยต่อนิ้วได้รับการกำหนดค่าโดยอัตโนมัติเป็น 0.46875 นิ้ว ฉันเลือกเวอร์ชัน pdf เนื่องจากเป็นไฟล์ประเภทที่เครื่องตัดเลเซอร์อ่าน และฉันต้องการทำการเปลี่ยนแปลงบางอย่างใน Adobe กับไฟล์ ฉันเปลี่ยนสีเส้นเป็นสีแดง เพื่อให้เครื่องตัดเลเซอร์รู้ว่าต้องตัดมันออกแทนที่จะแกะสลักรูปร่าง และฉันเพิ่มกล่องสี่เหลี่ยมที่มีขนาด 3.92 นิ้ว x 1.56 นิ้วในสิ่งที่จะเป็นส่วนหน้าของ กล่อง. ฉันยังเพิ่มสี่เหลี่ยมผืนผ้าที่ตัดออกด้วยขนาด 1in x 0.5in ที่ชิ้นส่วนด้านขวาที่ด้านล่างเพื่อใช้เป็นช่องสำหรับสายไฟที่เชื่อมต่อกับนาฬิกาปลุก ครั้งสุดท้ายที่ฉันเพิ่มช่องเปิดแบบวงกลมสามช่องที่ด้านบนสำหรับออดสองตัวและปุ่ม ช่องเปิดออดมีเส้นผ่านศูนย์กลาง 0.5 นิ้ว และปุ่มเปิดคือ 0.375 นิ้ว

ขั้นตอนที่ 5: นำมันมารวมกัน

เอามารวมกัน
เอามารวมกัน

เมื่อตัดชิ้นส่วนทั้งหมดออก ฉันใช้หลอดฉีดยาและกาวอะคริลิกเพื่อผนึกเข้าด้วยกัน ฉันจับชิ้นส่วนต่างๆ เข้าด้วยกันแล้วหยดกาวระหว่างรอยบากเพื่อให้ด้านเข้าด้วยกัน แต่ด้านบนไม่ได้ติดกาว

ขั้นตอนที่ 6: รหัส

บทนำ:

โครงการนี้ถูกเข้ารหัสโดยใช้ภาษา c++ บนซอฟต์แวร์ Arduino IDE ไมโครคอนโทรลเลอร์ที่ใช้คือ NodeMCU กับ ESP8266 สำหรับโครงการนี้ เราจำเป็นต้องมีวิธีรักษาเวลาให้ถูกต้อง เสียงกริ่ง ระบบเตือนภัยที่ทำให้เสียงเตือนดังขึ้น และหน้าจอแสดงเวลาทั้งหมดและเวลาปลุก สำหรับรหัสเต็มโปรดดูที่ลิงค์นี้

การนำเข้าไลบรารี

ก่อนอื่นเราต้องนำเข้าไลบรารีที่จำเป็น

#include "RTClib.h"

#รวม "Wire.h" #รวม #รวม #รวม #รวม

การเริ่มต้นตัวแปร

ต่อไป เราต้องเริ่มต้นตัวแปรในภายหลัง กำหนดรูปแบบพินสำหรับปุ่มออด ตั้งค่า RTC และตั้งค่าที่อยู่ I2C ของจอแสดงผล LCD

LiquidCrystal_I2C จอแอลซีดี (0x27, 20, 4);

const int buzzer1 = 12; const int buzzer2 = 0; ปุ่ม int const = 2; RTC_DS3231 rtc; char daysOfTheWeek[7][12] = {"วันอาทิตย์", "วันจันทร์", "วันอังคาร", "วันพุธ", "วันพฤหัสบดี", "วันศุกร์", "วันเสาร์"} เวลาเริ่มต้น; เวลาใช้งานภายใน; int ก่อนเวลา = 0; ถ่าน ahours1[3]; ถ่าน amins1[3]; int hour1 = 0; int min1 = 0; ถ่าน ahours2[3]; ถ่าน amins2[3]; int hour2 = 0; int min2 = 0; ถ่าน ahours3[3]; ถ่าน amins3[3]; int hour3 = 0; int min3 = 0; สัญญาณเตือน int = 0; int ByteReceived; ถ่านที่ได้รับChar; const ไบต์ numChars = 32; ถ่านที่ได้รับChars[numChars];

ติดตั้ง

ต่อไป เราจำเป็นต้องมีฟังก์ชันที่เริ่มต้นกระบวนการที่จำเป็นทั้งหมด ในฟังก์ชันนี้ เราต้องเริ่มการทำงานของ LCD และพิมพ์เวลาเริ่มต้น สร้างฟังก์ชันที่เล็กลงซึ่งจะให้ RTC แบบเรียลไทม์หากยังไม่มี และเริ่มมอนิเตอร์แบบอนุกรม

การตั้งค่าเป็นโมฆะ () {

#ifndef ESP8266 ในขณะที่ (!Serial); #endif if(! rtc.begin()) { Serial.println("ไม่พบ RTC"); ในขณะที่(1); } if (rtc.lostPower()) { Serial.println("RTC สูญเสียพลังงาน มาตั้งเวลากันเถอะ!"); rtc.adjust(DateTime(F(_DATE_), F(_TIME_))) } lcd.init(); LCD.backlight(); // ทำให้ Baklight เปิด lcd.clear(); // ล้าง LCD lcd.print("00:00"); // แสดงบน LCD หลังจากอัปโหลดโค้ด lcd.setCursor(10, 0); lcd.print("00:00"); lcd.setCursor(0, 1); lcd.print("เวลา"); lcd.setCursor(10, 1); lcd.print("นาฬิกาปลุก 1"); lcd.setCursor(0, 3); lcd.print("นาฬิกาปลุก 2"); lcd.setCursor(0, 2); lcd.print("00:00"); lcd.setCursor(10, 3); lcd.print("นาฬิกาปลุก 3"); lcd.setCursor(10, 2); lcd.print("00:00"); rtc.begin(); pinMode(ปุ่ม, INPUT); //ตั้งค่าพินสำหรับปุ่มปิดเสียง pinMode(buzzer1, OUTPUT); // ตั้งค่าพินสำหรับเอาต์พุตเสียงกริ่ง pinMode(buzzer2, OUTPUT); // ตั้งค่าพินสำหรับเอาต์พุตออด Serial.begin(9600); Serial.println("เวลาอินพุตของการเตือนในรูปแบบ HHMM โดยไม่มีช่องว่างระหว่างสัญญาณเตือน"); เวลาเริ่มต้น = millis()/1000; }

การรับข้อมูล

ตอนนี้เราต้องสามารถรับเวลาปลุกได้ ในการทำเช่นนั้น เราได้สร้างฟังก์ชันเพื่อรับข้อมูลจากมอนิเตอร์แบบอนุกรมและจัดเก็บไว้ในอาร์เรย์

เป็นโมฆะ recvWithEndMarker () {

คงที่ int ndx = 0; เวลาสตริง = Serial.readString (); สำหรับ (ndx = 0; timein [ndx]; ndx++) { receivedChars[ndx] = timein [ndx]; } ได้รับChars[ndx] = '\0'; Serial.print(receivedChars); }

การตั้งปลุก

ขั้นตอนต่อไปคือการตั้งนาฬิกาปลุกได้ นี่คือรหัสสำหรับการเตือน 1 สำหรับสัญญาณเตือน 2 และ 3 กระบวนการเดียวกันถูกทำซ้ำโดยมีการเปลี่ยนแปลงตัวเลขเล็กน้อย

/* นาฬิกาปลุก 1*/

recvWithEndMarker(); int ชั่วโมง, m; สำหรับ (h = 0; h < 2; h ++) { ahours1[h] = getsChars[h]; } สำหรับ (m = 2; m < 4; m++) { amins1[m-2] = getsChars[m]; } ahours1[h] = '\0'; อามิน1[m-2] = '\0'; Serial.print(ahours1); Serial.print (amins1); ชั่วโมงที่ 1 = atoi(ahours1); min1 = atoi(อมินส์1); Serial.print(ชั่วโมง1); Serial.print(นาที1);

Buzzer/ปุ่ม

เมื่อเสร็จแล้ว เราจำเป็นต้องปิดเสียงกริ่งเมื่อเวลาจริงและเวลาปลุกเท่ากัน นอกจากนี้ ในขั้นตอนนี้ เราสร้างปุ่มเลื่อนการเตือนเพื่อหยุดเสียงกริ่งในขณะที่คุณกดค้างไว้

/* ปุ่มปิดเสียง */

ความเงียบภายใน; int ข; b = digitalRead(2); ถ้า (b == ต่ำ) { ความเงียบ = 1; } อื่น ๆ { ความเงียบ = 0; } /* เริ่มการเตือน */ ถ้า (ชั่วโมง == ชั่วโมง 1 && นาที == นาที1) { สัญญาณเตือน = 1; } else if (hours == hour2 && mins == min2) { alarm = 1; } else if (hours == hour3 && mins == min3) { alarm = 1; } อื่น ๆ { สัญญาณเตือน = 0; ความเงียบ = 0; } if (นาฬิกาปลุก == 1 && เงียบ == 0) { เสียง (buzzer1, 4000, 1000); โทนเสียง(ออด2, 4000, 1000); ล่าช้า (1000); noTone(ออด1); noTone(ออด2); ล่าช้า (1000); }

เวลาพิมพ์

สุดท้ายเราต้องพิมพ์เวลาปลุกและเวลาจริงไปที่หน้าจอ LCD

DateTime ตอนนี้ = rtc.now();

int ชั่วโมง = (now.hour()); int นาที = (now.minute()); /* เวลาปลุกในรูปแบบ 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); /* แสดงเวลาจาก RTC */ lcd.setCursor(0, 0); lcd.print(ชั่วโมง); lcd.print(":"); lcd.print (นาที);

ขั้นตอนที่ 7: อิเล็กทรอนิกส์

อิเล็กทรอนิกส์
อิเล็กทรอนิกส์
อิเล็กทรอนิกส์
อิเล็กทรอนิกส์
อิเล็กทรอนิกส์
อิเล็กทรอนิกส์

ชิ้นส่วนอิเล็กทรอนิกส์ของโครงการนี้มีหลายชิ้น ดังที่เห็นในรายการวัสดุ ภาพแรกเป็นแผนผังของโครงการอิเล็กทรอนิกส์ขั้นสุดท้าย ภาพที่สองคือการออกแบบทางอิเล็กทรอนิกส์ขั้นสุดท้ายของเรา ภาพที่สามเป็นโครงการของเราท่ามกลางต้นแบบที่สอง

ในการเริ่มต้นแนบ NodeMCU ของคุณกับปลายสุดของเขียงหั่นขนมของคุณ จากนั้นคุณจะต้องเชื่อมต่ออุปกรณ์อิเล็กทรอนิกส์อื่นๆ ทั้งหมดของคุณกับ NodeMCU และเขียงหั่นขนม เริ่มต้นด้วยการเชื่อมต่อหน้าจอ LCD ของคุณกับพิน D1 สำหรับ SCL และ D2 สำหรับ SDA จอ LCD จะอนุญาตให้ผู้ใช้ดูเวลาปัจจุบันและเวลาปลุกที่ตั้งไว้ ตอนนี้มีสายเชื่อมต่อออดของคุณกับพิน D3 และ D6 ออดจะอนุญาตให้นาฬิกาปลุกเตือนผู้ใช้เมื่อถึงเวลาที่ตั้งไว้ ตอนนี้คุณต้องแนบปุ่มเพื่อให้สามารถหยุดการเตือนได้ แนบปุ่มนี้เพื่อตรึง D4 ตอนนี้คุณจะแนบนาฬิกาเรียลไทม์ของคุณเข้ากับเขียงหั่นขนม ต่อนาฬิกาแบบเรียลไทม์เพื่อให้ใช้หมุด SDA และ SCL เดียวกันกับที่ใช้สำหรับจอแสดงผล LCD

ขั้นตอนที่ 8: รอบชิงชนะเลิศ

สุดท้าย
สุดท้าย

หากคุณได้ติดตามข้อมูลที่ให้โครงการของคุณอาจมีลักษณะเหมือนภาพด้านบน เราหวังว่าคุณจะโชคดีในความพยายามของคุณที่จะสร้างโครงการนี้ขึ้นมาใหม่ และเมื่อคุณทำโครงการของคุณเสร็จแล้ว เราขอแนะนำให้คุณแบ่งปันรูปภาพและข้อสังเกตกับเราในความคิดเห็น ขอขอบคุณและขอให้โชคดีเพื่อนผู้สร้าง

แนะนำ: