В этом посте мы собираемся создать интересный проект мини-метеостанции на базе Arduino, который может показать вам температуру окружающей среды, влажность, давление, качество воздуха и многие другие данные из вашего окружения, которые можно использовать для прогнозирования погоды из дома.
Если вас интересует метеорология, этот проект может пригодиться для изучения местных погодных условий и краткосрочных изменений. Предлагаемый проект является твердотельным, что означает отсутствие движущихся частей.
Этот проект может быть размещен в помещении или в частично закрытых помещениях, где цепь находится вдали от прямых солнечных лучей, сильного ветра или влаги, которые могут повредить датчики на борту.
Дизайн:
Предлагаемый проект схемы мини-метеостанции построен на базе Arduino, который является мозгом метеостанции, который собирает множество данных с различных датчиков, обрабатывает их и отображает на ЖК-экране 16x2.
Вы можете выбрать свою любимую плату Arduino для этого проекта. Схема состоит из трех датчиков MQ-135, BMP180 и DHT11. Давайте подробно рассмотрим, что делает каждый датчик.
Датчик MQ-135:
MQ-135 - это датчик измерения качества воздуха, который может обнаруживать углекислый газ, спирт, бензол, дым, бутан, пропан и т. Д. Если химическая концентрация этих газов в воздухе высока, то мы можем сказать, что воздух загрязнен.
Датчик может определять изменение концентрации загрязняющих веществ в воздухе и выдает соответствующий уровень напряжения. Выходное напряжение датчика прямо пропорционально уровню концентрации химического вещества в воздухе.
Изменения напряжения от датчика поступают на Arduino, мы предварительно определили пороговые уровни в программе. Когда он пересекает пороговый уровень, микроконтроллер сообщает нам, безопасен ли воздух или нет.
Принципиальная электрическая схема
На приведенной выше схеме показана схема подключения. Этому датчику требуется внешнее питание 5 В, потому что внутри датчика есть нагревательный элемент, который потребляет около 1 Вт. Питание от вывода питания Arduino не может обеспечивать более высокий ток.
Нагревательный элемент сохраняет датчик в тепле и помогает отобрать в воздухе необходимое количество химикатов. Датчику требуется около пары минут для достижения оптимальной температуры.
Датчик DHT11:
Датчик DHT11 широко известен как датчик температуры и влажности. Как следует из названия, он может измерять температуру и влажность окружающей среды.
Это 4-контактное устройство, но используются только 3 из них. Это может показаться очень простым компонентом, но внутри датчика есть микроконтроллер, который передает данные в цифровой форме на плату Arduino.
Он отправляет 8-битные данные каждую секунду в Arduino, чтобы декодировать полученный сигнал, нам нужно включить библиотеку в код, который предназначен для его обработки. Ссылка на библиотеку дается в конце статьи.
Принципиальная электрическая схема:
Схема подключения датчика к Arduino очень проста. Выход датчика подключен к выводу A1 Arduino. Питание Vcc и GND подключены к контактам питания Arduino.
Примечание. Убедитесь, что ваш датчик имеет встроенный подтягивающий резистор. Если его нет, подключите подтягивающий резистор 4,7 кОм к выходному контакту датчика DHT11.
Датчик BMP180:
BMP180 - это барометрический датчик, который может измерять атмосферное давление, высоту и температуру. Измерением температуры с помощью этого датчика пренебрегают, поскольку у нас есть специальный датчик для измерения температуры окружающей среды.
Датчик измеряет высоту установки от уровня моря, он также является одним из параметров, используемых в метеорологии.
Принципиальная электрическая схема:
Он использует протокол связи I2C, вывод SDA идет к A4 Arduino, а SCL - к A5 Arduino. Vcc и GND подключены к контактам питания Arduino.
Подключение ЖК-дисплея:
На ЖК-дисплее отображаются все данные с датчиков. Соединение между ЖК-дисплеем и 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 минуты для достижения оптимальной рабочей температуры.
Предыдущая статья: Как построить простую сушилку для белья в сезон дождей Следующая статья: Цепь игрушечной машинки с хлопком