Добавляйте самоделоки - получайте оплату

*кликни за подробностями

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

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

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

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

Датчик 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 <wire.h>
#include "DHT_NEW.h"
#include <iarduino_RTC.h>
#include <liquidcrystal_I2C.h>
#include <bmp085.h>
BMP085 _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);
_dht1LRT = millis();
_dht1Tti = millis();
}
void loop()
{if (_isNeedClearDisp1) {_lcd1.clear(); _isNeedClearDisp1= 0;}
if(_isTimer(_bmp0852Tti, 1000)) {
_bmp0852Tti = millis();
_bmp085.getAltitude(&_bmp085A);
_bmp085.getPressure(&_bmp085P);
_bmp085.getTemperature(&_bmp085T);
}

//Плата:1
if (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 > _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 > 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 > _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 > 0) {_isNeedClearDisp1 = 1; _disp2oldLength = 0;}
}
_RTC1_GetTime2_StrOut = _RTC1.gettime("H:i:sD");

}
String _floatToStringWitRaz(float value, int raz)
{

return String(value, raz);
}
bool _isTimer(unsigned long startTime, unsigned long period )
{
unsigned long currentTime;
currentTime = millis();
if (currentTime>= startTime) {return (currentTime>=(startTime + period));} else {return (currentTime >=(4294967295-startTime+period));}
}

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

Всю информацию можно получить посмотрев в видео:


Перечень материалов и инструментов

-плата Arduino Nano
-двухстрочный дисплей LCD1602;
-часы реального времени DS1302;
-датчик атмосферное давления и температуры BMP180;
-датчик температуры и влажности DHT11;
-блок зарядки от телефона;
-любой подходящий корпус
-пинцет;
ножницы;
-паяльник;
-кембрик;
-тестер;
-соединительные провода;
-провод четырехжильный для выносного датчика.

Шаг первый. Делаем корпус для метеостанции

Подобрал пластмассовую коробочку из магазина Fix Price (всего то 17р). Предварительно вырезал в крышке окно для дисплея. Затем вырезал частично перегородки в коробке, сделал отверстия для USB разъема платы Arduino проем для датчика BMP180 Датчика BMP180 будет находится на наружной стороне корпуса, чтобы исключить лишний нагрев от электронной начинки находящейся внутри. После я покрасил корпус самоделки изнутри потому что пластик прозрачный. Коробка закрывается на защелку и в ней все элементы неплохо поместились.
Домашняя метеостанция на базе Ардуино


Шаг второй. Сборка схемы прибора.

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


Далее надо скоммутировать по схеме все платы и датчики метеостанции. Делаем это с помощью монтажных проводов с соответствующими разъемами. Я не делал соединения на пайке ,так в перспективе при выходе какого то модуля из строя (или по другим причинам) можно легко его заменить. На винтовом разъеме подключается кабель датчика DHT11 идущий на улицу. Питание можно осуществить с разъема USB платы Ардуино на компьютер, или подав напряжение 7-12В на контакт VIN и GND.

Сначала я собрал схему вне корпуса и запрограммировал и отладил ее в программе FLPROG.

Фото блок схемы в программе FLPROG.
Домашняя метеостанция на базе Ардуино

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

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

Неплохая получилась самодельная конструкция собранная в выходные. Было увлекательно самому сделать интересный и полезный приборчик. Сделать самостоятельно такой девайс, я думаю по плечу даже начинающему.Это не требует больших затрат времени и денег. Применить можно его где хочешь в доме на загородной даче. На всю работу пошло два выходных вечера всю электронику брал на Алиэкспресс. Остальные материалы нашлись у меня по сусекам. На базе платформы Ардуино можно собирать множество разнообразных полезных устройств.

Всем спасибо за внимание, вам успехов и удачи и в вашей жизни и в творчестве!
Чтобы написать комментарий необходимо войти на сайт через соц. сети (или зарегистрироваться):
Обычная регистрация
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.

Онлайн чат

Опрос
Сколько по времени, чаше всего, Вы делаете самоделку?

Последние комментарии

    Иван_Похмельев
    RMF73А не RFM73? Устройство в представленном виде не очень-то годится для заявленных Вами целей: запитка обмоток реле от аккумулятора ведёт к необходимости часто его заряжать. Если применять для
    Dmitrij
    Была у меня такая, первая бензопила. Скучаю... Моторчик там сказка. Модель точно не помню. Легенькая была и безотказная. Вот тоже ищу себе партнера, правда думаю они уже не те. Та покупалась 9 лет
    pogranec
    Dmitrij,У меня Партнер. Делают в Китае, филиал Хускаварны. Что интересно на самой пиле шильдик Хускаварны. Работает нормально пока. Уже года 4.
    Dmitrij
    А пилы на таких моторах делают разные...В китайских дешевых копиях штиля тоже такие движки
    Dmitrij
    не, это двигатели бензопил. Они очень мудреные. Там картер из двух боковых половинок, цилиндр крепится отдельно. Мудреный патрубок карбюратора и еще куча куча всего, что быстро ломается.Аааа, забыл
Все комментарии

Комментаторы месяца

Валерий
Комментариев: 1503 Публикаций: 41
1
Иван_Похмельев
Комментариев: 1358 Публикаций: 0
2
Dmitrij
Комментариев: 471 Публикаций: 580
3
pogranec
Комментариев: 483 Публикаций: 196
4
слесарь
Комментариев: 24 Публикаций: 4
5