Схема електричної роботи бездротової метеостанції. Найпростіша домашня метеостанція або барометр із лампочки для розвитку спостережливості у дітей

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

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

З старшими дітьми (6–9 років) виготовлення флюгерів чудово вписується в уроки з географії, коли ви розповідаєте, як утворюються вітри, як використовували знання про них перші мореплавці, що означають вітри на «кінських широтах», що таке пасати.

Моряки, знаючи про пасати - стійкі вітри, що дмуть у тропічних поясах, - називали їх «торговими вітрами», тому що з їх допомогою торгові кораблі-вітрили (тоді ще не були винайдені двигуни) перетинали Атлантичний океан. На вітрильниках везли товар із Європи до Америки.

Субтропічні вітри між 30 та 38 паралелями південних та північних широт були настільки легкими, що вітрильники вставали у штиль. Доводилося місяцями чекати відповідного вітру. Часто очікування затягувалися на 3-5 місяців. У моряків закінчувалася прісна вода та їжа, і їм доводилося харчуватися кіньми, яких перевозили у великій кількості з Європи. Тому ці широти прозвали кінними.

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

Термометр своїми руками

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

Малюки 3-6 років із задоволенням виготовлять власні термометри з картону та кольорових ниток. Для цього:

  1. Посередині білої смужки картону шириною 4-6 см наносять шкалу термометра (вище та нижче за нуль).
  2. З'єднують разом червону та синю (білу) нитки.
  3. У верхньому та нижньому кінцях шкали роблять отвори та пропускають через них кінці ниток, зв'язавши їх зі зворотного боку.

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

Гігрометр своїми руками

Наступним приладом дитячої метеостанції є гігрометр- Прилад для вимірювання вологості повітря. Для його виготовлення гігрометра знадобляться:

  • прямокутний шматок дерев'яної дощечки або пінопласту;
  • дві канцелярські кнопки;
  • скотч;
  • людське волосся довжиною близько 10 см;
  • відрізок тонкого дроту.

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

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

Осадомір своїми руками

Доповнить ваш метеомайданчик осадкомір- прилад для вимірювання рідких та твердих опадів (граду). Візьміть звичайне відро, встановіть його на невеликій височині (тумбі, табуреті). Опади, що накопичуються, зливаються в мірну склянку зі шкалою. Результати діти заносять у свої календарики.

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

Обговорюючи з дітьми погоду, можна розширити тематику та розповідати їм про сучасні професії, що залежать від погодних умов. З старшими дітьми (8–9 років), в рамках Монтессорі-програми з економічної географії, ми говоримо про те, як кліматичні умови загалом впливають на економіку різних країн.

У цьому проекті буде реалізовано кімнатну настільну метеостанцію своїми руками. Ви можете подумати, що таких проектів було вже багато, але проект буде базуватися на новому чіпі 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 принтері красивий корпус. Ще я би спроектував більш цікавий інтерфейс та іконки. І я вже маю кілька свіжих ідей кімнатних метеостанцій, які можна впровадити!

Вам знадобиться

  • - плата Ардуїно або аналог;
  • - датчик температури та вологості DHT11;
  • - датчик тиску BMP085;
  • - Датчик вуглекислого газу MQ135;
  • - LCD дисплей 1602;
  • - потенціометр 10 кОм;
  • - Корпус для погодної станції;
  • - Шматок фольгованого склотекстоліту;
  • - гвинти для кріплення компонентів;
  • - комп'ютер;
  • - сполучні дроти;
  • - Роз'єм для подачі харчування;
  • - паяльник.

Інструкція

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

Кілька слів про компоненти, що використовуються.
LCD-дисплей 1602 використовує 6 пінів Arduino + 4 на живлення (підсвічування та знакосинтезатор).
Датчик температури та вологості DHT11 підключається до будь-якого цифрового піна. Для читання значень будемо використовувати бібліотеку DHT11.rar, яку можна завантажити, наприклад: https://yadi.sk/d/1LiFmQWITGPAY
Датчик тиску BMP085 підключається по інтерфейсу I2C до двох пін Arduino: SDA – до аналогового піну A4 та SCL – до аналогового піну A5. Зверніть увагу, що для живлення на датчик подається напруга +3,3 В.
Датчик вуглекислого газу MQ135 підключається до одного аналогового піну.
В принципі, для оцінки метеообстановки достатньо мати дані про температуру, вологість та атмосферний тиск, а датчик вуглекислого газу необов'язковий.
Але використовуючи всі 3 датчики, у нас буде задіяно 7 цифрових і 3 аналогових піна Ардуїно. Та й харчування, звичайно.

Схема метеостанції показано малюнку. Тут усе зрозуміло.

Напишемо скетч для Ардуїно. Текст програми, зважаючи на значний розмір, наводиться у вигляді посилання в додатку до статті у розділі "Джерела". Весь код забезпечений докладними та зрозумілими коментарями.
Завантажимо скетч на згадку про контролера плати Ардуїно.

Зробимо друковану плату для розміщення компонентів усередині корпусу – це найзручніше рішення для компонування та підключення сенсорів. Для виготовлення друкованої плати в домашніх умовах я використовую "лазерно-прасну" технологію (ми її докладно описували в попередніх статтях) та травлення за допомогою лимонної кислоти. Передбачимо на платі місця для перемичок (джамперів), щоб мати можливість відключати датчики. Це буде корисно, якщо потрібно перепрограмувати мікроконтролер, коли виникне бажання модифікувати програму.
За допомогою паяння встановимо датчики тиску та газів.
Для встановлення плати Arduino Nano зручно використовувати спеціальні адаптери чи гнізда з кроком 2,54. Але через відсутність цих деталей і через економію простору всередині корпусу, я встановлю Ардуїно також пайкою.
Термодатчик розташовуватиметься на деякому віддаленні від плати і буде теплоізольований від нутрощів метеостанції за допомогою спеціальної ізоляційної прокладки.
Передбачимо місця для підведення зовнішнього живлення до нашої саморобної плати. Я використовуватиму звичайний зарядний пристрій на 5 В від старого зламаного роутера. Плюс 5 вольт від зарядного пристрою подаватимуться на пін Vin плати Arduino.
РК-екран кріпиться гвинтами прямо до корпусу, до передньої частини. Підключатиметься дроти з роз'ємами швидкого підключення типу "Dupont".

Спостереження за погодою – дуже захоплююче заняття. Я вирішив побудувати свою погодну станцію на базі популярного .

Прототип метеостанції виглядає так:

Функції моєї метеостанції:

  • вимірювання та відображення кімнатної та зовнішньої температур;
  • відображення поточного часу (години та хвилини);
  • відображення поточної фази Місяця та місячного дня;
  • передача результатів вимірювань комп'ютер через послідовне з'єднання;
  • передача результатів вимірювань за протоколом MQTTза допомогою програми на комп'ютері.


Hex
-файл
прошивки для (версія від 9 травня 2018 року) - .
Як прошити hex-Файл у плату Arduinoя описав .

Мікроконтролер Arduino Nano 3.0

"Серцем" моєї метеостанції є мікроконтролер eBay):

Для управління індикацією та опитуванням датчиків я використовую таймер 1 Arduinoщо викликає переривання з частотою 200 Гц (період - 5 мс)

Індикатор

Для відображення вимірюваних показань датчиків та поточного часу я підключив до Arduinoчотирирозрядний світлодіодний індикатор Foryard FYQ-5643BHіз загальними анодами (аноди однакових сегментів усіх розрядів об'єднані).
Індикатор містить чотири семисегментні розряди і дві розділові (годинні) точки:

Аноди індикатора підключені через струмообмежувальні резистори до висновків Arduino:

розряд 1 2 3 4
висновок A3 A2 D3 D9

Катоди сегментів підключені до висновків Arduino:

сегмент a b c d e f g p
висновок D7 D12 D4 D5 D6 D11 D8 D13

Сегмент індикатора світиться, якщо аноді відповідного розряду високий потенціал (1), але в катоді - низький (0).

Я використовую динамічну індикацію для відображення інформації на індикаторі – у кожний момент часу активний лише один розряд. Активні розряди чергуються із частотою 200 Гц (період відображення 5 мс). При цьому для очей мерехтіння сегментів непомітно.

Датчик температури DS18x20

Для можливості віддаленого вимірювання температури я підключив датчик що забезпечує вимірювання зовнішньої температури в широких межах. Датчик підключається до шини 1-Wireі має три висновки - харчування ( VCC), дані ( DAT), земля ( GND):

виведення датчика VCC DAT GND
висновок Arduino 5V A1 GND

Між висновками VCCі DATя включив підтягуючий резистор опором 4,7 ком.

Для перекладу між градусами Цельсія та Фаренгейта можна використовувати таку табличку:

Я розмістив датчик за вікном будинку у пластиковому корпусі від кулькової ручки:

\

У професійних метеостанціях для захисту термометра від прямого сонячного проміння та забезпечення циркуляції повітря використовується екран Стівенсона (англ. Stevenson screen):

Датчик тиску та температури BMP280

Для вимірювання атмосферного тиску традиційно використовують ртутні барометри та барометри-анероїди.

В ртутному барометріатмосферний тиск врівноважується вагою стовпа ртуті, висота якого і використовується для вимірювання тиску:

В барометрі-анероїдівикористовується стиснення та розтягнення коробки під дією атмосферного тиску:

Для вимірювання атмосферного тиску та кімнатної температури у своїй домашній метеостанції я використовую датчик - маленький SMD-датчик розміром 2 x 2,5 мм, заснований на п'єзорезистивній технології:

Хустка з датчиком придбана на торговому майданчику eBay:

Датчик підключається до шини I2C(контакт даних - SDA/SDI, контакт синхронізації - SCL/SCK):

виведення датчика VCC GND SDI SCK
висновок Arduino 3V3 GND A4 A5

Adafruit- файли Adafruit_Sensor.h, Adafruit_BMP280.h, Adafruit_BMP280.cpp.

Одиниці виміру атмосферного тиску

Датчик через функцію readPressureвидає значення атмосферного тиску паскалях. Основною одиницею вимірювання атмосферного тиску є гектопаскаль(гПа) (1 гПа = 100 Па), аналогом якого є позасистемна одиниця " мілібар(мбар) (1 мбар = 100Па = 1гПа). Для перекладу між часто використовуваною позасистемною одиницею вимірювання тиску " міліметр ртутного стовпа(мм рт. ст.) та гектопаскалями використовуються співвідношення:
1гПа = 0,75006 мм рт. ст. ≈ 3/4 мм рт.ст.; 1 мм рт.ст. =1,3332 гПа ≈ 4/3 гПа.

Залежність атмосферного тиску від висоти над рівнем моря

Атмосферний тиск може бути представлений як у абсолютній, так і у відносній формі.
Абсолютний тиск QFE(Англ. absolute pressure) – це актуальний атмосферний тиск, який не враховує виправлення над рівнем моря.
Атмосферний тиск зменшується приблизно на 1 гПа при підвищенні висоти на 1 м:

Барометрична формула дозволяє визначити корекцію показань барометра для отримання відносного тиску (ммм рт. ст.):
$\Delta P = 760 \cdot (1 - (1 \over (10^ ((0,0081350 \cdot H) \over (T + 0,00178308 \cdot H) ))))$,
де $T$ - середня температура повітря за шкалою Ранкіна, ° Ra, $H$ - висота над рівнем моря, фути.
Переклад градусів Цельсія в градуси Ранкіна:
$^(\circ)Ra = (^(\circ)C \cdot 1,8) + 491,67 $
Барометрична формула використовується при барометричному нівелюванні – визначенні висот (з похибкою 0,1 – 0,5 %). У формулі не враховується вологість повітря та зміна прискорення вільного падінняіз висотою. Для невеликих перепадів висоти цю експонентну залежність можна з достатньою точністю апроксимувати лінійною залежністю.
Відносний тиск QNH(Англ. relative pressure, Q-code Nautical Height) - Це атмосферний тиск, що враховує поправку до середнього рівня моря (англ. Mean Sea Level, MSL) (для ISAі температури 15 градусів Цельсія), і спочатку виставляється з урахуванням висоти, де знаходиться метеостанція. Його можна дізнатися з даних метеослужби, показань відкаліброваних приладів у публічних місцях, аеропорту (зі зведень METAR), з Інтернету.
Наприклад, для аеропорту Гомель ( UMGG) я можу переглянути зведення фактичної погоди METARна ru.allmetsat.com/metar-taf/russia.php?icao=UMGG :
UMGG 191800Z 16003MPS CAVOK M06/M15 Q1014 R28/CLRD// NOSIG ,
де Q1014- тиск QNHна аеродромі дорівнює 1014 гПа.
Історію зведень METARможна отримати на aviationwxchartsarchive.com/product/metar.
За нормальний відносний тиск повітря QNHприймається тиск 760 мм рт. ст. або 1013,25 гПа (при температурі 0ºС, під широтою 45º Північної або Південної півкулі).
Я виставив для барометра-анероїда тиск QNHза допомогою гвинта налаштування чуйності:

Прогноз погоди

Аналіз зміни тиску дозволяє будувати прогноз погоди, причому його точність тим вища, чим різкіше змінюється тиск. Наприклад, старе емпіричне правило мореплавців каже - падіння тиску на 10 гПа (7,5 мм рт. ст.) за період 8 годин говорить про наближення сильного вітру.

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

За напрям вітру в метеорології приймається напрям, звідки дме вітер:

Цей напрямок зводиться до восьми румб.

Для прогнозування погоди на основі атмосферного тиску та напряму вітру часто використовується алгоритм Zambretti.

Датчик вологості

Для визначення відносної вологості повітря я використовую модуль DHT11(придбано на торговому майданчику eBay):

Датчик вологості DHT11має три висновки - харчування ( + ), дані ( out), земля ( - ):

виведення датчика + out -
висновок Arduino 5V D10 GND

Для роботи з датчиком я використовую бібліотеку від Adafruit- файли DHT.h, DHT.cpp.

Вологість повітря характеризує кількість водяної пари, що міститься у повітрі. Відносна вологістьпоказує частку вологи в повітрі (у відсотках) по відношенню до максимально можливої ​​кількості при поточній температурі. Для вимірювання відносної вологості служить :

Для людини оптимальний інтервал вологості повітря – 40…60 %.

Годинник реального часу

Як годинник реального часу я застосував модуль RTC DS1302(хустку з годинником придбано на торговому майданчику eBay):

Модуль DS1302підключається до шини 3-Wire. Для використання цього модуля спільно з Arduinoрозроблена бібліотека iarduino_RTC (від iarduino.ru).

Плата із модулем DS1302має п'ять висновків, які я поєднав із висновками плати Arduino Nano:

висновок RTC VCC GND RST CLK DAT
висновок Arduino 5V GND D2 D1 D0

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

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

Передача даних на комп'ютер та робота за протоколом MQTT

Для передачі даних через послідовне з'єднання Arduinoпідключається USB-UARTперетворювач:

Висновок Arduinoвикористовується для передачі даних у форматі 8N1(8 біт даних, без біта парності, 1 стоп-біт) зі швидкістю 9600 біт/с. Дані передаються пакетами, причому довжина пакета – 4 символи. Передача даних здійснюється у " bit-bangрежимі, без використання апаратного послідовного порту Arduino.

Формат даних:

Параметр 1-й байт 2-й байт 3-й байт 4-й байт
зовнішня температура o пропуск або мінус десятки градусів або пробіл одиниці градусів
кімнатна температура i пропуск або мінус десятки градусів або пробіл одиниці градусів
атмосферний тиск p сотні мм нар. ст. десятки мм рт.ст. одиниці мм рт. с.
відносна вологість h пробіл десятки відсотків або пропуск одиниці відсотків
поточний час десятки годин одиниці годин десятки хвилин одиниці хвилин

MQTT

Golangдодаток - клієнт протоколу MQTT, що відправляє прийняту від метеостанції інформації на сервер ( MQTT-брокер) :

Сервіс дозволяє створити акаунт із безкоштовним тарифним планом " (обмеження: 10 з'єднань, 10 Кб/с):

Для моніторингу показань метеостанції можна використовувати Android-додаток :

живлення

Для живлення метеостанції я використовую зарядний пристрій від старого мобільного телефону Motorola, що видає напругу 5 з струмом до 0,55 А і підключається до контактів 5V(+) та GND (-):

Також можна використовувати для живлення батарейку напругою 9 В, що підключається до контактів VIN(+) та GND (-).

Експлуатація метеостанції

При запуску відбувається ініціалізація та перевірка датчиків.

За відсутності датчика DS18x20видається помилка "E1", за відсутності датчика - Помилка "E3".

Потім запускається робочий цикл метеостанції:

  • вимірювання та відображення зовнішньої температури;
  • вимірювання та відображення кімнатної температури;
  • вимірювання та відображення атмосферного тиску та тренду його зміни;
  • вимірювання та відображення відносної вологості повітря;
  • відображення поточного часу;
  • відображення фази Місяця та місячного дня.


Відео роботи моєї метеостанції доступне на моєму -каналі: https://youtu.be/vVLbirO-FVU

Відображення температури

При вимірі температури індикується дві цифри температури та для негативної температури знак "мінус" (із символом градуса у крайньому правому розряді);
для зовнішньої температури знак градуса відображається зверху:


для кімнатної температури – внизу:

Відображення тиску

При вимірюванні тиску індикуються три цифри тиску в мм ртутного стовпа (із символом " P"В крайньому правому розряді):

Якщо тиск різко впав, замість символу " P" у крайньому правому розряді відображається символ " L", якщо різко виросло - то" H". Критерій різкості зміни - 8 мм рт. ст. за 8 годин:

Оскільки моя метеостанція відображає абсолютний тиск ( QFE), то показання виявляються дещо заниженими порівняно із відомостями у зведенні METAR(у якій наводиться QNH) (14 UTC 28 березня 2018 року):

Відношення тисків (за даними ATIS) Склав $ (1015 \ over 998) = 1,017 $. Піднесення аеропорту Гомель (код ІКАО) UMGG) над рівнем моря становить 143,6 м. Температура за даними ATIS становила 1° C.

Показання моєї метеостанції практично збіглися з абсолютним тиском QFEза відомостями ATIS!

Максимальний/мінімальний тиск ( QFE), зареєстровані моєю метеостанцією за весь час спостережень:

Відображення відносної вологості повітря

Відносна вологість повітря відображається у відсотках (у двох правих розрядах відображається символ відсотка):

Відображення поточного часу

Поточний час відображається на індикаторі у форматі "ЧЧ:ММ", причому роздільна двокрапка блимає раз на секунду:

Відображення фаз Місяця та місячного дня

Перші два розряди індикатора відображають поточну місячну фазу, а наступні два - поточний місячний день:

У Місяця виділяються вісім фаз (наведені англійські та російські (синім кольором – неточні) назви):

На індикаторі фази відображаються піктограмами:

фаза піктограма
зростаючий серп (півмісяць)
спадний серп (півмісяць)

Передача даних на комп'ютер

Якщо з'єднати метеостанцію з USB-UARTперетворювачем (наприклад, на базі мікросхеми CP2102), підключеним до USB-порту комп'ютера, то можна за допомогою термінальної програми спостерігати дані, що передаються метеостанцією:

Я розробив мовою програмування golangпрограму, що веде журнал метеоспостережень та відправляє дані в сервіс , і їх можна переглядати на Android-смартфон за допомогою програми :

За даними журналу метеоспостережень можна, наприклад, будувати графік зміни атмосферного тиску:
приклад графіка з помітним мінімумом тиску


приклад графіка з незначним зростанням тиску

Заплановані доопрацювання:

  • додавання датчиків напрямку та швидкості вітру

У метеостанціях для вимірювання швидкості вітру використовується тричашковий анемометр (1), а для визначення напрямку вітру - флюгер (2):

Також для вимірювання швидкості вітру використовуються термоанемометри з ниткою напруження(Англ. hot wire anemometer). Як дроти, що нагрівається, можна використовувати вольфрамову нитку накалу від лампочки з розбитим склом. У термоанемометрах, що промислово випускаються, датчик зазвичай розташовується на телескопічній трубці:

Принцип дії цього приладу полягає в тому, що тепло відводиться від нагрівального елемента внаслідок конвекції повітряним потоком – вітром. При цьому опір нитки напруження визначається температурою нитки. Закон зміни опору нитки напруження $R_T$ від температури $T$ має вигляд:
$R_T = R_0 \cdot (1 + (\alpha \cdot (T - T_0)))$ ,
де $R_0$ - опір нитки за нормальної температури $T_0$, $\alpha$ - температурний коефіцієнт опору (для вольфраму $\alpha = 4,5\cdot(10^(-3)) (^(\circ)(C^( -1)))) $).

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

Далі буде

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

  • На сонячних батареях з акумулятором для роботи в нічний час
  • Компактна за розміром, із простим способом монтажу
  • Можливість вивантаження даних у мережі WeatherUnderground
  • Вимірювання температури, вологості, тиску повітря, ультрафіолетового випромінювання

У процесі розробки вдалося вирішити більшість цих вимог. В даний час метеостанція має термометр, гігрометр, УФ-випромінювання та датчик тиску. Будучи частиною мережі WeatherUnderground, метеорологічна станція допомагає прогнозувати місцеву погоду. Ось повна схема метеорологічної станції, збільшити яку можна, зберігши на своєму ПК:

Метеостанції споживає 1 міліампер. Резервний акумулятор тут лише 1000 м/год — літій-полімерна батарея. Порівняно зі старими метеостанціями, де батареї герметичні свинцево-кислотні на 5 А/год – це прогрес. Розміри друкованої плати 100 мм х 75 мм і як вона виглядала, коли все було зроблено на макетці, а наступне фото в готовому вигляді:

Блок на 433 МГц забезпечує бездротовий зв'язок обміну даних. На даний момент пристрій прикріплюється безпосередньо на даху і викладає дані на WeatherUnderground кожні 11 хвилин.

Живлення схеми виконано за допомогою регулятора напруги MAX604. Цей регулятор був досить дорогим ($7.00), але мав дуже мале падіння напруги, що робить його дуже ефективним. Тут використаний цей регулятор, щоб 3,7-4,2 вольтову батарею Li-po батарею перетворити на ідеальні 3.3 Ст.

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

Для того, щоб завантажити дані в мережу, довелося писати спеціальний додаток для комп'ютера. Програмне забезпечення було написано C# за допомогою Visual Studio. Завантажити файли проекту ви можете у .