» อิเล็กทรอนิกส์ » Arduino »สถานีตรวจอากาศนาฬิกาบน Arduino

ดูสถานีอากาศบน Arduino

ดูสถานีอากาศบน Arduino

สวัสดีตอนบ่ายฉันทำต่อไป Arduino ในเวลาว่างของเขาและเวลานี้เขาเขียนคำแนะนำสำหรับการผลิตของสถานีอากาศขนาดเล็ก มันจะทำหน้าที่เป็นนาฬิกาที่มีวันที่และแสดงอุณหภูมิภายในและภายนอกห้อง ในฐานะผู้ควบคุมหลักเราจะใช้ Arduino UNO แต่บอร์ดอื่นที่มี Atmega328p บนบอร์ดจะทำ สำหรับการแสดงผลเราใช้หน้าจอกราฟิก WG12864B เรายังเชื่อมต่อเซ็นเซอร์วัดอุณหภูมิ ds18b20 สองตัว หนึ่งในอาคารเราจะเอาสิ่งที่สองออกไปข้างนอก เริ่มกันเลย

ในกระบวนการผลิต ทำที่บ้าน เราจะต้อง:

- Arduino UNO (หรือบอร์ดอื่น ๆ ที่เข้ากันได้กับ Arduino)
- หน้าจอกราฟิก WG12864B
- เซ็นเซอร์อุณหภูมิ ds18b20, 2pcs
- แหล่งจ่ายไฟ 6 - 12 V
- ตัวต้านทาน 4.7 Kom 0.25 W, 2 ชิ้น
- ตัวต้านทาน 100 โอห์ม 0.25 W
- ช่องใส่แบตเตอรี่สำหรับแบตเตอรี่“ pinky” ขนาด AAA 4 ก้อน
- กล่องจากคาร์ทริดจ์ของ SEGA console
- เทปไฟฟ้า
- สายเชื่อมต่อ
- แผงวงจร
- ปุ่มต่างๆ
- มีดเครื่องเขียน
- หัวแร้ง
- บัดกรีขัดสน
- เทปสองด้าน

ขั้นตอนที่ 1 เตรียม WG12864B3
ผู้ที่ไม่ได้ทำงานกับหน้าจอก่อนหน้านี้อาจกลัวด้วยการดัดแปลงจำนวนมากซึ่งมีหน้าจอเหมือนกัน ฉันจะอธิบายเล็กน้อย หน้าจอส่วนใหญ่ของประเภทนี้ทำงานกับชิป 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 แต่ถ้าหน้าจอแตกต่างกันหรือคุณไม่มีมือคุณสามารถเข้าใจได้โดยใช้ตาราง:


ลักษณะโดยย่อ:


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


สำหรับการเชื่อมต่อแบบอนุกรมซึ่งเราจะใช้โครงร่างมีดังนี้

WG12864B - Arduino UNO
1 (GND) - GND
2 (VCC) - + 5V
4 (RS) - 10
5 (R / W) - 11
6 (E) - 13
15 (PSB) - GND
19 (BLA) - ผ่านตัวต้านทาน 100 โอห์ม - + 5V
20 (BLK) - GND


ในการปรับความคมชัดโพเทนชิออมิเตอร์ควรอยู่บนหน้าจอ มีหน้าจอที่ไม่มีมัน แต่ตอนนี้มันหายาก:


ต้องการตัวต้านทาน 100 โอห์มเพื่อให้แรงดันไฟฟ้า 5 โวลต์ไม่ได้เผาไดโอดแบ็คไลท์โดยไม่ตั้งใจ


ขั้นตอนที่ 2 สร้างเคส
สำหรับกรณีใช้กล่องจากคำนำหน้าตลับ Sega หากคุณไม่พบช่องนี้อยู่ในมือคุณสามารถใช้กรณีอื่นได้ สิ่งสำคัญคือหน้าจอและ Arduino พอดีกับมัน


ตัดแผ่นฟิล์มใสที่ด้านบนของกล่องเพื่อไม่ให้มีเศษเหลือ:


จากนั้นใช้มีดเสมียนตัดหน้าต่างขนาด 37x69 สำหรับหน้าจอ


ที่ด้านหลังตามขอบของการตัดเราติดเทปกาวสองหน้าโดยเฉพาะสีดำ:


นำกระดาษป้องกันออกจากเทปกาวและติดกาวที่หน้าจอของเรา:


จากภายนอกควรมีลักษณะเช่นนี้:


ด้านล่างของหน้าจอนอกจากนี้ยังมีเทปสองด้านเราติดตั้ง Arduino ทำให้การตัดเบื้องต้นสำหรับพอร์ต USB และช่องเสียบไฟ:


ช่องเจาะสำหรับ Arduino ต้องทำทั้งสองด้านของกล่องเพื่อให้สามารถปิดได้อย่างอิสระ:


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


หากคุณต้องการคุณสามารถใช้โหมดพลังงานปรสิต:


หรือตัวเลือกอาหารกาฝากที่ดีขึ้น:


ด้วยแหล่งจ่ายไฟใด ๆ เซ็นเซอร์จะเชื่อมต่อแบบขนาน:


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


สายสามัญจากทั้งสองปุ่มเชื่อมต่อกับ GND สายจากปุ่มแรกเชื่อมต่อกับ A0 จากที่สองถึง A1
ยึดกับเทปกาวสองหน้าติดกับ Arduino:


เซ็นเซอร์ที่ควรวางไว้ด้านนอกห้องควรเลือกที่อยู่อาศัยที่เป็นโลหะฝุ่นและความชื้น:


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

สายจากบัสข้อมูล DQ ของเซ็นเซอร์ทั้งสองเชื่อมต่อกับขา 5 ของ Arduino
Vdd - +5 Arduino
GND - GND Arduino


ขั้นตอนที่ 4 พลังงาน
สำหรับพลังงานคุณสามารถใช้แหล่งจ่ายไฟที่มีแรงดันไฟฟ้า 6 ถึง 12 โวลต์ ในตอนท้ายของสายไฟเปลวไฟบัดกรีปลั๊กเหมาะสำหรับซ็อกเก็ตไฟ Arduino:


หรือคุณสามารถใส่ช่องใส่แบตเตอรี่สำหรับแบตเตอรี่“ AAA”,“ pinky” สี่ก้อนในเคส และเชื่อมต่อสายบวกจากช่องไปยัง Vin Arduino และลบด้วย GND

ขั้นตอนที่ 5 การเตรียมสภาพแวดล้อมการเขียนโปรแกรม
ก่อนอื่นคุณต้องดาวน์โหลดและติดตั้ง Arduino IDE ด้วย เว็บไซต์อย่างเป็นทางการ

และเพิ่มลงในไลบรารีทั้งสองที่จำเป็นสำหรับร่าง OneWire - จำเป็นสำหรับการสื่อสารกับเซ็นเซอร์ ds18b20:
onewire.rar [16.75 Kb] (ดาวน์โหลด: 34)


U8glib - ใช้เพื่อแสดงข้อมูลบนหน้าจอ:
u8glib.rar [906.95 Kb] (ดาวน์โหลด: 46)


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

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

byte addr1 [8] = {0x28, 0xFF, 0x75, 0x4E, 0x87, 0x16, 0x5, 0x63}; // ที่อยู่ภายใน
byte addr2 [8] = {0x28, 0xFF, 0xDD, 0x14, 0xB4, 0x16, 0x5, 0x97}; // ที่อยู่ของเซ็นเซอร์ภายนอก


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

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


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

หากนาฬิกากำลังรีบเปลี่ยนค่าเป็นนาฬิกาที่ใหญ่กว่าฉันขอแนะนำให้ทดลองเพิ่มหน่วยละ 100 หาก lagging ให้ลดค่าในบรรทัด:

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


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

ard_tic_tak_wg12864b_2_x_term_serial.rar [3.2 Kb] (ดาวน์โหลด: 90)

ฟังก์ชั่นหรือความงาม?
ผู้ลงคะแนนทั้งหมด: 19
8
8.3
7.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ห้ามใกล้
3 แสดงความคิดเห็น
ผู้เขียน
น่าเสียดายที่ฉันไม่ทราบว่า analogs ของจอภาพถูกกว่า
และงบประมาณที่มากขึ้นที่เป็นไปได้ที่จะแทนที่จอแสดงผลนี้พวกเขาดูจาก 500 รูเบิล
สำหรับ denyushki เหล่านี้คุณสามารถซื้อสถานีอากาศสำเร็จรูปพร้อมด้วยตัวบ่งชี้อุณหภูมิไม่เพียง แต่ยังรวมถึงความดันและความชื้นและด้วยการบ่งชี้ทิศทางการเปลี่ยนแปลงของค่าที่วัดได้! รอยยิ้ม
สวัสดีตอนเย็น และงบประมาณที่มากขึ้นที่เป็นไปได้ที่จะแทนที่จอแสดงผลนี้พวกเขาดูจาก 500 รูเบิล
ขอขอบคุณ!

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

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