สารบัญ:

นาฬิกาข้อมือ OLED พิมพ์ 3 มิติขนาดเล็ก: 6 ขั้นตอน
นาฬิกาข้อมือ OLED พิมพ์ 3 มิติขนาดเล็ก: 6 ขั้นตอน

วีดีโอ: นาฬิกาข้อมือ OLED พิมพ์ 3 มิติขนาดเล็ก: 6 ขั้นตอน

วีดีโอ: นาฬิกาข้อมือ OLED พิมพ์ 3 มิติขนาดเล็ก: 6 ขั้นตอน
วีดีโอ: วงจรนาฬิกาบนจอ OLED - EP.61 2024, พฤศจิกายน
Anonim
นาฬิกาข้อมือ OLED พิมพ์ 3 มิติขนาดเล็ก
นาฬิกาข้อมือ OLED พิมพ์ 3 มิติขนาดเล็ก
นาฬิกาข้อมือ OLED พิมพ์ 3 มิติขนาดเล็ก
นาฬิกาข้อมือ OLED พิมพ์ 3 มิติขนาดเล็ก

สวัสดี คุณชอบสร้างนาฬิกาข้อมือของคุณเองไหม?

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

เหตุผลที่ฉันทำนาฬิกาของตัวเองก็คือนาฬิกาสมาร์ทวอทช์ราคาถูกของฉัน – ซึ่งระบุว่ากันน้ำได้ – เลิกใช้ผีที่น่าสงสารของมันที่เคยจุ่มลงไปในสระว่ายน้ำ…:(ฉันเลยโกรธที่จะซื้อนาฬิกา -watch ยังยอมแพ้ - แบตเตอรี่ขนาดเล็กที่เป็นกรรมสิทธิ์ของมันไม่สามารถเปลี่ยนได้…)

ในอีกด้านหนึ่ง โครงการ DIY-Watch ที่มีอยู่สำหรับรสนิยมของฉันนั้นส่วนใหญ่หนักหรือเรียบง่ายเกินไป ดังนั้นฉันจึงตัดสินใจสร้างนาฬิกาของตัวเอง ดังนั้นจึงมีความเป็นไปได้ที่จะรวมคุณสมบัติที่ฉันชอบ!

หากคุณต้องการ คุณสามารถแก้ไขซอฟต์แวร์ เพื่อให้ได้แนวคิดของคุณเอง: ฉันได้แสดงความคิดเห็นทุกบรรทัด (ขึ้นอยู่กับโปรแกรมที่เลือกระหว่าง 700-800 บรรทัด…) – แต่คำเตือน: โครงการนี้ท้าทายจริงๆ และแน่นอนว่าไม่ใช่สำหรับผู้เริ่มต้น ! แบบฟอร์มขนาดเล็กและเบา (30 x 30 x 10 มม.) ต้องการการจัดการเคสที่พิมพ์ 3 มิติและการบัดกรีอย่างระมัดระวังของบอร์ด 2 ด้าน แม้ว่าจะมีตัวเลือกสำหรับการสั่งซื้อ PCB ของบอร์ด (ไฟล์ Eagle และ Gerber รวม) ที่นี่ฉันทำด้วยวิธีการ Toner-Direct เฉพาะของฉัน - คำแนะนำจึงรวมไว้ที่นี่ด้วย)

คุณสมบัติของนาฬิกา:

- จอแสดงผล OLED ขนาด 128x64px แสดงนาฬิกาดิจิตอลและอนาล็อก เปิดใช้งานด้วยปุ่มขวา แสดงวันที่ เวลา ระดับแบตเตอรี่ และอุณหภูมิข้อมือ อีกทางหนึ่ง (ถ้าคุณต้องการ) อาจมีนาฬิกาปลุกหรือตัวจับเวลา

- แสดงปฏิทินเดือนที่สมบูรณ์โดยกดปุ่มซ้ายมากกว่า 0.6 วินาที โดยเน้นที่วันในสัปดาห์จริง

- การกดปุ่มซ้ายสั้นๆ จะเป็นการเลือกเมนูง่ายๆ เพื่อเลือกวันที่ เวลา (และนาฬิกาปลุกหรือตัวจับเวลา หากเลือกให้รวมไว้ในโปรแกรม) ค่าที่จะตั้งค่าด้วยปุ่มขวา

- กดปุ่มขวาสองครั้งเพื่อเปิดใช้งาน LED-"Torch"-Light ขนาดเล็ก (เหมาะสำหรับคืนที่มืดมิด)

- ระหว่างเวลา 22:00 น. ถึง 7:00 น. OLED-Display จะถูกหรี่ลงโดยอัตโนมัติ (ดูที่นี่ พร้อมฟังก์ชันหรี่แสงพิเศษที่รวมอยู่ด้วย!) จึงไม่ทำให้ตาบอดในเวลากลางคืน

- แบตเตอรี่ลิเธียมไอออนมีอายุการใช้งานเกือบ 2 ปี สมมติว่าจอแสดงผล + อิเล็กทรอนิกส์กินไฟประมาณ 25mA นาน 5 วินาที โดยแสดงนาฬิกาประมาณ 10 ครั้งต่อวัน

ขั้นตอนที่ 1: รายการชิ้นส่วน

ส่วนรายการ
ส่วนรายการ
ส่วนรายการ
ส่วนรายการ

เครื่องมือที่จำเป็น:

หากคุณต้องการทดลองใช้ฮาร์ดแวร์และซอฟต์แวร์ คุณต้อง:

• เขียงหั่นขนม 8.2 x 5.5 ซม. AliExpress

• 3, แหล่งพลังงานที่ควบคุม 3V เช่นนี้ในแผนผังด้านบนหรือแหล่ง f.ex ที่คล้ายคลึงกัน จากขั้วต่อ USB 5V (500mA) ⇒ AMS1117-Adj ⇒ อีเบย์

• อะแดปเตอร์ SMD SOIC-8 ถึง DIP-8 pin สำหรับ RTC-Chip ebay

• Atmel ISP-โปรแกรมเมอร์เช่น "USBTiny" - AliExpress

• Arduino Pro Mini AliExpress

• เขียงหั่นขนม Jumper-Wires Banggood

(อิเล็กทรอนิกส์-)ชิ้นส่วนที่จำเป็น:

• ⇒ ดูไฟล์ Html-BOM สำหรับชิ้นส่วนอิเล็กทรอนิกส์ (ดาวน์โหลด)

• กระดาน 2 ด้านสำหรับนาฬิกา: ⇒ ดูขั้นตอน "วิธีทำกระดาน 2 ด้านด้วยวิธี Toner-Direct"

• 1x - แบตเตอรี่ ø24 x 3mm - แบตเตอรี่ลิเธียม 3, 2V (เซลล์ปุ่ม) - CR2430 - AliExpress

• #25mm Kapton/Polymid Tape สำหรับการแยกระหว่างบอร์ด/แบตเตอรี่และ OLED-board

• 1x สายรัดข้อมือ 20mm - ฉันขอแนะนำ "Milanaise Stainless Steel Wristwatch Strap" - ebay

• เคสที่พิมพ์ 3 มิติ: ⇒ ดูดาวน์โหลดไฟล์พร้อมคำแนะนำ (ขั้นตอน)

หนึ่งกระดานจากสอง?

ในกรณีที่คุณต้องการสร้างบอร์ดหนึ่งจากสอง (uC, RTC, ส่วนอื่นๆ และ OLED-steering-board ในที่เดียว) คุณสามารถใช้ circuit + board-layout สำหรับ SSD1306-I2C-Display (ดูดาวน์โหลด: OLED-Display_SSD1306-I2C-Circuit.zip) ใช้ทั้ง 2 ชั้นและแยกออกจากจอแสดงผลและแบตเตอรี่ด้วยเทป Kapton ดังนั้นนาฬิกาอาจแบนกว่าประมาณ 1.5 มม.

ขั้นตอนที่ 2: วงจรอิเล็กทรอนิกส์

วงจรอิเล็กทรอนิกส์
วงจรอิเล็กทรอนิกส์
วงจรอิเล็กทรอนิกส์
วงจรอิเล็กทรอนิกส์
วงจรอิเล็กทรอนิกส์
วงจรอิเล็กทรอนิกส์
วงจรอิเล็กทรอนิกส์
วงจรอิเล็กทรอนิกส์

ก่อนอื่นเราต้องรู้พื้นฐาน:

OLED-Clock นี้สร้างด้วยชิป DS3231 RTC (นาฬิกาเรียลไทม์ในรูปแบบ SMD SO-8 ที่เล็กกว่า) แม่มดถูกควบคุมโดย ATMega328P-(Arduino)-µController ที่เป็นที่รู้จักทั้งหมด และ - ตรงกันข้ามกับ soft ที่ใช้ตามปกติ -StandBy (ของ µController) - นาฬิกานี้มีการปิดระบบด้วยไฟฟ้าทั้งหมดหลังจาก 5 วินาที นอกเหนือจาก RTC ฉันทำการปิดเครื่องนี้ด้วยมอสเฟต-ทรานซิสเตอร์สองตัว ซึ่งทำหน้าที่เป็น "สวิตช์สลับ" ร่วมกับ uC และปุ่มขวา (D8)

ปุ่มกดขนาดเล็กสองปุ่มที่ด้านข้างของเคส (D6 และ D8) ทำหน้าที่เป็นอินพุต โดยแม่มดจะจัดการเมนูและการตั้งค่านาฬิกา

นาฬิกามีการแสดงวันที่+เวลา (นาฬิกาปลุก-แสดง - หากรวมอยู่ในโปรแกรม) ไฟฉายและปฏิทินของเดือน+วันจริง ในครั้งที่ 2 เวอร์ชันที่ฉันรวม Alarm ไว้ด้วย มันสามารถถูกแทนที่ด้วย Timer ด้วย

จอแสดงผลจะหรี่ลงระหว่างเวลา 23:00 น. ถึง 7:00 น. (23:00 น. และ 07:00 น.) ในเวลากลางคืน

ฟังก์ชั่นของ 2 ปุ่ม (ด้านซ้ายและด้านขวา):

• CHANGE-ปุ่ม D8 (ด้านขวา) การกด:

1x = เปิดใช้งาน uC/Display ดังนั้นจะแสดงเวลา+วันที่ ฯลฯ เป็นเวลาประมาณ 5 วินาทีก่อนปิดเครื่อง (=หน้าจอมืด)

2x = ทำให้ไฟฉาย/คบไฟสว่างขึ้น

3x = กลับสู่โหมดปกติ (=Mode-0)

• SELECT-ปุ่ม D6 (ด้านซ้าย):

การกด D6 หนึ่งครั้งจะเลือก MODE โดยเลื่อนโหมดจาก 1-10 เพื่อเปลี่ยนวันที่/เวลา ฯลฯ (ดาวโจนส์ วัน ปี เวลา วินาที เปิด/ปิดการเตือน…)

Button-D8 ทางด้านขวาจะเพิ่มค่า MODE ที่เลือก ตั้งค่าและบันทึกการเลือก MODE ถัดไป (ด้วยปุ่มซ้าย-D6)…

หากต้องการเปลี่ยนวินาที ให้ตั้งนาฬิกา +1 นาที จากนั้นกดปุ่มขวา (D8) ที่ 59 วินาทีเพื่อซิงโครไนซ์กับเวลาภายนอก

การซิงโครไนซ์เวลา/วันที่สามารถดาวน์โหลด PC-time ต่อ batch-file: Serial-Connection ไปยัง Arduino ภายนอก - จากที่นั่นไปยัง I2C-Pins สี่ตัวของ Clock-OLED (uC ของนาฬิกายังคงปิดใช้งานอยู่ในขณะนี้ เพื่อจุดประสงค์นี้ ฉันได้รวม 2 R ของ 4.7kΩ, R7 และ R8 ไว้ด้วย - หากไม่ได้ใช้!)…

• ปฏิทินเดือน / วันที่:

หากกดปุ่มซ้าย (D6) นานกว่า 0.6 วินาที ปฏิทินเดือนจริงจะปรากฏขึ้น ไม่มีการปิดใช้งานตัวเอง! หากกดปุ่มใดปุ่มหนึ่งจากสองปุ่มอีกครั้ง ปฏิทินจะเหลืออยู่

• ALARM: (หากรวมอยู่ในโปรแกรมซอฟต์แวร์ + ให้มาพร้อมกับฮาร์ดแวร์ทวีตเตอร์หรือไมโครเพียโซบีเปอร์)

สามารถตั้งค่าให้ส่งเสียงบี๊บตรงเวลาทุกวันพร้อมกันได้ (24h, 60m) เครื่องหมายดอกจันที่ด้านบนขวาของจอแสดงผลระบุว่านาฬิกาปลุกเป็น "เปิด" หรือไม่ ทางเลือกที่มีประโยชน์สำหรับโปรแกรม Alarm-Program อาจเป็นตัวจับเวลา… (ที่ต้องทำ)

• แบตเตอรี่:

แบตเตอรี่เป็นแบตเตอรี่ลิเธียม CR2430 (ø24x3mm) ที่มีกำลังไฟประมาณ 300mA สัญลักษณ์แบตเตอรี่ระบุระดับ (แอนะล็อก) ของแบตเตอรี่ (3, 25V=เต็ม, 2, 75V=ว่าง) นาฬิกาทำงานกับแรงดันไฟฟ้าตั้งแต่ +5, 0V ลงไปที่ +2, 0V (ค่าเริ่มต้น: 3, 0V) เฉพาะ Flash-LED เท่านั้นที่ทำงานได้ตั้งแต่สูงสุด +4, 0V เหลือ +2, 7V คำเตือน: อย่าเปิดใช้งานด้วย 5V! - มากเกินไปสำหรับ LED - มันจะหมดอายุในไม่กี่วินาที แม้ว่าจะมีความต้านทาน 33Ω Absolute Max.-Voltage สำหรับโปรเซสเซอร์และ RTC คือ 5, 25V (+5V USB เพื่อตั้งโปรแกรม uC โดยตรงต่อ ISP โดยไม่ต้องใช้ bootloader!)

• อุณหภูมิ:

RTC มีเซ็นเซอร์อุณหภูมิในตัว (เพื่อแก้ไขการเบี่ยงเบนอุณหภูมิของคริสตัลในตัว) ดังนั้นเราจึงสามารถใช้เซ็นเซอร์นี้เพื่อแสดงอุณหภูมิ (ข้อมือ-) ได้

• แฟลช LED:

หากกดปุ่ม CHANGE (D8) สองครั้ง แสงที่ค่อนข้างสว่างจะ "เรืองแสงในที่มืด" Att.: ไม่มีการปิดใช้งานตัวเอง! เพียงกดปุ่มขวานี้อีกครั้งเพื่อปิดไฟ LED นี้ โดยจะแสดงหน้าจอปกติเป็นเวลาประมาณ 5 วินาที

• ซอฟต์รีเซ็ตพิน: พินรีเซ็ต (D7) จะรีเซ็ตข้อมูลที่เก็บไว้ทั้งหมดหากต่อสายดิน (กรณีเปิด: ด้านล่างขวา) ใช้ในช่วงเวลาการเขียนโปรแกรม เรียกสั้นๆ ว่า "ซอฟต์รีเซ็ต" ของอินพุต-ค่าทั้งหมด…

วงจร:

ถ้าเราดูที่แผนผังทางด้านซ้ายจะมี "Arduino" µController (ATMega328-P) เปล่าซึ่งเปิดใช้งานด้วยปุ่มขวา (D8) บนอินพุต D12: Button-D8 ดึงประตูของ P-Mosfet ลงมาผ่านความต้านทาน R5 และไดโอด D1 ดังนั้น P-Mosfet จึง "เปิด" และเชื่อมต่อ VBAT กับ VCC: µController+Display จะเป็นปัจจุบัน!

หากต้องการดู "หลักการสลับของ Mosfets สองตัว ฉันได้อัปโหลด "Flip-Flop ที่มี Mosfets สองตัว" นี้ (ไฟล์ Eagle)

หลังจากผ่านไป 5 วินาที µC จะปิดตัวเองโดยอัตโนมัติผ่าน Output-D5 ซึ่งจะปิดใช้งาน Mosfet ทั้งสอง ดึง Gate ของ N-Mosfet ลง ดังนั้น R5 (และ Gate ของ P-Mosfet) จะ "สูง" และ P-Mosfet จะตัด กระแสของ µC และ OLED-Display VCC ลงไปถือ Gate ของ N-Mosfet ผ่าน R3 และ R6 (ต่ำกว่า Gate-threshold-voltage) ดังนั้นวงจรจึงยังคงปิดอยู่

ที่ด้านซ้ายบนเราเห็นแรงดันไฟฟ้า VBAT "ขยาย" ผ่าน LED สีขาวธรรมดาที่มีประมาณ 2.5V ลดขนาดลงด้วย 100k จาก VBAT (ประมาณ 3, 2V) เป็นประมาณ 1, 1V (สูงสุด) ซึ่งใช้เป็น ภายใน Analog-Input เพื่อวัดแรงดันแบตเตอรี่จริง

µController, RTC และ OLED-Display กำลังสื่อสารผ่าน I²C ซึ่งเป็นการสื่อสารแบบ 2-Wire ที่ง่ายและมีประสิทธิภาพ ซึ่งนำไปใช้ในแต่ละไลบรารี

ในการบัดกรีชิ้นส่วน SMD จะมีประโยชน์ในการใช้แหนบขนาดเล็กที่มีปลายแหลมคม ดังนั้นการจับชิ้นส่วน SMD ขนาดเล็กจะง่ายต่อการจัดการ (การวางตำแหน่ง) และบัดกรี จากนั้นจึงใช้ปลายหัวแร้งแบบละเอียด แล้วบัดกรีด้านหนึ่งของ SMD ก่อน - ประกอบชิ้นส่วน อุ่นจุดบัดกรีให้ร้อนก่อนที่อุณหภูมิประมาณ 330 องศาเซลเซียส ก่อนเติมลวดดีบุกที่หลอมละลายต่ำและละเอียด (ø 0.5 มม.) ลงในจุดบัดกรี

ดาวน์โหลดเค้าโครงวงจร + บอร์ด:

ขั้นตอนที่ 3: ฮาร์ดแวร์: วิธีสร้างบอร์ด 2 ด้านด้วยวิธี Toner-Direct

ฮาร์ดแวร์: วิธีการสร้างบอร์ด 2 ด้านด้วยวิธี Toner-Direct
ฮาร์ดแวร์: วิธีการสร้างบอร์ด 2 ด้านด้วยวิธี Toner-Direct
ฮาร์ดแวร์: วิธีการสร้างบอร์ด 2 ด้านด้วยวิธี Toner-Direct
ฮาร์ดแวร์: วิธีการสร้างบอร์ด 2 ด้านด้วยวิธี Toner-Direct
ฮาร์ดแวร์: วิธีการสร้างบอร์ด 2 ด้านด้วยวิธี Toner-Direct
ฮาร์ดแวร์: วิธีการสร้างบอร์ด 2 ด้านด้วยวิธี Toner-Direct

หากคุณต้องการซื้อบอร์ด 2 ด้าน มีให้ Eagle + (จำเป็น) Gerber-files (ดาวน์โหลด)

ถ้าคุณชอบทำบอร์ดด้วยตัวเอง ฉันจะแสดงวิธีการที่แม่นยำในการทำบอร์ด 2 ด้านสำหรับ "TonerDirect"

1. พิมพ์ไฟล์ "OLED-Clock-2-nl_TonerDirect.pdf" บน "Toner Transfer Paper"

2. ตัดกระดาษ 2 แถบออกหนึ่งแถบสำหรับแต่ละด้านของกระดาน

3. ด้วยเข็มขนาด ø 0.5 มม. ต่อยที่มุมทั้ง 4 ของกระดานอย่างแม่นยำ (ใช้แว่นขยายที่มีแสงจ้า - มันสำคัญมากที่จะต้องต่อยเข็มให้แม่นยำที่สุดเท่าที่จะทำได้ที่จุดศูนย์กลางทั้ง 4 มุม!)

4. พิมพ์ไฟล์ (บนกระดาษเปล่าธรรมดา) ไฟล์ "OLED-Clock-2-nl_Frame.pdf" และติดผลบนแผงวงจรทองแดง 2 ด้าน (หนา 0.5-0.8 มม.) เลื่อยบอร์ดออกด้วยพิกัดความเผื่อเพิ่มขึ้นประมาณ 2-3 มม. (ที่นี่ประมาณ 35 x 35 มม.) จากนั้นเจาะ 4 รูที่มุมอย่างแม่นยำด้วยสว่าน 0.6 มม. หลังจากขั้นตอนนี้ นำกระดาษที่มีอะซิโตนออกแล้วบดด้านทองแดง 2 ด้านของบอร์ดด้วยกระดาษบดละเอียด (ขั้นต่ำ 400) หลังจากขั้นตอนนี้ อย่าแตะกระดานด้วยนิ้วเปล่าอีกต่อไป! อนุญาตให้จับไปด้านข้าง (ด้วยนิ้วที่สะอาด)

5. ทำเครื่องหมายทิศทางที่สอดคล้องกันของ Toner-Tranfer-Paper บน 2 ด้านที่ไม่ได้พิมพ์!

6. ต่อยเข็มผ่านกระดาษ ต่อยบนกระดาน และสุดท้ายต่อยเข็มผ่านกระดาษตรงข้าม

7. หลังจากได้รับ "ชั้น" สามชั้นที่เท่ากันทุกประการ ให้เปลี่ยนเข็มด้วยลวดทองแดง 0.5 มม. 4 ชิ้น งอที่ปลายด้านหนึ่ง 90° เพื่อไม่ให้ไหลผ่าน หลังจากขั้นตอนนี้งอสายไฟอีกด้านหนึ่ง 90° แล้วตัดปลายให้สั้น

8. พร้อมมาก ชิ้นนี้สามารถไป 3 ครั้งผ่าน (แก้ไข) เคลือบบัตรผงหมึก อุ่นได้ถึง 200°!

9. ตัดลวดเส้นเล็ก 0.5 มม. แล้วถอดที่วางลวดที่เหลือออก จากนั้นนำกระดาษสองแผ่นและ voilá ออก: ผงหมึกติดแน่นบนทองแดง

10. ควบคุมเส้นสะอาด ถ้าเส้นขาด เราอาจซ่อมด้วยปากกากันน้ำถาวร ในกรณีส่วนใหญ่ เฉพาะพื้นผิวที่ใหญ่กว่าเท่านั้นที่ต้องปิดรูเล็กๆ ไม่กี่รู มิฉะนั้น (หากผลลัพธ์ไม่เป็นที่น่าพอใจ) ให้เอาผงหมึกออกด้วยกระดาษสำหรับทำครัวและอะซิโตน แล้วทำซ้ำขั้นตอนที่ 1-9

11. การแกะสลักที่สะอาด: ฉันแกะสลักแผ่นทองแดง DIY ของฉันด้วยสารละลายโซเดียมเปอร์ซัลเฟต (หนึ่งหรือสองช้อนชา) ที่มีระดับน้ำประมาณ 5 มม. ในจาน Pyrex-Dish แบบคลาสสิก (1-1, 5L) สารละลายนี้ให้ความร้อนสูงถึง ประมาณ 80°C (ฉันรู้ อุณหภูมิสูงสัมพัทธ์นี้ทำลายเปอร์ซัลเฟต แต่มันกัดได้เร็วกว่ามาก เช่นเดียวกับอุณหภูมิที่ต่ำกว่า และทำให้ขอบคมและสะอาดในไม่กี่นาที) ฉันปล่อยให้เพอร์ซัลเฟตที่เหลืออยู่หลังจากการทำให้แห้งสนิทและขูดผลึกออก รวบรวมไว้ในขวดโหลเก่าเพื่อนำไปรีไซเคิล!

11. ควบคุมเส้นทองแดงและพื้นผิวด้วยแว่นขยาย

12. ถอดขอบที่ยื่นออกมาด้วยเครื่องเจียรแถบแนวตั้ง (เช่นในคำสั่งแรกของฉัน) และควบคุมขนาดด้วยเวอร์เนียคาลิปเปอร์: ปุ่ม 2 ด้านต้องขนานกัน มีระยะห่าง 27.4 มม. แต่ระวังอย่าบด- ออก 2 ปุ่มสัมผัส!

ขั้นตอนที่ 4: ซอฟต์แวร์และการกะพริบ

การเขียนโปรแกรมบอร์ด:

โปรแกรมเขียนด้วยภาษา C++ ดังนั้นเราจึงสามารถแก้ไขมันด้วย ASCII-Editor อย่างง่าย และจำเป็นต้องอ่านคำอธิบายที่ส่วนท้ายของแต่ละบรรทัด…

สำคัญ: เราไม่สามารถใช้ Serial-Flashing ของ Arduino เพื่อตั้งโปรแกรม µC เนื่องจาก bootloader ต้องการเวลามากเกินไประหว่าง "Start" (กดปุ่ม D8) และ "Display-On" ดังนั้นเราจึงต้องแฟลชโดยไม่ใช้ Bootloader (ใช้งานได้ปกติกับบอร์ด Arduino ทั้งหมด) ดังนั้นเราจึงตั้งโปรแกรมบอร์ดของเราตาม (Atmel) ISP-Connector + Programmer ISP-Connector ที่สร้างขึ้นที่นี่ (ออนบอร์ด) สร้างด้วยตัวเชื่อมต่อซ็อกเก็ตขนาดเล็ก 6 ตัวที่แยกเป็นแถวและบัดกรีด้านในที่ด้านขวาของบอร์ด จากนั้นเชื่อมต่อกับแถบ 6 ขา (เล็ก!) (2.54 มม.- ตาราง) เช่นเดียวกับภาพสุดท้ายในขั้นตอนก่อนหน้า

คุณไม่เพียงแค่ต้องการ Arduino-GUI เท่านั้น แต่ยังมีไลบรารี่อีกสองสามตัว (เพื่อดาวน์โหลด) เพื่อคอมไพล์โปรแกรม:

- ห้องสมุด Wire (มีอยู่ใน Arduino-Program) - สำหรับการสื่อสารต่อ I²C เดิมพัน µC, RTC และ OLED-Display

- ไลบรารี EEPROM (มีอยู่ใน Arduino-Program) - เพื่อเก็บค่าต่างๆ บน µController

- "Adafruit_GFX" + "Adafruit_SSD1306" - ไลบรารีทั้งสองเพื่อควบคุมจอแสดงผล OLED

- EnableInterrupt - เพื่อทำงานกับพอร์ต / Pin-Interrupts ของ Arduino (⇒ Button-Inputs) ของ Arduino

-DS3231-RTC-chip: ไม่จำเป็นต้องใช้ไลบรารี่ ฉันได้เขียนฟังก์ชันของไลบรารี่ต่างๆ ที่พบในอินเทอร์เน็ตแล้ว และใช้งานได้ง่ายกว่านี้ รวมอยู่ในส่วนท้ายของโปรแกรมหลัก (" OLED-Clock-2-nl.ino ")

ข้อควรสนใจ: ห้องสมุด Adafruit มี (จนถึงตอนนี้) ไม่ค่อยมีประสิทธิภาพในการหรี่แสงชิป OLED ดังนั้นฉันจึงคัดลอกสตริงจากอินเทอร์เน็ตและวางไว้ที่ส่วนท้ายของห้องสมุด "Adafruit_SSD1306" โดยที่แม่มดสามารถหรี่แสงได้ มีประโยชน์มากกว่าเล็กน้อย… (⇒ ดูการดาวน์โหลด Add-on " วิธีตั้งค่าความสว่างบน OLED display.zip " ในตอนท้าย)

ทำงานกับ 3, 2V - ดังนั้นโดยใช้ 8Mhz ภายใน (ไม่มี 16Mhz-Crystal):

µC ที่นี่เร็วพอที่จะทำงานโดยไม่มีคริสตัล 16MHz ดังนั้น (ด้วย 3.2V จากแบตเตอรี่) เราจึงสามารถใช้ 8MHz ที่ตั้งโปรแกรมไว้ล่วงหน้าภายในได้ (ส่วนหนึ่งน้อยกว่าสำหรับการบัดกรี:-)

หลังจากโหลดและคอมไพล์โปรแกรม "OLED-Clock-2-nl.ino" ที่ให้ไว้ใน Arduino-GUI แล้ว (ดาวน์โหลด) ให้คัดลอก.hex-result ไปยังโฟลเดอร์ avrdude

(พบไฟล์.hex ที่คอมไพล์แล้วในโฟลเดอร์ชั่วคราวของพีซี ซึ่งมีอยู่ในโฟลเดอร์ย่อย เช่น:

"C:\Tmp\arduino_build_646711\ xyz.ino " - ในนั้นคุณสามารถค้นหาไฟล์ compiled-hex-file ที่ต้องการ ในกรณีนี้ "OLED-Clock-2-nl.ino.hex" ของเรา

ตอนนี้ไฟล์ hex สามารถแฟลชได้ (ที่นี่ "ด้วยตนเอง" ต่อ avrdude บนบรรทัดคำสั่ง) ผ่าน ISP-Connector แต่คุณต้องมีโปรแกรมเมอร์เช่น USBTiny หรือ AVRISP2 ที่มีตัวเชื่อมต่อ ISP 6pin (ISP-Connector ของฉันคือ DIY จากตัวเชื่อมต่อ 6-Pin-Row ขนาดเล็กดังที่แสดงในรูปภาพล่าสุดของฉัน ดังนั้นคุณสามารถตั้งโปรแกรมบอร์ดใหม่ได้ทุกเมื่อหากจำเป็น)

ตอนนี้เชื่อมต่อโปรแกรมเมอร์ 6 พินกับบอร์ด (ฉันคิดว่าประสบการณ์ที่รู้จักกับบอร์ด Arduino)…

เชื่อมต่อแล้วบน Command-Window (บน Windows เปลี่ยนเป็นโฟลเดอร์ avrdude จากนั้นพิมพ์ cmd) - วางบรรทัดต่อไปนี้:

avrdude.exe -C avrdude.conf -v -V -p m328p -c usbtiny -e -D -U แฟลช:w:OLED-Clock-2-nl.ino.ino.hex:i

หลังจากการกะพริบของ µController เสร็จสิ้น จะต้องตั้งค่า "ฟิวส์" (ของ µController) ที่เหมาะสม:

avrdude -p atmega328p -c usbtiny -U lfuse:w:0xFF:m -U hfuse:w:0xD7:m -U efuse:w:0xFF:m -U ล็อค:w:0x3F:m

หากคุณต้องการแก้ไขการตั้งค่าอย่างใดอย่างหนึ่ง คุณสามารถหาข้อมูลเพิ่มเติมเกี่ยวกับ Fuse-Calculator ออนไลน์นี้ได้

ขั้นตอนที่ 5: คดี

กรณี
กรณี
กรณี
กรณี

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

ที่นี่เพื่อดาวน์โหลด Case ที่ตั้งใจไว้ของฉันด้วย pssible CR2032 Battery-Adapter เพื่อใส่แบตเตอรี่ที่ใช้บ่อย บอร์ดอิเล็กทรอนิกส์และแบตเตอรี่จะต้องแยกจากกันอย่างสมบูรณ์ด้วยเทป Kapton-Polimid หรือทางเลือกที่แข็งแกร่ง อย่าใช้เทปกาวธรรมดาๆ มันอ่อนเกินไปที่จะแยกออกอย่างแรง และอาจทำให้แบตเตอรี่ลัดวงจรได้!

ฉันได้ทดลองกับเลย์เอาต์มากมาย (สำหรับ PLA ที่พิมพ์ 3 มิติ) และสรุปด้วยความหนาของผนังประมาณ 1.3 มม. ในรูปแบบนี้ แรงที่มาจากสายรัดข้อมือจะถูกยึดอย่างมีประสิทธิภาพผ่านทั้งสองด้านของเคสร่วมกับฝาปิดสแน็ปอิน อีกด้านอาจจะผอมกว่าประมาณ 1.0 mm…

ดังนั้นการปรับเปลี่ยนความสูงของเคส (ในกรณีที่มีการปรับเปลี่ยนบอร์ด…?) จะไม่เป็นปัญหาใหญ่

นอกจากนี้ หากคุณมี Alarm หรือ Timer อยู่ภายใน คุณต้องมี Case อื่น ดังนั้นฉันจึงเสนอวิธีการแทรก Piezo-tweeter ขนาดเล็ก (หรือ f.ex. ไมโครลำโพงนี้: CUI-15062S)… (ดู กรณีที่-2).

หลังจากที่พิมพ์เคสออกมา (ด้วยความสูงของเลเยอร์ที่แนะนำคือ 0.1 มม. และเติมด้วย "การทับซ้อนของผนัง" ประมาณ 50%) คุณต้องครีบเส้นด้านข้างที่เอาชนะ ยื่นขอบให้กลมพอ แต่ไม่มากเกินไป… A ยากกว่านั้นอีกเล็กน้อยคือการตะไบสแนปอินขนาดเล็ก 4 อันของฝาปิดในมุมขวา ~100-120 ° เพื่อให้ยึดเข้ากับเคสได้อย่างแข็งแรง แต่ไม่ขยายหรือหัก - และไม่ส่งผลให้ฝาปิดมีขนาดเล็กเกินไป ที่จะคงอยู่…

ช่องสี่เหลี่ยมสำหรับ OLED จะต้องยื่นออกมาอย่างระมัดระวัง โดยให้เข้ากับโครงร่างของกระจก OLED อย่างแม่นยำ โดยไม่ทำให้มันแตกในขณะที่พยายามเสียบ Board+OLED-Display (ตอนนี้กำลังทำงานร่วมกัน) ดังนั้นควรระมัดระวังในการยื่นและพยายามซ้ำๆ เพื่อดูว่าทุกส่วนเข้ากันได้หรือไม่

ควรใช้มีดคัตเตอร์ที่คมเพื่อกำจัดปล่องควันที่เป็นผลลัพธ์

ตอนนี้คุณสามารถใส่สายรัดข้อมือด้วยลวดทองเหลือง (ø1 มม. ยาว: 28.5 มม.) สำหรับสิ่งนี้ 2 รูของโครงใส่เคสจะต้องถูกเจาะในลักษณะที่ลวดจะทะลุผ่าน แต่จากนั้นก็ติดเข้าไปในวงเล็บอย่างแน่นหนา

ก่อนที่คุณจะติดแขนเคสด้วยระบบอิเล็กทรอนิกส์และสายรัด คุณสามารถเคลือบด้วยสีได้ (ฉันขอแนะนำให้ใช้สเปรย์ทินเนอร์สำหรับรถยนต์ – แห้งเร็วกว่า ติดฝุ่นบนพื้นผิวน้อยลง!)ผมขอแนะนำให้ใช้สเปรย์ลงกราวด์ (ทินเนอร์) ก่อนด้วย ซึ่งสามารถขัดให้ละเอียดจนได้พื้นผิวที่เรียบเนียนโดยไม่มีเส้นพิมพ์หรือตำหนิ ตัวฉันเอง ฉันชอบสีทองหรือสีเงิน หรือผิวไม้ก็อาจจะดี – คุณเลือกได้…

ขั้นตอนที่ 6: บทสรุป

ข้อควรพิจารณาเกี่ยวกับแบตเตอรี่:

CR2432 Li-Ion-Battery มีความจุประมาณ 300mAh ดังนั้นจึงมีระยะเวลาประมาณ 2 ปี หากแสดงนาฬิกาประมาณ 10 ครั้ง (แต่ละ á 5 วินาที) ต่อวัน ดังนั้นคุณสามารถแลกเปลี่ยนกับแบตเตอรี่ Li-Ion CR2032 ที่มีจำหน่ายทั่วไป (แต่เล็กกว่า) ซึ่งเก็บได้ประมาณ 1, 4 ปีด้วย 210mA

ฉันยังค้นหาเซลล์ปุ่มลิเธียมแบบชาร์จได้เช่น CR2430 (ทั่วไป) และพบสิ่งนี้: "LIR-2430" แบตเตอรี่นี้มีความจุประมาณ 50mA เท่านั้น แต่สามารถชาร์จใหม่ได้ f.ex ผ่านการถ่ายโอนพลังงานแบบไร้สาย… เพื่อจุดประสงค์นั้น ฉันได้ทำโพรบและคุณสามารถดูผลลัพธ์ในแผนผัง + เลย์เอาต์ที่รวมอยู่ด้วย ตัวถ่ายโอนพลังงานเองทำงานได้ดีมาก ในการกัดขดลวดแบนที่มีประมาณ 30 รอบบนฝาอีพอกซีบอร์ดแบบแบน ยังคงเป็นสิ่งที่ต้องทำ… ในการชาร์จแบตเตอรี่ ฉันเสนอวงจรชาร์จอย่างง่ายด้วย LED สีขาวและ 2 Schottky-Diodes เพื่อจำกัด End-Charging-Voltage สำหรับการชาร์จนี้สูงสุดประมาณ 3.6V…

ในที่สุด – สำคัญมาก:

!!! ไม่เคยชาร์จแบตเตอรี่ลิเธียมไอออนแบบชาร์จไฟไม่ได้ !!! - มันอาจจะระเบิดและติดไฟได้!

ฉันทดลองกับเซลล์ Li-Ion-Button-Cell (แบบชาร์จไม่ได้) CR2430 -เป็นข้อควรระวัง- ในขวดโหลที่ปิดสนิท…หลังจากนั้นประมาณหนึ่งชั่วโมง การชาร์จด้วยค่าคงที่ 3.3V ฉันสังเกตเห็นการบิดเบี้ยวของเคสเล็กน้อย… และ แม้ว่าแรงดันไฟฟ้าของแบตเตอรี่นี้จะเพิ่มขึ้นจาก 2.8 เป็น 3.2V แต่ความจุในตอนท้ายก็ลดลงอย่างมาก! – ดังนั้นการชาร์จจึงไม่สมเหตุสมผล: เซลล์ปุ่มนี้ไม่สามารถชาร์จได้จริงๆ

สิ่งที่ต้องทำ:

• ฟังก์ชันจับเวลา (ตามซอฟต์แวร์) + (ฮาร์ดแวร์ + เคส) - ทวีตเตอร์หรือมอเตอร์สั่น

• วงจรชาร์จไร้สาย

• ผิวโลหะหรือไม้เคลือบเงา

แนะนำ: