สารบัญ:

สถานีตรวจอากาศใช้ Raspberry Pi กับ BME280 ใน Python: 6 ขั้นตอน
สถานีตรวจอากาศใช้ Raspberry Pi กับ BME280 ใน Python: 6 ขั้นตอน

วีดีโอ: สถานีตรวจอากาศใช้ Raspberry Pi กับ BME280 ใน Python: 6 ขั้นตอน

วีดีโอ: สถานีตรวจอากาศใช้ Raspberry Pi กับ BME280 ใน Python: 6 ขั้นตอน
วีดีโอ: 08 | Indoor Weather Station | BME280 | Temperature, Humidity & Pressure Sensor 2024, กรกฎาคม
Anonim
Image
Image
บิลค่าอุปกรณ์ที่จำเป็น
บิลค่าอุปกรณ์ที่จำเป็น

คือ maith an scéalaí an aimsir (อากาศเป็นผู้เล่าเรื่องที่ดี)

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

ขั้นตอนที่ 1: บิลค่าอุปกรณ์ที่จำเป็น

บิลค่าอุปกรณ์ที่จำเป็น
บิลค่าอุปกรณ์ที่จำเป็น
บิลค่าอุปกรณ์ที่จำเป็น
บิลค่าอุปกรณ์ที่จำเป็น
บิลค่าอุปกรณ์ที่จำเป็น
บิลค่าอุปกรณ์ที่จำเป็น

1. พายราสเบอร์รี่

จับมือกับบอร์ด Raspberry Pi Raspberry Pi เป็นคอมพิวเตอร์บอร์ดเดี่ยวที่ขับเคลื่อนโดย Linux Raspberry Pi มีราคาถูก เล็กและใช้งานได้หลากหลาย สร้างขึ้นจากคอมพิวเตอร์ที่เข้าถึงได้และใช้งานได้สำหรับผู้เรียนในการฝึกพื้นฐานการเขียนโปรแกรมและการพัฒนาซอฟต์แวร์

2. I2C Shield สำหรับ Raspberry Pi

INPI2 (อะแดปเตอร์ I2C) มีพอร์ต I²C ของ Raspberry Pi 2/3 สำหรับใช้กับอุปกรณ์ I2C หลายเครื่อง มีจำหน่ายที่ DCUBE Store

3. เซ็นเซอร์ความชื้น ความดัน และอุณหภูมิแบบดิจิตอล BME280

BME280 เป็นเซ็นเซอร์ความชื้น ความดัน และอุณหภูมิที่มีเวลาตอบสนองที่รวดเร็วและมีความแม่นยำโดยรวมสูง เราซื้อเซ็นเซอร์นี้จากร้าน DCUBE

4. สายเคเบิลเชื่อมต่อ I2C

เราใช้สายเคเบิล I²C ที่มีให้ที่นี่ DCUBE Store

5. สายไมโคร USB

แหล่งจ่ายไฟสาย micro USB เป็นตัวเลือกที่เหมาะสำหรับการจ่ายไฟให้กับ Raspberry Pi

6. ตีความการเข้าถึงอินเทอร์เน็ตผ่าน EthernetCable/WiFi Adapter

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

7. สาย HDMI (สายแสดงผลและสายเชื่อมต่อ)

จอภาพ HDMI/DVI และทีวีใดๆ ควรทำงานเป็นจอแสดงผลสำหรับ Pi หรือคุณสามารถเข้าถึง Pi จากระยะไกลผ่าน SSH โดยไม่จำเป็นต้องมีจอภาพ (ผู้ใช้ขั้นสูงเท่านั้น)

ขั้นตอนที่ 2: การเชื่อมต่อฮาร์ดแวร์สำหรับวงจร

การเชื่อมต่อฮาร์ดแวร์สำหรับวงจร
การเชื่อมต่อฮาร์ดแวร์สำหรับวงจร
การเชื่อมต่อฮาร์ดแวร์สำหรับวงจร
การเชื่อมต่อฮาร์ดแวร์สำหรับวงจร

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

การเชื่อมต่อ Raspberry Pi และ I2C Shield

ขั้นแรก นำ Raspberry Pi และวาง I²C Shield ลงไป กดโล่เบา ๆ และเราทำขั้นตอนนี้ง่ายเหมือนพาย (ดูรูป)

การเชื่อมต่อของเซนเซอร์และ Raspberry Pi

นำเซ็นเซอร์และต่อสายI²Cด้วย ตรวจสอบให้แน่ใจว่าเอาต์พุตI²Cเชื่อมต่อกับอินพุตI²Cเสมอ ต้องปฏิบัติตามเช่นเดียวกันสำหรับ Raspberry Pi ที่มีแผงป้องกัน I²C ติดตั้งอยู่เหนือหมุด GPIO เราขอแนะนำให้ใช้สายเคเบิล I²C เนื่องจากไม่จำเป็นต้องอ่านพิน การบัดกรี และอาการไม่สบายที่เกิดจากแม้แต่การเลื่อนหลุดเพียงเล็กน้อย. ด้วยสายเคเบิลแบบพลักแอนด์เพลย์ที่เรียบง่ายนี้ คุณสามารถติดตั้ง สลับบอร์ด หรือเพิ่มบอร์ดอื่นๆ ในแอปพลิเคชันได้อย่างง่ายดาย

หมายเหตุ: สายสีน้ำตาลควรเป็นไปตามการเชื่อมต่อกราวด์ (GND) ระหว่างเอาต์พุตของอุปกรณ์หนึ่งกับอินพุตของอุปกรณ์อื่นเสมอ

การเชื่อมต่ออินเทอร์เน็ตเป็นสิ่งสำคัญ

คุณมีสองทางเลือกที่นี่ คุณสามารถเชื่อมต่อ Raspberry Pi กับเครือข่ายโดยใช้สายอีเธอร์เน็ตหรือใช้อะแดปเตอร์ USB เป็น WiFi สำหรับการเชื่อมต่อ WIFI ไม่ว่าจะด้วยวิธีใด ตราบใดที่คุณเชื่อมต่ออินเทอร์เน็ต

การเปิดเครื่องวงจร

เสียบสาย Micro USB เข้ากับแจ็คไฟของ Raspberry Pi ชกแล้วโว้ย! ทีมของเราคือข้อมูล

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

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

เป็นวิธีที่ประหยัดหากคุณไม่ต้องการใช้จ่ายมาก

ขั้นตอนที่ 3: การเขียนโปรแกรม Raspberry Pi ใน Python

การเขียนโปรแกรม Raspberry Pi ใน Python
การเขียนโปรแกรม Raspberry Pi ใน Python

รหัส Python สำหรับ Raspberry Pi และ BME280 Sensor มีอยู่ในที่เก็บ Github ของเรา

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

รหัสอยู่ตรงหน้าคุณอย่างชัดเจนและอยู่ในรูปแบบที่ง่ายที่สุดที่คุณสามารถจินตนาการได้และคุณไม่น่าจะมีปัญหา ยังคงถามว่ามีไหม (ถึงรู้เป็นพันก็ยังถามผู้รู้)

คุณสามารถคัดลอกโค้ด Python ที่ใช้งานได้สำหรับเซ็นเซอร์นี้จากที่นี่เช่นกัน

# แจกจ่ายด้วยใบอนุญาตฟรี # ใช้งานได้ตามที่คุณต้องการ ไม่ว่าจะมีกำไรหรือให้เปล่า หากเหมาะสมกับใบอนุญาตของงานที่เกี่ยวข้อง # BME280 # รหัสนี้ออกแบบมาเพื่อทำงานกับ BME280_I2CS I2C Mini Module ที่มีจำหน่ายจาก ControlEverything.com #

นำเข้า smbus

เวลานำเข้า

# รับรถบัส I2C

รถบัส = smbus. SMBus(1)

# BME280 ที่อยู่ 0x76 (118)

# อ่านข้อมูลย้อนหลังตั้งแต่ 0x88(136), 24 ไบต์ b1 = bus.read_i2c_block_data(0x76, 0x88, 24)

#แปลงข้อมูล

# ค่าสัมประสิทธิ์อุณหภูมิ dig_T1 = b1[1] * 256 + b1[0] dig_T2 = b1[3] * 256 + b1[2] if dig_T2 > 32767: dig_T2 -= 65536 dig_T3 = b1[5] * 256 + b1[4] ถ้า dig_T3 > 32767: dig_T3 -= 65536

# ค่าสัมประสิทธิ์ความดัน

dig_P1 = b1[7] * 256 + b1[6] dig_P2 = b1[9] * 256 + b1[8] ถ้า dig_P2 > 32767: dig_P2 -= 65536 dig_P3 = b1 [11] * 256 + b1 [10] ถ้า dig_P3 > 32767: dig_P3 -= 65536 dig_P4 = b1[13] * 256 + b1[12] if dig_P4 > 32767: dig_P4 -= 65536 dig_P5 = b1[15] * 256 + b1 [14] if dig_P5 > 32767: dig_P5 -= 65536 dig_P6 = b1 [17] * 256 + b1 [16] if dig_P6 > 32767: dig_P6 -= 65536 dig_P7 = b1 [19] * 256 + b1 [18] ถ้า dig_P7 > 32767: dig_P7 -= 65536 dig_P8 = b1[21] * 256 + b1[20] ถ้า dig_P8 > 32767: dig_P8 -= 65536 dig_P9 = b1[23] * 256 + b1[22] ถ้า dig_P9 > 32767: dig_P9 -= 65536

# BME280 ที่อยู่ 0x76 (118)

# อ่านข้อมูลย้อนหลังจาก 0xA1(161), 1 ไบต์ dig_H1 = bus.read_byte_data(0x76, 0xA1)

# BME280 ที่อยู่ 0x76 (118)

# อ่านข้อมูลย้อนหลังจาก 0xE1 (225), 7 ไบต์ b1 = bus.read_i2c_block_data(0x76, 0xE1, 7)

#แปลงข้อมูล

# ค่าสัมประสิทธิ์ความชื้น dig_H2 = b1[1] * 256 + b1[0] if dig_H2 > 32767: dig_H2 -= 65536 dig_H3 = (b1[2] & 0xFF) dig_H4 = (b1[3] * 16) + (b1[4] & 0xF) if dig_H4 > 32767: dig_H4 -= 65536 dig_H5 = (b1[4] / 16) + (b1[5] * 16) if dig_H5 > 32767: dig_H5 -= 65536 dig_H6 = b1[6] if dig_H6 > 127: dig_H6 -= 256

# BME280 ที่อยู่ 0x76 (118)

# เลือกรีจิสเตอร์ควบคุมความชื้น 0xF2(242) # 0x01(01) Humidity Oversampling = 1 bus.write_byte_data(0x76, 0xF2, 0x01) # BME280 address, 0x76(118) # เลือก Control Measuring register, 0xF4(244) # 0x27(39) อัตราการสุ่มตัวอย่างแรงดันและอุณหภูมิ = 1 # โหมดปกติ bus.write_byte_data(0x76, 0xF4, 0x27) # ที่อยู่ BME280, 0x76 (118) # เลือกการลงทะเบียนการกำหนดค่า 0xF5 (245) # 0xA0 (00) เวลาสแตนด์บาย = 1,000 ms บัส.write_byte_data(0x76, 0xF5, 0xA0)

เวลานอน(0.5)

# BME280 ที่อยู่ 0x76 (118)

# อ่านข้อมูลย้อนหลังจาก 0xF7(247), 8 ไบต์ # แรงดัน MSB, แรงดัน LSB, แรงดัน xLSB, อุณหภูมิ MSB, อุณหภูมิ LSB # อุณหภูมิ xLSB, ความชื้น MSB, ความชื้น LSB data = bus.read_i2c_block_data(0x76, 0xF7, 8)

# แปลงข้อมูลความดันและอุณหภูมิเป็น 19 บิต

adc_p = ((data[0] * 65536) + (data[1] * 256) + (data[2] & 0xF0)) / 16 adc_t = ((data[3] * 65536) + (data[4] * 256) + (ข้อมูล[5] & 0xF0)) / 16

#แปลงข้อมูลความชื้น

adc_h = ข้อมูล[6] * 256 + ข้อมูล[7]

# การคำนวณออฟเซ็ตอุณหภูมิ

var1 = ((adc_t) / 16384.0 - (dig_T1) / 1024.0) * (dig_T2) var2 = (((adc_t) / 131072.0 - (dig_T1) / 8192.0) * ((adc_t)/131072.0 - (dig_T1)/8192.0)) * (dig_T3) t_fine = (var1 + var2) cTemp = (var1 + var2) / 5120.0 fTemp = cTemp * 1.8 + 32

# การคำนวณออฟเซ็ตแรงดัน

var1 = (t_fine / 2.0) - 64000.0 var2 = var1 * var1 * (dig_P6) / 32768.0 var2 = var2 + var1 * (dig_P5) * 2.0 var2 = (var2 / 4.0) + ((dig_P4) * 65536.0) var1 = ((dig_P3) * var1 * var1 / 524288.0 + (dig_P2) * var1) / 524288.0 var1 = (1.0 + var1 / 32768.0) * (dig_P1) p = 1048576.0 - adc_p p = (p - (var2 / 4096.0)) * 6250.0 / var1 var1 = (dig_P9) * p * p / 2147483648.0 var2 = p * (dig_P8) / 32768.0 ความดัน = (p + (var1 + var2 + (dig_P7)) / 16.0) / 100

# การคำนวณชดเชยความชื้น

var_H = ((t_fine) - 76800.0) var_H = (adc_h - (dig_H4 * 64.0 + dig_H5 / 16384.0 * var_H)) * (dig_H2 / 65536.0 * (1.0 + dig_H6 / 67108864.0 * var_H * (1.0 + dig_H3 / 67_108864.0))) ความชื้น = var_H * (1.0 - dig_H1 * var_H / 524288.0) ถ้าความชื้น > 100.0: ความชื้น = 100.0 อีลิฟความชื้น < 0.0: ความชื้น = 0.0

# ส่งออกข้อมูลไปยังหน้าจอ

พิมพ์ "อุณหภูมิในหน่วยเซลเซียส: %.2f C" %cTemp พิมพ์ "อุณหภูมิเป็นฟาเรนไฮต์: %.2f F" %fTemp พิมพ์ "ความดัน: %.2f hPa " %พิมพ์แรงดัน "ความชื้นสัมพัทธ์: %.2f %%" %ความชื้น

ขั้นตอนที่ 4: รหัสการทำงาน

รหัสวิ่ง
รหัสวิ่ง

ตอนนี้ดาวน์โหลด (หรือ git pull) รหัสแล้วเปิดใน Raspberry Pi

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

ขั้นตอนที่ 5: การใช้ประโยชน์ในโลกแห่งการปฏิบัติ

BME280 ให้ประสิทธิภาพสูงในทุกการใช้งานที่ต้องการการวัดความชื้นและความดัน แอปพลิเคชั่นที่เกิดขึ้นใหม่เหล่านี้คือการรับรู้บริบทเช่น การตรวจจับผิวหนัง, การตรวจจับการเปลี่ยนแปลงในห้อง, การตรวจสอบสมรรถภาพ / ความเป็นอยู่ที่ดี, คำเตือนเกี่ยวกับความแห้งหรืออุณหภูมิสูง, การวัดปริมาตรและการไหลของอากาศ, การควบคุมอัตโนมัติในบ้าน, การควบคุมความร้อน, การระบายอากาศ, เครื่องปรับอากาศ (HVAC), อินเทอร์เน็ตของสิ่งต่าง ๆ (IoT), การเพิ่มประสิทธิภาพของ GPS (เช่น การปรับปรุงเวลาเป็นอันดับแรก การคำนวณ Dead Reckoning การตรวจจับความชัน) การนำทางในร่ม (การเปลี่ยนแปลงของการตรวจจับพื้น การตรวจจับลิฟต์) การนำทางกลางแจ้ง การใช้งานเพื่อการพักผ่อนและกีฬา การพยากรณ์อากาศ และการแสดงความเร็วในแนวตั้ง (ขึ้น/จม) ความเร็ว).

ขั้นตอนที่ 6: บทสรุป

หวังว่าโครงการนี้จะเป็นแรงบันดาลใจให้ทดลองต่อไป การสร้างสถานีตรวจอากาศที่ซับซ้อนยิ่งขึ้นอาจเกี่ยวข้องกับเซ็นเซอร์เพิ่มเติม เช่น เครื่องวัดปริมาณน้ำฝน เซ็นเซอร์วัดแสง เครื่องวัดความเร็วลม (ความเร็วลม) เป็นต้น คุณสามารถเพิ่มและแก้ไขโค้ดได้ เรามีวิดีโอแนะนำการใช้งานบน YouTube เกี่ยวกับการทำงานพื้นฐานของเซ็นเซอร์ I²C พร้อมด้วย Rasp Pi เป็นเรื่องน่าทึ่งมากที่ได้เห็นผลลัพธ์และการทำงานของการสื่อสาร I²C ตรวจสอบเช่นกัน ขอให้สนุกกับการสร้างและเรียนรู้! โปรดแจ้งให้เราทราบว่าคุณคิดอย่างไรกับคำแนะนำนี้ เราชอบที่จะทำการปรับปรุงบางอย่างหากจำเป็น

แนะนำ: