» อิเล็กทรอนิกส์ » Arduino »นาฬิกา Oled ที่ Attiny85

นาฬิกา Oled ที่ Attiny85

สวัสดีตอนบ่ายและอีกครั้งฉันอยู่กับของเล่นของฉัน วันนี้ฉันขอเสนอคำแนะนำในการทำนาฬิกาเล็ก ๆ แต่น่ารักพร้อมเซ็นเซอร์อุณหภูมิห้อง
นาฬิกา Oled ที่ Attiny85


รายการสิ่งที่เราต้องการ:
- 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
tinyozoled-master.rar [15.99 Kb] (ดาวน์โหลด: 477)


เซ็นเซอร์อุณหภูมิต้องการห้องสมุด OneWire
onewire.rar [16.75 Kb] (ดาวน์โหลด: 263)


ติดตั้งสองไลบรารีนี้ คุณสามารถติดตั้งไลบรารีบุคคลที่สามโดยตรงในสภาพแวดล้อมการเขียนโปรแกรม โดยไม่ต้องเปิดไฟล์เก็บถาวรที่ดาวน์โหลดใน 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 วินาที
attiny85_oled_spi_term_2.rar [2.33 Kb] (ดาวน์โหลด: 574)

Attiny 85
ผู้ลงคะแนนทั้งหมด: 118
9.3
10
8.7

เพิ่มความคิดเห็น

    • รอยยิ้มรอยยิ้มxaxaตกลงdontknowyahooNea
      นายรอยขีดข่วนคนโง่ใช่ใช่ใช่ก้าวร้าวลับ
      ขอโทษเต้นdance2dance3ให้อภัยช่วยเหลือเครื่องดื่ม
      หยุดเพื่อนดีgoodgoodนกหวีดหน้ามืดตามัวลิ้น
      ควันการตบมือเครย์ประกาศเป็นขี้ปากดอน t_mentionดาวน์โหลด
      ความร้อนโมโหlaugh1ภาคตะวันออกเฉียงเหนือประชุมmoskingเชิงลบ
      not_iข้าวโพดคั่วลงโทษอ่านทำให้ตกใจกลัวค้นหา
      ยั่วยุthank_youนี้to_clueumnikรุนแรงเห็นด้วย
      ไม่ดีbeeeblack_eyeblum3หน้าแดงโม้ความเบื่อ
      เซ็นเซอร์การหยอกล้อsecret2ขู่ชัยชนะYusun_bespectacled
      shokrespektฮ่า ๆprevedยินดีต้อนรับkrutoyya_za
      ya_dobryiผู้ช่วยne_huliganne_othodiFLUDห้ามใกล้
13 คิดเห็น
Vseslav
ขอบคุณขอบคุณ!
ผู้เขียน
สวัสดีตอนเย็น ฉันไม่ได้ใช้ห้องสมุดจาก Digispart พวกเขามี bootloader ขนาดใหญ่เกินไปพร้อมกับร่างของนาฬิกาไม่พอดี ฉันใช้ไลบรารี TinyOzOLED เธอไม่มีรัสเซีย โดยทั่วไปแล้วด้วย Attiny 85 มันยากมีหน่วยความจำน้อยเกินไป
Vseslav
คิดให้ดีและทำข้อบกพร่องเล็ก ๆ น้อย ๆ หนึ่ง - จารึกใน Aglitsky พวกเขาสามารถแลกเปลี่ยนเป็นภาษารัสเซียได้หรือไม่หรือเป็นเรื่องยากที่ Digispark จะทำเช่นนี้?
ผู้เขียน
สวัสดีตอนบ่าย นาฬิกาแบบเรียลไทม์ใช้พื้นที่มากพอพวกเขาจะไม่พอดีกับกรณีนี้
อืม .. ทำไมไม่ใส่นาฬิกาแบบเรียลไทม์แทนเซ็นเซอร์อุณหภูมิ?
ผู้เขียน
เคล็ดลับอีกประการหนึ่งคือ LED เชื่อมต่อกับ Digispar Attiny 85 P1 หากคุณใช้พินนี้ให้พิจารณาการมีอยู่ของมัน ฉันขนานนามว่า diode นี้บนกระดานของฉันเนื่องจากในความคิดของฉันมันรบกวนเท่านั้น
ผู้เขียน
สวัสดีตอนบ่าย ไม่จำเป็นต้องทำการดึงขึ้นมาพร้อมกับตัวต้านทานเนื่องจากระบบกันสะเทือนที่สร้างขึ้นใน Attiny จะรวมอยู่ในร่าง นำตัวแขวนและลองอีกครั้ง
คุณยังสามารถลองร่างอื่นจากนาฬิกาอื่น ๆ ของฉันพวกเขามีตัวควบคุมและหน้าจอเดียวกันและการกำหนดค่าทำได้ด้วยปุ่มเดียว:
https://thm.imdmyself.com/14217-chasy-s-termometrom-na-attiny.html
แขกโรมัน
วันที่ดี ขอบคุณสำหรับความคิดและการทำงาน มือทั้งสองของฉันไม่ได้เป็นอย่างนั้นหรือฉันก็ไม่เข้าใจ ปุ่มการตั้งค่าเวลาไม่ทำงานตามปกติ ฉันลองทั้ง skech และของฉันโดยเพิ่มโหมดพินของปุ่มอินพุตเท่านั้นและดึง 10k ถึง 5V และในที่และในที่ปุ่มไม่เข้าใจวิธีการกดเพื่อเปลี่ยน หรือฉันเข้าสู่ความล่าช้าหรือมีบางอย่างผิดปกติกับปุ่มนาฬิกาตามปกติ
หน้าจอเย็น แต่ตะกละ แรมกินเยอะ
คุณเป็นผู้เชี่ยวชาญ! บีบลงใน tinku85 เช่นนี้
ผู้เขียน
ทำถูกต้องพิมพ์ผิดขนาด 2.8 x 2.8 ซม
อ้างอิง: maxim0512
ไม่เหมาะกับเคสอีกต่อไป
ตามพื้นที่คุณสามารถมากกว่าหนึ่งร้อยครั้งที่คุณเสนอ
ผู้เขียน
ไม่เหมาะกับเคสอีกต่อไป มีเพียงสองปุ่มตัวต้านทานและเซ็นเซอร์อุณหภูมิ ทุกอย่างพอดี
... แผงวงจรแบบมีขอบไม่เกิน 2.8 x 2.8 มม
มันจะไม่เพียงพอ ))

เราแนะนำให้คุณอ่าน:

มอบให้กับสมาร์ทโฟน ...