- Работа и настройка ThingSpeak:
- Принципиальная электрическая схема:
- Конфигурация Raspberry Pi и программа Python:
Влажность, температура и давление - три основных параметра для построения любой метеостанции и измерения условий окружающей среды. Ранее мы создали мини-метеостанцию с использованием Arduino, а на этот раз мы расширяем метеостанцию с помощью Raspberry Pi. Этот проект, основанный на IoT, направлен на отображение текущих параметров влажности, температуры и давления на ЖК-дисплее, а также на интернет-сервере с помощью Raspberry Pi, что делает его метеостанцией Raspberry Pi. Вы можете установить эту настройку где угодно и отслеживать погодные условия в этом месте из любой точки мира через Интернет, она не только покажет текущие данные, но также может показать прошлые значения в виде графиков.
Мы использовали датчик влажности и температуры DHT11 для измерения температуры и модуль датчика давления BM180 для измерения барометрического давления. Этот термометр со шкалой Цельсия и процентная шкала Измеритель влажности отображает температуру и влажность окружающей среды на ЖК-дисплее, а атмосферное давление отображается в миллибарах или гПа (гектопаскалях). Все эти данные отправляются на сервер ThingSpeak для мониторинга в реальном времени из любой точки мира через Интернет. Обязательно ознакомьтесь с демонстрационным видео и программой Python, приведенными в конце этого руководства.
Работа и настройка ThingSpeak:
Этот проект, основанный на IoT, состоит из четырех разделов. Сначала датчик DHT11 определяет данные о влажности и температуре, а датчик BM180 измеряет атмосферное давление. Во-вторых, Raspberry Pi считывает выходной сигнал модуля датчика DHT11, используя однопроводный протокол, и выход датчика давления BM180, используя протокол I2C, и извлекает значения обоих датчиков в подходящее число в процентах (влажность), шкале Цельсия (температура), гектопаскалях или миллибарах (давление).. В-третьих, эти значения отправляются на сервер ThingSpeak с использованием встроенного Wi-Fi Raspberry Pi 3. И, наконец, ThingSpeak анализирует данные и отображает их в виде графика. ЖК-дисплей также используется для локального отображения этих значений.
ThingSpeak предоставляет очень хороший инструмент для проектов на основе Интернета вещей. Используя веб-сайт ThingSpeak, мы можем отслеживать наши данные и управлять нашей системой через Интернет, используя каналы и веб-страницы, предоставляемые ThingSpeak. ThingSpeak «собирает» данные с датчиков, «анализирует и визуализирует» данные и «действует», вызывая реакцию. Ранее мы подробно объясняли, как отправлять данные в ThingSpeak, вы можете проверить там. Здесь мы кратко объясняем, как использовать ThingSpeak для этой метеостанции Raspberry Pi.
Сначала вам нужно создать учетную запись на веб-сайте ThingSpeak и создать в нем «Новый канал». В новом канале вы должны определить некоторые поля для данных, которые вы хотите отслеживать, как и в этом проекте, мы создадим три поля для данных влажности, температуры и давления.
Теперь перейдите на вкладку «Ключи API» и сохраните ключи API записи и чтения, здесь мы используем только ключ записи. Вам необходимо скопировать этот ключ в переменную key в коде.
После этого нажмите «Импорт / экспорт данных» и скопируйте URL-адрес запроса GET канала обновления, который:
api.thingspeak.com/update?api_key=30BCDSRQ52AOI3UA&field1=0
Теперь нам нужен этот «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 и сервер ThingSpeak. ThingSpeak отображает данные в виде графика, как показано ниже:
Вы можете узнать больше о датчике DHT11 и его взаимодействии с Arduino здесь.
Принципиальная электрическая схема:
Конфигурация Raspberry Pi и программа Python:
Здесь для Программы мы используем язык Python. Перед кодированием пользователю необходимо настроить Raspberry Pi. Вы можете проверить наши предыдущие руководства по началу работы с Raspberry Pi и установке и настройке Raspbian Jessie OS в Pi.
Прежде всего, нам нужно установить файлы библиотеки датчиков Adafruit Python DHT для запуска этого проекта на 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 Too:
sudo raspi-config
Затем перейдите в «Дополнительные параметры», выберите «I2C» и «Включить».
Программная часть этого проекта играет очень важную роль для выполнения всех операций. Прежде всего, мы включаем все необходимые библиотеки, инициализируем переменные и определяем контакты для 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 (): 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"% (темп, давление)) finalURL = URL + "& field1 =% s & field2 =% s"% (humi, temp) + "& field3 =% s"% (давление) печать finalURL s = urllib2.urlopen (finalURL); напечатать humi + "" + temp + "" + pressure s.close () time.sleep (10)
Для ЖК- дисплея функция def lcd_init () используется для инициализации ЖК-дисплея в четырехбитном режиме, функция def lcdcmd (ch) используется для отправки команды на ЖК-дисплей, функция def lcddata (ch) используется для отправки данных на ЖК-дисплей, а функция def lcdstring (Str ) используется для отправки строки данных на ЖК-дисплей. Вы можете проверить все эти функции в приведенном ниже коде.
Данная функция 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 (value, 0) AC2 = convert1 (value, 2) AC3 = convert1 (значение, 4) AC4 = convert2 (value, 6)……………………..
Итак, это базовая метеостанция Raspberry Pi, вы можете расширить ее для измерения различных погодных параметров, таких как скорость ветра, температура почвы, освещенность (люкс), количество осадков, качество воздуха и т. Д.