Саморобний годинник та метеостанція на контролері. Проект "метеостанція в домашніх умовах"

КЕРІВНИЦТВО З СТВОРЕННЯ ПРОСТОЇ ДОМАШНІЙ МЕТЕОСТАНЦІЇ СВОЇМИ СИЛАМИ

Якщо цілий день або цілодобово включений комп'ютер, його можна використовувати для роботи домашньої метеостанції. Поставлено мету створити просту та недорогу метеостанцію, в якій буде задіяний персональний комп'ютер (ПК). ПК виступає у ролі зчитувача, обробника та відправника на сайт "Метеопост" виміряних метеорологічних даних. Зв'язок між комп'ютером та вимірювальним блоком здійснюватиметься по мережі 1-Wire.

Склад вимірювального комплексу
1. Персональний комп'ютер з операційною системою Windows XP та вище та наявністю вільного COM порту.
2. Адаптер для COM порту (перетворювач 1wire – RS232)
3. 4-х житловий Ethernet кабель типу "кручена пара", довжини має вистачити від COM порту до вимірювального блоку
4. Блок живлення на 5В постійного струму з гарною стабілізацією напруги
5. Вимірювальний блок (встановлений на вулиці)
6. Програмне забезпечення для ПК – додаток "Метеостанція".

ВАРІАНТ №1 - ОДИН ДАТЧИК

Спочатку розглянемо найпростіший варіант – це метеостанція з одним датчиком температури. Для цього не потрібний додатковий блок живлення (п.4). І система дуже спрощується. Адаптер для порту COM (п.2) можна виконати за такою схемою. Адаптер складається з двох стабілітронів на 3.9В та 6.2В, двох діодів Шотки та одного резистора.

Схема адаптера для порту COM


Адаптер у корпусі D-SUB

Місце паяння кабелю та датчика температури, включно та висновки датчика потрібно добре захистити від вологи. Найкраще застосувати клей на поліуретановій основі.


Гідроізоляція виводів датчика

Ця система забезпечить моніторинг температури з точністю до десяти градусів. При цьому у вікні програми буде видно графік залежності температури повітря від часу, і іконка в треї завжди показуватиме поточну температуру. Програма дозволяє задавати інтервал вимірювань.

ВАРТІСТЬ РАДІОДЕТАЛІВ - не вище 50 грн.

ВАРІАНТ №2 - ЧОТИРИ ДАТЧИКИ

Більш складна метеостанція із чотирма датчиками: температура, вологість, освітленість, тиск. Оскільки тільки датчик температури буде цифровий, а решта аналогових - у системі використовується чотириканальний АЦП ds2450. Цей АЦП підтримує протокол 1-wire. Схема потребує додаткового джерела живлення. Джерело живлення має забезпечувати високу стабільність напруги. Але оскільки схема вище описаного адаптера має недолік - неможливість підключення до датчиків зовнішнього джерела живлення через відсутність реальної маси (-) використовуємо іншу схему адаптера. Цей адаптер також міститься в корпусі роз'єму COM порту типу D-SUB. Тепер у кабелі задіяні три дроти: маса (-), +5в та дані.


Схема адаптера для COM порту із зовнішнім живленням

Схема вимірювального блоку може бути виконана навіть на макетній платі. Потрібно лише приділити особливу увагу гідроізоляції контактів. Найпростіший спосіб це розплавити парафін і пензликом нанести його у всі оголені місця на платі. Якщо плата буде незахищеною від води, будуть витоку напруги і буде багато помилок у вимірах. У нашому випадку навіть соті частки Вольта суттєво впливають на результати.


Схема вимірювального блоку

Вимірювальний блок потрібно розмістити в корпусі та такому, щоб плата та датчики були захищені від прямої дії опадів та сонячного випромінювання. Для цих цілей добре підходить коробка із щільного пінопласту. У стінах коробки (дно і стінка з тіньового боку) необхідно зробити більше отворів для вентиляції. Стінки коробки зсередини бажано обклеїти алюмінієвою фольгою для додаткового захисту від інфрачервоного випромінювання, інакше буде похибка вимірювання температури. Усі датчики, окрім освітленості, розміщуються прямо на платі. Датчик освітленості (фоторезистор) виноситься з плати на дротах і встановлюється в отворі дна пінопластового корпусу. Так, щоб поверхня датчика дивилася вниз. У такому разі на датчик не потраплятимуть опади і особливо взимку це вбереже його від зледеніння. Датчик освітленості для гідроізоляції потрібно обробити, наприклад, прозорим клеєм на поліуретановій основі (силіконовий герметик тест не пройшов, він давав витік струму). Обробити включно (!) та світлочутливу зону фоторезистора. Висновки датчика залити клеєм та розмістити їх можна в ізоляційній трубочці. Кінці висновків припаяти до невеликої плати. А вже дроти від вимірювального блоку припаяти до цієї плати. Місця пайки залити парафіном. Інакше, коли йде зливи з вітром, метеостанція може виявитися непрацездатною і доведеться розбирати її і все висушувати. Блок можна з'єднати з кабелем за допомогою гнізда. Але потрібно використовувати спеціальний вологозахисний роз'єм – система працюватиме у складних погодних умовах.

Якщо доводиться розміщувати корпус за вікном багатоповерхівки (немає можливості встановити на стійці біля землі) коробку потрібно видалити від стіни будинку наскільки це можливо, на кронштейні. Інакше нагрівання повітря від стіни дає дуже спотворені дані про температуру. В умовах приватного будинку краще виготовити справжню метеобудку. Потрібно подбати про надійне кріплення корпусу, інакше сильні пориви вітру можуть відірвати нашу конструкцію.


Вимірювальний блок на кронштейні

Вихідна напруга блоку живлення (БП) має бути не більше 4.8-5.3В. Підійде і заряджання від старого телефону. Однак якщо в блоці живлення немає стабілізатора – потрібно додати його до блоку живлення, т.к. Для точності вимірювань дуже важлива наявність стабільної напруги. Можна хоча б перевірити тестером - чи змінюються десяті чи соті волта на виході БП. Стрибки десятих волта не допускаються. Проста схема стабілізатора на 5в наведена нижче. На вході БП може бути від 7 до 17В. На виході буде близько 5В. Після цього потрібно підключити наш кабель (що йде до вимірювального блоку) до БП та виміряти напругу тестером на іншому кінці кабелю. Ця напруга може бути дещо нижчою, ніж безпосередньо на виході БП, через опір кабелю. Цю виміряну напругу потрібно ввести в налаштуваннях програми як "Напруга живлення датчиків".


Типова схема стабілізатора напруги

ВАРТІСТЬ КОМПЛЕКТУЮЧИХ ДЛЯ МЕТЕОСТАНЦІЇ

Орієнтовна вартість радіодеталей (ціни 2015 року по магазину).
1. Датчик температури ds18b20 – 25 грн
2. АЦП ds2450 – 120 грн
3. Фоторезистор LDR07 – 6 грн
4. Датчик вологості HIH-5030 – 180 грн
5. Датчик тиску MPX4115A-520 грн.
ВСЬОГО: 850 грн або 37$

Інші елементи в сумі коштують не вище 50 грн, блок живлення можна взяти, наприклад, зі старої зарядки для телефону.


Маркування радіоелементів

ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ ДЛЯ МЕТЕОСТАНЦІЇ

Ми розробили додаток для Windows, який надамо безкоштовно будь-кому, хто бажає зібрати таку метеостанцію. Воно дозволить вам на своєму комп'ютері спостерігати за погодою.


Вікно програми для ПК

У системному треї відображається температура повітря

Всі виміряні дані програма може надсилати на наш сервер "Метеопост" і на спеціальній сторінці (приклад) можна переглядати всі метеодані з браузера ПК. Також сторінку адаптовано і для браузера мобільного телефону.


Знімок екрана браузера мобільного телефону

ВИСНОВОК
Можна заощадити на вартості деталей, якщо купувати їх у китайців AliExpress. Можна зібрати метеостанцію без будь-якого датчика, за винятком датчика температури. У нашого АЦП залишився один вільний вхід, тому на нього можна подати сигнал від датчика вітру. Але оскільки ми знаходимося в місті – встановити та протестувати такий датчик нам просто ніде. У міській забудові не буде адекватного виміру швидкості та напряму вітру. Способи самостійного виготовлення датчика швидкості вітру описані багатьма ентузіастами в мережі. Заводський датчик коштує досить дорого.

Зібрати таку метеостанцію під силу радіоаматору із середніми навичками. Для більшого спрощення можна не розводити друковану плату, а зібрати навісним монтажем на макетній платі. Перевірено – працює.

Ми спробували створити саме доступну, дешеву метеостанцію. Зокрема, для цього в системі задіяний комп'ютер. Якщо його виключити, потрібно робити ще блок індикації, блок передачі даних в мережу і т.д, що істотно додасть в ціні. Наприклад, зараз популярна "Netatmo Weather Station" з подібними параметрами, що вимірюються, коштує близько 4000 грн (200$).

Всім, хто бажає зробити собі таку метеостанцію, готові допомогти консультаціями. Також надамо необхідне програмне забезпечення та підключимо вашу станцію до нашого сайту.

Нещодавно мій колега влаштовував невелику виставку.
Мій учитель попросив мене представити якийсь проект з електроніки студентам у коледжі. У мене було два дні, щоб придумати щось цікаве та досить просте.



Так як погодні умови тут досить мінливі, а температура коливається в діапазоні 30-40 ° С, вирішив зробити домашню метеостанцію.

У чому полягає функція погодної станції для будинку?
Метеостанція на Ардуїно з дисплеєм – пристрій, що збирає дані про погоду та умови довкілля за допомогою безлічі датчиків.

Зазвичай це такі датчики:

  • вітру
  • вологості
  • дощу
  • температури
  • тиску
  • висоти

Моя мета – зробити портативну настільну метеостанцію своїми руками.

Вона має вміти визначати такі параметри:

  • температуру
  • вологість
  • тиск
  • висоту

Крок 1: Купуємо необхідні компоненти







  • DHT22, датчик температури та вологості.
  • BMP180, датчик тиску.
  • Припій
  • Однорядний роз'єм на 40 виходів

З обладнання вам знадобляться:

  • Паяльник
  • Плоскогубці для носоупорів
  • Провід

Крок 2: Датчик температури та вологості DHT22







Для вимірювання температури використовуються різні датчики. Популярністю користуються DHT22, DHT11, SHT1x

Я поясню, чим вони відрізняються один від одного і чому я використовував саме DHT22.

Датчик AM2302 використовує цифровий сигнал. Цей датчик працює на унікальній системі кодування та сенсорної технології, тому його дані надійні. Його сенсорний елемент з'єднаний із 8-бітним однокристальним комп'ютером.

Кожен сенсор цієї моделі термокомпенсований і точно калібрований, коефіцієнт калібрування знаходиться в одноразово програмованої пам'яті (ОТР-пам'ять). Під час читання показань сенсор викликатиме коефіцієнт з пам'яті.

Маленький розмір, низьке споживання енергії, велика відстань передачі (100 м) дозволяють AM2302 підходити майже до всіх додатків, а 4 виходи в один ряд роблять монтаж дуже простим.

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

DHT11

Плюси: не вимагає паяння, найдешевший із трьох моделей, швидкий стабільний сигнал, дальність понад 20 м, сильна інтерференція.
Мінуси: Бібліотека! Немає варіантів роздільної здатності, похибка вимірювань температури +/- 2°С, похибка вимірювання рівня відносної вологості +/- 5%, неадекватний діапазон вимірюваних температур (0-50°С).
Області застосування: садівництво, сільське господарство.

DHT22

Плюси: не вимагає паяння, невисока вартість, згладжені криві, малі похибки вимірів, великий діапазон вимірів, дальність більше 20 м, сильна інтерференція.
Мінуси: чутливість могла бути вищою, повільне відстеження температурних змін, потрібна бібліотека.
Області застосування: вивчення довкілля.

SHT1x

Плюси: не вимагає паяння, згладжені криві, малі похибки вимірювань, швидке спрацьовування, низьке споживання енергії, автоматичний режим сну, висока стабільність та узгодженість даних.
Мінуси: два цифрові інтерфейси, похибка у вимірі рівня вологості, діапазон вимірюваних температур 0-50°С, потрібна бібліотека.
Області застосування: експлуатація в суворих умовах та довгострокових установках. Усі три датчики відносно недорогі.

З'єднання

  • Vcc - 5В або 3,3В
  • Gnd – з Gnd
  • Data – на другий висновок Arduino

Крок 3: Датчик тиску BMP180



BMP180 – барометричний датчик атмосферного тиску із I2C-інтерфейсом.
Барометричні датчики атмосферного тиску вимірюють абсолютне значення навколишнього повітря. Цей показник залежить від конкретних погодних умов та від висоти над рівнем моря.

У модуля BMP180 був 3,3В стабілізатор на 662кОм, який я, за своєю дурістю, випадково підірвав. Довелося робити обведення живлення безпосередньо до чіпа.

Через відсутність стабілізатора, я обмежений у виборі джерела живлення – напруга вище 3,3В зруйнує датчик.
В інших моделей може бути стабілізатора, обов'язково перевіряйте його наявність.

Схема з'єднання датчика та шини I2C з Arduino (nano або uno)

  • SDA - A4
  • SCL - A5
  • VCC - 3.3V
  • GND – GND

Давайте трохи поговоримо про тиск і його зв'язок з температурою і висотою.

Атмосферний тиск у будь-якій точці непостійний. Складна взаємодія між обертанням Землі, нахилом Земної осі, призводить до появи багатьох областей високого та низького тиску, що, у свою чергу, призводить до щоденної зміни погодних умов. Спостерігаючи за зміною тиску, можна зробити короткостроковий прогноз погоди.

Наприклад, зниження тиску зазвичай означає дощову погоду або наближення грози (наближення області низького тиску, циклону). Піднімається тиск зазвичай означає суху ясну погоду (над вами проходить область високого тиску, антициклон).

Атмосферний тиск змінюється з висотою. Абсолютний тиск у базовому таборі на Евересті (5400 м над рівнем моря) нижчий, ніж абсолютний тиск у Делі (216 м над рівнем моря).

Так як показники абсолютного тиску змінюються в кожній локації, ми звертатимемося до відносного тиску, або тиску на рівні моря.

Вимір висоти

Середній тиск на рівні моря 1013,25 гПа (або мілібар). Якщо піднятися над атмосферою, це значення впаде нанівець. Крива цього падіння цілком зрозуміла, тому ви можете самі вирахувати висоту над рівнем моря, використовуючи наступне рівняння: alti = 44330 *

Якщо ви приймете тиск на рівні моря 1013,25 ГПа як р0, розв'язуванням рівняння буде ваша поточна висота над рівнем моря.

Запобіжні заходи

Не забувайте, що датчику BMP180 потрібен доступ до навколишньої атмосфери, щоб мати змогу зчитувати тиск повітря, не поміщайте датчик у закритий корпус. Невеликого вентиляційного отвору буде цілком достатньо. Але й надто відкритим його не залишайте – вітер збиватиме показання тиску та висоти. Продумайте захист від вітру.

Захистіть від нагрівання. Для вимірювання тиску потрібні точні температурні показання. Спробуйте захистити датчик від перепадів температури та не залишайте його поблизу джерел високої температури.

Захистіть від вологи. Датчик BMP180 чутливий до рівня вологості, постарайтеся запобігти можливому попаданню води на датчик.

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

Крок 4: Збираємо прилад







Встановлюємо однорядні рознімання для Arduino Nano. Взагалі, ми обрізали їх до потрібного розміру і трохи зашкурили, тому вони виглядають, наче такими і були. Потім припаюємо їх. Після цього встановлюємо однорядні роз'єми для датчика DHT22.

Встановлюємо 10ком резистор від виведення даних до землі (Gnd). Усі паяємо.
Потім точно також встановлюємо однорядний роз'єм для датчика BMP180, робимо живлення 3,3В. З'єднуємо все із шиною I2C.

В останню чергу підключаємо LCD-дисплей на ту ж I2C шину, що і датчик BMP180.
(У четвертий роз'єм я планую пізніше підключити RTC-модуль (годинник реального часу), щоб прилад ще й час показував).

Крок 5: Кодування




Завантажте бібліотеки

Щоб встановити бібліотеки на Arduino, перейдіть за посиланням

#include
#include #include #include "DHT.h" #include

SFE_BMP180 pressure;

#define ALTITUDE 20.56 #define I2C_ADDR 0x27 //<<- Add your address here. #define Rs_pin 0 #define Rw_pin 1 #define En_pin 2 #define BACKLIGHT_PIN 3 #define D4_pin 4 #define D5_pin 5 #define D6_pin 6 #define D7_pin 7

#define DHTPIN 2 // what digital pin we"re connected to

// Uncomment whatever type you"re using! //#define DHTTYPE DHT11 // DHT 11 #define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 DHT dht(DHTPIN, DHTTYPE); LiquidCrystal_I2Cpin, lcd Rs_pin, D4_pin, D5_pin, D6_pin, D7_pin);

void setup() ( Serial.begin(9600); lcd.begin (16,2); //<<-- our LCD is a 20x4, change for your LCD if needed // LCD Backlight ON lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE); lcd.setBacklight(HIGH); lcd.home (); // go home on LCD lcd.print("Weather Station"); delay(5000); dht.begin(); pressure.begin(); } void loop() { char status; double T,P,p0,a; status = pressure.startTemperature(); if (status != 0) { delay(status);

status = pressure.getTemperature(T); if (status != 0) ( Serial.print("1"); lcd.clear(); lcd.setCursor(0,0); lcd.print("Baro Temperature: "); lcd.setCursor(0,1) );lcd.print(T,2);

status = pressure.startPressure(3); if (status! = 0) (// Wait for measurement to complete: delay (status);

status = pressure.getPressure(P,T); if (status != 0) (lcd.clear(); lcd.setCursor(0,0); lcd.print("abslt pressure: "); lcd.setCursor(0,1); lcd.print(P,2) ); lcd.print("mb");

p0 = pressure.sealevel(P,ALTITUDE); // we"re at 1655 meters (Boulder, CO)

a = pressure.altitude (P, p0); lcd.clear(); lcd.setCursor(0,0); lcd.print("Altitude:"); lcd.setCursor(0,1); lcd.print(a,0); lcd.print("meters"); delay(3000); ) ) ) ) float h = dht.readHumidity(); // Read temperature як Celsius (the default) float t = dht.readTemperature(); t2=t; lcd.clear(); lcd.setCursor (0,0); // go to start of 2nd line lcd.print("Humidity: "); lcd.setCursor(0,1);lcd.print(h); lcd.print("%"); delay(3000); lcd.clear(); lcd.setCursor (0,0); // go to start of 2nd line lcd.print("DHT Tempurature: "); lcd.setCursor(0,1); lcd.print(t); lcd.print("deg C"); delay(3000); lcd.clear(); lcd.setCursor (0,0); // go to start of 2nd line lcd.print("Mean Tempurature: "); lcd.setCursor(0,1); lcd.print((t1+t2)/2); lcd.print("deg C"); delay(3000); )

Я використав версію Arduino 1.6.5, код точно до неї підходить, до пізніших так само може підійти. Якщо код з якихось причин не підходить, використовуйте версію 1.6.5 як базову.

МБОУ ЗОШ Селіхінського сільського поселення

Тема проекту

Метеостанція в домашніх умовах

Виконав:

Пюві Райніс, учень 5 кл.

Керівник:

Безсмертна О.А.

2016р

Тема : «Метеостанція в домашніх умовах»

Гіпотеза: Чи можна створити метеостанцію в домашніх умовах?

Ціль: Виготовлення метеостанції в домашніх умовах та спостереження за змінами погоди.

Завдання:

    Дізнатися, що таке метеостанція.

    Вивчити історію фенології.

    Вивчити будову метеостанції.

    Виготовити метеостанцію у домашніх умовах;

    Спостерігати за погодою та записувати результати спостережень до таблиці;

Методи дослідження:

    пошуковий (збір інформації на тему)

    спостереження

    практичний (виготовлення приладів)

    аналітичний (порівняння результатів)

    Вступ.

При вивченні на уроці географії теми: «Погода та метеорологічні спостереження», нам задали додому виготовити своїми руками метеорологічний прилад та провести спостереження за погодою відповідно до цього приладу. У мене постало питання: «Чи можна створити метеорологічну станцію в домашніх умовах і проводити по ній спостереження за погодою?».

Наш далекий предок знаходився у великій залежності від мінливості погоди. Він не розумів суті та закономірності природних явищ і все незрозуміле пояснював наявністю надприродної, «божественної» сили. Своєю волею богів сходило сонце, йшов дощ, пересихали річки, налітав вітер.

Усі народи обожнювали Сонце, Місяць, вітер, блискавку та грім. У східних слов'ян до прийняття ними християнства особливо шанувався Перун- землеробський бог, подавець дощу, творець блискавки та грому, у його владі була поява весняної зелені на землі та деревах. Прийнявши нову віру, наші предки почали шанувати Іллю-громовержця.

Багато народів вважали Сонце головним джерелом життя Землі. Вони називали його «князем Землі та царем неба». Місяць шанували як княгиню.

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

    З історії фенології.

Фенологія - Наука про закономірності сезонного розвитку природи. Розвиток фенології визначається запитами практики (сільського, рибного, мисливського, лісового господарства, охорони навколишнього середовища, охорони здоров'я та ін.).

Фенологія дозволяє прогнозувати сезонні явища та планувати господарську діяльність (природоохоронні заходи, терміни сільськогосподарських робіт тощо) відповідно до термінів цих явищ.

(№1.)

Є свідчення, що найдавніші народи землі – китайці та єгиптяни – у своїй землеробській практиці вміли стежити за сезонним розвитком природи. Сезонні явища знайшли відображення у низці праць античних авторів (наприклад, у грецького філософа Феофраста (372-287 р. до н. е.) та римського письменника Плінія Молодшого (62-114 р. н. е.)).

У середні віки в російських та зарубіжних літописах і хроніках іноді велися записи про терміни наступу найважливіших сезонних явищ (наприклад, у монастирі Кракова за 1490-1527 р., у палаці японського мікадо з 812 р. та ін.). Однак ці матеріали залишалися без систематизації та наукової обробки.

У Росії найстародавнішим вважається рукописний календар, датований 1670 роком, а першим друкованим календарем слід вважати «Святці або календар, виданий Копієвським в Амстердамі і датований 1702 роком.

Перша думка необхідність вести спостереження сезонними явищами природи у Росії належала Петру I.

У 1721 року Петро писав із Москви до Петербурга А.Д. Менишкову: «Коли дерева будуть розкидатися, тоді велите надсилати нам звістки цих, понеділка, наклеївши на папір з підписами чисел, щоб дізнатися, де раніше почалася весна». А указом государя, виданим 28 березня 1722 року, наказувалося адміралу Крюйсу вести систематичні записи про стан погоди у Петербурзі.

У другій половині XVIII століття караульним біля Кремлівської стіни ставилося обов'язок відзначати стан морозу, настання хуртовини, товщину снігового покриву, характер вітру, граду, грози та інші показники погоди.

З 1864 року почав видаватися «Київський народний календар» із прогнозами погоди на кожен місяць. Його метою було «дати народу знання у популярній формі на суворо науково викладених статтях та у довідковому відділі, пристосованому до потреб народу». Тепер це завдання метеорології-науці про погоду. Вона отримала свою назву від грецького слова "метеора" - "щось у небі".

Після революції 1917 метеорологія продовжувала вдосконалюватися. В даний час гідрометеорологічна служба розташовується тисячами наглядових станцій, безліччю обсерваторій та цілою низкою науково-дослідних установ. Працівники метеослужби прагнуть надати інформацію не лише на найближчу, а й на віддалену перспективу.

№2.

    Поняття метеостанції, її склад.

Метеостанція – сукупність різних приладів для метеорологічних вимірів (спостереження за погодою).

У вузькому значенні метеостанція - установа, яка проводить метеорологічні спостереження. Основним офіційним метеостанціям світу надано синоптичні індекси. У Росії її більшість метеостанцій перебувають у віданні Росгидромета. Залежно від встановленого обсягу спостережень метеостанції мають певний розряд. Дані метеостанцій СРСР публікувалися у «Метеорологічному щомісячнику».

Розрізняють аналогові та цифрові метеорологічні станції.

На класичній (аналоговій) метеостанції є:

1.Термометр для вимірювання температури повітря та ґрунту.

2. Барометр для вимірювання тиску.

3. Анемометр для напряму вітру.

4. Осадкомір (плювіограф) для вимірювання опадів.

5. Гігрометр для вимірювання вологості повітря

6. Снігомірна рейка - рейка, призначена для вимірювання товщини снігового покриву при метеоспостереженні.

7.Термограф-самописець, безперервно реєструючий температуру повітря.

№3.

4.Метеорологічні прилади:

Термометр (грец. θέρμη - тепло; μετρέω - вимірюю) - прилад для вимірювання температури повітря, ґрунту, води і так далі. Існує кілька видів термометра: рідинні; механічні; електронні;

Барометр (ін.-грец. βάρος – «важкість» і μετρέω – «вимірюю») – прилад для вимірювання атмосферного тиску. Ртутний барометр був винайдений італійським математиком і фізиком Еванджелістою Торрічеллі в 1644 році, це була тарілка з налитою в неї ртуттю та пробіркою (колбою), поставленою вниз отвором. Коли атмосферний тиск підвищувався, ртуть піднімалася в пробірці, коли вона знижувалася - ртуть опускалася. Через незручність така конструкція перестала застосовуватися і поступилася місцем барометру-анероїду, але метод, за яким такий барометр був виготовлений, став застосовуватися в термометрах.

А.А. Летягін. Географія. Початковий курс: 5 клас: підручник для учнів загальноосвітніх організацій/А.А. Летягін; за ред. В.П. Дронова.-3-еїзд., Дораб. та доп.-М.: Вентана-Граф, 2015р.-160с.

У цьому проекті буде реалізовано кімнатну настільну метеостанцію своїми руками. Ви можете подумати, що таких проектів було вже багато, але проект буде базуватися на новому чіпі ESP32, також він буде оснащений новим датчиком BME280, цей датчик вимірює температуру, вологість і атмосферний тиск.

Коли настільна метеостанція буде увімкнена, вона підключиться до WiFi і запросить свіжий прогноз погоди для заданої місцевості. Потім вона відобразить його, поряд з даними датчика, на 3,2” дисплеї. Дані з датчика оновлюватимуться кожні 2 секунди, а дані про погоду — щогодини. Як ви бачите, у цьому проекті ми використовуватимемо останні технології, доступні на сьогодні. Якщо у вас є досвід у DIY, проект займе у вас всього 5 хвилин.

Якщо ви новачок, то перегляньте відео, в якому розібрано нюанси складання.

Крок 1: Компоненти станції

Щоб збудувати свою станцію, нам знадобляться:

  • Плата ESP32 (посилання)
  • Датчик BME280 I2C (посилання)
  • Дисплей 3.2” Nextion (посилання)
  • Невелика макетна плата (посилання)
  • Трохи дротів (посилання)

Вартість проекту варіюватиметься в районі $30.

Замість модуля ESP32 можна використовувати більш дешевий чіп ESP8266, але я вирішив використовувати ESP32, щоб отримати уявлення про цей новий модуль і подивитися, як він працює.

Крок 2: ESP32


Це перший проект, який я зібрав за допомогою чіпа ESP32. Якщо ви не знайомі з ним, чіп ESP32 це наступне покоління популярного чіпа ESP8266. ESP32 надає два 32-процесних ядра, що працюють на 160MHz, великий обсяг пам'яті, WiFi, Bluetooth та багато інших функцій. І це лише за $7.

Перегляньте відео з моїм детальним описом цієї плати. Воно допоможе зрозуміти чому цей чіп змінить наш підхід до створення речей.

Крок 3: Дисплей Nextion

Також це перший проект, в якому я використовував тачовий дисплей Nextion. Це новий вид дисплеїв, який оснащений власним процесором ARM, що дозволяє налаштовувати дисплей і створювати графічний інтерфейс. Тому ми можемо використовувати його з будь-яким мікроконтролером та отримувати хороші результати.

Крок 4: Датчик BME280


Датчик BME280 – це найновіший сенсор від Bosch. Він може вимірювати температуру, вологість та атмосферний тиск. Нам потрібен лише один датчик, щоб зібрати цілу погодну станцію.

На додаток цей датчик дуже маленький і він простий в управлінні. Датчик управляється через інтерфейс I2C, так що взаємодія з Ардуїно буде дуже простою - для стабільної роботи нам потрібно буде запитати його і припаяти всього пару проводів.

Також існує безліч бібліотек, розроблених для цього датчика, тому в нашому проекті ми можемо використовувати будь-яку з них.

Примітка: нам потрібен датчик BME280. Існує також датчик BMP280, який вимірює вологість повітря. Перевірте назву перед тим, як купити датчик.

Крок 5: З'єднуємо частини разом





З'єднання модулів досить просте, ви можете побачити це на прикладеній схемі.

Так як датчик BME280 використовує інтерфейс I2C, нам потрібно всього два дроти, щоб з'єднати його з ESP32. Я з'єднав датчик з пінами 26 і 27. Теоретично, кожен цифровий пін плати ESP32 може бути використаний для взаємодії з периферією, що працює на I2C. На практиці я виявив, що деякі піни не працюють, оскільки зарезервовані для інших цілей. Піни 26 та 27 працюють без перебоїв.

Щоб надіслати дані на дисплей, нам потрібно з'єднати провід із піном TX0 на ESP32. Мені довелося зігнути пін на 90 градусів, щоб з'єднати його з дисплеєм, так як плата ESP32 виявилася завеликою для макетної плати.

Після збирання всіх частин нам потрібно залити код на ESP32, а також залити інтерфейс на дисплей Nextion. Якщо у вас виникли труднощі при прошивці ESP32, натисніть кнопку BOOT відразу після натискання кнопки завантаження в ІДЕ Ардуїно.

Щоб залити інтерфейс на дисплей, скопіюйте файл WeatherStation.tft, який буде доданий нижче, на порожню картку SD. Помістіть картку в слот, розташований на задній частині дисплея. Після подачі живлення, інтерфейс буде завантажений у дисплей – можна вимкнути його та витягти картку, потім увімкнути заново.

Після успішного завантаження коду станція з'єднається з WiFi, запросить дані про погоду з сайту openweathermap.org, а також відобразить дані з датчика. Давайте тепер подивимося на програмну частину проекту.

Крок 6: Код проекту



Щоб спарсити погодні дані, нам знадобиться бібліотека JSON для Ардуїно. Також нам знадобиться бібліотека для датчика.

Розглянемо код. Спочатку нам потрібно надіслати SSID та пароль нашої мережі WiFi. Потім нам потрібно ввести ключ API із сайту operweathermap.org. Щоб створити власний ключ, потрібно зареєструватись на сайті. Отримання поточної погоди є безкоштовним, але сайт пропонує більше послуг, якщо ви хочете платити за них. Потім потрібно знайти ID нашого місцезнаходження. Знайдіть ваш населений пункт і скопіюйте його з URL.

Потім скопіюйте ваш ID до змінної CityID. Також скопіюйте висоту над рівнем моря для вашого населеного пункту. Це необхідно, щоб барометр показував точні дані.

Const char * ssid = "yourSSID"; const char* password = "yourPassword"; String CityID = "253394"; //Sparta, Greece String APIKEY = "yourAPIkey"; #define ALTITUDE 216.0 // Altitude in Sparta, Greece

Відповідь ми отримаємо у форматі JSON. Перед надсиланням даних до бібліотеки JSON я вручну видалив деякі символи, які викликали проблеми. Після цього бібліотека спокійно приймає дані, і ми можемо зберегти їх у змінні. Після збереження даних у змінні, все, що нам потрібно зробити, - це відобразити їх на дисплеї і чекати, поки через годину вони не оновляться. Я відобразив на дисплеї лише прогноз погоди, але ви, за бажання, можете вивести на нього більше інформації – все зберігається у змінні. Потім ми зчитуємо інформацію про температуру, вологість, тиск з датчика і також відправляємо їх на дисплей.

Щоб оновити інформацію на дисплеї, ми просто надсилаємо команди на серійний порт:

Void showConnectingIcon() ( Serial.println(); String command = "weatherIcon.pic=3"; Serial.print(command); endNextionCommand(); )

Інтерфейс дисплея Nextion складається із заднього фону, текстових блоків та картинки, яка змінюється залежно від погоди. Перегляньте керівництво до дисплея, щоб дізнатися більше про його можливості. Ви можете швидко спроектувати свої інтерфейси, якщо хочете, щоб дисплей відображав більше даних.

Або ви можете просто використовувати мій код, доданий до цієї інструкції.

Файли

Крок 7: Заключні думки та покращення

Як ви бачите, на сьогоднішній день, досвідчена людина може зібрати своїми руками дивовижні речі всього за кілька годин і написавши лише кілька рядків коду. Проекти такого рівня були неймовірні навіть два роки тому.

Звісно, ​​це лише початок проекту. Я хотів би додати до нього багато поліпшень, наприклад графіки, тачеву функціональність, можливо, замінив би дисплей на інший, розміром побільше. Також я надрукував би на 3D принтері красивий корпус. Ще я би спроектував більш цікавий інтерфейс та іконки. І я вже маю кілька свіжих ідей кімнатних метеостанцій, які можна впровадити!

З деталей, що завалялися, вирішив зробити невелику метеостанцію. На складання та написання прошивки для контролера пішло два дні вихідних. Ще кілька днів пішла на написання, тестування та налагодження решти програмного забезпечення. Поточна версія метеостанції вимірює температуру, вологість, тиск, є зв'язок з комп'ютером через USB порт від нього і живиться, резервне живлення від батареї 9 В. Дані відображає на LCD. Ще є годинник. Оскільки не знайшлося відповідного кварцу (а купувати принципово не хотів), зробив синхронізацію часу з комп'ютером.

Цей проект абсолютно не комерційний, тому схему метеостанції, прошивку контролера та все необхідне програмне забезпечення можна завантажити. Вихідний код прошивки.

Станція зібрана на макетній платі, тому креслення друкованої плати не просіть.

Використовувалися такі основні компоненти:
ATMega8 - контролер
MPX4115A - датчик тиску
HIH-4000 – датчик вологості
DS18B20 - датчик температури
WH1602A - дисплей

Я використовував LCD на PLED технології, можна прості типу WH1602A. Датчики температури та вологості винесені надвір у захисну коробочку.

Підключаємо до комп'ютера

Підключення до USB-порту потребує окремого опису.

В принципі, можна було підключити і до порту COM, так простіше. Але в мене він зайнятий. Вибору немає – USB. Оскільки станція збиралася з чого було, то в хід пішов огризок кабелю CA-42, що завалявся, для підключення мобільного телефону до комп'ютера. Роз'єм до мобільного телефону пішов у справу, а той кінець, що підключається до комп'ютера, залишився. У самому цьому роз'ємі вже є мікросхема для USB порту, а на виході - стандартний UART, який використовується в мобільних телефонах і саме для контролера, тому проводи запаюємо безпосередньо, без будь-яких перетворювачів сигналу. Після встановлення драйверів для цього кабелю з'являється віртуальний COM порт. Далі можемо будь-якою програмою підключитися до нашої метеостанції, наприклад HyperTerminal. Розпаювання кабелю спеціально не наводжу, оскільки кабелю різні можуть відрізнятися. Використовувати потрібно 3 дроти TX, RX, GND. Запитати пристрій від кабелю, швидше за все, не вдасться. Я взяв непотрібний USB-роз'єм і запитав з іншого USB порту.

Для того, щоб можна було з командного рядка відправляти команди та приймати відповідь від метеостанції, було написано програму getfromcom.exe.

Метеостанція розуміє лише дві команди:

AGOV – Повертає поточні показання датчиків.

SETTIME [час у секундах з початку доби] - команда встановлює час у метеостанції

Для отримання даних виконуємо getfromcom.exe COM6 AGOV

Для встановлення часу виконуємо getfromcom.exe COM6 "SETTIME 72565"

COM6 – порт.
72565 – кількість секунд з початку доби.

Автоматизація процесу

Тепер можна будь-якою програмою рахувати, обробити дані, відправити куди треба, синхронізувати час метеостанції. Я зробив це за допомогою скриптової мови PHP. По-перше це швидко і завжди можна оперативно підправити скрипт і не шукати куди подівся вихідний код. По-друге, я постійно працюю з PHP. Але Ви можете написати свою програму будь-якою зручною для Вас мовою. Зрозуміло, для роботи PHP доведеться завантажити його (http://www.php.net/downloads.php) і встановити на комп'ютері. Під Windows це робиться просто. Скрипт getfromcom.php запускається із файлу get_data.bat опитує метеостанцію, обробляє дані та відправляє на HTTP-сервер скрипту get_data.php. Про скрипти на сервері поговоримо трохи згодом.

Сплячий режим робочого комп'ютера

Мій комп'ютер стоїть у сплячому режимі. Прокидається кожні 3 години, опитує метеостанцію, відправляє дані на сервер і знову засинає (можна і не вимикати - кому як зручніше). Робиться це так: У планувальнику завдань вказується пакетний файл get_data.bat для виконання та встановлюється опція "розбудити комп'ютер для виконання цього завдання".

Комп'ютер відправляється в сплячку командою fShutdown.exe /hibernate
Тепер за вказаним часом комп'ютер прокинеться та виконає get_data.bat

Особливості get_data.bat

Команди:

devcon.exe enable PCIVEN_10EC
ping 127.0.0.1
RASPHONE -d Setilite

Запускають мережеве підключення і піднімають VPN до мого Інтернет-провайдера.

ping 127.0.0.1 – так я зробив необхідну паузу.

Відповідно, відключаємо командами:

RASPHONE -h Setilite
devcon.exe disable PCIVEN_10EC

У Вас буде все інакше, тому у файлі ці рядки закоментовані.

Після виходу зі сплячки комп'ютер починав думати, що COM порт зайнятий іншою програмою. Довелося віртуальний COM порт перезавантажувати командою devcon.exe restart "USBVid_6547&PID_0232"
Ви матимете інший ID пристрою.

Серверні скрипти:

Тепер про скрипти на сервері. Скрипт, який приймає дані: get_data.php
Скрипт зберігає дані у файлі pogoda.log. Взагалі, дані відправляються і в базу даних MySQL. Але для простоти розглянемо роботу тільки з файлом. Приймаючи дані, скрипт перевіряє, чи підходить IP адреса відправника. Дозволені адреси перераховані у файлі ip_allow.lst Від "чужого" відправника дані не приймаються.