Метеостанция на ардуино своими руками

Метеостанция из ARDUINO | Мастер Винтик. Всё своими руками!

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

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

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

Датчик MQ-135

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

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

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

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

Питание от Arduino не может обеспечить больший ток.

ЧИТАТЬ ДАЛЕЕ:  Грядки своими руками не как у всех интересные идеи для дачного дизайна

Метеостанция на ардуино своими руками

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

Датчик dht11

Датчик dht11 является известный как датчик температуры и влажности.

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

Схема подключения датчика к Arduino очень проста. Выход датчика подключается к контакту А1 ардуино. На vcc питания и GND подключены к выводам питания поставка ардуино.

Примечание: пожалуйста, убедитесь, что ваш датчик имеет встроенный резистор. Если его нет, подключите 4,7 ком резистор с выхода датчика dht11.

Датчик BMP180

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

Датчик измеряет высоту установки над уровнем моря. Он использует протокол связи I2C, SDA pin идет на А4 ардуино и SCL идет на А5 ардуино. Vcc и GND подключены к выводам питания питания ардуино.

LCD дисплей

Метеостанция на ардуино своими руками

ЖК-дисплей показывает все данные от датчиков. Связь между ЖК-дисплеем и ардуино является стандартным. Отрегулируйте потенциометром 10К для оптимальной яркости ЖК-дисплея.

Вот схема подключения всех датчиков станции к плате Arduino.

#include#include#include#include#define DHTxxPIN A1LiquidCrystal 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){amp}gt;low {amp}amp;{amp}amp; analogRead(input)=med {amp}amp;{amp}amp; analogRead(input)=high){lcd.setCursor(0,1);lcd.print(»     WORST»);delay(x);}

Домашняя метеостанция на базе Ардуино

Давненько хотелось сделать мини метеостанцию-надоело выглядывать в окно чтобы посмотреть на градусник за стеклом. Этот приборчик заменит гигрометр, барометр и термометр а также покажет текущее время. В данном посту я расскажу как быстро и просто собрать небольшую метеостанцию на базе Ардуино. Основой будет плата Arduino Nano можно применить другие платы- Arduino Uno, Arduino Pro mini).

Датчик DHT11 передает информацию по одному проводу на ардуино. Питается напряжением 5 В. Он измеряет влажность в пределах от 20 до 80%. Температура измеряет в диапазоне от 0 до 50оС.

Датчик BMP180 измеряет атмосферное давление диапазоне 300-1100 hPa, температуру в диапазоне -40 85оС. Напряжение питания составляет 3.3 В. Подключается по протоколу связи I2C. Часы реального времени DS1302 питаются напряжением 5 В и подключается по протоколу связи I2C. При установке в соответствующее гнездо батарейки CR2032 поддерживают ход часов при отключении основного питания.

Дисплей LCD1602 питается напряжением 5 Вольт и также подключается по протоколу связи I2C. Эта самоделка сделана на базе готовых плат и датчиков, поэтому ее можно повторить любому начинающему любителю поработать с паяльником. Заодно можно получить азы программирования Ардуино. Я программировал эту метеостанцию в программе визуального программирования FLPROG за 15 минут.

Метеостанция на ардуино своими руками

Не нужно вручную часами писать скетчи, данная программа помогает начинающим (и не только) быстро освоить азы программирования устройств на основании платформы Ардуино. Кому лень повозиться с программой — скетч ( только выставлять текущее время часов надо будет):#include#include «DHT_NEW.h»#include#include#includeBMP085 _bmp085 = BMP085();long _bmp085P = 0;long _bmp085T = 0;long _bmp085A = 0;

LiquidCrystal_I2C _lcd1(0x3f, 16, 2);int _dispTempLength1=0;boolean _isNeedClearDisp1;

DHT _dht1;

iarduino_RTC _RTC1(RTC_DS1302, 7, 5, 6);

unsigned long _dht1LRT = 0UL;unsigned long _dht1Tti = 0UL;int _disp1oldLength = 0;unsigned long _bmp0852Tti = 0UL;String _RTC1_GetTime2_StrOut;int _disp2oldLength = 0;void setup(){Wire.begin();delay(10);_bmp085.init(MODE_ULTRA_HIGHRES,116, true);_RTC1.begin();_RTC1.period(1);_lcd1.init();_lcd1.backlight();_dht1.setup(4);

//Плата:1if (1) {_dispTempLength1 = ((((((String(«T:»)) (( _floatToStringWitRaz((_bmp085T)/(10.00),1))) (String(«*»)))) (((String(«P:»)) (( _floatToStringWitRaz((_bmp085P)/(133.3),0))) (String(«*»)))) (((String(«»)) (( _floatToStringWitRaz(_dht1.humidity,0))) (String(«%»))))).length();

Метеостанция на ардуино своими руками

if (_disp1oldLength {amp}gt; _dispTempLength1) {_isNeedClearDisp1 = 1;}_disp1oldLength = _dispTempLength1;_lcd1.setCursor(int((16 — _dispTempLength1)/2), 0);_lcd1.print((((((String(«T:»)) (( _floatToStringWitRaz((_bmp085T)/(10.00),1))) (String(«*»)))) (((String(«P:»)) (( _floatToStringWitRaz((_bmp085P)/(133.

3),0))) (String(«*»)))) (((String(«»)) (( _floatToStringWitRaz(_dht1.humidity,0))) (String(«%»)))));} else {if (_disp1oldLength {amp}gt; 0) {_isNeedClearDisp1 = 1; _disp1oldLength = 0;}}if(_isTimer(_dht1Tti, 2000)) {if(_isTimer(_dht1LRT, ( _dht1.getMinimumSamplingPeriod()))) {_dht1.readSensor();

_dht1LRT = millis();_dht1Tti = millis();}}if (1) {_dispTempLength1 = ((((((String(«t:»)) (( _floatToStringWitRaz(_dht1.temperature,0))) (String(«*»)))) (_RTC1_GetTime2_StrOut)))).length();if (_disp2oldLength {amp}gt; _dispTempLength1) {_isNeedClearDisp1 = 1;}_disp2oldLength = _dispTempLength1;_lcd1.

setCursor(int((16 — _dispTempLength1)/2), 1);_lcd1.print((((((String(«t:»)) (( _floatToStringWitRaz(_dht1.temperature,0))) (String(«*»)))) (_RTC1_GetTime2_StrOut))));} else {if (_disp2oldLength {amp}gt; 0) {_isNeedClearDisp1 = 1; _disp2oldLength = 0;}}_RTC1_GetTime2_StrOut = _RTC1.gettime(«H:i:sD»);

}String _floatToStringWitRaz(float value, int raz){

Для этого проекта нам потребуется:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • Bluetooth модуль HC-05/HC-06;
  • датчик LM35 или DHT11;
  • смартфон с ОС Andrioid;
  • макетная плата;
  • провода «папа-папа», «папа-мама».
Схема блютуз метеостанции на Ардуино
Схема блютуз метеостанции на Ардуино своими руками

Метеостанция на Arduino – Радиодед

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

Получить фактические точные данные  можно с помощью домашней метеостанции. Домашнюю метеостанцию можно купить, а можно сделать самостоятельно. Рассмотрим создание домашней метеостанции на контроллере Arduino.

Наша домашняя метеостанция будет измерять температуру и влажность воздуха, атмосферное давление и выводить параметры на ЖК-дисплей. Список комплектующих, которые понадобятся для данного проекта:

  • контроллер Arduino;
  • плата прототипирования (без пайки)
  • модуль датчика BMP085 или BMP180
  • модуль с датчиком влажности DHT11
  • датчик температуры DS18B20
  • резистор 4,7 кОм;
  • дисплей Nokia 5110
  • провода и корпус

В качестве платы Arduino в принципе можно использовать любую из модельного ряда Arduino, но я рекомендую Arduino Uno или Arduino Duemilanove, так как в будущем собираюсь установить на нее Ethernet shield, чтобы сделать домашнюю метеостанцию устройством IoT (“Интернета вещей”). Я буду использовать плату Arduino Duemilanove (рисунок 1).

Рис. 1. Плата Arduino Duemilanove

Теперь рассмотрим датчики, которые будем использовать в проекте.Датчик давления BMP085 (рисунок 2) – высокоточный датчик атмосферного давления с низким энергопотреблением. используется для измерения атмосферного давления. Точность достигает минимального значения измерения давления 0.03hPa.

Также выводит и данные о температуре. Напряжение питания 1.62V – 3.6V. Интерфейс подключения I2C. В продаже встречаются готовые платы  как с стабилизатором, так и без него.

Датчик давления BMP085 мы будем использовать только для измерения атмосферного давления, для измерения температуры будем использовать более точный датчик DS18B20.

Рис.2. Модуль датчика BMP085

Датчик температуры DS18B20 (рисунок 3) –  это цифровой измеритель температуры  с  разрешением преобразования 9 – 12 разрядов и функцией тревожного сигнала контроля за температурой.

Обменивается данными с микроконтроллером по однопроводной линии связи, используя протокол интерфейса 1-Wire. Диапазон измерения температуры составляет от -55 до 125 °C. Для диапазона от -10 до 85 °C погрешность не превышает 0,5 °C.

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

Рис. 3. Датчик температуры DS18B20

Датчик DHT11 (рисунок 4) не обладают высоким быстродействием и точностью, но зато имеет низкую стоимость. Датчик состоит из емкостного датчика влажности и термистора.

Содержит аналого-цифровой преобразователь для преобразования аналоговых значений влажности и температуры в цифровые. Диапазон измерения влажности – 20-80%, частота опроса 1 раз в секунду.

Мы будем использовать в проекте датчик DHT11 в виде готового модуля.

Рис.4. Модуль DHT11

Для отображения информации с датчиков будем использовать ЖК-дисплей Nokia 5110 (рисунок 5). Это графический монохромный дисплей с разрешением 84×48 точек. Дисплей Nokia 5110 поставляется на плате в паре с контроллером PCD8544 и штыревым разъемом. Электропотребление дисплея позволяет питать его от выхода 3.3 В платы Arduino.

Рис. 5. Дисплей Nokia 5110

Собираем схему согласно рисунка 6.

Рис. 6. Схема подключения к Arduino

Для удобства я спаял датчики на плате прототипирования, сделал контакты для подключения проводов от дисплея и оформил это в виде шилда – припаял штырьки для подключения к контактам платы Arduino (рисунок 7).

Рис. 7. Как получилось у меня. Проект метеостанции на Arduino

Теперь приступим к написанию скетча. При написании скетча нам понадоьятся следующие Arduino-библиотеки:•    OneWire – для работы с устройствами 1-Wire (датчик DS18B20);•    BMP085 и Wire – для работы с датчиком BMP085 (или BMP180);•    DHT – для работы с датчиком DHT11;

•    Adafruit_GFX и Adafruit_PCD8544 – для работы с дисплеем Nokia 5110.

Метеостанция на ардуино своими руками

С периодичностью 5 секунд получаем данные с датчиков DS18B20, DHT11, BMP085 и выводим в монитор последовательного порта и на дисплей Nokia 5110.

Процедура получения данных с датчика DS18B20 – get_temp()  выполняет поиск устройств 1-Wire, подключенных к выводу Adruino  D7 (у нас один датчик), и выдает его данные.Запустим Arduino IDE.

Создадим новый скетч и внесем в него содержимое листинга 1.

// подключение библиотек#include#include#include#include “DHT.

h”#include#include// тип DHT сенсора#define DHTTYPE DHT11   // DHT 11// создание экземпляров объектовBMP085 dps = BMP085();DHT dht(8, DHTTYPE);  // dht11 на pin 8OneWire  ds(9);       // ds18b20 на pin 9// Nokia 5110// pin 3 – Serial clock out (SCLK)// pin 4 – Serial data out (DIN)// pin 5 – Data/Command select (D/C)// pin 6 – LCD chip select (CS)// pin 7 – LCD reset (RST)Adafruit_PCD8544 display = Adafruit_PCD8544(3, 4, 5, 6, 7);// переменныеint Temp1;

long Temperature085 = 0, Pressure085 = 0, Altitude085 = 0;

void setup() {// запуск последовательного портаSerial.begin(9600);Serial.println(“start”);// запуск I2CWire.begin();// запуск bmpdps.init();// инициализация дисплеяdisplay.begin();// установить контраст фона экранаdisplay.

setContrast(60);display.clearDisplay();       // очистить экранdisplay.setTextSize(1);    // размер шрифтаdisplay.setTextColor(BLACK);   // цвет// заставкаdisplay.setCursor(15,15);display.print(“Home Meteo”);display.

display();delay(2000);

print(“t=ERROR”);}else {Serial.print(“Temp=”);Serial.print(Temp/16);Serial.print(“.”);Serial.print(((Temp)*100)/16);Serial.println(” *C”);display.setCursor(15,15);display.print(“t=”);display.print(Temp/16);display.print(“.”);display.print(((Temp)*100)/16);display.print(” C”);Temp1=Temp;}// dht11float h = dht.readHumidity();float t = dht.readTemperature();Serial.

print(“humidity=”);Serial.print(h);Serial.println(” %”);Serial.print(“temperatura=”);Serial.print(t);Serial.println(” *C”);display.setCursor(15,25);display.print(“h=”);display.print(h);display.print(” %”);// bmp085dps.getTemperature({amp}amp;Temperature085);dps.getPressure({amp}amp;Pressure085);dps.getAltitude({amp}amp;Altitude085);Serial.print(“pressure5=”);Serial.print(Pressure085/133.

3);Serial.println(” mm Hg”);Serial.print(“temp5=”);Serial.print(Temperature085*0.1);Serial.println(” *C”);Serial.println();display.setCursor(5,35);display.print(“p=”);display.print(Pressure085/133.3);display.print(“mmHg”);// обновитьdisplay.

display();// паузаdelay(5000);}// получение температуры датчика ds18b20int get_temp() {byte i;byte present = 0;byte data[12];byte addr[8];

int Temp;

if ( !ds.search(addr)) {Serial.print(“No more addresses.n”);ds.reset_search();return 999;}Serial.print(“R=”);  // печать уникального 1-wire идентификатораfor( i = 0; i {amp}lt; 8; i ) {
Serial.

Общий вид датчика DHT11

print(addr[i], HEX);Serial.print(” “);}Serial.println();if ( OneWire::crc8( addr, 7) != addr[7]) {Serial.print(“CRC is not valid!n”);return 999;}if ( addr[0] != 0x28) {Serial.

print(“Device is not a DS18S20 family device.n”);return 999;

ds.reset();ds.select(addr);// начинаем преобразование, используя ds.write(0x44,1)ds.write(0x44,1);// пауза с запасом (750 мс)delay(1000);

ds.reset();

Метеостанция на Arduino с беспроводным датчиком температуры

Как-то прогуливаясь по городу увидел новый открывшийся магазин радиоэлектроники. Зайдя в него обнаружил большое количество шилдов для Ардуины т.к. у меня дома была Arduino Uno и Arduino Nano сразу пришла мысль поиграться с передатчиками сигнала на расстоянии. Решил купить самый дешевый передатчик и приемник на 433 МГц:

  • Метеостанция на ардуино своими рукамиПередатчик сигнала.
  • Метеостанция на ардуино своими рукамиПриемник сигнала.
  • Записав простейший скетч передачи данных (пример взят от сюда), выяснилось, что передающие устройства могут вполне подойти для передачи простейших данных, таких как температура, влажность.

Передатчик имеет следующие характеристики:1. Модель: MX -FS — 03V2. Радиус действия (зависит от наличия преграждающих предметов): 20-200 метров3. Рабочее напряжение: 3.5 -12В4.

Размеры модуля : 19 * 19 мм 5. Модуляция сигнала : AM6. Мощность передатчика: 10 мВт7. Частота: 433 МГц8. Необходимая длина внешней антенны : 25см9.

Простота подключения (всего три провода): DATA ; VCC ; земля.

Характеристики приемного модуля:1. Рабочее напряжение: DC 5В2. Ток: 4мA3. Рабочая частота: 433,92 МГц4. Чувствительность : — 105дБ5. Размеры модуля : 30 * 14 * 7 мм6. Небходима внешняя антенна: 32 см.

Модуль датчика DHT11

В просторах интернета сказано, что дальность передачи информации на 2Кб/сек может доходить до 150м. Сам не проверял, но в двухкомнатной квартире принимает везде.

  1. Аппаратная часть домашней метеостанции
  2. После нескольких экспериментов решил подключить к Arduino Nano датчик температуры, влажности и передатчик.
  3. Метеостанция на ардуино своими рукамиПодключение датчика температуры, влажности и передатчика
  4. Датчик температуры DS18D20 подключается к ардуино следующим образом:

1) GND к минусу микроконтроллера.2) DQ через подтягивающий резистор к земле и к выводу D2 Ардуины3) Vdd к 5В.

  • Более детально почитать о работе датчика можно здесь.
  • Модуль передатчика MX -FS — 03V питается от 5 Вольт, вывод данных (ADATA) подключен к выводу D13.
  • К Ардуино Уно подключил LCD дисплей и барометр BMP085.
  • Метеостанция на ардуино своими рукамиСхема подключение к ардуино уно
  • Приемник сигнала подключен к выводу D10.

Модуль BMP085 — цифровой датчик атмосферного давления. Датчик позволяет измерять температуру,давление и высоту над уровнем моря. Интерфейс подключения: I2C. Напряжение питания датчика 1.8-3.6 В

Подключается модуль к Arduino также, как и другие I2C устройства:

  • VCC — VCC (3,3 В); 
  • GND — GND; 
  • SCL — к аналоговому выводу 5;
  • SDA — к аналоговому выводу 4.

DHT11:

  • Очень низкая стоимость
  • Питание и I/O 3-5 В
  • Определение влажности 20-80% с 5% точностью
  • Определение температуры 0-50 град. с 2% точностью
  • Частота опроса не более 1 Гц (не более раза в 1 сек.)
  • Размеры 15.5мм x 12мм x 5.5мм
  • 4 вывода с расстоянием между ножками 0.1″

DHT имеет 4 вывода:

  1. Vcc (3-5V питание)
  2. Data out — Вывод данных
  3. Не используется
  4. Общий

Подключается к D8 Ардуины.

  1. Программная часть домашней метеостанции
  2. Передающий модуль измеряет и передает температуру раз в 10 минут.
  3. Ниже привожу программу:

/*Версия скетча 1.0Отсылаем температуру каждые 10мин.

Метеостанция на ардуино своими руками

*/#include#include#include

#define ONE_WIRE_BUS 2 //Пин подключения датчика Даллас

OneWire oneWire(ONE_WIRE_BUS);DallasTemperature sensors({amp}amp;oneWire);DeviceAddress insideThermometer;

void setup(void){

//Serial.begin(9600);vw_set_ptt_inverted(true); // Необходимо для DR3100vw_setup(2000); // Устанавливаем скорость передачи (бит/с)

sensors.begin();

if (!sensors.getAddress(insideThermometer, 0));

printAddress(insideThermometer);sensors.setResolution(insideThermometer, 9);

Метеостанция на ардуино своими руками

void printTemperature(DeviceAddress deviceAddress){

float tempC = sensors.getTempC(deviceAddress);//Serial.print(«Temp C: «);

//Serial.println(tempC);//Формирование данных для для отправкиint number = tempC;

char symbol = ‘c’; //Служебный символ определения что это датчик

String strMsg = «z «;strMsg = symbol;strMsg = » «;strMsg = number;strMsg = » «;char msg[255];strMsg.toCharArray(msg, 255);vw_send((uint8_t *)msg, strlen(msg));vw_wait_tx(); // Ждем пока передача будет оконченаdelay(200);

Метеостанция на ардуино своими руками

void loop(void){

for (int j=0; j

Что потребуется для изготовления портативной метеостанции?

В следующем скетче для определения температуры был использован датчик LM35, подключенный к аналоговому порту. Для точности измерений температуры необходимо будет откалибровать датчик. В этом примере измеряется только температура, при этом данные отправляются на смартфон только в том случае, если произошло изменение температуры или нажата кнопка «Обновить» в приложении.

#include {amp}lt;SoftwareSerial.h{amp}gt;    //  подключение библиотеки SoftwareSerial.hSoftwareSerial mySerial(2, 3); // указываем пины rx и tx соответственноint temp1;  // освобождаем память для переменной "temp1"int temp2;  // освобождаем память для переменной "temp2"int temp3;  // освобождаем память для переменной "temp3"float temp; // освобождаем память для переменной "temp"byte val;   // освобождаем память для переменной "val"String stringT = String("*");

voidsetup() {
  pinMode(A0, INPUT);    // сенсор LM35 подключим к аналоговому входу A0Serial.begin(9600);   // запуск аппаратного последовательного порта
  mySerial.begin(9600); // запуск программного последовательного порта
}

voidloop() {
  temp1 = analogRead(A0); // считываем значение с датчикаdelay(60000);
  temp2 = analogRead(A0); // повторно считываем значение с датчика
  temp3 = temp1 - temp2;  // определяем, изменилась ли температура// отправляем сообщение только, когда изменилась температураif (temp3 != 0) {
  temp = ( temp2/1023.0 )*5.0*1000/10; // вычисляем значение температуры
  mySerial.println(temp   stringT);    // отправляем температуру на телефонSerial.println(temp   stringT);      // отправляем температуру на мониторSerial.println("");
}

  // отправляем сообщение, когда нажата кнопка "обновить" в приложенииif (Serial.available()) // проверяем, поступают ли какие-то команды
  {
    val = Serial.read(); // переменная val равна полученной командеif (val == '1') {
  temp = ( temp2/1023.0 )*5.0*1000/10; // вычисляем значение температуры
  mySerial.println(temp   stringT);    // отправляем температуру на телефонSerial.println(temp   stringT);      // отправляем температуру на мониторSerial.println("");
}
  }

}

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

LCD дисплей

DHT _dht1;

Рис.4. Модуль DHT11

int Temp;

ds.reset();

void setup(void){

Метеостанция на ардуино своими руками

sensors.begin();

void loop(void){

for (int j=0; j

Предлагается методика изготовления погодной станции для дома или дачи. За основу возьмём плату Ардуино и набор сенсоров: температуры, влажности, давления и датчик углекислого газа. Данные будут выводиться на LCD дисплей, а питание осуществляться от блока питания для мобильного телефона или батареек.

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

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

Метеостанция на ардуино своими руками

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

Корпус для самодельной домашней метеостанции

2Используемые компоненты

  • LCD-дисплей 1602 использует 6 пинов Arduino 4 на питание (подсветка и знакосинтезатор).
  • Датчик температуры и влажности DHT11 подключается к любому цифровому пину. Для чтения значений будем использовать библиотеку DHT11.
  • Датчик давления BMP085 подключается по интерфейсу I2C к двум пинам Arduino: SDA – к аналоговому пину A4 и SCL – к аналоговому пину A5. Обратим внимание, что для питания на датчик подаётся напряжение 3,3 В.
  • Датчик углекислого газа MQ135 подключается к одному из аналоговых пинов.

Компоненты домашней метеостанции

  • В принципе, для оценки метеообстановки достаточно иметь данные о температуре, влажности и атмосферном давлении, а датчик углекислого газа необязателен.
  • Используя же все 3 датчика, у нас будут задействованы 7 цифровых и 3 аналоговых пина Ардуино, не считая питания, естественно.
  • 3Схема соединениякомпонентов метеостанции

Схема метеостанции показана на рисунке. Тут всё ясно.

Схема домашней метеостанции

Метеостанция на ардуино своими руками

4Скетч метеостанции

Напишем скетч для Ардуино. Код по возможности снабжён подробными ми.

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

Для этого вам понадобиться такой набор элементов:

  • Датчик температуры и влажности DHT11 – используется как основное приспособление для регистрации параметров окружающей среды;
  • Плата Arduino UNO – необходима для обработки получаемых с датчика данных и вывода их на цифровой дисплей;
  • Электронный дисплей – устройство для отображения измеряемых данных и перевода их в понятную для обывателей форму;
  • Макетная плата – предназначена для фиксации всех элементов и размещения на жестком основании, упрощает электрическое соединение всех деталей;
  • Соединительные провода со штекером или под пайку.

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

Настройки в коде

RESET_CLOCK 0       // сброс часов на время загрузки прошивки (для модуля с несъёмной батарейкой). Не забудь поставить 0 и прошить ещё раз!
SENS_TIME 30000     // время обновления показаний сенсоров на экране, миллисекунд
LED_MODE 0          // тип RGB светодиода: 0 - главный катод, 1 - главный анод

// управление яркостью
BRIGHT_CONTROL 1      // 0/1 - запретить/разрешить управление яркостью (при отключении яркость всегда будет макс.)
BRIGHT_THRESHOLD 350  // величина сигнала, ниже которой яркость переключится на минимум (0-1023)
LED_BRIGHT_MAX 255    // макс яркость светодиода СО2 (0 - 255)
LED_BRIGHT_MIN 10     // мин яркость светодиода СО2 (0 - 255)
LCD_BRIGHT_MAX 255    // макс яркость подсветки дисплея (0 - 255)
LCD_BRIGHT_MIN 10     // мин яркость подсветки дисплея (0 - 255)

BLUE_YELLOW 1       // жёлтый цвет вместо синего (1 да, 0 нет) но из за особенностей подключения жёлтый не такой яркий
DISP_MODE 1         // в правом верхнем углу отображать: 0 - год, 1 - день недели, 2 - секунды
WEEK_LANG 1         // язык дня недели: 0 - английский, 1 - русский (транслит)
DEBUG 0             // вывод на дисплей лог инициализации датчиков при запуске. Для дисплея 1602 не работает! Но дублируется через порт!
PRESSURE 1          // 0 - график давления, 1 - график прогноза дождя (вместо давления). Не забудь поправить пределы гроафика
CO2_SENSOR 1        // включить или выключить поддержку/вывод с датчика СО2 (1 вкл, 0 выкл)
DISPLAY_TYPE 1      // тип дисплея: 1 - 2004 (большой), 0 - 1602 (маленький)
DISPLAY_ADDR 0x27   // адрес платы дисплея: 0x27 или 0x3f. Если дисплей не работает - смени адрес! На самом дисплее адрес не указан

// пределы отображения для графиков
TEMP_MIN 15
TEMP_MAX 35
HUM_MIN 0
HUM_MAX 100
PRESS_MIN -100
PRESS_MAX 100
CO2_MIN 300
CO2_MAX 2000

Оцените статью
MALIVICE.RU