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

Часы-метеостанция на Arduino своими руками

ОБНОВЛЕНИЯ

28.01.19 meteoClock_v1.3: исправлено предсказание погоды (работало “наоборот”)
19.04.19 meteoClock_v1.5: добавлено управление яркостью подсветки и светодиода по датчику света. Смотрите последнюю схему!

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

ОПИСАНИЕ

Решил таки сделать свою версию метеостанции-часов-календаря на Arduino с кучей датчиков и различными крутыми штуками! Проект уместился в корпусе G909G из магазина Чип и Дип, питается от micro-USB и выглядит весьма неколхозно! =)

  • Большой дешёвый LCD дисплей
  • Вывод на дисплей:
    • Большие часы
    • Дата
    • Температура воздуха
    • Влажность воздуха
    • Атмосферное давление (в мм.рт.ст.)
    • Углекислый газ (в ppm)
    • Прогноз осадков на основе изменения давления
  • Построение графиков показаний с датчиков за час и сутки
  • Индикация уровня CO2 трёхцветным светодиодом (общий анод/общий катод, настраивается в прошивке)
  • Переключение режимов сенсорной кнопкой

Версия 1.5
– Добавлено управление яркостью
– Яркость дисплея и светодиода СО2 меняется на максимальную и минимальную в зависимости от сигнала с фоторезистора
Подключите датчик (фоторезистор) по схеме. Теперь на экране отладки справа на второй строчке появится величина сигнала
с фоторезистора. Пределы яркости устанавливаются в настройках прошивки.

Источник

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

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

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

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

Кому лень повозиться с программой — скетч ( только выставлять текущее время часов надо будет):

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

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

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

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

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

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

Читайте также:  Нужный инструмент для дома своими руками

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

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

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

Фото блок схемы в программе FLPROG.

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

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

Всем спасибо за внимание, вам успехов и удачи и в вашей жизни и в творчестве!

Источник

Метеостанция на Arduino от А до Я. Часть 2

Выбор железа и софта тесно взаимосвязан как «курица и яйцо». С чего начать, с железа, с софта? Если у вас хорошее железо, но к нему нет драйверов, библиотек и софта (IDE, утилиты для прошивки и т.п.), то оно бесполезно, и наоборот.

Поэтому рассказываю еще раз про выбор между nRF24L01+ и ESP8266 для связи удаленных датчиков с центральным блоком.

Дело в том, что ESP8266 это не просто тупой WiFi адаптер, он имеет на борту микроконтроллер по мощности и объему памяти превосходящий Ардуино. По умолчанию ESP8266 имеет прошивку в виде набора AT команд, в этом случае ESP используется как простой модем. Но есть и более продвинутые прошивки, здесь ESP8266 даже может выступать в роли веб-сервера, ну и конечно же управлять датчиками как и Arduino.

Однако все эти продвинутые прошивки имеют недостатки, которые не позволили (в сумме с железячными вопросами о которых я уже писал) применить ESP8266 в данном проекте:

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

В итоге готовой подходящей продвинутой прошивки я не нашёл, и пока не готов создать свою. ESP8266 чип — обширная и интересная тема.

В свою очередь стандартные AT-прошивки так же имеют минусы:

  • они всё ещё сыроваты (по состоянию на 2016)
  • мне не удалось найти нормальную библиотеку для Arduino для управления модулем ESP8266 с помощью AT команд, пришлось «колхозить» самому.

С другой стороны радиомодуль nRF24L01+ прост и понятен, для работы с ним есть супер либа RadioHead и никаких проблем с программированием. Библиотека хорошо документирована, что немаловажно.

RadioHead позволяет передавать структуры данных (а не только отдельные числа), что и реализовано в данном проекте. Забегая вперед скажу, RadioHead может надёжно передавать данные, с повторами если не дошло с первого раза. Все эти вещи библиотека берет на себя.

Читайте также:  Как создавать талисманы своими руками

Для энергосбережения использую библиотеку Low Power Library, она проста и содержит только то, что нужно.

В случае же применения ESP8266 в заоконном датчике, я был бы вынужден создавать WiFi точку доступа и каким-то образом передавать данные (где прошивки, где софт?). Либо позволить датчику напрямую слать данные на веб-сервер, а центральный блок (который в этом случае перестаёт играть роль «центрального») учить читать данные оттуда, чтобы их отобразить на табло.

Другими словами я пошёл путем большей автономии от WiFi интернета и PHP + MySQL сервера. Вы можете начать «клепать» метеостанцию уже сейчас не имея доступа в интернет и/или хостинга для сервера, в этом случае ESP8266 вам не нужен, просто добавите его потом.

Для считывания данных с датчиков типа DHT есть библиотека Adafruit DHT Sensor Library. Работа с ней проста и понятна.

Для датчика давления подходит библиотека Adafruit BMP085 Unified, которая требует наличия библиотеки абстрактного уровня Adafruit Sensor.

В составе всех библиотек есть примеры скетчей.

Вот и всё пожалуй с теоретической частью. «Наши цели ясны, задачи определены. За работу, товарищи!»

Центральный блок. Железо

Ну наконец-то, после всех заумствований приступаем к сборке!

Примечание. Если вы до этого ни разу не собирали метеостанцию (да ладно!), то вы можете начать и не имея всех деталей под рукой. Например, можно начать не имея радиомодуля и/или ESP8266. Датчик барометрического давления BMP180 также может отсутствовать. Добавите потом. Правда в этом случае вам придется самостоятельно закоментировать в скетче те участки кода, которые отвечают за взаимодействие с отсутствующими блоками, но это не так уж и сложно. Я покажу как.

Главное, чтобы хоть что-то собралось и заработало, тогда веселее продолжать.

Как уже говорилось, центральный блок основан на Arduino MEGA. Ещё нам понадобятся:

  • датчик температуры и влажности DHT11
  • датчик барометрического давления типа BMP180
  • WiFi модуль ESP8266
  • радиомодуль типа nRF24 2,4 Ггц
  • дисплей типа LCD1604 (4 строки по 16 символов), купить можно за $5
  • блок питания с выходом 5-12 В постоянного напряжения (я использовал зарядку от мобильного с USB выходом что удобно)
  • макетная плата под пайку, паяльник, канифоль, припой либо обычная беспаечная arduino-макетная плата. Лично я паял для надёжности, потому что проект явно был долгоиграющим и не хотелось страдать из-за случайно выдернутого из макетки проводка.

Макетную плату для распайки можно купить от $1. Берите размером побольше, чтобы хватило на все соединения. И ещё раз: перед покупкой читайте описание, а не картинку.

Беспаечную плату можно купить от $2. Берите размером побольше, чтобы хватило на все соединения.

Соединительные провода бывают таких нужных нам типов:

  • Dupont кабель «папа-мама» (есть и «папа-папа», «мама-мама»). Это шлейф из нескольких проводов с разными цветами изоляции и коннекторами под штыревые контакты для Arduino. Такими проводами удобно соединять платы и датчики напрямую к Ардуино без использования макетной платы.
  • Обычные соединительные провода под беспаечную макетную плату для Ардуино.
  • Пучок проводков для пайки.

Первым делом распаял табло LCD-1604. Сначала припаял штырьки к табло, затем разъемы к макетной плате.

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

Для того чтобы не забыть, где какие разъемы, «покрасил» белым корректором участки платы по соседству и сделал соответствующие надписи. Некрасиво? Зато практично и быстро, это же прототип!

Распиновка и соединение

Дисплей 16×4 LCD1604

Подробнее о дисплее и работе с ним погуглите «Работа с символьными ЖКИ на базе HD44780». Отметим, что нужно внимательно отнестись к полярности подключения питания к ЖК-индикатору и чтобы напряжение питания было в диапазоне +4,5…5,5 В. Невнимательное отношение к этому может привести к выходу индикатора из строя!

Читайте также:  Насесты для куриц сделать правильно своими руками

Пин LCD 1604 Arduino MEGA Arduino UNO Описание
VSS GND GND GND
VDD 5 V 5 V 4,7 — 5,3V
RS 22 4 Высокий уровень означает, что сигнал на выходах DB0—DB7 является данными, низкий — командой
RW GND GND Определяет направление данных (чтение/запись). Так как операция чтения данных из индикатора обычно бывает невостребованной, то можно установить постоянно на этом входе низкий уровень
E 23 5 Импульс длительностью не менее 500 мс на этом выводе определяет сигнал для чтения/записи данных с выводов DB0-DB7, RS и WR
DB4 24 8 Входящие/исходящие данные
DB5 25 9
DB6 26 10
DB7 27 11
LED A+ +5V или резистор 220 Ом → +5VLED-A
LED B- GND
V0 GND или подстроечник на 10кОм

Программная инициализация будет выглядеть так:

Температура, влажность DHT11

Подключение датчика температуры и влажности DHT11 (SainSmart). Датчик расположите лицевой стороной вверх, выводы будут описаны слева направо.

DHT11 Arduino Mega
DATA Digital pin 2 (PWM) (см. ниже DHTPIN)
VCC 3,3—5 В (рекомендуется 5 В, лучше внешнее питание)
GND GND

Барометр BMP180

Подключение датчика атмосферного давления BMP180 (барометр) + температура по интерфейсу I2C/TWI.

BMP180 Arduino Mega
VCC не подключен
GND GND
SCL 21 (SCL)
SDA 20 (SDA)
3,3 3,3 В

Для UNO: A4 (SDA), A5 (SCL).

nRF24L01+

  • Диапазон частот 2,401 — 2,4835 Ггц
  • 126 каналов. Нулевой канал начинается с 2400 Мгц и далее с шагом 1 Мгц, например 70 канал находится соответственно на 2470 Мгц. При установке скорости передачи 2Mbps занимается ширина канала в 2 Мгц
  • Питание 1,9 — 3,6 В (рекомендуется 3,3 В)

Вот распиновка модуля.

Некоторые советуют сразу же припаять керамический конденсатор 100nF (можно 1µF, 10µF) на выводы питания RF для избежания электрических помех.

Распиновка nRF24L01+ (смотреть сверху платы там где чип, пины должны быть внизу) :

пин 2 3,3V пин 4 CSN пин 6 MOSI пин 8 IRQ
пин 1 GND пин 3 CE пин 5 SCK пин 7 MISO

Подключение для метеостанции:

Arduino Mega nRF24L01+
3,3 В VCC пин 2 (лучше внешнее питание)
пин D8 CE пин 3 (chip enable in)
SS пин D53 CSN пин 4 (chip select in)
SCK пин D52 SCK пин 5 (SPI clock in)
MOSI пин D51 SDI пин 6 (SPI Data in)
MISO пин D50 SDO пин 7 (SPI data out)
IRQ пин 8 (Interrupt output) не подсоединен
GND GND пин 1 (ground in)

Программирование радиомодуля будет подробно описано в программной части.

ESP8266

Распиновка ESP8266 (смотреть сверху платы там где чипы, пины должны быть внизу):

GND GPIO2 GPIO0 RX
TX CH_PD RESET VCC

Подключение ESP8266 для метеостанции:

ESP8266 Arduino Mega
TX 10 пин (SoftwareSerial RX)
RX 11 пин (SoftwareSerial TX)
VCC 3,3 В
GND GND
CH_PD Через резистор 10К к 3,3 В Arduino
GPI0 Необязательно. Через резистор 10К к 3,3 В Arduino
GPI2 Необязательно. Через резистор 10К к 3,3 В Arduino

Центральный блок в сборе. «Материнскую плату» вырезал из картонной коробки из-под обуви и к ней винтиками на 3 прикрутил всё остальное.

Как видим в этом месте всё питание осуществляется от пинов Ардуино, т.е. к блоку питания напрямую ничего не идёт, и пока мощи хватает.

Вроде всё. Ничего не забыл.

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

Источник

Оцените статью
Своими руками