ความชื้นอุณหภูมิและความดันเป็นพารามิเตอร์พื้นฐานสามประการในการสร้างสถานีตรวจอากาศและเพื่อวัดสภาพแวดล้อม เราได้สร้างขึ้นก่อนหน้านี้สถานีตรวจอากาศขนาดเล็กโดยใช้ Arduinoและในครั้งนี้เราจะขยายสถานีอากาศกับราสเบอร์รี่ Pi โครงการนี้ IOT ตามจุดมุ่งหมายที่จะแสดงให้เห็นในปัจจุบันพารามิเตอร์ความชื้น, อุณหภูมิและความดันบนหน้าจอ LCD ได้เป็นอย่างดีบนเซิร์ฟเวอร์อินเทอร์เน็ตโดยใช้ราสเบอร์รี่ Piซึ่งทำให้มันเป็นสถานีตรวจอากาศ Raspberry Piคุณสามารถติดตั้งการตั้งค่านี้ได้ทุกที่และสามารถตรวจสอบสภาพอากาศของสถานที่นั้นได้จากทุกที่ในโลกผ่านอินเทอร์เน็ตซึ่งจะไม่เพียงแสดงข้อมูลปัจจุบันเท่านั้น แต่ยังสามารถแสดงค่าในอดีตในรูปแบบของกราฟได้อีกด้วย
เราใช้เซ็นเซอร์ความชื้นและอุณหภูมิ DHT11เพื่อตรวจจับอุณหภูมิและโมดูลเซ็นเซอร์ความดัน BM180สำหรับวัดความดันบรรยากาศ เครื่องวัดอุณหภูมิขนาดเซลเซียสและมาตราส่วนความชื้นเครื่องวัดความชื้นจะแสดงอุณหภูมิและความชื้นโดยรอบผ่านจอ LCD และความดันบรรยากาศจะแสดงเป็นมิลลิบาร์หรือ hPa (เฮกโตปาสคาล) ข้อมูลทั้งหมดนี้ส่งไปยังเซิร์ฟเวอร์ThingSpeakสำหรับการตรวจสอบสดจากทุกที่ในโลกผ่านอินเทอร์เน็ต ตรวจสอบวิดีโอสาธิตและโปรแกรม Python ที่ให้ไว้ในตอนท้ายของบทช่วยสอนนี้
การทำงานและการตั้งค่า ThingSpeak:
โครงการที่ใช้ IoT นี้มีสี่ส่วน ประการแรกเซ็นเซอร์ DHT11 จะตรวจจับข้อมูลความชื้นและอุณหภูมิและเซ็นเซอร์ BM180 จะวัดความดันบรรยากาศ ประการที่สองRaspberry Piอ่านเอาต์พุตของโมดูลเซ็นเซอร์ DHT11 โดยใช้โปรโตคอลสายเดี่ยวและเอาต์พุตของเซ็นเซอร์ความดัน BM180 โดยใช้โปรโตคอล I2C และแยกค่าเซ็นเซอร์ทั้งสองเป็นจำนวนที่เหมาะสมเป็นเปอร์เซ็นต์ (ความชื้น) สเกลเซลเซียส (อุณหภูมิ) เฮกโตปาสคาลหรือมิลลิบาร์ (ความดัน). ประการที่สามค่าเหล่านี้จะถูกส่งไปยังเซิร์ฟเวอร์ ThingSpeak โดยใช้ inbuilt Wi-Fi ของราสเบอร์รี่ Pi 3 และสุดท้าย ThingSpeak จะวิเคราะห์ข้อมูลและแสดงในรูปแบบกราฟ นอกจากนี้ยังใช้ LCD เพื่อแสดงค่าเหล่านี้ในเครื่อง
ThingSpeak เป็นเครื่องมือที่ดีมากสำหรับโครงการที่ใช้ IoT ด้วยการใช้เว็บไซต์ ThingSpeak เราสามารถตรวจสอบข้อมูลของเราและควบคุมระบบของเราผ่านทางอินเทอร์เน็ตโดยใช้ช่องทางและหน้าเว็บที่จัดเตรียมโดย ThingSpeak ThingSpeak 'รวบรวม' ข้อมูลจากเซ็นเซอร์ 'วิเคราะห์และแสดงภาพ' ข้อมูลและ 'การกระทำ' โดยการกระตุ้นให้เกิดปฏิกิริยา ก่อนหน้านี้เราได้อธิบายเกี่ยวกับการส่งข้อมูลไปยัง ThingSpeak โดยละเอียดแล้วคุณสามารถตรวจสอบได้ที่นั่น เราจะอธิบายสั้น ๆ เกี่ยวกับการใช้ ThingSpeak สำหรับสถานีพยากรณ์อากาศ Raspberry Pi นี้
ก่อนอื่นคุณต้องสร้างบัญชีบนเว็บไซต์ ThingSpeak และสร้าง 'ช่องทางใหม่' ในนั้น ในช่องใหม่คุณต้องกำหนดฟิลด์บางฟิลด์สำหรับข้อมูลที่คุณต้องการตรวจสอบเช่นในโครงการนี้เราจะสร้างฟิลด์สามฟิลด์สำหรับข้อมูลความชื้นอุณหภูมิและความดัน
ตอนนี้คลิกที่แท็บ 'คีย์ API' และ บันทึกคีย์เขียนและอ่าน APIที่นี่เราใช้คีย์เขียนเท่านั้น คุณต้องคัดลอกคีย์นี้ในตัวแปร 'คีย์' ในโค้ด
หลังจากนั้นให้คลิกที่ 'Data Import / Export' และ คัดลอก Update Channel Feed GET Request URLซึ่งก็คือ:
api.thingspeak.com/update?api_key=30BCDSRQ52AOI3UA&field1=0
ตอนนี้เราต้องการ 'Feed Get Request URL' ในโค้ด Python เพื่อเปิด“ api.thingspeak.com” จากนั้นส่งข้อมูลโดยใช้ Feed Request นี้เป็นสตริงเคียวรี และก่อนที่จะส่งข้อมูลผู้ใช้จำเป็นต้องป้อนข้อมูลอุณหภูมิความชื้นและความดันในสตริงการสืบค้นนี้โดยใช้ตัวแปรในโปรแกรมตรวจสอบรหัสในตอนท้ายบทความนี้
URL = 'https://api.thingspeak.com/update?api_key=%s'% key finalURL = URL + "& field1 =% s & field2 =% s"% (humi, temp) + "& field3 =% s"% (ความดัน)
การทำงานของ DHT11 ขึ้นอยู่กับการสื่อสารแบบอนุกรมสายเดี่ยวสำหรับการดึงข้อมูลจาก DHT11 ที่นี่เราได้ใช้ห้องสมุด AdaFruit DHT11 สำหรับการเชื่อม DHT11 กับราสเบอร์รี่ Pi Raspberry Pi รวบรวมข้อมูลความชื้นและอุณหภูมิจาก DHT11 และความดันบรรยากาศจากเซ็นเซอร์ BMP180 จากนั้นส่งไปยัง 16x2 LCD และเซิร์ฟเวอร์ ThingSpeak ThingSpeak แสดงข้อมูลในรูปแบบของ Graph ดังนี้:
คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับ DHT11 Sensor และการเชื่อมต่อกับ Arduino ได้ ที่นี่
แผนภูมิวงจรรวม:
การกำหนดค่า Raspberry Pi และโปรแกรม Python:
เรากำลังใช้ ภาษา Python ที่นี่สำหรับโปรแกรม ก่อนที่จะเข้ารหัสผู้ใช้ต้องกำหนดค่า Raspberry Pi คุณสามารถตรวจสอบบทช่วยสอนก่อนหน้าของเราสำหรับการเริ่มต้นใช้งาน Raspberry Pi และการติดตั้งและกำหนดค่า Raspbian Jessie OS ใน Pi
ก่อนอื่นเราต้องติดตั้งไฟล์ Adafruit Python DHT Sensor Library เพื่อรันโครงการนี้บน Raspberry Pi ในการทำสิ่งนี้เราต้องทำตามคำสั่งที่กำหนด:
sudo apt-get install git-core sudo apt-get update git clone https://github.com/adafruit/Adafruit_Python_DHT.git cd Adafruit_Python_DHT sudo apt-get install build-essential python-dev sudo python setup.py install
หลังจากนี้ผู้ใช้จะต้องเปิดใช้ Raspberry Pi I2Cโดยไปที่ RPi Software Configuration ด้วย:
sudo raspi-config
จากนั้นไปที่ 'Advance Options' เลือก 'I2C' และ 'Enable'
การเขียนโปรแกรมเป็นส่วนหนึ่งของโครงการนี้มีบทบาทสำคัญมากในการดำเนินการทั้งหมด ก่อนอื่นเรารวมไลบรารีที่จำเป็นทั้งหมดตัวแปรเริ่มต้นและกำหนดพินสำหรับ LCD และ DHT11
import sys import RPi.GPIO as GPIO import os import Adafruit_DHT import urllib2 import smbus import time from ctypes import c_short #Register Address regCall = 0xAA…………..
ในฟังก์ชัน def main (): โค้ดด้านล่างนี้ใช้สำหรับส่งข้อมูลไปยังเซิร์ฟเวอร์และแสดงบนจอ LCD อย่างต่อเนื่องใน ขณะ วนซ้ำ
def main (): พิมพ์ 'System Ready… ' URL = 'https://api.thingspeak.com/update?api_key=%s' พิมพ์คีย์ "Wait…. " ในขณะที่ True: (humi, temp) = readDHT () (pressure) = readBmp180 () lcdcmd (0x01) lcdstring ("Humi # Temp # P (hPa)") lcdstring (humi + '%' + "% sC% s"% (temp, pressure)) finalURL = URL + "& field1 =% s & field2 =% s"% (humi, temp) + "& field3 =% s"% (pressure) พิมพ์ finalURL s = urllib2.urlopen (finalURL); พิมพ์ humi + "" + temp + "" + ความดัน s.close () time.sleep (10)
สำหรับ LCD ฟังก์ชัน def lcd_init () ใช้เพื่อเริ่มต้น LCD ในโหมดสี่บิต ฟังก์ชัน def lcdcmd (ch) ใช้สำหรับส่งคำสั่งไปยัง LCD ฟังก์ชัน def lcddata (ch) ใช้สำหรับส่งข้อมูลไปยัง LCD และ def lcdstring (Str ) ใช้เพื่อส่งสตริงข้อมูลไปยัง LCD คุณสามารถตรวจสอบฟังก์ชั่นเหล่านี้ทั้งหมดในรหัสที่กำหนดได้ในภายหลัง
ให้ def readDHT () ฟังก์ชั่นใช้สำหรับอ่าน DHT11 Sensor:
def readDHT (): humi, temp = Adafruit_DHT.read_retry (Adafruit_DHT.DHT11, DHTpin) return (str (int (humi)), str (int (temp)))
ฟังก์ชัน def readBmp180 ใช้สำหรับการอ่านค่าความดันจากเซ็นเซอร์ BM180 เซ็นเซอร์ BM180 สามารถให้อุณหภูมิได้เช่นกัน แต่ที่นี่เราใช้เพื่อคำนวณความดันเท่านั้น
def readBmp180 (addr = deviceAdd): value = bus.read_i2c_block_data (addr, regCall, 22) # อ่านข้อมูลการสอบเทียบ # แปลงข้อมูลไบต์เป็นค่าคำ AC1 = convert1 (ค่า, 0) AC2 = convert1 (ค่า, 2) AC3 = convert1 (ค่า, 4) AC4 = convert2 (ค่า, 6)……………………..
ดังนั้นนี่คือRaspberry Pi Weather Stationพื้นฐานคุณสามารถขยายเพิ่มเติมเพื่อวัดพารามิเตอร์ที่เกี่ยวข้องกับสภาพอากาศต่างๆเช่นความเร็วลมอุณหภูมิของดินความสว่าง (ลักซ์) ปริมาณน้ำฝนคุณภาพอากาศเป็นต้น