» อิเล็กทรอนิกส์ » Arduino »นาฬิกา Arduino พร้อมเซ็นเซอร์อุณหภูมิและไม่มี RTS

นาฬิกา Arduino พร้อมเซ็นเซอร์อุณหภูมิและไม่มี RTS

นาฬิกา Arduino พร้อมเซ็นเซอร์อุณหภูมิและไม่มี RTS

สวัสดีตอนนี้ฉันจะบอกวิธีการทำนาฬิกาด้วยเทอร์โมมิเตอร์วัดอุณหภูมิห้อง นาฬิกาทำงานต่อไป Arduino หน้าจอกราฟิก UNO, WG12864B ใช้เพื่อแสดงเวลาและอุณหภูมิ ในฐานะที่เป็นเซ็นเซอร์อุณหภูมิ - ds18b20 ต่างจากนาฬิกาอื่น ๆ ส่วนใหญ่ฉันจะไม่ใช้ RTS (นาฬิกาเรียลไทม์) แต่พยายามที่จะทำโดยไม่มีโมดูลเพิ่มเติมนี้

สำหรับสิ่งนี้ ทำที่บ้าน ต้องมีส่วนประกอบต่อไปนี้:
- Arduino UNO (หรือบอร์ดอื่น ๆ ที่เข้ากันได้กับ Arduino)
- หน้าจอกราฟิก WG12864B
- เซ็นเซอร์อุณหภูมิ ds18b20
- ตัวต้านทาน 4.7 Kom 0.25 W
- ตัวต้านทาน 100 โอห์ม 0.25 W
- ช่องใส่แบตเตอรี่สำหรับถ่าน AA 4 ก้อน“ แบบนิ้วมือ”
- กล่องที่เหมาะสม
- ไฟล์ขนาดเล็ก
- น้ำยาทาเล็บ (สีดำหรือสีตัวถัง)
- พลาสติกหรือกระดาษแข็งเล็ก ๆ
- เทปไฟฟ้า
- สายเชื่อมต่อ
- แผงวงจร
- ปุ่มต่างๆ
- หัวแร้ง
- บัดกรีขัดสน
- เทปสองด้าน

ขั้นตอนที่ 1 การเตรียมกล่องหุ้ม
ดังนั้นนาฬิกาของเราควรอยู่ที่ไหนสักแห่ง คุณต้องหากล่องที่เหมาะสม สิ่งสำคัญคือหน้าจอ WG12864B, Arduino และแผงวงจรขนาดเล็กสำหรับปุ่มนั้นพอดี ขนาดกล่องขั้นต่ำคือ 7 x 7 x 10 ซม. ถ้าคุณใช้บอร์ด Arduino ขนาดเล็กคุณสามารถผลักมันลงในกล่องขนาดเล็กกว่าได้ แต่ฉันจะอธิบายกระบวนการโดยใช้ตัวอย่างของ Arduino UNO วัสดุที่ใช้ทำกล่องนั้นเป็นพลาสติกโดยเฉพาะถ้าเป็นของฉันมันเป็นเหล็กมันก็คุ้มค่าที่จะดูแลฉนวนเพื่อไม่ให้มีสิ่งใดที่จะ "ไปรอบ ๆ " ข้างใน พลาสติกดีกว่าเพราะง่ายต่อการตัด ด้วยกล่องเขาเป็นกรณีของนาฬิกาของเราตัดสินใจ ตอนนี้มีความจำเป็นต้องตัดหน้าต่างใต้หน้าจอขนาด 6.5x4 ซม. ถ้ากล่องเป็นเหล็กมันเป็นเรื่องยากมากที่จะทำอย่างระมัดระวัง ไม่ว่าคุณจะพยายามแค่ไหนก็จะมีการบิ่นสีและความหยาบกร้านใกล้กับบาดแผล ดังนั้นก่อนอื่นเราจึงตัดมันออกสำหรับสิ่งนี้คุณสามารถใช้ "เครื่องบด", สว่านพร้อมหัวฉีดสำหรับการตัดหรือเครื่องตัดกัดโดยทั่วไปตามที่คุณเลือกพร้อมกับสิ่งที่อยู่ในมือ หลังจากนั้นเราทำความสะอาดขอบด้วยไฟล์ เราทาสีสีบิ่นทั้งหมดด้วยยาทาเล็บสีที่เหมาะสม ผลลัพธ์ควรเป็นดังนี้:


ขั้นตอนที่ 2 เตรียมหน้าจอกราฟิก
ด้วยการเชื่อมต่อของหน้าจอได้อย่างรวดเร็วก่อนเกิดปัญหาและปัญหามากมาย แต่ถ้าคุณจัดการกับประเภทของพวกเขาครั้งแรกมันจะง่ายขึ้นและเข้าใจได้ง่ายขึ้น มีหน้าจอหลากหลายรูปแบบและหลายประเภทบนคอนโทรลเลอร์ ks0107 / ks0108หน้าจอทั้งหมดมักจะแบ่งออกเป็น 4 ประเภท:
ตัวเลือก A: HDM64GS12L-4, Crystalfontz CFAG12864B, Sparkfun LCD-00710CM, NKC Electronics LCD-0022, WinStar WG12864B-TML-T
ตัวเลือก B: HDM64GS12L-5, Lumex LCM-S12864GSF, Futurlec BLUE128X64LCD, AZ แสดง AGM1264F, Displaytech 64128A BC, Adafruit GLCD, DataVision DG12864-88, Topway LM12864LDW, Digitron SG128646JJ1, QY 2
ตัวเลือก C: เซินเจิ้นจิงหัวแสดง จำกัด JM12864
ตัวเลือก D: Wintek-Cascades WD-G1906G, Wintek-GEN / WD-G1906G / KS0108B, Wintek / WD-G1906G / S6B0108A, TECDIS / Y19061 / HD61202, Varitronix / MGLS19264 / HD61202

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


สิ่งนี้จะช่วยลดจำนวนชิ้นส่วนและเวลาในการบัดกรี นอกจากนี้ยังควรใส่ตัวต้านทาน จำกัด กระแสไฟ 100 โอห์มสำหรับแบ็คไลท์ เมื่อเชื่อมต่อ 5 โวลท์โดยตรงจะทำให้เสี่ยงต่อการเผาแบ็คไลท์
WG12864B - Arduino UNO
1 (GND) - GND
2 (VCC) - + 5V
4 (RS) - 10
5 (R / W) - 11
6 (E) - 13
15 (PSB) - GND
19 (BLA) - ผ่านตัวต้านทาน - + 5V
20 (BLK) - GND

สิ่งที่สะดวกที่สุดคือการรวบรวมทุกอย่างที่อยู่ด้านหลังหน้าจอและส่งออกสายไฟ 5 เส้นเพื่อเชื่อมต่อกับ Arduino UNO ผลลัพธ์ควรเป็นดังนี้:


สำหรับผู้ที่ยังคงเลือกการเชื่อมต่อแบบขนานฉันจะให้ตารางการเชื่อมต่อ


และเลย์เอาต์สำหรับหน้าจอตัวเลือก B:


ขั้นตอนที่ 3 เชื่อมต่อเซ็นเซอร์อุณหภูมิ
อย่างที่ฉันบอกไปแล้วเราจะใช้เซ็นเซอร์รวม DS18B20 เพื่อวัดอุณหภูมิ ฉันเลือกใช้เพื่อความแม่นยำในการวัดสูงข้อผิดพลาดไม่เกิน 0.5 ° C เซ็นเซอร์ถูกปรับเทียบในเวลาที่ผลิตโดยไม่จำเป็นต้องมีการตั้งค่าเพิ่มเติม ช่วงการวัดอุณหภูมิ -55 ... + 125 ° C มีโหมดการทำงานสองโหมด: ด้วยแหล่งพลังงานภายนอกและ "พลังงานปลอม" เมื่อทำงานในโหมดพลังงานภายนอกการเชื่อมต่อจะเป็นดังนี้:


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


หรือคุณสามารถใช้แผนภาพการเดินสายที่ได้รับการปรับปรุงเมื่อใช้ "พลังงานเก๊บ"


เซ็นเซอร์หลายตัวสามารถรวมอยู่ในสายสื่อสารเดียว สำหรับนาฬิกาของเรามีเพียงพอแล้ว เราเชื่อมต่อสายไฟจาก“ DQ” ds18b20 พินกับ Arduino“ UNO 5”

ขั้นตอนที่ 4 การเตรียมบอร์ดด้วยปุ่ม
ในการตั้งเวลาและวันที่บนนาฬิกาเราจะใช้ปุ่มสามปุ่ม เพื่อความสะดวกให้บัดกรีปุ่มทั้งสามบนแผงวงจรและสายไฟออก


เราเชื่อมต่อดังนี้: ลวดที่ใช้ร่วมกันกับทั้งสามปุ่มเชื่อมต่อกับ“ GND” Arduino ปุ่มแรกมันทำหน้าที่ในการเข้าสู่โหมดการตั้งค่าเวลาและสลับเวลาและวันที่เชื่อมต่อกับ "Pin 2" ปุ่มที่สองสำหรับการเพิ่มค่าคือ "Pin 3" และปุ่มที่สามสำหรับการลดค่าคือ "Pin 4"

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


ที่ด้านหน้าของหน้าจอตามขอบเราติดเทปกาวสองหน้าไว้บนฐานโฟมโดยเฉพาะสีดำ


เราเชื่อมต่อหน้าจอกับ Arduino:


นอกจากนี้เราเชื่อมต่อจากช่องใส่แบตเตอรี่ไปที่ Arduino“ VIN” ลบด้วย“ GND” เราวางไว้ด้านหลัง Arduino ก่อนการติดตั้งในกรณีอย่าลืมเชื่อมต่อเซ็นเซอร์อุณหภูมิและบอร์ดด้วยปุ่ม


ขั้นตอนที่ 6 เตรียมและเติมร่าง
เซ็นเซอร์อุณหภูมิต้องการห้องสมุด OneWire
onewire.rar [16.75 Kb] (ดาวน์โหลด: 154)


ผลลัพธ์ไปยังหน้าจอผ่านไลบรารี U8glib:
u8glib.rar [906.95 Kb] (ดาวน์โหลด: 156)


หากต้องการแก้ไขและเติมภาพร่างให้ติดตั้งไลบรารีทั้งสองนี้ มีสองวิธีในการทำเช่นนี้ เพียงเปิดเครื่องรูดไฟล์เก็บถาวรเหล่านี้และวางไฟล์ที่คลายซิปไว้ในโฟลเดอร์“ libraries” ที่อยู่ในโฟลเดอร์ที่ติดตั้ง Arduino IDEหรือตัวเลือกที่สองคือการติดตั้งไลบรารีโดยตรงในสภาพแวดล้อมการเขียนโปรแกรม โดยไม่ต้องเปิดไฟล์เก็บถาวรที่ดาวน์โหลดใน Arduino IDE ให้เลือกเมนู Sketch - Connect Library ที่ด้านบนสุดของรายการแบบหล่นลงเลือกรายการ "เพิ่ม. ห้องสมุดซิป" ในกล่องโต้ตอบที่ปรากฏขึ้นให้เลือกไลบรารีที่คุณต้องการเพิ่ม เปิดเมนู Sketch - Connect Library อีกครั้ง ที่ด้านล่างสุดของรายการแบบหล่นลงคุณจะเห็นห้องสมุดใหม่ ตอนนี้ไลบรารีสามารถใช้ในโปรแกรม อย่าลืมรีบูต Arduino IDE หลังจากทั้งหมดนี้

เซ็นเซอร์อุณหภูมิทำงานตามโปรโตคอล One Wire และมีที่อยู่เฉพาะสำหรับแต่ละอุปกรณ์ - รหัส 64 บิต ทุกครั้งที่มองหารหัสนี้จะใช้การไม่ได้ ดังนั้นก่อนอื่นคุณต้องเชื่อมต่อเซ็นเซอร์กับ Arduino กรอกแบบร่างที่อยู่ในไฟล์ - ตัวอย่าง - อุณหภูมิ Dallas - เมนู OneWireSearch ถัดไปเรียกใช้เครื่องมือ - การตรวจสอบพอร์ต Arduino ควรหาเซ็นเซอร์ของเราเขียนที่อยู่และอ่านอุณหภูมิปัจจุบัน เราคัดลอกหรือเขียนที่อยู่ของเซ็นเซอร์ของเรา เปิดร่าง Arduino_WG12864B_Term มองหาบรรทัด:

byte addr [8] = {0x28, 0xFF, 0xDD, 0x14, 0xB4, 0x16, 0x5, 0x97}; // ที่อยู่ของเซ็นเซอร์ของฉัน 


เราจดที่อยู่ของเซ็นเซอร์ของคุณระหว่างวงเล็บปีกกาแทนที่ที่อยู่ของเซ็นเซอร์ของฉัน

Photo:

//u8g.setPrintPos (44, 64); u8g.print (sek); // พิมพ์วินาทีเพื่อตรวจสอบความถูกต้องของหลักสูตร


แสดงวินาทีถัดจาก“ ข้อมูล” นี่เป็นสิ่งจำเป็นในการกำหนดเวลา
หากนาฬิกากำลังรีบหรือล้าหลังคุณควรเปลี่ยนค่าในบรรทัด:

if (micros () - prevmicros> 494000) {// เปลี่ยนเป็นอื่นเพื่อปรับค่า 500,000


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

เติมร่าง
arduino_wg12864b_term.rar [3.64 Kb] (ดาวน์โหลด: 314)

7
9
5.3

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

    • รอยยิ้มรอยยิ้ม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ห้ามใกล้

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

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