สารบัญ:

นาฬิกาปลุก Oled: 8 ขั้นตอน (พร้อมรูปภาพ)
นาฬิกาปลุก Oled: 8 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: นาฬิกาปลุก Oled: 8 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: นาฬิกาปลุก Oled: 8 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: นาฬิกาแสดงอารมณ์จาก Xiaomi 2024, พฤศจิกายน
Anonim
นาฬิกาปลุก Oled
นาฬิกาปลุก Oled

มีนาฬิกา Arduino/ESP32 อยู่มากมาย แต่พวกมันใช้ OLED ที่ดีและคมชัดหรือไม่?

ฉันได้ทดลองใช้ Arduinos และ ESP32 มาระยะหนึ่งแล้ว แต่ฉันไม่เคยทำเป็นผลิตภัณฑ์สำเร็จรูป ฉันสร้างนาฬิกาปลุกด้วย OLED ขาวดำ 4 1.3 นิ้วแล้ว นาฬิกายังมีโคมไฟข้างเตียงที่หรี่แสงได้และพอร์ตชาร์จ USB (ไม่มีใครมีปลั๊กไฟข้างเตียง) OLED นั้นหรี่แสงได้เช่นกัน ซึ่งถูกเพิ่มเข้ามาในนาทีสุดท้ายหลังจากที่โปรเจ็กต์ของฉันถูกแฟนของฉันคุกคาม ไม่ควรหรี่เสียง - อยู่ในเสียงของแฟนสาว - มืดพอ ฉันยังสามารถให้รหัสเวอร์ชันที่แสดงผล 3 จอในบางชั่วโมง เป้าหมายคือการสร้างนาฬิกาที่สามารถซ่อมบำรุงได้ง่าย โดยมองข้าม "ต้นแบบ" ในขณะที่ทำนาฬิกาของฉัน ฉันพบปัญหาบางอย่างที่ฉันต้องแก้ไข ซึ่งเป็นเหตุผลที่ฉันคิดว่าคำแนะนำนี้คุ้มค่าที่จะแบ่งปัน นาฬิกาสามารถสร้างด้วยเครื่องมือเล็กๆ ได้ ฉันไม่ชอบบทเรียน "และสำหรับขั้นตอนต่อไป ฉันใช้เครื่องกัด CNC 10,000 ยูโร/$"

บางสิ่งที่จะอธิบายในคำแนะนำนี้ (in-structable-ception):

- วิธีใช้งาน/ต่อสายจอแสดงผล I2C OLED กับ Arduino/ESP32

- วิธีใช้วัตถุ I2C หลายตัวกับ Arduino/ESP32. หนึ่งตัว

- วิธีสร้างเมนู "เลื่อนได้" โดยใช้ตัวเข้ารหัสแบบหมุน (+ วิธีใช้ตัวเข้ารหัสกับ ESP32/arduino)

- วิธีการออกแบบและสั่งซื้อ PCB แบบกำหนดเองโดยใช้ fritzing

- นาฬิกายังใช้ RTC (นาฬิกาเรียลไทม์), ไดรเวอร์นำ, โมดูลลดแรงดันไฟ… ฉันจะไม่เข้าไปยุ่งเกี่ยวกับสิ่งเหล่านี้จริงๆ เพราะมีข้อมูลมากมายพร้อมสำหรับโมดูลเหล่านี้

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

เสบียง

เมื่อซื้อวัสดุสิ้นเปลือง ฉันมักจะพยายามชั่งน้ำหนักถึงความสำคัญของคุณภาพ/เอกสารประกอบเทียบกับราคา อุปกรณ์ของฉันเป็นส่วนผสมของแบรนด์ A และชิ้นส่วนจีนราคาถูก Mouser เป็นซัพพลายเออร์ที่ยอดเยี่ยมหากคุณภาพเป็นสิ่งสำคัญ ฉันสั่งซื้อชิ้นส่วนที่ถูกกว่าจาก Banggood/AliExpress

- บอร์ด ESP32 ฉันใช้ Huzzah32 จาก adafruit แต่มีตัวเลือกอื่นๆ (ถูกกว่า) อีกมาก ฉันเลือก Huzzah32 เพราะมันได้รับการบันทึกไว้เป็นอย่างดี

- จอแสดงผล I2C OLED ขนาด 1.3 นิ้ว 4 จอ (128x64 พร้อมไดรเวอร์ SH1106) จอ 0.96" นั้นธรรมดากว่า แต่สำหรับโปรเจ็กต์นี้ ฉันชอบจอ 1.3"

- ไดรเวอร์ Sparkfun femtobuck เพื่อขับเคลื่อน LED

- นาฬิกา RTC ฉันใช้อันเดียวกับเซลล์ลิเธียม

- Arduino นาโน

- พอร์ต USB 2.0 ตัวเมีย (ฉันใช้: SS-52200-002 จาก Stewart Connector)

- แจ็ค DC ตัวเมีย (ฉันใช้: L722A จาก Switchcraft)

- อะแดปเตอร์ DC 12V 3A (GST36E12-P1J จาก Mean Well)

- PCB แบบกำหนดเอง เป็นทางเลือก แต่สิ่งนี้ทำให้โปรเจ็กต์มีขนาดกะทัดรัดและสามารถซ่อมบำรุงได้ง่ายหากชิ้นส่วนตาย + ความน่าเชื่อถือมากขึ้นเนื่องจากมีสายไฟน้อยกว่า (jlcpcb.com)

- สกรูและน๊อต M3

- เม็ดมีดทองเหลือง M3

- โมดูลสเต็ปดาวน์ 12V ถึง 5V จาก Pololu (DF24V22F5)

- กำลังไฟ 3 วัตต์ พร้อมฮีทซิงค์

- สายจัมเปอร์

- Buzzer

- มัลติเพล็กเซอร์ I2C (TCA9548A จาก adafruit)

- ตัวเข้ารหัสแบบโรตารี่ 2 ตัว (ฉันได้ลองมาบ้างแล้ว บางตัวอาจใช้ไม่ได้กับรหัสของฉัน ตัวจาก "DFrobot" ใช้งานได้ และตัวเข้ารหัสจาก PCB ทรงกลมจาก "DIYmore" ก็เช่นกัน โค้ดของฉันดูเหมือนจะใช้ไม่ได้กับปุ่มกด ของประเภท KY-040 นาฬิกาปลุกของฉันใช้นาฬิกาปลุกจาก DIYmore เพราะติดตั้งง่ายมาก (ไม่ต้องใช้สกรู/รูเพิ่มเติม)

- การแบ่งประเภทของส่วนหัวของหญิง (ไม่จำเป็น)

- ไม้สำหรับโครง: 18mmx18mmx2400mm

- กระดาษลอกลาย

ฉันใช้เครื่องมือบางอย่าง (หัวแร้ง มือ 3 เลื่อย…) เช่นกัน แต่ไม่มีอะไรแปลกใหม่จริงๆ

ขั้นตอนที่ 1: การใช้ Oled

ใช้ Oled
ใช้ Oled
ใช้ Oled
ใช้ Oled
ใช้ Oled
ใช้ Oled

ในการใช้ OLED คุณต้องติดตั้งไลบรารี ฉันใช้ U8G2lib จาก Oli Kraus มันเข้าใจได้ดีมากและมีคู่มืออ้างอิงพร้อมตัวอย่างที่ชัดเจน

ในการต่อบอร์ดของคุณ (ESP หรือ Arduino) คุณต้องค้นหาพิน SDA และ SCL หมุดเหล่านี้เป็นหมุดสื่อสาร I2C Google สำหรับ "pinout" ของบอร์ดเฉพาะของคุณหากคุณไม่พบ

ฉันได้เพิ่มโค้ดตัวอย่างแล้ว รหัสนี้ใช้ได้กับทั้ง Arduino และ ESP32 แต่ ESP32 มีโอกาสน้อยที่หน่วยความจำจะหมด oleds ทั้งหมดที่ฉันได้ลองมานั้นใช้ได้กับทั้ง 3.3v (ESP32) และ 5V

ขั้นตอนที่ 2: OLED หลายตัว

OLED หลายตัว
OLED หลายตัว

นี่คือจุดที่โปรเจ็กต์ของฉันเริ่มแตกต่างจากนาฬิกาปลุกอื่นๆ มากมาย Arduinos/ESP ส่วนใหญ่มีพิน I2C เพียงหนึ่งหรือสองพิน ประเภทนี้จำกัดการใช้ชิ้นส่วน I2C จะเกิดอะไรขึ้นหากฉันมีเซ็นเซอร์ I2C 4 ตัว และต้องการแสดงค่าที่อ่านได้บนจอแสดงผล I2C ป้อนมัลติเพล็กเซอร์ Muliplexer ช่วยให้คุณระบุส่วนต่างๆ ของ I2C ได้ 7 ส่วน สิ่งนี้ทำให้ ESP32 ของฉันใช้นาฬิกาเรียลไทม์ I2C และแสดงเวลาโดยใช้ I2C อีกครั้งบนจอแสดงผล 4 จอ (หรือมากกว่านั้น อย่าให้ฉันหยุดคุณ)

ฉันได้เพิ่มโค้ดตัวอย่างสำหรับ ESP32 จากนี้ไป ฉันไม่แน่ใจว่า Arduino จะตามทันหรือไม่ ตัวอย่างนี้ใช้เฉพาะจอแสดงผล อาจเป็นอย่างอื่น เช่น เซ็นเซอร์ I2C เป็นต้นเช่นกัน หลักการเหมือนเดิมเสมอ คุณเรียกแชนเนลที่ถูกต้องด้วย "tcaselect(#);" ฟังก์ชัน จากนั้นคุณรันโค้ดใดๆ ที่จำเป็นสำหรับอ็อบเจกต์ I2C ของคุณ

ขั้นตอนที่ 3: การสร้างเมนูแบบเลื่อนได้ด้วย Rotary Encoder

การสร้างเมนูแบบเลื่อนได้ด้วย Rotary Encoder
การสร้างเมนูแบบเลื่อนได้ด้วย Rotary Encoder
การสร้างเมนูแบบเลื่อนได้ด้วย Rotary Encoder
การสร้างเมนูแบบเลื่อนได้ด้วย Rotary Encoder
การสร้างเมนูแบบเลื่อนได้ด้วย Rotary Encoder
การสร้างเมนูแบบเลื่อนได้ด้วย Rotary Encoder

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

ห้องสมุดที่ฉันใช้คือห้องสมุดนี้:

ฉันหวังว่า PDF ที่ฉันเพิ่มเข้าไปจะช่วยในโครงสร้างเมนูที่ฉันใช้กับนาฬิกาของฉัน

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

ขั้นตอนที่ 4: การใส่รหัสก่อนหน้าเข้าด้วยกัน

การใส่รหัสก่อนหน้าเข้าด้วยกัน
การใส่รหัสก่อนหน้าเข้าด้วยกัน

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

เมื่อคุณเข้าใจวิธีการสร้างเมนู คุณจะพบว่าการเพิ่มหรือลบคุณสมบัติตามที่คุณต้องการนั้นง่ายมาก บางทีคุณอาจต้องการดึงข้อมูลสภาพอากาศหรือเวลาปัจจุบันจากอินเทอร์เน็ตและแสดงหรือไม่

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

ขั้นตอนที่ 5: PCB แบบกำหนดเองด้วย Fritzing + Schematic

PCB แบบกำหนดเองพร้อม Fritzing + Schematic
PCB แบบกำหนดเองพร้อม Fritzing + Schematic
PCB แบบกำหนดเองพร้อม Fritzing + Schematic
PCB แบบกำหนดเองพร้อม Fritzing + Schematic
PCB แบบกำหนดเองพร้อม Fritzing + Schematic
PCB แบบกำหนดเองพร้อม Fritzing + Schematic

จุดสนใจ: Adafruit ชี้ให้เห็นว่าในขณะที่คุณสามารถจ่ายไฟให้กับ huzzah32 ผ่านพิน USB ได้ คุณต้องระวังอย่าใช้ช่องจ่ายไฟ micro USB พร้อมกัน PCB ของฉันใช้พลังงานจากสเต็ปดาวน์บัค ซึ่งจะจ่ายพลังงานให้กับ huzzah ผ่านพิน USB ดังนั้นควรถอดปลั๊กไฟภายนอก/ถอด huzzah ออกจากบอร์ดเสมอเมื่อทำการอัพโหลด

ฉันตัดสินใจบัดกรีส่วนหัวของตัวเมียบน PCB เพราะช่วยให้สลับชิ้นส่วนได้ง่ายขึ้น หรือเพิ่มเซ็นเซอร์ I2C เพิ่มเติม เช่น นอกจากนี้ยังช่วยให้ฉันสามารถลบ nano หรือ ESP32 เพื่อโหลดโปรแกรมได้อย่างง่ายดาย

ฉันได้เพิ่มไฟล์ Frizting แล้ว ฉันสามารถพิมพ์นวนิยายได้ที่นี่ แต่ฉันคิดว่าตัวอย่างพูดได้ดีที่สุด ฉันเริ่มต้นด้วยแผนผังของการตั้งค่าทั้งหมด แม้ว่า Fritzing จะมีส่วนต่างๆ มากมายในถังขยะ แต่ก็ไม่ใช่ทุกอย่างที่มี บางครั้งคุณสามารถค้นหาส่วน Fritzing บนอินเทอร์เน็ต บางครั้งคุณทำไม่ได้ ส่วนที่หาไม่ได้ ก็เปลี่ยนเฉพาะส่วนหัวของตัวเมีย หากคุณคลิกขวา คุณสามารถแก้ไขส่วนหัวตามจำนวนพินที่คุณต้องการ และกำหนดพินเอาต์ให้กับมันได้ ฉันทำสิ่งนี้กับทุกส่วนที่ฉันหาไม่เจอ เนื่องจากเกือบทุกโมดูลใช้ระยะพิทช์ 0.1 นิ้ว (2.54 มม.) เท่ากัน จึงทำให้มีระยะห่างที่ถูกต้องสำหรับชิ้นส่วน

ถัดไป คุณเปลี่ยนไปใช้มุมมอง PCB ของแอป fritzing PCB จะเข้าที่ หากคุณคลิก คุณสามารถกำหนดขนาดและเลือก PCB แบบชั้นเดียวหรือสองชั้นได้ ของผมใช้ 2 ชั้น Fritzing จะแนะนำการเชื่อมต่อที่คุณสร้างขึ้นในมุมมองแผนผัง โปรแกรมมีตัวเลือกเส้นทางอัตโนมัติ แต่ฉันไม่เคยใช้ ฉันชอบจัดระเบียบการเชื่อมต่อของฉันด้วยตนเอง ในมุมมอง PCB การเชื่อมต่อสีเหลืองอยู่ที่ชั้นบนสุด สีส้มอยู่ที่ชั้นล่าง อีกครั้ง หากคุณคลิกที่การเชื่อมต่อ คุณสามารถเลือกคุณสมบัติของมันได้

ในการสร้าง PCB จริง คุณต้องส่งออกเป็นไฟล์เกอร์เบอร์ ก่อนที่คุณจะดำเนินการนี้ ภายใต้แท็บ "การกำหนดเส้นทาง" คุณสามารถตรวจสอบกฎการออกแบบได้หากตรวจสอบทุกอย่างแล้ว คุณสามารถคลิกที่ "ส่งออกสำหรับ PCB" ผู้ผลิตส่วนใหญ่จะขอไฟล์ gerber ดังนั้นให้เลือกส่งออกไปยัง gerber

ฉันสั่ง PCB จาก JLCPCB ฉันชอบที่พวกเขาเสนอราคาให้คุณทันที แน่นอนว่ามีตัวเลือกอื่น ๆ อีกมากมาย

เกี่ยวกับแผนผัง: มี 2 แรงดันไฟฟ้าที่ใช้ LED และ femtobuck ใช้พลังงานจากแหล่งจ่าย 12V โดยตรง ส่วนที่เหลือใช้พลังงานจากสเต็ปดาวน์ 5 โวลต์

ขั้นตอนที่ 6: ออกแบบ + Lasercutter

ออกแบบ + เครื่องตัดเลเซอร์
ออกแบบ + เครื่องตัดเลเซอร์
ออกแบบ + เครื่องตัดเลเซอร์
ออกแบบ + เครื่องตัดเลเซอร์

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

ฉันพบบริการตัดเลเซอร์ออนไลน์ snijlab.nl ซึ่งให้บริการสำหรับผู้ทำงานอดิเรกในเมืองรอตเตอร์ดัม (จัดส่งไปยังเบลเยียม เนเธอร์แลนด์ และเยอรมนี) บนเว็บไซต์ของพวกเขา คุณสามารถอัปโหลดภาพวาดของคุณและเสนอราคาของคุณได้ทันที ฉันใช้ Autocad ซึ่งฉันมีในที่ทำงาน แต่ซอฟต์แวร์ไม่สำคัญ มันต้องเป็นรูปวาดเวกเตอร์ (Vectr, Illustrator, Inkscape…) ร้านค้าส่วนใหญ่ใช้สีเพื่อกำหนดว่าคุณต้องการตัดหรือแกะสลัก

สิ่งที่ควรทราบ:

- แม็กซ์ ขนาดของเครื่องตัดเลเซอร์ (ฉันวาดกรอบรอบ ๆ ส่วนของฉัน)

- มิน ระยะห่างระหว่างการตัด

- ตรวจสอบให้แน่ใจว่าคุณไม่ได้วาดเส้นคู่ใดๆ เลย เลเซอร์จะส่งบอลพิเศษให้คุณ ทำให้คุณเสียค่าใช้จ่ายมากขึ้น

- เมื่อลงจุดเป็น PDF ตรวจสอบให้แน่ใจว่าได้ลงจุดแบบ 1:1 คุณไม่ต้องการย่อขนาดหรือพอดีกับกระดาษ

ขั้นตอนที่ 7: การประกอบ

การประกอบ
การประกอบ
การประกอบ
การประกอบ
การประกอบ
การประกอบ

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

ฉันได้ติดกระดาษลอกลายที่ด้านในของรูพรุนเพื่อให้แสงกระจายได้ดีขึ้น นี้จะช่วยให้แสงเรืองแสงที่ดีไป

ขั้นตอนที่ 8: อย่าหยุดที่นี่

อย่าหยุดที่นี่
อย่าหยุดที่นี่
อย่าหยุดที่นี่
อย่าหยุดที่นี่
อย่าหยุดที่นี่
อย่าหยุดที่นี่

โครงการนี้มีศูนย์กลางอยู่ที่ ESP32 ฉันแทบไม่ได้ใช้เลย ไฟในห้องนอนของฉันสามารถควบคุมจากระยะไกลได้โดยใช้ blynk การควบคุมพวกมันด้วยนาฬิกาเป็นเพียงขั้นตอนเล็กน้อย บางทีคุณอาจต้องการจอแสดงผลเพิ่มเติมที่แสดงอุณหภูมิรอบๆ บ้านของคุณ หรือเซ็นเซอร์ท้องถิ่นบางตัว (ยังคงมีการเชื่อมต่อ I2C สำรองบนมัลติเพล็กเซอร์นั้น!) อาจตั้งเวลา/ปลุกผ่านแอพและบลูทูธ?

บอกฉันทีว่าเธอเปลี่ยนไป อะไรที่เธอจะเปลี่ยน สิ่งที่ฉันควรเปลี่ยน…

แนะนำ: