- Работа и настройка на ThingSpeak:
- Електрическа схема:
- Конфигурация на Raspberry Pi и програма на Python:
Влажността, температурата и налягането са три основни параметъра за изграждане на всяка метеорологична станция и за измерване на условията на околната среда. Преди това сме изградили мини метеорологична станция с помощта на Arduino и този път разширяваме метеорологичната станция с Raspberry Pi. Този проект, базиран на IoT, има за цел да покаже текущите параметри на влажност, температура и налягане на LCD, както и на интернет сървъра, използвайки Raspberry Pi, което го прави Raspberry Pi Weather Station. Можете да инсталирате тази настройка навсякъде и можете да наблюдавате метеорологичните условия на това място от всяка точка на света по интернет, тя не само ще показва текущите данни, но може да показва и миналите стойности под формата на графики.
Използвахме DHT11 Сензор за влажност и температура за отчитане на температурата и BM180 Сензор за налягане модул за измерване на барометрично налягане. Този термометър и измервател на влажност в градуси по Целзий показва температурата и влажността на околната среда чрез LCD дисплей и барометричното налягане се показва в милибари или hPa (хектопаскални). Всички тези данни се изпращат до сървъра ThingSpeak за наблюдение на живо от всяка точка на света по интернет. Проверете демонстрационното видео и програмата на Python, дадени в края на този урок.
Работа и настройка на ThingSpeak:
Този базиран на IoT проект има четири раздела. Първо сензорът DHT11 усеща данните за влажност и температура, а сензорът BM180 измерва атмосферното налягане. На второ място Raspberry Pi отчита изхода на модула на сензора DHT11 чрез използване на едножичен протокол и изхода на датчика за налягане BM180 чрез използване на протокол I2C и извлича стойностите на двата сензора в подходящо число в проценти (влажност), скала по Целзий (температура), хектопаскал или милибар (налягане). На трето място, тези стойности се изпращат до сървъра ThingSpeak чрез използване на вградения Wi-Fi на Raspberry Pi 3. И накрая ThingSpeak анализира данните и ги показва в графична форма. LCD също се използва за локално показване на тези стойности.
ThingSpeak предоставя много добър инструмент за IoT базирани проекти. Използвайки уебсайта ThingSpeak, ние можем да наблюдаваме нашите данни и да контролираме нашата система през Интернет, използвайки каналите и уеб страниците, предоставени от ThingSpeak. ThingSpeak „Събира“ данните от сензорите, „Анализира и визуализира“ данните и „Действа“, като задейства реакция. По-рано обяснихме подробно за изпращане на данни до ThingSpeak, можете да проверите там. Тук накратко обясняваме използването на ThingSpeak за тази метеорологична станция Raspberry Pi.
Първо трябва да създадете акаунт в уебсайта ThingSpeak и да създадете „нов канал“ в него. В новия канал трябва да дефинирате някои полета за данните, които искате да наблюдавате, като в този проект ще създадем три полета за данни за влажност, температура и налягане.
Сега кликнете върху раздела „API ключове“ и запазете API и ключовете за писане и четене, тук ние използваме само клавиша Write. Трябва да копирате този ключ в променливата 'key' в кода.
След него кликнете върху „Импортиране / експортиране на данни“ и копирайте URL адреса на искането за актуализиране на канал GET, който е:
api.thingspeak.com/update?api_key=30BCDSRQ52AOI3UA&field1=0
Сега се нуждаем от този „URL Get Request URL“ в нашия код на Python, за да отворим „api.thingspeak.com“ и след това да изпратим данни, използвайки тази заявка за емисия като низ за заявка. И преди изпращането на данни потребителят трябва да въведе данните за температурата, влажността и налягането в този низ за заявка, използвайки променливи в програмата, проверете в кода в края на тази статия.
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 с Raspberry Pi. Raspberry Pi тук събира данни за влажността и температурата от DHT11 и атмосферното налягане от сензора BMP180 и след това ги изпраща на 16x2 LCD и ThingSpeak сървър. ThingSpeak показва данните под формата на графика, както е показано по-долу:
Можете да научите повече за DHT11 сензора и неговата връзка с Arduino тук.
Електрическа схема:
Конфигурация на Raspberry Pi и програма на Python:
Тук използваме езика Python за програмата. Преди да кодира, потребителят трябва да конфигурира Raspberry Pi. Можете да проверите нашите предишни уроци за Първи стъпки с Raspberry Pi и Инсталиране и конфигуриране на Raspbian Jessie OS в Pi.
Първо всичко, което трябва да инсталираме Adafruit Python DHT Sensor библиотека файлове, за да стартираме този проект на 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-bistвен python-dev sudo python setup.py install
След това потребителят трябва да активира Raspberry Pi I2C, като влезе и в конфигурацията на софтуера RPi:
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 (): print 'System Ready…' URL = 'https://api.thingspeak.com/update?api_key=%s'% key print "Wait…." while True: (humi, temp) = readDHT () (налягане) = readBmp180 () lcdcmd (0x01) lcdstring ("Humi # Temp # P (hPa)") lcdstring (humi + '%' + "% sC% s"% (temp, налягане)) finalURL = URL + "& field1 =% s & field2 =% s"% (humi, temp) + "& field3 =% s"% (налягане) print finalURL s = urllib2.urlopen (finalURL); print 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:
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, можете допълнително да я разширите, за да измервате различни свързани с времето параметри като скорост на вятъра, температура на почвата, осветеност (лукс), валежи, качество на въздуха и т.н.