สวัสดีทุกคนและมีวันที่ดีหรือเย็น คราวนี้ฉันจะแบ่งปันคำแนะนำในการทำนาฬิกาห้องกับเทอร์โมมิเตอร์ ศูนย์ประมวลผลของนาฬิกาจะเป็น Attiny85 ซึ่งประกอบอยู่บนกระดานจาก Digispark ในการแสดงนาฬิกา - จอแสดงผลแบบ Oled เครื่องวัดอุณหภูมิ - ds18b20 ที่รู้จักกันดี เพื่อพลังงานเราใช้ li-ion 18650 (สามารถรับได้จากแบตเตอรี่เก่าจากแล็ปท็อป) และเพิ่มการแสดงระดับแบตเตอรี่ เช่นเดียวกับนาฬิการุ่นก่อน ๆ ทั้งหมดของเราเราจะทำโดยไม่มีโมดูล RTC (นาฬิกาเรียลไทม์)
เรารวบรวมทุกอย่างที่จำเป็น:
- Digispark Attiny85 (รุ่น micro USB)
- ds18b20 (ในกล่องพลาสติก)
- หน้าจอแบบ Oled ที่มีความละเอียด 128x64, I2C
- แบตเตอรี่ 18650 จำนวน 2 ก้อนหรือแบตเตอรี่แล็ปท็อป Li-ion รุ่นเก่า
- ตัวต้านทาน (3.3 kΩ, 4.7 kΩ, 10 kΩ)
- พลาสติกบาง (สำหรับที่อยู่อาศัย)
- การเชื่อมต่อสายไฟที่มีสีต่างกัน
- โปรแกรมเมอร์ ISP (หรือใด ๆ ) Arduino ค่าบริการ)
- ปุ่ม
- ตัวเชื่อมต่อ Dupont 2.54 มม. "แม่", "พ่อ"
- มีดเครื่องเขียน, เทปสองหน้า, เทปไฟฟ้า, hotmelt
- ทุกอย่างสำหรับการบัดกรี (หัวแร้งบัดกรีขัดสนบัดกรี)
ขั้นตอนที่ 1 กรณี
ตัวเรือนนาฬิกาในอนาคตจะทำจากพลาสติกบาง ๆ คุณสามารถซื้อแผ่นพลาสติกดังกล่าวในร้านเฉพาะหรือสั่งซื้อใน aliexpress หรือคุณสามารถ (ไม่ต้องรอและไม่ได้ดู) เพื่อไปที่สำนักงานเสมียนและซื้อโฟลเดอร์กระดาษพลาสติกสีโปรดของคุณ ขนาดของนาฬิกาในอนาคต: ความกว้าง - 40 มม., ความหนา - 30 มม., ความสูง - 70 มม. จากแผนภาพด้านล่างเราตัดการสแกนจากพลาสติก:
เราตัดตามเส้นหนาโค้งงอเบา ๆ ตามเส้นบาง ๆ เราตัดสี่เหลี่ยมผืนผ้าออกตรงกลางโดยใช้มีดธุรการนี่เป็นหน้าต่างสำหรับแสดง เป็นผลให้เราได้รับการสแกนพลาสติก:
เราส่งผ่านไปยัง Attiny
ขั้นตอนที่ 2 Attiny + Oled
ดังที่ฉันพูดในใจเรา ทำที่บ้าน จะเป็น Attiny 85 วิธีที่ดีที่สุดคือซื้อชิปนี้บัดกรีทันทีกับบอร์ดพร้อมกับตัวควบคุมแรงดันไฟฟ้าและชุดสายไฟ Digispark Attiny85 เหมาะสมดี เลือกรุ่นที่มี micro-USB บนบอร์ด การดัดแปลงอื่น ๆ ของบอร์ดจะไม่พอดีกับขนาด มันเกิดขึ้นว่าบอร์ดนี้ขายพร้อมตัวเชื่อมต่อ Dupon“ male” ที่บัดกรีแล้ว ถ้าเป็นเช่นนั้นประสานตัวเชื่อมต่อทั้งหมด เรารวบรวมสายไฟสี เราต้องการ 10 เซนติเมตรในสีที่ต่างกัน เราประสานพวกเขาใน Attiny และเขียนว่าสายไหนข้อสรุปที่สอดคล้องกับ สาย P0 และ P2 ต้องบัดกรีเป็นสองเส้น จำเป็นต้องมีคู่ที่สองเพื่อเชื่อมต่อหน้าจอ Oled เราได้รับดังต่อไปนี้:
ฉันเขียนไดอะแกรมต่อไปนี้บนเส้นลวด:
หน้าจอมีขนาดเล็ก (เพื่อให้ตรงกับตัวควบคุม) แต่มันก็ดูสวยงาม OLED (ไดโอดเปล่งแสงอินทรีย์) เป็นจอแสดงผลกราฟิก ไม่มีแสงไฟและแต่ละพิกเซลเป็นไฟ LED อิสระ ขนาดหน้าจอ - 0.96 นิ้วความละเอียด 128x64 เชื่อมต่อผ่าน I2C บัส ใช้เพียงสองสายเชื่อมต่อกับ Attiny พวกเขามาในสีที่ต่างกันเลือกรสนิยมของคุณ ฉันชอบสีน้ำเงินที่มีแถบสีเหลืองที่ด้านบน เราดำเนินการคล้ายกับ Digispark หากมีการเชื่อมต่อบัดกรี - ประสานพวกเขา ประสานตอนนี้เท่านั้นสายไฟ:
ระวังเมื่อบัดกรีอย่าทำให้สายเคเบิลเสียหายด้วยหัวแร้งบนจอแสดงผล:
เราเชื่อมต่อบอร์ดโดยใช้เทปสองด้าน:
เราประสานการแสดง Digispark Attiny และ Oled ร่วมกันตามรูปแบบ (สีของสายไฟอาจแตกต่างกันไปสิ่งสำคัญคือไม่ยุ่งกับข้อสรุป):
เพื่อความสะดวกและสั่งซื้อเรารวบรวมสายทั้งหมดเข้าด้วยกัน คุณสามารถบิดมันด้วยเทปไฟฟ้าเพื่อไม่ให้สับสน:
ในตอนท้ายของสายทั้งหมดเราต่อตัวเชื่อมต่อ "แม่" ของดูปองท์ใส่เข้าไปในลูกถ้วยและม้วนมันทั้งหมดเข้าด้วยกันด้วยเทปไฟฟ้าเพื่อสร้างตัวเชื่อมต่อ นอกจากนี้เรายังบันทึก pinout ของตัวเชื่อมต่อ:
pinout ควรเป็นเช่นนี้เนื่องจากในอนาคตเราจะเชื่อมต่อสายไฟสำหรับเฟิร์มแวร์หรือองค์ประกอบนาฬิกาอื่น ๆ เข้ากับตัวเชื่อมต่อ
เราติดโครงสร้างที่เกิดขึ้นลงในเคสและอย่าลืมติดกาวเคสด้วยตนเองปล่อยให้คร่ำครวญหนึ่งตัวไม่ติดกาวเพื่อการปรับแต่งเพิ่มเติม:
เมื่อติดกาวระวังหน้าจอเสมอ:
ขั้นตอนที่ 3 พลังงาน
สำหรับพลังงานเราจะใช้สององค์ประกอบ Li-ion พิมพ์ 18650 คุณสามารถซื้อแยกได้ ในกรณีนี้ประสานพวกเขาในแบบขนานแยกและส่งออกขั้วต่อสำหรับการเชื่อมต่อและการชาร์จครั้งต่อไป:
หลายคนมีแล็ปท็อปรุ่นเก่า ไม่ว่าพวกเขาจะไม่ทำงานอีกต่อไปหรือทำงานผ่านเวลา แม้ว่าแบตเตอรี่ของแล็ปท็อปจะไม่ดีและไม่เหมาะกับการใช้งานตามวัตถุประสงค์ แต่ก็สามารถใช้ได้กับผลิตภัณฑ์โฮมเมดทุกประเภท ในกรณีของเราเป็นนาฬิกา เราใช้แบตเตอรี่จากแล็ปท็อป:
สิ่งสำคัญคือเขาเป็น Li-ion เราถอดมันอย่างระมัดระวังคุณจะต้องเปิดกล่องพลาสติกเพื่อไม่ให้องค์ประกอบภายในเสียหาย บ่อยครั้งที่แบตเตอรี่แบ่งออกเป็นสององค์ประกอบเชื่อมต่อในแบบคู่ขนาน เรานำพวกเขาออกและแยกหนึ่งคู่จากที่เหลือ:
วิธีที่ดีที่สุดคือประสานกับแผ่นสัมผัส:
กาวคู่นี้ไว้ที่ด้านหลังของนาฬิกา:
ขั้นตอนที่ 4 การกำหนดประจุแบตเตอรี่
ฟังก์ชั่นที่สะดวกสบายของนาฬิกาคือการระบุการชาร์จแบตเตอรี่ เราจะกำหนดระดับของประจุด้วยแรงดัน แรงดันไฟฟ้าขั้นต่ำสำหรับแบตเตอรี่เหล่านี้คือ 2.4 V ไม่สามารถปล่อยทิ้งได้อีก แรงดันไฟฟ้าสูงสุดคือ 4.2 V
การวัดแรงดันที่พอร์ตอะนาล็อกนั้นสัมพันธ์กับแรงดันไฟฟ้าอื่น ๆ เสมอ เราไม่สามารถใช้ขายึด AREF ของไมโครคอนโทรลเลอร์ซึ่งทำหน้าที่ตั้งแรงดันอ้างอิง นอกจากนี้ยังเป็นไปไม่ได้ที่จะวัดแรงดันเมื่อเทียบกับแรงดันไฟฟ้า (อัตราส่วนจะเท่ากันเสมอ) ดังนั้นเราจะตรวจสอบแรงดันไฟฟ้าที่เกี่ยวข้องกับแรงดันอ้างอิงภายในหรือ Vbg (แรงดันอ้างอิง Bandgap) มันคือ 1.1 V ตอนนี้เราจำเป็นต้องคำนวณตัวแบ่งแรงดันสำหรับแบตเตอรี่ของเราเพื่อให้ค่าสูงสุด (4.2 V) ตัวแบ่งมี (1.1 V) คุณสามารถคำนวณตามสูตร:
หรือใช้
R1 รับค่าหน้า 10 kOhm จากนั้น R2 เราจะได้ 3.55 KOhm ซึ่งเป็นค่าที่ใกล้เคียงที่สุดจากค่ามาตรฐาน 3.3 KOhm และรับไป ทำการวัดระหว่างแรงดันภายในและ GND ดังนั้นตัวต้านทาน 3.3 KΩจะถูกบัดกรีไปที่ลบและ 10 KΩถึงบวก เราวางตัวต้านทานบนแบตเตอรี่เราถอนลวดจากตัวแบ่ง
เราแยกรายชื่อทั้งหมดเพื่อหลีกเลี่ยงการลัดวงจร:
สายไฟจากตัวแบ่งจะเชื่อมต่อกับ PB4
ขั้นตอนที่ 5 วัดอุณหภูมิ
ส่วนประกอบที่ยอดเยี่ยมสำหรับนาฬิกาคือการวัดอุณหภูมิห้อง เราจะใช้เซ็นเซอร์อุณหภูมิ DS18B20 ในตัว หากต้องการใช้งานจะต้องใช้เพียงสายเดียว (มีประโยชน์มากเมื่อใช้ Attiny 85) การวัดทั้งหมดทำด้วยตัวเองตัวควบคุมส่วนกลางไม่รบกวน (Attiny 85 ยังมีหน่วยความจำที่ยอดเยี่ยมและน้อยมาก) เราเพียงแค่ต้องให้คำสั่งและรับผล มีหลายรูปแบบสำหรับการเชื่อมต่อเซ็นเซอร์นี้เราจะใช้ตัวเลือกที่เหมาะสมที่สุดสำหรับกรณีนี้ในความคิดของฉันการใช้พลังงานภายนอกและตัวต้านทาน 4.7 kΩ:
บัดกรีสายไฟขนาดเล็กและยึดขั้วต่อ
สายจากเซ็นเซอร์ DQ เชื่อมต่อกับ PB 3
ปุ่มขั้นตอนที่ 6
เรามีข้อสรุปเล็กน้อย แต่มีข้อกำหนดจำนวนมากสำหรับนาฬิกา เราจะใช้ปุ่มเดียวในการตั้งเวลา เราไม่สามารถนับได้อีก บัดกรีสายไฟที่ปุ่มหนึ่งรายชื่อจากมันไปยัง GND ใช้ร่วมกับเซ็นเซอร์วัดอุณหภูมิของเรา:
ผู้ติดต่อที่สองจากปุ่มเชื่อมต่อกับ PB 1
ขั้นตอนที่ 7 การเตรียมสภาพแวดล้อมการพัฒนา
สำหรับการทำงานกับร่างต่อไปรวมถึงการแก้ไขและการเติมเราจำเป็นต้องมี Arduino IDE ดาวน์โหลดโปรแกรมนี้จาก:
เพิ่มการสนับสนุนสำหรับ Attiny 85 ในวันพุธ เปิด Arduion IDE และไปตามเส้นทาง:
ไฟล์ - การตั้งค่า - "URL ผู้จัดการบอร์ดเพิ่มเติม" ใส่ลิงค์:
https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json
คลิกตกลง
ไปที่:
เครื่องมือ - บอร์ด - บอร์ดผู้จัดการป้อน Attiny และคลิกที่ "attiny โดย David A. Mellis" คลิก "ติดตั้ง" แล้วปล่อยกาแฟใส่
และตอนนี้เกี่ยวกับห้องสมุด พวกเขาต้องการสอง:
เมื่อต้องการทำงานกับจอแสดงผล Oled
การควบคุมเซ็นเซอร์อุณหภูมิ
หลังจากดาวน์โหลดไฟล์เก็บถาวรเหล่านี้ให้คลายไฟล์ลงในโฟลเดอร์“ libraries” ซึ่งหาง่ายโดยไปตามเส้นทางการติดตั้งของ Arduino IDE
ขั้นตอนที่ 8 โปรแกรมเมอร์
Digispark Attiny 85 เป็นบอร์ดที่ยอดเยี่ยม ออกแบบมาเพื่อเชื่อมต่อกับคอมพิวเตอร์ USB และสามารถตั้งโปรแกรมผ่านมันได้ แต่ Attiny ใช้ซอฟต์แวร์ USB ซึ่งจะใช้หน่วยความจำขนาด 2 KB ถึง 8 KB สิ่งนี้ไม่เหมาะกับเราดังนั้นเราจะแฟลช Attiny 85 ผ่านทางส่วนต่อประสาน ISP และที่นี่เราต้องการโปรแกรมเมอร์ ISP หากไม่ได้อยู่ที่นั่น - มันไม่สำคัญ ใช้ Arduino ในกรณีของฉัน Arduino UNO:
คุณสามารถนำบอร์ดที่รองรับอื่น ๆ ได้จากสาย Arduino เราเชื่อมต่อกับคอมพิวเตอร์เปิด Arduino IDE เลือกพอร์ต com ที่บอร์ด Arduino เชื่อมต่อเปิดร่างในตัวอย่าง Arduino ISP และเติมลงในบอร์ด นอกจากนี้เรายังต้องการสายเชื่อมต่อกับ Attiny อย่างรวดเร็ว
การเชื่อมต่อมีดังนี้:
D11 - P0
D12 - P1
D13 - P2
D10 - P5
อย่าลืมเกี่ยวกับโภชนาการ Attiny
ขั้นตอนที่ 9 แก้ไขและเติมร่าง
ดาวน์โหลดแบบร่าง
ก่อนที่จะเติมคุณจะต้องแก้ไขร่าง
เซ็นเซอร์รวม ds18b20 ตามที่กล่าวไว้ก่อนหน้านี้ทำงานโดยใช้โปรโตคอล One Wire เซ็นเซอร์แต่ละตัวมีที่อยู่ 64 บิตที่เป็นเอกลักษณ์ของตัวเอง คุณต้องค้นหาที่อยู่ของเซ็นเซอร์ของคุณและเขียนเป็นร่าง เปิด Arduino IDE ทำตามเส้นทาง:
ไฟล์ - ตัวอย่าง - Dallas Temperature - OneWireSearch
เติมร่างเข้าไปใน Arduino เปิดมอนิเตอร์พอร์ต คุณควรเห็นที่อยู่ของเซ็นเซอร์ที่เชื่อมต่อทั้งหมดและการอ่านอุณหภูมิ เราเขียนที่อยู่ของคุณ เปิดร่างของฉันและเปลี่ยนที่อยู่เป็นของคุณเองในบรรทัด:
byte addr [8] = {0x28, 0xFF, 0x75, 0x4E, 0x87, 0x16, 0x5, 0x63};
ในการปรับความคืบหน้าของนาฬิกาให้ใช้ค่าคงที่ต่อไปนี้:
if (micros () - prevmicros & gt; [b] 497000 [/ b])
ยิ่งค่านี้ยิ่งมากนาฬิกาก็ยิ่งช้าลง
สำหรับการควบคุมวินาทีจะปรากฏบนหน้าจอ:
OzOled.printNumber (ยาว) sek, 0, 7); // วินาทีเอาต์พุตเพื่อการจูนที่แม่นยำ
ใส่ความคิดเห็นในบรรทัดนี้เพื่อลบวินาที
ตอนนี้เราเชื่อมต่อโปรแกรมเมอร์หรือ Arduino เป็นโปรแกรมเมอร์เลือกคอมพอร์ตเลือกบอร์ดของเราในเมนูเครื่องมือและตั้งค่าพารามิเตอร์ต่อไปนี้:
คณะกรรมการ: Attiny 25/45/85
หน่วยประมวลผล: Attiny 85
นาฬิกา: ภายใน 16
จากนั้นเลือกในเมนูเดียวกัน:
เครื่องมือ - โปรแกรมเมอร์ - "Arduino as ISP"
และในที่สุด:
ร่าง - ดาวน์โหลดผ่านโปรแกรมเมอร์
ขั้นตอนที่ 10 การประกอบขั้นสุดท้ายและการเปิดตัว
ปิดโปรแกรมเมอร์และเชื่อมต่อเซ็นเซอร์พลังงานและปุ่ม:
จนกว่าจะมีการกำหนดค่านาฬิกาแน่นอนคุณสามารถปิดเคสโดยใช้ยางธนาคาร เมื่อเสร็จแล้วคุณสามารถกาวได้