สารบัญ:

วิธีสร้างตัวตรวจสอบอุณหภูมิ Raspberry Pi: 9 ขั้นตอน
วิธีสร้างตัวตรวจสอบอุณหภูมิ Raspberry Pi: 9 ขั้นตอน

วีดีโอ: วิธีสร้างตัวตรวจสอบอุณหภูมิ Raspberry Pi: 9 ขั้นตอน

วีดีโอ: วิธีสร้างตัวตรวจสอบอุณหภูมิ Raspberry Pi: 9 ขั้นตอน
วีดีโอ: สร้าง Blynk Server เพื่อใช้งานส่วนตัวด้วย Raspberry pi Part#1 2024, พฤศจิกายน
Anonim
วิธีสร้างตัวตรวจสอบอุณหภูมิ Raspberry Pi
วิธีสร้างตัวตรวจสอบอุณหภูมิ Raspberry Pi

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

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

เสบียง

  • Raspberry Pi (3, 4 หรือ Zero WH)
  • เซ็นเซอร์อุณหภูมิ (DHT2, DSB18B20, BME280 หรือ Sense HAT)
  • สายเคเบิลต่อขยายชาย-หญิง IDE 40 พิน 6" (โซลูชัน Sense HAT)
  • ตัวต้านทาน 10K, เขียงหั่นขนม, บอร์ดฝ่าวงล้อม 40 พิน + สายริบบิ้น, สายไฟ (สำหรับโซลูชัน DSB18B20)

ขั้นตอนที่ 1: Raspberry Pi

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

คุณจะต้องการ Raspberry Pi ที่มี WiFi ในตัว ซึ่งเป็นรุ่นใดก็ได้ 3, 4 และ 0 W/WH คุณสามารถเลือกได้ตามราคาและคุณสมบัติ Zero W/WH มีราคาถูกที่สุด แต่ถ้าคุณต้องการฟังก์ชันเพิ่มเติม คุณสามารถเลือกระหว่าง 3 และ 4 ได้ คุณสามารถซื้อ Zero W/WH ได้ครั้งละหนึ่งอันเท่านั้น เนื่องจากข้อจำกัดของ Raspberry Pi Foundation ไม่ว่าคุณจะเลือก Pi อะไรก็ตาม อย่าลืมซื้อที่ชาร์จเพราะนั่นคือวิธีที่คุณจะจ่ายไฟให้กับ Pi และการ์ด SD ด้วย Raspbian เพื่อให้การติดตั้งระบบปฏิบัติการทำได้ง่ายที่สุด

มีคอมพิวเตอร์บอร์ดเดี่ยวอื่นๆ ที่ใช้งานได้เช่นกัน แต่นั่นเป็นอีกครั้งและบทความอื่น

ขั้นตอนที่ 2: เซ็นเซอร์

มีเซ็นเซอร์สามตัวที่เราแนะนำให้ใช้เนื่องจากมีราคาไม่แพง เชื่อมต่อง่าย และให้ค่าที่อ่านได้อย่างแม่นยำ DSB18B20, DHT22 และ Raspberry Pi Sense HAT

DHT22 - เซ็นเซอร์อุณหภูมิและความชื้นนี้มีความแม่นยำของอุณหภูมิ +/- 0.5 C และช่วงความชื้นตั้งแต่ 0 ถึง 100 เปอร์เซ็นต์ ง่ายต่อการต่อสายกับ Raspberry Pi และไม่ต้องการตัวต้านทานแบบดึงขึ้น

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

BME280 - เซ็นเซอร์นี้วัดอุณหภูมิ ความชื้น และความกดอากาศ สามารถใช้ได้ทั้ง SPI และ I2C

Sense HAT - เป็นอุปกรณ์เสริมสำหรับ Raspberry Pi ที่มีไฟ LED เซ็นเซอร์ และจอยสติ๊กขนาดเล็ก มันเชื่อมต่อโดยตรงกับ GPIO บน Raspberry Pi แต่การใช้สายริบบิ้นช่วยให้คุณอ่านอุณหภูมิได้แม่นยำยิ่งขึ้น

ขั้นตอนที่ 3: การตั้งค่า Raspberry Pi

หากนี่เป็นครั้งแรกในการตั้งค่า Raspberry Pi คุณจะต้องติดตั้งระบบปฏิบัติการ Raspbian และเชื่อมต่อ Pi ของคุณกับ WiFi ซึ่งจะต้องใช้จอภาพและแป้นพิมพ์เพื่อเชื่อมต่อกับ Pi เมื่อคุณเปิดใช้งานและเชื่อมต่อกับ WiFI แล้ว Pi ของคุณก็พร้อมใช้งาน

ขั้นตอนที่ 4: บัญชีสถานะเริ่มต้น

บัญชีของรัฐเบื้องต้น
บัญชีของรัฐเบื้องต้น
บัญชีของรัฐเบื้องต้น
บัญชีของรัฐเบื้องต้น

คุณจะต้องมีที่ไหนสักแห่งในการส่งข้อมูลของคุณเพื่อเก็บบันทึกประวัติและดูสตรีมข้อมูลแบบเรียลไทม์ ดังนั้นเราจะใช้สถานะเริ่มต้น ไปที่ https://iot.app.initialstate.com และสร้างบัญชีใหม่หรือลงชื่อเข้าใช้บัญชีที่มีอยู่ของคุณ

ต่อไป เราต้องติดตั้งโมดูล Initial State Python บน Pi ของคุณ ที่พรอมต์คำสั่ง (อย่าลืม SSH ลงใน Pi ของคุณก่อน) ให้รันคำสั่งต่อไปนี้:

$ cd /home/pi/

$ \curl -sSL https://get.initialstate.com/python -o - | sudo bash

หลังจากที่คุณป้อนคำสั่ง curl ในพรอมต์คำสั่ง คุณจะเห็นสิ่งที่คล้ายกับผลลัพธ์ต่อไปนี้ที่หน้าจอ:

pi@raspberrypi ~

$ \curl -sSL https://get.initialstate.com/python -o - | sudo bash รหัสผ่าน: เริ่มต้น ISStreamer Python ติดตั้งง่าย! อาจใช้เวลาสองสามนาทีในการติดตั้ง หยิบกาแฟ:) แต่อย่าลืมกลับมา ฉันจะมีคำถามในภายหลัง! พบ easy_install: setuptools 1.1.6 พบ pip: pip 1.5.6 จาก /Library/Python/2.7/site-packages/pip-1.5.6- py2.7.egg (python 2.7) รุ่น pip หลัก: 1 pip รุ่นรอง: พบ ISStreamer 5 รายการ กำลังอัปเดต… ข้อกำหนดเป็นปัจจุบันแล้ว: ISStreamer ใน /Library/Python/2.7/site-packages กำลังล้าง… คุณต้องการรับสคริปต์ตัวอย่างโดยอัตโนมัติหรือไม่ [y/N] คุณต้องการเก็บตัวอย่างไว้ที่ไหน? [ค่าเริ่มต้น:./is_example.py] โปรดเลือกแอป Initial State ที่คุณใช้อยู่: 1. app.initialstate.com 2. [ใหม่!] iot.app.initialstate.com ป้อนตัวเลือก 1 หรือ 2: ป้อน iot.app.initialstate.com ชื่อผู้ใช้: ป้อน iot.app.initialstate.com รหัสผ่าน:

เมื่อได้รับพร้อมท์ให้รับสคริปต์ตัวอย่างโดยอัตโนมัติ ให้พิมพ์ y สิ่งนี้จะสร้างสคริปต์ทดสอบที่เราสามารถเรียกใช้เพื่อให้แน่ใจว่าเราสามารถสตรีมข้อมูลไปยังสถานะเริ่มต้นได้ พรอมต์ถัดไปจะถามว่าคุณต้องการบันทึกไฟล์ตัวอย่างไว้ที่ใด คุณสามารถพิมพ์เส้นทางท้องถิ่นที่กำหนดเองหรือกด Enter เพื่อยอมรับตำแหน่งเริ่มต้น สุดท้าย คุณจะถูกถามว่าคุณกำลังใช้แอป Initial State ใดอยู่ หากคุณเพิ่งสร้างบัญชี ให้เลือกตัวเลือก 2 ป้อนชื่อผู้ใช้และรหัสผ่านของคุณ หลังจากนั้นการติดตั้งจะเสร็จสมบูรณ์

มาดูตัวอย่างสคริปต์ที่สร้างขึ้น

$ nano is_example.py

ในบรรทัดที่ 15 คุณจะเห็นบรรทัดที่ขึ้นต้นด้วย streamer = Streamer(bucket_ …. บรรทัดนี้สร้าง data bucket ใหม่ชื่อ “Python Stream Example” และเชื่อมโยงกับบัญชีของคุณ การเชื่อมโยงนี้เกิดขึ้นเนื่องจาก access_key=”…” พารามิเตอร์ในบรรทัดเดียวกันนั้น ชุดตัวอักษรและตัวเลขยาวๆ นั้นคือคีย์การเข้าถึงบัญชี Initial State ของคุณ หากคุณไปที่บัญชี Initial State ของคุณในเว็บเบราว์เซอร์ ให้คลิกที่ชื่อผู้ใช้ของคุณที่ด้านบนขวา จากนั้นไปที่ "การตั้งค่าของฉัน" คุณจะพบคีย์การเข้าถึงเดียวกันที่นี่ภายใต้ “Streaming Access Keys”

ทุกครั้งที่คุณสร้างสตรีมข้อมูล คีย์การเข้าถึงนั้นจะนำสตรีมข้อมูลนั้นไปยังบัญชีของคุณ (ดังนั้นอย่าแชร์คีย์ของคุณกับใครเลย)

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

$ หลาม is_example.py

กลับไปที่บัญชี Initial State ของคุณในเว็บเบราว์เซอร์ ที่เก็บข้อมูลใหม่ที่เรียกว่า "ตัวอย่างสตรีม Python" ควรปรากฏขึ้นทางด้านซ้ายในชั้นวางบันทึกของคุณ (คุณอาจต้องรีเฟรชหน้า) คลิกที่ถังนี้แล้วคลิกที่ไอคอน Waves เพื่อดูข้อมูลการทดสอบ

หากคุณกำลังใช้ Python 3 คุณสามารถติดตั้ง Initial State Streamer Module คุณสามารถติดตั้งโดยใช้คำสั่งต่อไปนี้:

pip3 ติดตั้ง ISStreamer

ตอนนี้เราพร้อมที่จะตั้งค่าเซ็นเซอร์อุณหภูมิด้วย Pi เพื่อสตรีมอุณหภูมิไปยังแดชบอร์ด

ขั้นตอนที่ 5: โซลูชัน DHT22

โซลูชัน DHT22
โซลูชัน DHT22

DHT22 จะมีสามพิน - 5V, Gnd และข้อมูล ควรมีป้ายพินสำหรับการจ่ายไฟบน DHT22 (เช่น '+' หรือ '5V') เชื่อมต่อสิ่งนี้กับพิน 2 (พินบนขวา 5V) ของ Pi หมุด Gnd จะมีป้ายกำกับว่า '-' หรือ 'Gnd' หรือสิ่งที่เทียบเท่า เชื่อมต่อสิ่งนี้กับพิน 6 Gnd (สองพินด้านล่างพิน 5V) บน Pi พินที่เหลือบน DHT22 คือพินข้อมูลและจะมีป้ายกำกับว่า 'ออก' หรือ 's' หรือ 'ข้อมูล' เชื่อมต่อสิ่งนี้กับหนึ่งในพิน GPIO บน Pi เช่น GPIO4 (พิน 7) เมื่อต่อสายแล้ว ให้เปิด Pi ของคุณ

ติดตั้งโมดูล Adafruit DHT Python ที่พรอมต์คำสั่งเพื่อให้การอ่านข้อมูลเซ็นเซอร์ DHT22 เป็นเรื่องง่าย:

$ sudo pip ติดตั้ง Adafruit_DHT

ด้วยการติดตั้งระบบปฏิบัติการของเราพร้อมกับโมดูล Python สองโมดูลของเราสำหรับการอ่านข้อมูลเซ็นเซอร์และส่งข้อมูลไปยังสถานะเริ่มต้น เราพร้อมที่จะเขียนสคริปต์ Python ของเรา สคริปต์ต่อไปนี้จะสร้าง/ผนวกกับถังข้อมูลสถานะเริ่มต้น อ่านข้อมูลเซ็นเซอร์ DHT22 และส่งข้อมูลนั้นไปยังแดชบอร์ดแบบเรียลไทม์ สิ่งที่คุณต้องทำคือแก้ไขบรรทัดที่ 6–11

นำเข้า Adafruit_DHT

จาก ISStreamer. Streamer นำเข้า เวลานำเข้าสตรีมเมอร์# --------- การตั้งค่าผู้ใช้ --------- SENSOR_LOCATION_NAME = "Office" BUCKET_NAME = ":partly_sunny: อุณหภูมิห้อง" BUCKET_KEY = "rt0129" ACCESS_KEY = "วางคีย์การเข้าถึงสถานะเริ่มต้นของคุณที่นี่" MINUTES_BETWEEN_READS = 10METRIC_UNITS = False # --------------------------------- streamer = สตรีมเมอร์(bucket_name=BUCKET_NAME, bucket_key=BUCKET_KEY, access_key=ACCESS_KEY) ในขณะที่ True: ความชื้น temp_c = Adafruit_DHT.read_retry(Adafruit_DHT. DHT22, 4) ถ้า METRIC_UNITS: streamer.log(SENSOR_LOCATION_NAME + อุณหภูมิ (C)): temp_f = รูปแบบ (temp_c * 9.0 / 5.0 + 32.0, ".2f") streamer.log (SENSOR_LOCATION_NAME + " อุณหภูมิ (F)", temp_f) ความชื้น = รูปแบบ (ความชื้น ".2f") streamer.log (SENSOR_LOCATION_NAME + " ความชื้น(%)", ความชื้น) streamer.flush() time.sleep(60*MINUTES_BETWEEN_READS)

  • บรรทัดที่ 6 - ค่านี้ควรไม่ซ้ำกันสำหรับแต่ละโหนด/เซ็นเซอร์อุณหภูมิ นี่อาจเป็นชื่อห้องของโหนดเซ็นเซอร์ ตำแหน่งทางกายภาพ ตัวระบุที่ไม่ซ้ำกัน หรืออะไรก็ตาม เพียงตรวจสอบให้แน่ใจว่าแต่ละโหนดไม่ซ้ำกันเพื่อให้แน่ใจว่าข้อมูลจากโหนดนี้ไปที่สตรีมข้อมูลของตัวเองในแดชบอร์ดของคุณ
  • บรรทัดที่ 7 - นี่คือชื่อของที่เก็บข้อมูล ซึ่งสามารถเปลี่ยนแปลงได้ตลอดเวลาใน UI สถานะเริ่มต้น
  • บรรทัดที่ 8 - นี่คือกุญแจถังของคุณ จะต้องเป็นคีย์บัคเก็ตเดียวกันสำหรับทุกโหนดที่คุณต้องการให้แสดงในแดชบอร์ดเดียวกัน
  • บรรทัดที่ 9 - นี่คือรหัสการเข้าถึงบัญชีสถานะเริ่มต้นของคุณ คัดลอกและวางคีย์นี้จากบัญชีสถานะเริ่มต้นของคุณ
  • บรรทัดที่ 10 - นี่คือเวลาระหว่างการอ่านเซ็นเซอร์ เปลี่ยนตาม.
  • บรรทัดที่ 11 - คุณสามารถระบุหน่วยเมตริกหรืออิมพีเรียลในบรรทัดที่ 11

หลังจากที่คุณได้ตั้งค่าบรรทัดที่ 6–11 ในสคริปต์ Python บน Pi แล้ว ให้บันทึกและออกจากโปรแกรมแก้ไขข้อความ รันสคริปต์ด้วยคำสั่งต่อไปนี้:

$ python tempsensor.py

ตอนนี้คุณจะมีข้อมูลที่ส่งไปยังแดชบอร์ดสถานะเริ่มต้น ไปที่ส่วนสุดท้ายของบทความนี้เพื่อดูรายละเอียดเกี่ยวกับวิธีการปรับแต่งแดชบอร์ดของคุณ

ขั้นตอนที่ 6: โซลูชัน DSB18B20

โซลูชัน DSB18B20
โซลูชัน DSB18B20
โซลูชัน DSB18B20
โซลูชัน DSB18B20

สายแพเชื่อมต่อกับพิน GPIO บน Pi DS18B20 มีสามสาย สายสีแดงเชื่อมต่อกับ 3.3V สายสีน้ำเงิน/สีดำเชื่อมต่อกับกราวด์ สายสีเหลืองเชื่อมต่อกับตัวต้านทานแบบดึงขึ้น/พิน 4 เมื่อต่อเสร็จแล้ว ให้เปิด Pi ของคุณ

Raspbian เวอร์ชันล่าสุด (เคอร์เนล 3.18) ต้องการการเพิ่มไฟล์ /boot/config.txt เพื่อให้ Pi สื่อสารกับ DS18B20 เรียกใช้สิ่งต่อไปนี้เพื่อแก้ไขไฟล์นี้:

$ sudo nano /boot/config.txt

หากบรรทัดต่อไปนี้ไม่มีอยู่ในไฟล์นี้ (หากใช่ อาจเป็นที่ด้านล่างของไฟล์) ให้เพิ่มและบันทึกไฟล์

dtoverlay=w1-gpio, gpiopin=4

รีสตาร์ท Pi ของคุณเพื่อให้การเปลี่ยนแปลงมีผล

$ sudo รีบูต

ในการเริ่มต้นอินเทอร์เฟซการอ่านเซ็นเซอร์อุณหภูมิ เราจำเป็นต้องเรียกใช้สองคำสั่ง ไปที่พรอมต์คำสั่งบน Pi หรือ SSH ลงใน Pi ของคุณ พิมพ์คำสั่งต่อไปนี้:

$ sudo modprobe w1-gpio$ sudo modprobe w1-therm

เอาต์พุตของเซ็นเซอร์อุณหภูมิของคุณกำลังถูกเขียนไปยังไฟล์บน Pi ของคุณ หากต้องการค้นหาไฟล์นั้น:

$ cd /sys/bus/w1/devices

ในไดเร็กทอรีนี้ จะมีไดเร็กทอรีย่อยที่ขึ้นต้นด้วย “28-“สิ่งที่อยู่หลัง “28-” คือหมายเลขซีเรียลของเซ็นเซอร์ของคุณ cd ลงในไดเร็กทอรีนั้น ภายในไดเร็กทอรีนี้ ไฟล์ชื่อ w1_slave มีเอาต์พุตของเซ็นเซอร์ของคุณ ใช้นาโนเพื่อดูเนื้อหาของไฟล์ เมื่อคุณเข้าสู่ไฟล์แล้ว จะมีลักษณะดังนี้:

a2 01 4b 46 7f ff 0e 10 d8: crc=d8 YESa2 01 4b 46 7f ff 0e 10 d8 t=26125

ตัวเลขหลัง “t=” คือตัวเลขที่เราต้องการ นี่คืออุณหภูมิใน 1/1000 องศาเซลเซียส (ในตัวอย่างข้างต้น อุณหภูมิคือ 26.125 องศาเซลเซียส) เราแค่ต้องการโปรแกรมง่ายๆ ที่อ่านไฟล์นี้และแยกวิเคราะห์ตัวเลขนั้น เราจะไปถึงที่นั่นในเวลาเพียงไม่กี่วินาที

ตอนนี้ทุกอย่างพร้อมให้เราเริ่มสตรีมข้อมูลแล้ว ในการเปิดเท็กซ์เอดิเตอร์ ให้พิมพ์คำสั่งต่อไปนี้ในพรอมต์คำสั่ง:

$ nano temperature.py

คัดลอกและวางโค้ดด้านล่างลงในโปรแกรมแก้ไขข้อความ

นำเข้าระบบปฏิบัติการ

นำเข้าเวลานำเข้า glob จาก ISStreamer. Streamer นำเข้า Streamerstreamer = Streamer(bucket_name="Temperature Stream", bucket_key="piot_temp_stream031815", access_key="PUT_YOUR_ACCESS_KEY_HERE") os.system('modprobe w1-gpio') os.system ('modprobe w1 -therm') base_dir = '/sys/bus/w1/devices/' device_folder = glob.glob(base_dir + '28*')[0] device_file = device_folder + '/w1_slave' def read_temp_raw(): f = open(device_file, 'r') lines = f.readlines() f.close() กลับบรรทัด def read_temp(): lines = read_temp_raw() while lines[0].strip()[-3:] != 'YES': time.sleep(0.2) lines = read_temp_raw() equals_pos = lines[1].find('t=') if equals_pos != -1: temp_string = lines[1][equals_pos+2:] temp_c = float(temp_string) / 1000.0 ส่งคืน temp_c ในขณะที่ True: temp_c = read_temp() temp_f = temp_c * 9.0 / 5.0 + 32.0 streamer.log("temperature (C)", temp_c) streamer.log("temperature (F)", temp_f) time.sleep (.5)

คุณต้องใส่รหัสการเข้าถึงสถานะเริ่มต้นในบรรทัดที่ 6 แทนที่ PUT_YOUR_ACCESS_KEY_HERE (คัดลอกคีย์การสตรีมไปยังคลิปบอร์ดจาก 'บัญชีของฉัน' และวางลงในรหัสใน nano ในเทอร์มินัลของคุณ)

บรรทัดที่ 6 จะสร้างบัคเก็ตชื่อ "Temperature Stream" ในบัญชี Initial State ของคุณ (สมมติว่าคุณระบุ access_key ของคุณอย่างถูกต้องในบรรทัดเดียวกันนี้) บรรทัดที่ 8 ถึง 30 ของสคริปต์นี้เพียงแค่เชื่อมต่อกับเซ็นเซอร์ DS18B20 เพื่ออ่านอุณหภูมิจากไฟล์ w1_slave ที่เราพูดถึงก่อนหน้านี้ ฟังก์ชัน read_temp_raw() ในบรรทัดที่ 15 อ่านไฟล์ raw w1_slave ฟังก์ชัน read_temp() ในบรรทัดที่ 21 จะแยกวิเคราะห์อุณหภูมิจากไฟล์นั้น บรรทัดที่ 34 เรียกฟังก์ชันเหล่านี้เพื่อรับอุณหภูมิปัจจุบัน บรรทัดที่ 35 แปลงอุณหภูมิจากเซลเซียสเป็นฟาเรนไฮต์ บรรทัดที่ 35 และ 36 จะสตรีมอุณหภูมิไปยังบัญชีสถานะเริ่มต้นของคุณ บรรทัดที่ 37 หยุดสคริปต์ชั่วคราวเป็นเวลา 0.5 วินาที โดยกำหนดความถี่ในการอ่านและสตรีมเซ็นเซอร์อุณหภูมิ

เราพร้อมที่จะเริ่มสตรีมแล้ว รันคำสั่งต่อไปนี้:

$ sudo python temperature.py

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

ตอนนี้คุณจะมีข้อมูลที่ส่งไปยังแดชบอร์ดสถานะเริ่มต้น ไปที่ส่วนสุดท้ายของบทความนี้เพื่อดูรายละเอียดเกี่ยวกับวิธีการปรับแต่งแดชบอร์ดของคุณ

ขั้นตอนที่ 7: โซลูชัน BME280

คุณจะต้องสร้างโซลูชันต่อไปนี้:

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

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

เชื่อมต่อพิน VIN บนเซ็นเซอร์กับ 3.3V พิน 1 บน Pi เชื่อมต่อพิน GND บนเซ็นเซอร์กับพินกราวด์ 6 บน Pi เชื่อมต่อพิน SCK บนเซ็นเซอร์กับพิน SCL 5 บน Pi เชื่อมต่อพิน SDI บนเซ็นเซอร์กับ SDA pin 3 บน Pi คุณจะต้องใช้ Python 3 สำหรับโซลูชันนี้และติดตั้งโมดูล Initial State Streamer โดยใช้วิธีติดตั้ง pip3

คุณจะต้องติดตั้งไลบรารี Adafruit Python สองสามตัวด้วย

pip3 ติดตั้ง adafruit-blinkapip3 ติดตั้ง pureio pip3 ติดตั้ง spidev pip3 ติดตั้ง adafruit-GPIO pip3 ติดตั้ง adafruit-circuitpython-bme280

ในการใช้เซ็นเซอร์ เราจำเป็นต้องเปิดใช้งาน I2C บน Pi

sudo raspi-config

ซึ่งจะเปิดเครื่องมือกำหนดค่าซอฟต์แวร์ Raspberry Pi ไปที่ตัวเลือก 5 ตัวเลือกการเชื่อมต่อ จากที่นี่ไปที่ I2C ระบบจะถามคุณว่าต้องการเปิดใช้งาน I2C หรือไม่ เลือกใช่และเสร็จสิ้น ตอนนี้คุณเปิดใช้งาน I2C เพื่อสื่อสารกับเซ็นเซอร์แล้ว

เราสามารถทดสอบสิ่งนี้ได้โดยเรียกใช้สิ่งต่อไปนี้:

sudo i2cdetect -y 1

การดำเนินการนี้จะตรวจสอบว่า Pi ของคุณเห็นเซ็นเซอร์หรือไม่ ในการเชื่อมต่อ ควรแสดงเซ็นเซอร์ที่ที่อยู่ 77 หากคุณตรวจไม่พบเซ็นเซอร์ ให้รีบูต Pi เปิดใช้งานตัวเลือกอินเทอร์เฟซ I2C บน Pi ของคุณอีกครั้ง แล้วลองอีกครั้ง เมื่อตรวจพบเซ็นเซอร์แล้ว ก็ถึงเวลา เพื่อเรียกใช้รหัสหลักของเราที่จะส่งข้อมูลไปยังสถานะเริ่มต้น สร้างไฟล์ชื่อ bme280sensor.py ด้วยคำสั่ง nano คัดลอกและวางโค้ดจากส่วนสำคัญลงในโปรแกรมแก้ไขข้อความ คุณจะต้องทำการเปลี่ยนแปลงบรรทัดที่ 12–19

เวลานำเข้า

นำเข้าบอร์ด นำเข้า busio นำเข้า adafruit_bme280 จาก ISStreamer. Streamer นำเข้าสตรีมเมอร์ # สร้างวัตถุไลบรารีโดยใช้ Bus I2C porti2c ของเรา = busio. I2C(board. SCL, board. SDA) bme280 = adafruit_bme280. Adafruit_BME280_I2C(i2c) # ------- -- การตั้งค่าผู้ใช้ --------- SENSOR_LOCATION_NAME = "Office" BUCKET_NAME = ":partly_sunny: อุณหภูมิห้อง" BUCKET_KEY = "temp1" ACCESS_KEY = "YOUR ACCESS KEY HERE" # เปลี่ยนให้ตรงกับความดันของตำแหน่ง (hPa) ที่ระดับน้ำทะเล bme280.sea_level_pressure = 1013.25 MINUTES_BETWEEN_READS = 10 METRIC_UNITS = False # --------------------------------- # หรือสร้างวัตถุไลบรารีโดยใช้พอร์ต Bus SPI ของเรา #spi = busio. SPI(board. SCK, board. MOSI, board. MISO) #bme_cs = digitalio. DigitalInOut(board. D10) #bme280 = adafruit_bme280. Adafruit_BME280_SPI(spi, bme_cs) streamer = ลำแสง (bucket_name=BUCKET_NAME, bucket_key=BUCKET_KEY, access_key=ACCESS_KEY) ในขณะที่ True: ความชื้น = รูปแบบ (bme280.humidity, ".1f") ความดัน = รูปแบบ (bme280.pressure, ".1f") temp_c = bme280.temperatu ถ้า METRIC_UNITS: streamer.log(SENSOR_LOCATION_NAME + "Temperature(C)", temp_c) else: temp_f = format(temp_c * 9.0 / 5.0 + 32.0, ".1f") streamer.log(SENSOR_LOCATION_NAME + " Temperature(F)", temp_f) streamer.log(SENSOR_LOCATION_NAME + "Humidity(%)", ความชื้น) streamer.log(SENSOR_LOCATION_NAME + "Pressure(hPA)", ความดัน) streamer.flush() time.sleep(60*MINUTES_BETWEEN_READS)

  • บรรทัดที่ 12- ค่านี้ควรไม่ซ้ำกันสำหรับแต่ละโหนด/เซ็นเซอร์อุณหภูมิ นี่อาจเป็นชื่อห้องของโหนดเซ็นเซอร์ ตำแหน่งทางกายภาพ ตัวระบุที่ไม่ซ้ำกัน หรืออะไรก็ตาม เพียงตรวจสอบให้แน่ใจว่าแต่ละโหนดไม่ซ้ำกันเพื่อให้แน่ใจว่าข้อมูลจากโหนดนี้ไปที่สตรีมข้อมูลของตัวเองในแดชบอร์ดของคุณ
  • บรรทัดที่ 13- นี่คือชื่อของที่เก็บข้อมูล ซึ่งสามารถเปลี่ยนแปลงได้ตลอดเวลาใน UI สถานะเริ่มต้น
  • บรรทัดที่ 14- นี่คือกุญแจถังของคุณ จะต้องเป็นคีย์บัคเก็ตเดียวกันสำหรับทุกโหนดที่คุณต้องการให้แสดงในแดชบอร์ดเดียวกัน
  • บรรทัดที่ 15- นี่คือรหัสการเข้าถึงบัญชีสถานะเริ่มต้นของคุณ คัดลอกและวางคีย์นี้จากบัญชีสถานะเริ่มต้นของคุณ
  • บรรทัดที่ 17- นี่คือความดันตำแหน่งของคุณ (hPa) ที่ระดับน้ำทะเล คุณสามารถค้นหาข้อมูลนี้ได้จากเว็บไซต์สภาพอากาศส่วนใหญ่
  • บรรทัดที่ 18 - นี่คือเวลาระหว่างการอ่านเซ็นเซอร์ เปลี่ยนตามบรรทัดที่ 19- ที่นี่คุณสามารถระบุหน่วยเมตริกหรืออิมพีเรียลได้

หลังจากที่คุณตั้งค่าบรรทัดที่ 12–19 ในสคริปต์ Python บน Pi Zero WH แล้ว ให้บันทึกและออกจากโปรแกรมแก้ไขข้อความ รันสคริปต์ด้วยคำสั่งต่อไปนี้:

$ python3 bme280sensor.py

ตอนนี้คุณจะมีข้อมูลที่ส่งไปยังแดชบอร์ดสถานะเริ่มต้น ไปที่ส่วนสุดท้ายของบทความนี้เพื่อดูรายละเอียดเกี่ยวกับวิธีการปรับแต่งแดชบอร์ดของคุณ

ขั้นตอนที่ 8: สัมผัส HAT

ความรู้สึก HAT
ความรู้สึก HAT
ความรู้สึก HAT
ความรู้สึก HAT

ขั้นตอนแรกในการใช้ Sense HAT คือการติดตั้งลงบน Pi ของคุณ เมื่อปิด Pi ให้แนบ HAT ตามที่แสดงในภาพ

หากคุณตัดสินใจใช้โซลูชันดังที่แสดงไว้ด้านบน คุณอาจสังเกตเห็นว่าค่าอุณหภูมิที่อ่านได้ของ Sense HAT จะค่อนข้างสูง - นั่นเป็นเพราะเป็นเช่นนั้น ผู้ร้ายคือความร้อนที่เกิดจาก CPU ของ Pi ทำให้อากาศร้อนขึ้นรอบๆ Sense HAT เมื่อนั่งอยู่บน Pi ในการทำให้เซ็นเซอร์อุณหภูมิมีประโยชน์ เราจำเป็นต้องนำ HAT ออกจาก Pi หรือพยายามปรับเทียบการอ่านเซ็นเซอร์อุณหภูมิ ทางออกที่ดีในการดึงเซ็นเซอร์ออกจาก Pi คือสายเคเบิลที่ช่วยให้ Sense HAT ห้อยลงมาจาก Pi สายเคเบิลต่อขยาย IDE ตัวผู้ถึงตัวเมียขนาด 6 นิ้ว 40 พินจะช่วยคุณได้

เมื่อคุณตัดสินใจเลือกสองตัวเลือกแล้ว ให้เปิด Pi ของคุณ เราจำเป็นต้องติดตั้งไลบรารี่ Python เพื่อให้ง่ายต่อการอ่านค่าเซ็นเซอร์จาก Sense HAT ขั้นแรก คุณจะต้องตรวจสอบให้แน่ใจว่าทุกอย่างเป็นปัจจุบันในเวอร์ชัน Raspbian ของคุณ:

$ sudo apt-get update

ถัดไป ติดตั้งไลบรารี Sense HAT Python:

$ sudo apt-get ติดตั้ง sense-hat

รีบูต Pi ของคุณ เราพร้อมที่จะทดสอบ Sense HAT โดยการอ่านข้อมูลจากเซ็นเซอร์และส่งข้อมูลนั้นไปยังสถานะเริ่มต้น

สร้างไฟล์ชื่อ Sensehat และเปิดในโปรแกรมแก้ไขข้อความโดยป้อนคำสั่งต่อไปนี้ในพรอมต์คำสั่ง:

$ nano sensehat.py

คัดลอกและวางโค้ดด้านล่างในโปรแกรมแก้ไขข้อความ

จาก sense_hat นำเข้า SenseHat

เวลานำเข้า นำเข้า sys จาก ISStreamer. Streamer นำเข้าสตรีมเมอร์ # --------- การตั้งค่าผู้ใช้ --------- BUCKET_NAME = "Office Weather" BUCKET_KEY = "sensehat" ACCESS_KEY = "Your_Access_Key" SENSOR_LOCATION_NAME = " สำนักงาน" MINUTES_BETWEEN_SENSEHAT_READS = 0.1 # --------------------------------- streamer = Streamer(bucket_name=BUCKET_NAME, bucket_key=BUCKET_KEY, access_key=ACCESS_KEY) sense = SenseHat() ในขณะที่ True: # อ่านเซ็นเซอร์ temp_c = sense.get_temperature() moisture = sense.get_humidity() pressure_mb = sense.get_pressure() # จัดรูปแบบข้อมูล temp_f = temp_c * 9.0 / 5.0 + 32.0 temp_f = float("{0:.2f}".format(temp_f)) ความชื้น = float ("{0:.2f}".format(humidity)) pressure_in = 0.03937008*(pressure_mb) pressure_in = float("{ 0:.2f}".format(pressure_in)) # พิมพ์และสตรีมพิมพ์ SENSOR_LOCATION_NAME + " Temperature(F): " + str(temp_f) พิมพ์ SENSOR_LOCATION_NAME + " Humidity(%): " + str(humidity) พิมพ์ SENSOR_LOCATION_NAME + " ความดัน(IN): " + str(pressure_in) streamer.log(":sunny: " + SEN SOR_LOCATION_NAME + " Temperature(F)", temp_f) streamer.log(":sweat_drops: " + SENSOR_LOCATION_NAME + " Humidity(%)", moisture) streamer.log(":cloud: " + SENSOR_LOCATION_NAME + " Pressure(IN)", pressure_in) streamer.flush() time.sleep(60*MINUTES_BETWEEN_SENSEHAT_READS)

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

# --------- การตั้งค่าผู้ใช้ ---------

BUCKET_NAME = "Office Weather"BUCKET_KEY = "sensehat"ACCESS_KEY = "Your_Access_Key"SENSOR_LOCATION_NAME = "Office"MINUTES_BETWEEN_SENSEHAT_READS = 0.1# ------------------------- --------

โดยเฉพาะอย่างยิ่ง คุณต้องตั้งค่า ACCESS_KEY เป็นคีย์การเข้าถึงบัญชี Initial State คุณสามารถเปลี่ยน BUCKET_NAME และ SENSOR_LOCATION_NAME เป็นตำแหน่งเซ็นเซอร์จริงได้ บันทึกและออกจากโปรแกรมแก้ไขข้อความ

ที่พรอมต์คำสั่งบน Pi ของคุณ ให้รันสคริปต์:

$ sudo python sensehat.py

ตอนนี้คุณจะมีข้อมูลที่ส่งไปยังแดชบอร์ดสถานะเริ่มต้น ไปที่ส่วนสุดท้ายของบทความนี้เพื่อดูรายละเอียดเกี่ยวกับวิธีการปรับแต่งแดชบอร์ดของคุณ

ขั้นตอนที่ 9: ปรับแต่งแดชบอร์ดสถานะเริ่มต้นของคุณ

ปรับแต่งแดชบอร์ดสถานะเริ่มต้นของคุณ
ปรับแต่งแดชบอร์ดสถานะเริ่มต้นของคุณ

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

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

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

แนะนำ: