สารบัญ:

ตัวบ่งชี้อุณหภูมิ CPU Raspberry Pi: 11 ขั้นตอน (พร้อมรูปภาพ)
ตัวบ่งชี้อุณหภูมิ CPU Raspberry Pi: 11 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: ตัวบ่งชี้อุณหภูมิ CPU Raspberry Pi: 11 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: ตัวบ่งชี้อุณหภูมิ CPU Raspberry Pi: 11 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: ระบบตรวจสอบวัตถุ Pytorch Object detection on Raspberry pi PART 2/2 2024, พฤศจิกายน
Anonim
Raspberry Pi CPU ตัวบ่งชี้อุณหภูมิ
Raspberry Pi CPU ตัวบ่งชี้อุณหภูมิ

ก่อนหน้านี้ฉันได้แนะนำวงจรตัวบ่งชี้สถานะการทำงานของราสเบอร์รี่ pi อย่างง่าย (ต่อไปนี้เป็น RPI)

คราวนี้ฉันจะอธิบายวงจรตัวบ่งชี้ที่มีประโยชน์มากขึ้นสำหรับ RPI ที่ทำงานในลักษณะหัวขาด (ไม่มีจอภาพ)

วงจรด้านบนแสดงอุณหภูมิของ CPU ออกเป็น 4 ระดับที่แตกต่างกัน เช่น

- ไฟ LED สีเขียวจะเปิดขึ้นเมื่ออุณหภูมิ CPU อยู่ภายใน 30 ~ 39 องศา

- ไฟ LED สีเหลืองแสดงว่าอุณหภูมิเพิ่มขึ้นในช่วง 40 ถึง 45 องศา

- ไฟ LED สีแดงดวงที่ 3 แสดงว่า CPU ร้อนขึ้นเล็กน้อยเมื่อถึง 46 ~ 49 องศา

- ไฟ LED สีแดงอีกดวงจะกะพริบเมื่ออุณหภูมิสูงกว่า 50 องศา

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

เมื่อใช้วงจรนี้ คุณไม่จำเป็นต้องดำเนินการคำสั่ง "vcgencmd วัด_temp" บ่อยๆ บนคอนโซลเทอร์มินัล

วงจรนี้จะแจ้งอุณหภูมิ CPU ปัจจุบันอย่างต่อเนื่องและสะดวก

ขั้นตอนที่ 1: การเตรียมแผนผัง

การเตรียมแผนผัง
การเตรียมแผนผัง

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

ดังนั้นฉันจึงลดความซับซ้อนของโค้ด python ให้น้อยที่สุดเท่าที่จะทำได้ และปิดลอจิกควบคุม LED ลงในวงจรฮาร์ดแวร์ภายนอก

วงจรตัวบ่งชี้อุณหภูมิ CPU (ต่อไปนี้จะเรียกว่า INICATOR) ประกอบด้วยส่วนสำคัญๆ ดังต่อไปนี้

- ออปโตคัปเปลอร์สองตัวเชื่อมต่อกับพิน RPI GPIO เพื่อรับข้อมูลระดับอุณหภูมิ เช่น 00->LOW, 01->Medium, 10->High, 11->Need cooling.

- 74LS139 (หรือ 74HC139, 2-to-4 decoder และ de-multiplexer) เอาต์พุตควบคุม (Y0, Y1, Y2, Y3) ตามอินพุต (A, B)

- เมื่ออุณหภูมิอยู่ภายใน 30 ~ 39 องศา รหัสหลามจะส่งออก 00 ไปยังพิน GPIO ดังนั้น 74LS139 รับข้อมูลอินพุต 00 (A->0, B->0)

- เมื่อป้อน 00 เอาต์พุต Y0 จะกลายเป็น LOW (โปรดอ้างอิงตารางความจริงของ 74LS139)

- เมื่อเอาต์พุต Y0 ต่ำ จะเปิดใช้งานทรานซิสเตอร์ 2N3906 PNP ส่งผลให้ LED สีเขียวติดสว่าง

- ในทำนองเดียวกัน Y1 (01 -> ตัวกลางอุณหภูมิ CPU) จะเปิดไฟ LED สีเหลืองเป็นต้น

- เมื่อ Y3 ต่ำ DB140 เปิดใช้งาน NE555 LED กระพริบวงจร (ซึ่งเป็นเรื่องปกติ 555 ไฟ LED กระพริบตาม IC) ซึ่งเป็นโหลดของทรานซิสเตอร์ BD140 PNP

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

อินพุต | เอาท์พุต

G (เปิดใช้งาน) | ข | A | Y0 | Y1 | Y2 | Y3 |

H | X | X | H | H | H | H |

L | L | L | L | H | H | H |

L | L | H | H | L | H | H |

L | H | L | H | H | L | H |

L | H | H | H | H | H | L |

เนื่องจากเอาต์พุต 74LS139 กลายเป็น LOW ทรานซิสเตอร์ชนิด PNP สามารถทำให้วงจรโดยรวมง่ายขึ้น เนื่องจากทรานซิสเตอร์ PNP จะเปิดขึ้นเมื่อขั้วฐานกลายเป็น LOW (ผมจะแสดงเวอร์ชัน NPN ท้ายเรื่องนี้)

เนื่องจากโพเทนชิออมิเตอร์ 100K รวมอยู่ในวงจรไฟกระพริบ LED NE555 เวลาเปิด/ปิด LED สีแดงจึงสามารถปรับได้อย่างอิสระตามความต้องการ

ขั้นตอนที่ 2: การสร้าง PCB Drawing

การทำ PCB Drawing
การทำ PCB Drawing

ตามที่อธิบายรูปแบบการทำงานของ INDICATOR เรามาเริ่มสร้างวงจรกัน

ก่อนทำการบัดกรีบางอย่างบนบอร์ดอเนกประสงค์ การเตรียมแบบ PCB ที่แสดงด้านบนนั้นมีประโยชน์ในการลดข้อผิดพลาดให้เหลือน้อยที่สุด

ภาพวาดถูกสร้างขึ้นโดยใช้จุดจ่ายไฟเพื่อระบุตำแหน่งแต่ละส่วนบนกระดานสากล และสร้างรูปแบบการเดินสายระหว่างชิ้นส่วนต่างๆ ด้วยสายไฟ

เนื่องจากอิมเมจพินเอาต์ของ IC และทรานซิสเตอร์ถูกจัดวางร่วมกับรูปแบบการเดินสาย PCB การบัดกรีสามารถทำได้โดยใช้ภาพวาดนี้

ขั้นตอนที่ 3: การบัดกรี

บัดกรี
บัดกรี

แม้ว่าการวาด PCB ดั้งเดิมจะไม่ใช้สายเดี่ยวในการเชื่อมต่อส่วนประกอบบน PCB แต่ฉันก็บัดกรีแตกต่างกันบ้าง

โดยใช้ตัวนำเส้นเดียว (ไม่ใช่ลวดดีบุก) ฉันกำลังพยายามลดขนาด PCB สากลที่มีวงจร INDICATOR

แต่อย่างที่คุณเห็นด้านบัดกรีของ PCB ฉันใช้ลวดดีบุกตามรูปแบบที่แสดงในรูปวาด PCB

เมื่อแต่ละส่วนประกอบเชื่อมต่อกันตามแบบต้นฉบับของการเขียนแบบ PCB การบัดกรีบอร์ด PCB ที่เสร็จสมบูรณ์รวมถึงวงจร INDICATOR จะทำงานอย่างถูกต้อง

ขั้นตอนที่ 4: การเตรียมการทดสอบ

การเตรียมการทดสอบ
การเตรียมการทดสอบ

ก่อนเชื่อมต่อ RPI วงจรที่เสร็จแล้วต้องมีการทดสอบ

เนื่องจากความผิดพลาดในการบัดกรีอาจเกิดขึ้นได้ ตัวจ่ายไฟ DC จึงถูกใช้เพื่อป้องกันความเสียหายเมื่อเกิดการลัดวงจรหรือการเดินสายผิดพลาด

สำหรับการทดสอบ INDICATOR จะมีการต่อสายไฟเพิ่มเติม 2 เส้นเข้ากับขั้วต่อแหล่งจ่ายไฟ 5V ของวงจร

ขั้นตอนที่ 5: การทดสอบ (อุณหภูมิ CPU อยู่ในระดับปานกลาง)

การทดสอบ (อุณหภูมิ CPU อยู่ในระดับปานกลาง)
การทดสอบ (อุณหภูมิ CPU อยู่ในระดับปานกลาง)

เมื่อไม่มีอินพุต 5V แล้ว 74LS139 ถอดรหัสอินพุตและเปิดใช้งานเอาต์พุต Y0 เป็น LOW (เปิด LED สีเขียว)

แต่ใช้ 5V กับอินพุต A, เอาต์พุต Y1 ของการเปิดใช้งาน 74LS139 (ต่ำ)

ดังนั้นไฟ LED สีเหลืองจึงติดดังแสดงในภาพด้านบน

ขั้นตอนที่ 6: การทดสอบ (CPU ต้องการระดับการระบายความร้อน)

การทดสอบ (CPU ต้องการระดับการระบายความร้อน)
การทดสอบ (CPU ต้องการระดับการระบายความร้อน)

เมื่อ 5V ใช้อินพุตทั้งสอง (A และ B) ของ 74LS139 ไฟ LED สีแดงดวงที่ 4 จะกะพริบ

อัตราการกะพริบสามารถเปลี่ยนได้โดยการปรับ 100K VR ตามที่แสดงในภาพด้านบน

เมื่อการทดสอบเสร็จสิ้น สามารถถอดสายเคเบิลตัวเมีย Molex 3 พินได้ 2 เส้น

ขั้นตอนที่ 7: แหล่งจ่ายไฟไปยังวงจร INDICATOR

แหล่งจ่ายไฟไปยังวงจร INDICATOR
แหล่งจ่ายไฟไปยังวงจร INDICATOR

สำหรับการจ่ายไฟให้กับวงจร INDICATOR ฉันใช้ที่ชาร์จโทรศัพท์มือทั่วไปซึ่งมีเอาต์พุตอะแดปเตอร์ 5V และ USB Type-B ตามที่แสดงในภาพด้านบน

เพื่อหลีกเลี่ยงปัญหา RPI โดยการเชื่อมต่อ 3.3V GPIO และวงจร INDICATOR ที่ใช้พลังงาน 5V อินเทอร์เฟซสัญญาณและแหล่งจ่ายไฟจะถูกแยกจากกันโดยสิ้นเชิง

ขั้นตอนที่ 8: การเดินสาย RPI

การเดินสายไฟ RPI
การเดินสายไฟ RPI

สำหรับการเชื่อมต่อวงจร INDICATOR กับ RPI ควรใช้หมุด GPIO สองตัวพร้อมกับหมุดกราวด์สองตัว

ไม่มีข้อกำหนดเฉพาะสำหรับการเลือกพิน GPIO

คุณสามารถใช้พิน GPIO สำหรับเชื่อมต่อ INDICATOR

แต่พินแบบมีสายควรกำหนดเป็นอินพุตสำหรับ 74LS139 (เช่น A, B) ในโปรแกรม python

ขั้นตอนที่ 9: โปรแกรม Python

โปรแกรมหลาม
โปรแกรมหลาม

เมื่อวงจรเสร็จสมบูรณ์ จำเป็นต้องสร้างโปรแกรม python เพื่อใช้ฟังก์ชัน INDICATOR

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

#-*- การเข้ารหัส:utf-8 -*-

นำเข้ากระบวนการย่อย สัญญาณ sys

เวลานำเข้าอีกครั้ง

นำเข้า RPi. GPIO เป็น g

A = 12

B = 16

g.setmode(g. BCM)

g.setup(A, g. OUT)

g.setup(B, g. OUT)

##

def signal_handler (sig, เฟรม):

print('คุณกด Ctrl+C!')

g.output(A, เท็จ)

g.output(B, เท็จ)

f.close()

sys.exit(0)

สัญญาณ.สัญญาณ(สัญญาณ. SIGINT,ตัวจัดการสัญญาณ)

##

ในขณะที่จริง:

f = open('/home/pi/My_project/CPU_temperature_log.txt', 'a+')

temp_str = subprocess.check_output('/opt/vc/bin/vcgencmd วัด_temp', เชลล์=จริง)

temp_str = temp_str.decode (การเข้ารหัส = 'UTF-8' ข้อผิดพลาด = 'เข้มงวด')

CPU_temp = re.findall("\d+\.\d+", temp_str)

# แยกอุณหภูมิ CPU ปัจจุบัน

current_temp = ลอย (CPU_temp[0])

ถ้า current_temp > 30 และ current_temp < 40:

# อุณหภูมิต่ำ A=0, B=0

g.output(A, เท็จ)

g.output(B, เท็จ)

เวลานอน(5)

elif current_temp >= 40 และ current_temp < 45:

# อุณหภูมิปานกลาง A=0, B=1

g.output(A, เท็จ)

g.output(B, จริง)

เวลานอน(5)

elif current_temp >= 45 และ current_temp < 50:

# อุณหภูมิสูง A=1, B=0

g.output(A, จริง)

g.output(B, เท็จ)

เวลานอน(5)

elif current_temp >= 50:

# CPU เย็นต้องสูง A=1, B=1

g.output(A, จริง)

g.output(B, จริง)

เวลานอน(5)

current_time = time.time()

formated_time = time.strftime("%H:%M:%S", time.gmtime(current_time))

f.write(str(formated_time)+'\t'+str(current_temp)+'\n')

f.close()

หน้าที่หลักของโปรแกรม python มีดังนี้

- ขั้นแรกให้ตั้งค่า GPIO 12, 16 เป็นพอร์ตเอาต์พุต

- กำหนดตัวจัดการการขัดจังหวะ Ctrl+C สำหรับปิดล็อกไฟล์และปิด GPIO 12, 16

- เมื่อเข้าสู่ลูปอนันต์ ให้เปิดไฟล์บันทึกเป็นโหมดต่อท้าย

- อ่านอุณหภูมิ CPU โดยดำเนินการ “/opt/vc/bin/vcgencmd วัด_temp” คำสั่ง

- เมื่ออุณหภูมิอยู่ในช่วง 30 ~ 39 จากนั้นให้เอาต์พุต 00 เพื่อเปิดไฟ LED สีเขียว

- เมื่ออุณหภูมิอยู่ในช่วง 40 ~ 44 จากนั้นให้ส่งสัญญาณ 01 เพื่อเปิดไฟ LED สีเหลือง

- เมื่ออุณหภูมิอยู่ในช่วง 45 ~ 49 จากนั้นให้เอาต์พุต 10 เพื่อเปิดไฟ LED สีแดง

- เมื่ออุณหภูมิมากกว่า 50 แล้วให้เอาต์พุต 11 เพื่อให้ไฟ LED สีแดงกะพริบ

- เขียนข้อมูลประทับเวลาและอุณหภูมิลงในไฟล์บันทึก

ขั้นตอนที่ 10: การทำงานของตัวบ่งชี้

การทำงานของตัวบ่งชี้
การทำงานของตัวบ่งชี้

เมื่อทุกอย่างเรียบร้อย คุณจะเห็น LED แต่ละดวงเปิดหรือกะพริบตามอุณหภูมิของ CPU

คุณไม่จำเป็นต้องป้อนคำสั่งเชลล์เพื่อตรวจสอบอุณหภูมิปัจจุบัน

หลังจากรวบรวมข้อมูลในล็อกไฟล์และแสดงผลข้อมูลข้อความเป็นกราฟโดยใช้ Excel แล้ว ผลลัพธ์จะแสดงตามภาพด้านบน

เมื่อใช้โหลดสูง (ใช้งานเบราว์เซอร์ Midori สองตัวและเล่นวิดีโอ Youtube) อุณหภูมิของ CPU จะสูงถึง 57.9C

ขั้นตอนที่ 11: การสร้างทางเลือก (โดยใช้ทรานซิสเตอร์ NPN) และการพัฒนาเพิ่มเติม

การสร้างทางเลือก (โดยใช้ทรานซิสเตอร์ NPN) และการพัฒนาเพิ่มเติม
การสร้างทางเลือก (โดยใช้ทรานซิสเตอร์ NPN) และการพัฒนาเพิ่มเติม

นี่เป็นตัวอย่างโครงการ INDICATOR ก่อนหน้านี้ที่ใช้ทรานซิสเตอร์ NPN (2N3904 และ BD139)

ดังที่คุณเห็นแล้วว่าจำเป็นต้องมี IC อีกตัวหนึ่ง (74HC04, อินเวอร์เตอร์สี่ตัว) เพื่อขับเคลื่อนทรานซิสเตอร์ NPN เนื่องจากควรใช้แรงดันไฟฟ้าระดับสูงกับฐานของ NPN เพื่อเปิดทรานซิสเตอร์

โดยสรุป การใช้ทรานซิสเตอร์ NPN จะเพิ่มความซับซ้อนที่ไม่จำเป็นเพื่อสร้างวงจร INDICATOR

สำหรับการพัฒนาโครงการต่อไป ผมจะเพิ่มพัดลมระบายความร้อนตามภาพด้านบน เพื่อให้วงจร INDICATOR มีประโยชน์มากขึ้น

แนะนำ: