Сделайте этот простой проект метеостанции для дома и офиса

Попробуйте наш инструмент устранения неполадок





В этом посте мы собираемся создать интересный проект мини-метеостанции на базе Arduino, который может показать вам температуру окружающей среды, влажность, давление, качество воздуха и многие другие данные из вашего окружения, которые можно использовать для прогнозирования погоды из дома.



Если вас интересует метеорология, этот проект может пригодиться для изучения местных погодных условий и краткосрочных изменений. Предлагаемый проект является твердотельным, что означает отсутствие движущихся частей.

Этот проект может быть размещен в помещении или в частично закрытых помещениях, где цепь находится вдали от прямых солнечных лучей, сильного ветра или влаги, которые могут повредить датчики на борту.



Дизайн:

Предлагаемый проект схемы мини-метеостанции построен на базе Arduino, который является мозгом метеостанции, который собирает множество данных с различных датчиков, обрабатывает их и отображает на ЖК-экране 16x2.

Вы можете выбрать свою любимую плату Arduino для этого проекта. Схема состоит из трех датчиков MQ-135, BMP180 и DHT11. Давайте подробно рассмотрим, что делает каждый датчик.

Датчик MQ-135:

MQ-135 - это датчик измерения качества воздуха, который может обнаруживать углекислый газ, спирт, бензол, дым, бутан, пропан и т. Д. Если химическая концентрация этих газов в воздухе высока, то мы можем сказать, что воздух загрязнен.

Датчик может определять изменение концентрации загрязняющих веществ в воздухе и выдает соответствующий уровень напряжения. Выходное напряжение датчика прямо пропорционально уровню концентрации химического вещества в воздухе.

Изменения напряжения от датчика поступают на Arduino, мы предварительно определили пороговые уровни в программе. Когда он пересекает пороговый уровень, микроконтроллер сообщает нам, безопасен ли воздух или нет.

Принципиальная электрическая схема

интерфейс датчика MQ135 со схемой метеостанции

На приведенной выше схеме показана схема подключения. Этому датчику требуется внешнее питание 5 В, потому что внутри датчика есть нагревательный элемент, который потребляет около 1 Вт. Питание от вывода питания Arduino не может обеспечивать более высокий ток.

Нагревательный элемент сохраняет датчик в тепле и помогает отобрать в воздухе необходимое количество химикатов. Датчику требуется около пары минут для достижения оптимальной температуры.

Датчик DHT11:

Датчик DHT11 широко известен как датчик температуры и влажности. Как следует из названия, он может измерять температуру и влажность окружающей среды.

Это 4-контактное устройство, но используются только 3 из них. Это может показаться очень простым компонентом, но внутри датчика есть микроконтроллер, который передает данные в цифровой форме на плату Arduino.

Он отправляет 8-битные данные каждую секунду в Arduino, чтобы декодировать полученный сигнал, нам нужно включить библиотеку в код, который предназначен для его обработки. Ссылка на библиотеку дается в конце статьи.

Принципиальная электрическая схема:

интерфейс DH11 с ардуино

Схема подключения датчика к Arduino очень проста. Выход датчика подключен к выводу A1 Arduino. Питание Vcc и GND подключены к контактам питания Arduino.

Примечание. Убедитесь, что ваш датчик имеет встроенный подтягивающий резистор. Если его нет, подключите подтягивающий резистор 4,7 кОм к выходному контакту датчика DHT11.

Датчик BMP180:

BMP180 - это барометрический датчик, который может измерять атмосферное давление, высоту и температуру. Измерением температуры с помощью этого датчика пренебрегают, поскольку у нас есть специальный датчик для измерения температуры окружающей среды.

Датчик измеряет высоту установки от уровня моря, он также является одним из параметров, используемых в метеорологии.

Принципиальная электрическая схема:

взаимодействие BM180 с Arduino
Он использует протокол связи I2C, вывод SDA идет к A4 Arduino, а SCL - к A5 Arduino. Vcc и GND подключены к контактам питания Arduino.

Подключение ЖК-дисплея:

датчик влажности с использованием Aduino


На ЖК-дисплее отображаются все данные с датчиков. Соединение между ЖК-дисплеем и Arduino является стандартным, мы можем найти подобное соединение во многих других проектах на основе ЖК-дисплея. Отрегулируйте потенциометр 10K для оптимальной видимости с ЖК-дисплея.

Авторский прототип:

изображение прототипа метеостанции

Вот авторский прототип схемы мини-монитора погоды, в которой все датчики, показанные на схемах, подключены к плате Arduino.

Примечание. Схема подключения каждого датчика и ЖК-дисплея должна быть подключена к одной плате Arduino. Мы предусмотрели дискретное подключение датчика на каждой схеме, чтобы избежать путаницы при дублировании схемы.

Загрузите файлы библиотеки перед загрузкой кода:

Библиотека DHT11: https://arduino-info.wikispaces.com/file/detail/DHT-lib.zip

Библиотека BMP180: github.com/adafruit/Adafruit_BMP085_Unified.git

Программный код:

#include
#include
#include
#include
#define DHTxxPIN A1
LiquidCrystal lcd(12,11,5,4,3,2)
dht DHT
Adafruit_BMP085 bmp
int ack
int input = A0
unsigned long A = 1000L
unsigned long B = A * 60
unsigned long C = B * 2
int low = 300
int med = 500
int high = 700
int x = 4000
void setup()
{
Serial.begin(9600)
lcd.begin(16,2)
lcd.setCursor(0,0)
lcd.print('Sensors are')
lcd.setCursor(0,1)
lcd.print('getting ready')
delay(C)
}
void loop()
{
ack=0
int chk = DHT.read11(DHTxxPIN)
switch (chk)
{
case DHTLIB_ERROR_CONNECT:
ack=1
break
}
if(ack==0)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Temp(*C)= ')
lcd.print(DHT.temperature)
lcd.setCursor(0,1)
lcd.print('Humidity(%) = ')
lcd.print(DHT.humidity)
delay(x)
}
if(ack==1)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('NO DATA')
lcd.setCursor(0,1)
lcd.print('Check Sensor')
delay(x)
}
if (!bmp.begin())
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('BMP180 sensor')
lcd.setCursor(0,1)
lcd.print('not found')
while (1) {}
}
lcd.clear()
lcd.setCursor(0,0)
lcd.print('----Pressure---- ')
lcd.setCursor(0,1)
lcd.print(bmp.readPressure())
lcd.print(' Pascal')
delay(x)
lcd.clear()
lcd.setCursor(0,0)
lcd.print('----Altitude----')
lcd.setCursor(0,1)
lcd.print(bmp.readAltitude(101500))
lcd.print(' meter')
delay(x)
lcd.clear()
lcd.setCursor(0,0)
lcd.print(' Air Quality:')
if(analogRead(input)==0)
{
lcd.setCursor(0,1)
lcd.print(' Sensor Error')
delay(x)
}
if(analogRead(input)0)
{
lcd.setCursor(0,1)
lcd.print(' GOOD')
delay(x)
}
if(analogRead(input)>low && analogRead(input) {
lcd.setCursor(0,1)
lcd.print(' GETTING BAD')
delay(x)
}
if(analogRead(input)>=med && analogRead(input) {
lcd.setCursor(0,1)
lcd.print(' VERY POOR')
delay(x)
}
if(analogRead(input)>=high)
{
lcd.setCursor(0,1)
lcd.print(' WORST')
delay(x)
}
}

ПРИМЕЧАНИЕ:

В описанной схеме мини-метеостанции требуется 2 минуты для отображения показаний датчика, до тех пор, пока не появится сообщение «Датчики готовятся». Это связано с тем, что датчику MQ-135 требуется 2 минуты для достижения оптимальной рабочей температуры.




Предыдущая статья: Как построить простую сушилку для белья в сезон дождей Следующая статья: Цепь игрушечной машинки с хлопком