Arduino Magic Clock: 16 ขั้นตอน (พร้อมรูปภาพ)

Arduino Magic Clock: 16 ขั้นตอน (พร้อมรูปภาพ)

สารบัญ:

Anonim

เกิดอะไรขึ้นถ้านาฬิกาบอกเวลาได้มากกว่าเวลา? ในคำสั่งนี้เราจะทำนาฬิกาที่สามารถบอกใครสักคนว่าคุณอยู่ที่ไหนและเพียงแค่ทำให้อุณหภูมิของสภาพแวดล้อมของคุณดีขึ้น เอาล่ะคว้า Arduino ของคุณแล้วเริ่มกันเลย:)

สิ่งที่คุณต้องการสำหรับคำแนะนำนี้:

  • Arduino
  • เขียงหั่นขนม
  • สายไฟ
  • ไม้ (Balsa หรือกระดาษแข็ง)
  • Servo
  • เซ็นเซอร์อุณหภูมิ
  • ตัวต้านทาน
  • กาวร้อน
  • แวว
  • กระดาษ

วัสดุ:

ขั้นตอนที่ 1: การออกแบบนาฬิกาต้นแบบ

เริ่มต้นการออกแบบของคุณโดยการเขียนสถานที่ที่คุณน่าจะเป็นมากที่สุดในระหว่างวัน สิ่งเหล่านี้จะเป็นตำแหน่งแรก ๆ บนนาฬิกาจากนั้นเพิ่มความสนุกสองสามอย่างเพื่อทำให้นาฬิกาของคุณไม่เหมือนใคร ฉันเพิ่ม "Mortal Danger" และ "Lost" ในนาฬิกาของฉัน ทีนี้ลองนึกถึง 5 คำเพื่ออธิบายอุณหภูมิตั้งแต่ซุปเปอร์เย็นถึงร้อนสุด ๆ ฉันใช้ "การแช่แข็ง", "เย็น", "ถูกต้อง", "อุ่น" และ "ร้อนอบอ้าว"

ต่อไปฉันไปเกี่ยวกับการออกแบบต้นแบบของฉันใน Illustrator หากคุณต้องการใช้เทมเพลตของฉันโปรดดาวน์โหลดไฟล์ที่แนบมาด้วย ฉันตัดต้นแบบกระดาษออกด้วยมีด Xacto และตามรอยวงกลมด้านนอกลงบนแผ่นไม้ นาฬิกาของฉันจะมีขนาดเส้นผ่าศูนย์กลางประมาณ 12 นิ้ว หากเครื่องพิมพ์ของคุณไม่สามารถจัดการหน้าปัดนาฬิกาทั้งหมดได้ในครั้งเดียวเพียงแค่ติดเทปสองส่วนของภาพเข้าด้วยกันและทำเครื่องหมายตำแหน่งรูของคุณ

ขั้นตอนที่ 2: ตัดหน้าปัดนาฬิกาสี

ใช้ X-acto หรือเลื่อยเพื่อตัดโปรไฟล์ด้านนอกของนาฬิกาของคุณและสว่านขนาด 3/4 นิ้วเพื่อตัดหลุมจากนั้นฉันใช้เทปจิตรกรไปยังส่วนของครึ่งบนและพ่นสีฟ้าเมื่อแห้ง ฉันย้อนกลับบรรทัดเทปและสเปรย์ทาสีเงินครึ่งล่างในขณะที่ทุกอย่างแห้งใช้มีด X-acto ของคุณเพื่อตัดตำแหน่งตำแหน่งสำหรับนาฬิกาของคุณ

ขั้นตอนที่ 3: ตกแต่งหน้าปัดนาฬิกา

ตอนนี้ตำแหน่งของเราถูกตัดออกแล้วพลิกกาวกาววางลงบนใบหน้าของนาฬิกาแล้วกดลง

ฉันอาจต้องจินตนาการถึงส่วนนี้บ้าง แต่ฉันคิดว่า "คุณรู้ว่าอะไรที่ทำให้นาฬิกานี้วิเศษกว่า ….. แวว!" ดังนั้นฉันจึงวิ่งลูกปัดกาวรอบ ๆ ขอบของตำแหน่งนาฬิกาจากนั้นโรยประกายแวววาวจำนวนมากขึ้นไปด้านบน เมื่อคุณสลัดมันออกจะทำให้เส้นขอบมีประกายระยิบระยับรอบตัวอักษรของคุณ

ขั้นตอนที่ 4: การเพิ่มเซอร์โวมอเตอร์

ฉันจำเป็นต้องปรับขนาดรูที่อยู่ตรงกลางของนาฬิกาเพื่อรองรับเซอร์โวการเจาะและไฟล์ทำให้กระบวนการนี้สั้นลง ถัดไปกาวร้อนในเซอร์โวมอเตอร์ มันสำคัญมากที่จะต้องเก็บเซอร์โวไว้ที่ 90 องศาให้หันไปทางด้านหน้าดังนั้นกลไกนาฬิกาของคุณจะไม่ถูบนหน้าปัดนาฬิกา ฉันถือเซอร์โวในตำแหน่งที่เหมาะสมจนกระทั่งกาวแห้ง

ขั้นตอนที่ 5: ส่วนขยาย LED

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

ขั้นตอนที่ 6: เพิ่ม LED ไปที่นาฬิกา

ด้วยบัดกรีของ LED ทั้งหมดให้เพิ่มลงในนาฬิกาหลัง ฉันงอสายที่ฐานของ LED 90 องศาและใช้ปืนกาวร้อนติดไว้ที่กึ่งกลางของอุณหภูมิห้าจุด

ขั้นตอนที่ 7: การเดินสายไฟ LED ตอนที่ 1

การใช้เทปกาวสองชั้นฉันติด Arduino และเขียงหั่นขนมลงบนด้านหลังของนาฬิกา ในการเริ่มเดินสายไฟ LED ฉันใส่สายกราวด์ทั้งหมด (สายสีเขียว) ลงในคอลัมน์ลบของเขียงหั่นขนม จากนั้นฉันเสียบสายไฟทั้งหมดเข้ากับเขียงหั่นขนม

ขั้นตอนที่ 8: การเดินสายไฟ LED ส่วนที่ 2

ตอนนี้เพิ่มสายอื่นจาก LED เชิงบวกทั้งหมดนำไปสู่ ​​Arduino ฉันใช้พิน 4 ถึง 8 สำหรับสิ่งนี้ แต่คุณสามารถใช้พินที่คุณต้องการได้

ขั้นตอนที่ 9: การเดินสายเซอร์โวมอเตอร์

เริ่มต้นด้วยการเสียบสายไฟของเซอร์โวเข้ากับขา 5V บน Arduino จากนั้นเสียบสายสีดำเข้ากับ GND และสายสัญญาณ (อาจเป็นสีขาวหรือสีส้มขึ้นอยู่กับเซอร์โวของคุณ) ลงในพินที่มีความสามารถ PWM ฉันใช้พิน 3 เมื่อคุณเสียบปลั๊กเซอร์โวและ LED ของคุณเสียบสายไฟ รูปแบบ Arduino GND ไปยังรางพื้นดินที่ถูกใช้โดย LED ทั้งหมด

ขั้นตอนที่ 10: การเพิ่มเซ็นเซอร์อุณหภูมิ

เซ็นเซอร์วัดอุณหภูมินี้ทำงานโดยการเปลี่ยนแรงดันไฟฟ้าขึ้นอยู่กับอุณหภูมิในห้องคล้ายกับวิธีที่เซ็นเซอร์วัดแสงจะเปลี่ยนแรงดันไฟฟ้าตามปริมาณแสงในห้อง ในการเดินสายเซ็นเซอร์วัดอุณหภูมิเริ่มต้นด้วยการวางสายจากขากลางซึ่งเป็นสัญญาณไปยังขา A0 ในวงจรของฉันสายสัญญาณเป็นสีส้ม

จากนั้นคุณจะต้องการเพิ่มพลังงานและกราวด์ให้กับเซ็นเซอร์ สิ่งนี้จะต้องมีการดัดแปลงวงจรเซอร์โวมอเตอร์เล็กน้อย แทนที่จะเสียบปลั๊กไฟเซอร์โวเข้ากับขา 5V บน Arduino โดยตรงให้ใช้ลวดจากกำลังไฟ 5V เข้ากับเขียงหั่นขนมแล้วเสียบเซ็นเซอร์วัดอุณหภูมิและเซอร์โวเข้ากับแถวเดียวกัน หากวงจรของคุณมีลักษณะคล้ายกับวงจรด้านล่างคุณกำลังอยู่ในเส้นทางที่ถูกต้อง

ขั้นตอนที่ 11: แนบเข็มนาฬิกา

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

ขั้นตอนที่ 12: การเข้ารหัสส่วนที่ 1

เราเริ่มต้นการเข้ารหัสของเราด้วยการเริ่มต้นมาตรฐาน แต่ใหญ่กว่าเล็กน้อยสำหรับเซ็นเซอร์ LED, เซอร์โวและอุณหภูมิ 5 LED นอกจากนี้เรายังสร้างตัวแปรตัวยึดตำแหน่งสำหรับตำแหน่งนาฬิกาเซอร์โวและตัวแปรอุณหภูมิที่ฉันเรียก initialTemp โปรดสังเกตว่าสิ่งนี้ถูกระบุว่าเป็นทุ่นและมีตัวเลขที่มีจุดทศนิยมซึ่งจะให้ความละเอียดเพิ่มเติมเกี่ยวกับการวัดอุณหภูมิ

#include Servo myservo; int clockPos = 0; int tempSensorPin = A0; const float initialTemp = 20.0; int tempLED1 = 4; int tempLED2 = 5; int tempLED3 = 6; int tempLED4 = 7; int tempLED5 = 8;

นอกจากการตั้งค่า pinModes จำนวนมากเราจะต้องแนบเซอร์โวที่เราเชื่อมต่อกับ Arduino เข้ากับซอฟต์แวร์รวมถึงไลบรารี ฉันได้แนบเซอร์โวเพื่อพินสามดังนั้นการใช้ฟังก์ชั่น myservo.attach (3) จะทำให้ Arduino รู้ว่าพินใดควรเป็น PWM

การตั้งค่าเป็นโมฆะ () {Serial.begin (9600); myservo.attach (3)

ขั้นตอนที่ 13: การเข้ารหัสส่วนที่ 2

เพื่อให้การควบคุมเข็มนาฬิกาง่ายขึ้นเราจะเขียนโปรแกรม Arduino เพื่อระบุตำแหน่งที่เป็นไปได้บนนาฬิกา (เช่นทำงานเดินทาง ฯลฯ) ด้วยตัวเลขตั้งแต่ 0 ถึง 6 การใช้คำสั่ง Serial.parseInt () ทำให้การทำงานสั้นลง ทำความเข้าใจกับตัวเลขที่เราส่งไปยัง Arduinoเพื่อกระตุ้นการเคลื่อนไหวที่เกิดขึ้นจริงของมือที่เราตรวจสอบเพื่อดูว่ามีการกดปุ่ม Enter ให้จำ " n" ที่มองไม่เห็นที่ได้รับส่งตอนนี้เราจะตรวจสอบจุดสิ้นสุดของข้อความของเราและถ้าพบว่ามันจะเขียน ตำแหน่งใหม่ไปยังเซอร์โว

if (Serial.available ()> 0) {int clockPos = Serial.parseInt (); if (Serial.read () == ' n') {myservo.write (clockPos * 25 + ((clockPos + 1) * 3)); ล่าช้า (200); }}

คณิตศาสตร์ที่ฉันใช้เพื่อทำให้มุมตำแหน่งของนาฬิกาลดลงมาก tweaking แต่ลงมาเพื่อคูณจำนวนที่เราป้อน (clockPos) 25 และจากนั้นหาค่าออฟเซ็ตที่เหมาะสมเพื่อให้ลูกศรชี้ไปที่กึ่งกลางของตำแหน่ง โลโก้บนหน้าปัดนาฬิกา สำหรับฉันฉันเพิ่มหนึ่งรายการแล้วคูณด้วยสามเพื่อให้ได้ออฟเซ็ตที่ดูดี ใช้ตัวเลขที่มีตัวเลขจริงเพื่อแสดงให้คุณเห็นว่ามันทำงานอย่างไร

คณิตศาสตร์ตำแหน่งเซอร์โว

การใช้ตำแหน่งนาฬิกาของฉันช่วยให้สมมติว่าฉันต้องการแสดงว่าฉัน "กำลังเดินทาง" สิ่งนี้จะถูกแทนด้วยหมายเลข 2 โดยที่ 1 คือ "Mortal Danger" และ 0 คือ "Work"

ดังนั้น clockPos ของเรา = 2 จึง:

Servo Angle = (2 * 25) + ((2 + 1) * 3)

Servo Angle = 59 องศา

สำหรับ Arduino เมื่อมันแก้คณิตศาสตร์ได้แล้วเส้นเซอร์โวเขียนมีลักษณะเช่นนี้ซึ่งเป็นสิ่งที่เราต้องการ

myservo.write (59);

ขั้นตอนที่ 14: การเข้ารหัสส่วนที่ 3

ในบล็อคโค้ดถัดไปเราจะกลับไปที่ลูปหลักและอะนาล็อกอ่านเซ็นเซอร์อุณหภูมิการหน่วงเวลาสั้น ๆ ทำให้มั่นใจได้ว่าค่าจะมีเวลาในการชำระ จากนั้นในการแปลงแรงดันไฟฟ้าที่อ่านเป็นอุณหภูมิเราจะหารจำนวนที่เราได้รับจาก ADC ด้วยค่าสูงสุด 1024 และคูณด้วย 5V สิ่งนี้ทำให้เรามีค่าเซ็นเซอร์อุณหภูมิเป็นโวลต์ เพื่อให้เป็นองศาเราลบด้วย 0.5 แล้วคูณทั้งหมดด้วย 100 ว้าว! นั่นซับซ้อน แต่เราเกือบเสร็จแล้ว

int tempVal = analogRead (tempSensorPin); ล่าช้า (10); float temp = ((((tempVal / 1024.0) * 5) -. 5) * 100; Serial.println (ชั่วคราว);

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

int switchcase = map (อุณหภูมิ, 12, 28, 0, 4); Serial.println (switchcase);

ขั้นตอนที่ 15: อัปโหลดรหัส & ทดสอบ

วุ้ย นั่นคือรหัสที่ท้าทายที่สุดที่เราเขียนจนถึงตอนนี้ ตอนนี้ให้อัปโหลดและทดสอบนาฬิกาของเรา

ขั้นตอนที่ 16: สนุกกับนาฬิกาใหม่ของคุณ!

คุณไม่ได้ !!!! แขวนนาฬิกาของคุณอย่างภาคภูมิใจในสถานที่ที่ทุกคนเห็นได้ คุณไม่เพียงทำโครงการที่ยอดเยี่ยมเสร็จ แต่คุณได้เรียนรู้มากมาย