สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
ในคำแนะนำนี้ คุณจะได้เรียนรู้วิธีอ่านเซ็นเซอร์วัดแสงและอุณหภูมิด้วยราสเบอร์รี่ pi และตัวแปลงอนาล็อกเป็นดิจิทัล ADS1115 และสร้างกราฟโดยใช้ matplotlib เริ่มต้นด้วยวัสดุที่จำเป็น
เสบียง
- Raspberry pi (ใครก็ได้ แต่ฉันใช้ 4)
- การ์ด MicroSD ที่ติดตั้ง Raspbian (บทช่วยสอนที่ดี:
- จอภาพ HDMI และแหล่งพลังงาน
- สายไมโคร USB
- Adafruit ADS 1115 ตัวแปลงอนาล็อกเป็นดิจิตอล:
- สายจัมเปอร์
- เซ็นเซอร์วัดแสง (LDR)
- เซ็นเซอร์อุณหภูมิ
- โพเทนชิออมิเตอร์ x2 (ค่าจะเป็นจุดกึ่งกลางของช่วงความต้านทานของเซ็นเซอร์อุณหภูมิและแสงของคุณ ซึ่งเราจะวัดในภายหลัง)
- เขียงหั่นขนม
ขั้นตอนที่ 1: ตั้งค่า Raspberry Pi. ของคุณ
1. ทำตามบทช่วยสอนนี้เพื่อตั้งค่า raspberry pi ให้คุณ:https://www.raspberrypi.org/help/noobs-setup/2/2 เปิดใช้งาน I2C: คลิกสัญลักษณ์ราสเบอร์รี่ pi ที่ด้านบนซ้าย ไปที่การตั้งค่า > การกำหนดค่า raspberry pi > อินเทอร์เฟซ > และทำเครื่องหมายที่ช่อง "เปิดใช้งาน" บน I2C จากนั้นคลิกตกลง.3 ตอนนี้เปิดหน้าต่างเทอร์มินัล ในประเภทบรรทัดคำสั่ง:
sudo apt-get อัพเกรด
sudo pip3 ติดตั้ง adafruit-circuitpython-ads1x15
sudo apt-get ติดตั้ง python-matplotlib
ขั้นตอนที่ 2: วัดแสงและเซ็นเซอร์อุณหภูมิของคุณ
ตอนนี้ เราจะต้องวัดความต้านทานของเซ็นเซอร์แสงและอุณหภูมิ ใช้เครื่องวัดโวลต์มิเตอร์ในการตั้งค่าการวัดความต้านทาน และวัดตามสายของเซ็นเซอร์วัดแสงของคุณในที่สว่างและในที่มืด บันทึกค่า ตอนนี้ใช้เครื่องวัดโวลต์ของคุณบนสายของเซ็นเซอร์อุณหภูมิของคุณในแบบร้อนและเย็น (ฉันใช้น้ำ) บันทึกค่า เราจะใช้มันในภายหลังในวงจรของเรา
ขั้นตอนที่ 3: ต่อวงจรของคุณ
1. รวบรวมวัสดุที่ระบุไว้ในรายการวัสดุสิ้นเปลือง สำหรับโพเทนชิโอมิเตอร์ ให้ใช้ค่าที่เป็นค่าเฉลี่ยของเสียงสูงและต่ำ (สว่างและมืด ร้อนและเย็น)
(สูง-ต่ำ) / 2
2. ทำตามแผนภาพวงจรด้านบน:
- เชื่อมต่อ SDA บนตัวแปลงอนาล็อกเป็นดิจิตอลกับ SDA บน pi
- เชื่อมต่อ SCL บนตัวแปลงอนาล็อกเป็นดิจิตอลกับ SCL บน pi
- เชื่อมต่อ VDD บนตัวแปลงอนาล็อกเป็นดิจิตอลเป็น 3.3v บน pi
- เชื่อมต่อ GND บนตัวแปลงอนาล็อกเป็นดิจิตอลกับกราวด์บน pi
- เชื่อมต่อส่วนประกอบที่เหลือตามแผนภาพวงจร
ขั้นตอนที่ 4: รหัส
1. พิมพ์เทอร์มินัล:
nano digital.py
2. วางรหัสที่ฉันมีด้านล่างหรือบน Github ลงในโปรแกรมแก้ไขข้อความที่ควรปรากฏขึ้น
นำเข้า matplotlib.pyplot เป็น plt
นำเข้า numpy เป็น np นำเข้าบอร์ด นำเข้าเวลานำเข้า busio นำเข้า adafruit_ads1x15.ads1115 เป็น ADS จาก adafruit_ads1x15.analog_in นำเข้า AnalogIn i2c = busio. I2C(board. SCL, board. SDA) ads = ADS. ADS1115(i2c) x = 0 light = AnalogIn (โฆษณา, ADS. P0) temp = AnalogIn(โฆษณา, ADS. P1) X1 = X2 = Y1 = Y2 = plt.ylim(-50, 1000) plt.plot(X1, Y1, label = "แสง", สี = '#0069af') plt.plot(X2, Y2, label = "Temp", สี = '#ff8000') plt.xlabel('Time(minutes)') plt.ylabel(' ระดับ') plt.title('แสงและอุณหภูมิเมื่อเวลาผ่านไป') plt.legend() ในขณะที่ True: x += 5 Y1.append(light.value/30) X1.append(x) Y2.append(temp.value /3) X2.append(x) plt.plot(X1, Y1, label = "light", color = '#0069af') plt.plot(X2, Y2, label = "Temp", color = '#ff8000') plt.pause(300)
3. ตอนนี้ให้กด CTRL+X เพื่อออก กด y เพื่อบันทึก จากนั้นกด Enter
เรียกใช้โปรแกรมของคุณโดยพิมพ์ในเทอร์มินัล:
sudo python3 digital.py
4. ปรับโพเทนชิโอมิเตอร์เพื่อให้กราฟแสดงค่าที่หลากหลาย ลองส่องแสงไปที่เซ็นเซอร์และปิดไฟในห้องเพื่อให้แน่ใจว่ากราฟแสดงค่าต่างๆ มากมาย
หากค่าใดค่าหนึ่งลดลงต่ำกว่าด้านล่าง ให้ลองลดตัวหารที่สอดคล้องกัน (บรรทัดที่ 29 และ 31)
หากค่าใดค่าหนึ่งอยู่เหนือด้านบน ให้ลองเพิ่มตัวหารที่สอดคล้องกัน (บรรทัดที่ 29 และ 31)
ขั้นตอนที่ 5: การแก้ไขปัญหา
1. ตรวจสอบการเชื่อมต่อทั้งหมดกับแผนภาพวงจรอีกครั้ง
2. การตรวจจับ I2C - จะแสดงอุปกรณ์ทั้งหมดที่เชื่อมต่อผ่าน i2c:
พิมพ์เทอร์มินัล:
sudo apt-get ติดตั้ง i2c-tools
sudo i2cdetect - y 1