รายการสิ่งที่เราต้องการ:
- Digispark Attiny85
- จอแสดงผล Oled 128x64 I2C
- เซ็นเซอร์อุณหภูมิ ds18b20
- ตัวต้านทาน 4.7 Kom 0.25 W
- โปรแกรมเมอร์ ISP หรือ Arduino บอร์ดเฟิร์มแวร์ Digispark Attiny85
- เม็ดพลาสติกที่มีคลิปหนีบกระดาษหรือแผ่นพลาสติกบาง ๆ
- สายไฟ
- ขั้วต่อ“ ตัวเมีย” Dupont 2.54 มม
- กระดุม 2 ชิ้น
- แผงวงจรขนาดเล็กหรือแผ่นปิดขนาดเล็ก
- หัวแร้ง
- บัดกรีขัดสน
- กรรไกร
- มีดเสมียน
- ปืนกาวร้อน
- กาวร้อน
ขั้นตอนที่ 1 การเลือกส่วนประกอบ
ในฐานะผู้ควบคุมหลักเราจะใช้ Digispark Attiny85 มีหลายประเภท เราต้องการบอร์ดที่มีขั้วต่อ micro USB ส่วนที่เหลือจะไม่พอดีกับตัวเรือนนาฬิกา
ในการแสดงเราจำเป็นต้องมีหน้าจอ Oled 128x64 I2C พวกเขามาในสีที่ต่างกัน: ขาวน้ำเงินน้ำเงินและเหลือง ฉันดึงดูดความสนใจของคุณ! คำว่า "สองสี" ในคำอธิบายหรือชื่อของหน้าจอนี้หมายถึงแถบสีเดียวที่ด้านบนของหน้าจอและสีที่สองของหน้าจอที่เหลือทั้งหมดไม่ใช่ความสามารถในการแสดงสองสีด้วยหน้าจอนี้! หน้าจอทั้งหมดของประเภทนี้แสดงเพียงสีเดียวหรือที่ด้านบนมีแถบสีเดียวที่ด้านล่าง - อีกอันหนึ่ง ตัวอย่างเช่นสิ่งที่ฉันจะใช้ แถบด้านบนเป็นสีเหลืองส่วนที่เหลือของหน้าจอเป็นสีน้ำเงิน คุณสามารถเลือกสีที่คุณชอบ
เราต้องการเซ็นเซอร์อุณหภูมิ DS18B20 ในตัวด้วย มันไม่ได้ถูกเลือกโดยบังเอิญ ขั้นแรก DS18B20 สื่อสารกับไมโครคอนโทรลเลอร์ผ่านสายสื่อสารเส้นเดียวโดยใช้โปรโตคอลอินเตอร์เฟซ 1-Wire ในกรณีของเรานี่เป็นสิ่งสำคัญเนื่องจากข้อสรุปของ Attiny85 ที่ไม่มีเซ็นเซอร์มีน้อย ประการที่สองเซ็นเซอร์นี้เป็นตัวเลขซึ่งก็คือการวัดทั้งหมดและส่งข้อมูลอุณหภูมิโดยไม่ต้องใช้ทรัพยากรคอมพิวเตอร์ของ Attiny85
สำหรับส่วนที่เหลือฉันคิดว่าจะไม่มีคำถามดังนั้นเราจะไปที่การผลิตกรณี
ขั้นตอนที่ 2 การประกอบตัวเรือน
ตัวเรือนทำจากพลาสติกบาง ฉันมีแท็บเล็ตพลาสติกที่มีคลิปหนีบกระดาษอยู่ในมือ มันแข็งแรงพอที่จะรักษารูปร่างและในขณะเดียวกันก็สามารถตัดด้วยกรรไกรธรรมดาและมีดที่ทำงานได้ เขาขึ้นมาอย่างสมบูรณ์แบบหากไม่อยู่ในมือคุณสามารถซื้อแท็บเล็ตในร้านอุปกรณ์สำนักงานหรือหาพลาสติกที่เหมาะสมเพื่อเปลี่ยนแท็บเล็ต เราทำเครื่องหมายบนพลาสติกตามรูปแบบ:
ตัดออกจากเส้นทึบทั้งหมด ประ - ตัดเล็กน้อยด้วยมีดเสมียน เส้นประคือเส้นพับ ตามที่คุณเข้าใจแล้วนี่เป็นเค้าโครงคิวบ์ปกติ ถัดไปคุณจะต้องบัดกรีสายไฟที่หน้าจอมันเป็นสิ่งที่ดีที่สุดที่จะใช้หลายสีและเขียนลงซึ่งนำไปสู่สิ่งที่ กาวหน้าจอบนกาวร้อนละลายที่อยู่ตรงกลางเพื่อให้ด้านหน้าด้านหน้าออกจากด้านหลัง อย่างที่คุณเห็นเราได้ปิดการกำหนดพินหน้าจอ ดังนั้นจึงจำเป็นต้องเขียนลงไป ฉันส่งมอบมีดเล็กน้อยแล้วจึงตัดส่วนล่างของร่างกายออก ไม่มีอะไรผิดปกติกับที่ทุกอย่างสามารถติดกาว แต่เป็นการดีกว่าที่จะไม่ทำซ้ำความผิดพลาดของฉัน
ผลลัพธ์ควรเป็นดังนี้:
ในกรณีนี้พร้อม คุณยังสามารถตัดฝาหลังออกจากพลาสติกเดียวกันได้ แต่นี่เป็นทางเลือก
ขั้นตอนที่ 3 เราประสาน
กรณีของเรามีขนาดเล็กและเราต้องอัดมากที่นั่น ดังนั้นเราจึงใช้ชิ้นส่วนของแผงวงจรไม่เกิน 2.8 x 2.8 มม. และประสานในสองปุ่มเซ็นเซอร์ ds18b20 ตัวต้านทานและการติดต่อหลาย ตามรูปแบบต่อไปนี้:
ไม่จำเป็นต้องบัดกรีสายไฟโดยตรงกับ Attiny เนื่องจากจำเป็นต้องตัดการเชื่อมต่อทุกอย่างสำหรับเฟิร์มแวร์ ผลลัพธ์ควรเป็นดังนี้:
จำเป็นต้องใช้ปุ่มเพื่อตั้งเวลา พลังงานสามารถนำมาจากพอร์ต USB ของคอมพิวเตอร์ การรวมเครื่องหมายบวกและลบตามลำดับ:
หากคุณต้องการที่จะทำโดยไม่ใช้สายไฟคุณต้องหาแบตเตอรี่ลิเธียมไอออนขนาดเล็ก นี่คือตัวอย่างหนึ่ง:
แบตเตอรี่นี้พอดีภายในเคส จำเป็นต้องให้ข้อสรุปสำหรับการชาร์จแบตเตอรี่เท่านั้น
ขั้นตอนที่ 4 การเตรียมโปรแกรมเมอร์
Digispark Attiny85 สามารถตั้งโปรแกรมผ่านช่องเสียบ micro USB บนบอร์ดโดยใช้ Arduino IDE เป็นสภาพแวดล้อมการเขียนโปรแกรม แต่ในเวลาเดียวกันคุณต้องเสียสละหน่วยความจำ 2 KB สำหรับ bootloader Attiny 85 มีทั้งหมด 8 KB Flash ร่างของฉันไม่พอดีกับ bootloader ดังนั้นฉันต้องตั้งโปรแกรมผ่านโปรแกรมเมอร์ ISP ฉันไม่มีโปรแกรมเมอร์ แต่มีบอร์ด Arduino Uno ซึ่งฉันจะใช้เป็นโปรแกรมเมอร์ หากคุณมีโปรแกรมเมอร์ ISB คุณสามารถข้ามรายการนี้ได้ เปิด Arduino IDE และกรอกร่างของเราที่เรียกว่า ArduinoISP ลงใน Arduino Uno ของเรา คุณสามารถค้นหาไฟล์นี้ได้ - ตัวอย่าง - Arduino ISP ร่างเริ่มต้นด้วยคำแนะนำวิธีการเชื่อมต่อ Arduino กับคอนโทรลเลอร์ที่ตั้งโปรแกรมได้ แทนที่จะเป็น Arduino Uno สามารถมีบอร์ด Arduino อื่น ๆ ได้
// 10: รีเซ็ตทาส
// 11: MOSI
// 12: MISO
// 13: SCK
รูปแบบการเชื่อมต่อกับ Digispark Attiny85:
Arduino UNO - Digispark Attiny85
D11 - P0
D12 - P1
D13 - P2
D10 - P5
ขั้นตอนที่ 5 การเตรียมสภาพแวดล้อมการเขียนโปรแกรม
ในการแก้ไขเฟิร์มแวร์และเติมร่างใน Attiny 85 คุณจะต้องเตรียมไม่เพียง แต่โปรแกรมเมอร์ แต่ยังรวมถึงสภาพแวดล้อมการเขียนโปรแกรมเอง ในการทำเช่นนี้ให้ติดตั้ง Arduino IDE จากเว็บไซต์ Arduino.cc อย่างเป็นทางการและติดตั้ง Attiny Add-on สำหรับไมโครคอนโทรลเลอร์ผ่านตัวจัดการบอร์ด
เรียกใช้ Arduino IDE จากนั้นตามด้วยไฟล์ - การตั้งค่า - ในฟิลด์เพิ่มเติมบอร์ดผู้จัดการ URL วางลิงค์:
https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json
คลิกตกลง (คุณสามารถป้อนลิงค์ต่าง ๆ โดยคั่นด้วยเครื่องหมายจุลภาคในฟิลด์นี้) เครื่องมือถัดไป - บอร์ด - บอร์ดผู้จัดการในฟิลด์ตัวกรองป้อน Attiny และคลิกที่ "attiny by David A. Mellis" คลิกติดตั้งและรอให้การดาวน์โหลดเสร็จสิ้น ตอนนี้ในเมนูเครื่องมือให้เลือก:
บอร์ด - Attiny 25/45/85
หน่วยประมวลผล - Attiny 85
นาฬิกา - ภายใน 16
และเลือกพอร์ตอนุกรมที่ ISP โปรแกรมเมอร์หรือ Arduino เชื่อมต่อเป็นโปรแกรมเมอร์
ฉันลองใช้ห้องสมุดที่แตกต่างกันเพื่อทำงานกับหน้าจอ ในความคิดของฉันสะดวกที่สุดและทำงานบน Attiny85: TinyOzOLED
เซ็นเซอร์อุณหภูมิต้องการห้องสมุด OneWire
ติดตั้งสองไลบรารีนี้ คุณสามารถติดตั้งไลบรารีบุคคลที่สามโดยตรงในสภาพแวดล้อมการเขียนโปรแกรม โดยไม่ต้องเปิดไฟล์เก็บถาวรที่ดาวน์โหลดใน Arduino IDE ให้เลือกเมนู Sketch - Connect Library ที่ด้านบนสุดของรายการดรอปดาวน์เลือกรายการเพิ่มไลบรารี. Zip ในกล่องโต้ตอบที่ปรากฏขึ้นให้เลือกไลบรารีที่คุณต้องการเพิ่ม เปิดเมนู Sketch - Connect Library อีกครั้ง ที่ด้านล่างสุดของรายการแบบหล่นลงคุณจะเห็นห้องสมุดใหม่ ตอนนี้ไลบรารีสามารถใช้ในโปรแกรม อย่าลืมรีบูต Arduino IDE หลังจากทั้งหมดนี้หากไม่ช่วยให้คลายไฟล์ที่เก็บถาวรลงในโฟลเดอร์“ libraries” ที่อยู่ในโฟลเดอร์ที่ติดตั้ง Arduino IDE ไว้
ขั้นตอนที่ 6 แก้ไขและเติมร่าง
เซ็นเซอร์วัดอุณหภูมิทำงานโดยใช้โปรโตคอล One Wire และมีที่อยู่เฉพาะสำหรับแต่ละอุปกรณ์ - รหัส 64 บิต แหล่งข้อมูล Attiny นั้นไม่เพียงพอที่จะค้นหารหัสนี้ทุกครั้ง ดังนั้นก่อนอื่นคุณต้องเชื่อมต่อเซ็นเซอร์กับบอร์ด Arduino ใด ๆ กรอกแบบร่างที่อยู่ในไฟล์ - ตัวอย่าง - อุณหภูมิดัลลัส - เมนู OneWireSearch ถัดไปเรียกใช้เครื่องมือ - การตรวจสอบพอร์ต Arduino ควรหาเซ็นเซอร์ของเราเขียนที่อยู่และอ่านอุณหภูมิปัจจุบัน เราคัดลอกหรือเขียนที่อยู่ของเซ็นเซอร์ของเรา เปิดแบบร่าง Attiny85_Oled_SPI_Term_2 ค้นหาบรรทัด:
byte addr [8] = {0x28, 0xFF, 0x75, 0x4E, 0x87, 0x16, 0x5, 0x63};
เราจดที่อยู่ของเซ็นเซอร์ของคุณระหว่างวงเล็บปีกกาแทนที่ที่อยู่ของเซ็นเซอร์ของฉัน หลังจากนั้นให้เชื่อมต่อ Attiny กับโปรแกรมเมอร์หรือ Arduino ในฐานะโปรแกรมเมอร์ (อธิบายไว้ในขั้นตอนที่ 4) แล้วกรอกข้อมูลในแบบร่าง มันจะยังคงตัดการเชื่อมต่อโปรแกรมเมอร์และเชื่อมต่อทุกอย่างตามแบบแผนใน 3 ขั้นตอน แอสเซมบลีกลายเป็นอะไรเช่นนี้:
หน้าจอมีขนาดเล็กจึงไม่สามารถใส่ได้ทั้งเวลาและอุณหภูมิเพื่อให้มองเห็นได้ ดังนั้นนาฬิกาจะเปลี่ยนเวลาด้วยอุณหภูมิที่อ่านได้ทุก 10 วินาที