Текущее время: 19 мар 2024, 13:19

Калининград & ХОББИ

Занятие любимым хобби - это путь к счастливой жизни!

Сетевая метеостанция на Ардуино

Тут собраны схемы различных устройств сделанных на контроллерах Ардуино, Лазерный гравер на Ардуино, Металлоискатель на Ардуино, Метеостанция, Кодовый замок, и множество других устройств и изобретений
Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

Сетевая метеостанция на Ардуино

Сообщение -=dp=- » 25 сен 2014, 15:30

Проект сетевой метеостанции с применением микроконтроллера АТ 328 - (Ардуино)

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

Итак, идея есть, приступаем к её реализации! ;)


Для сборки сетевой метеостанции нам потребуется:
корпус для основного блока - 1шт
корпус для выносного датчика - 1 шт
кабель UTP 5 CAT - 3 м
Плата Ардуино УНО - 1 шт
Плана модуль расширения Ethernet - 1 шт
Датчик атмосферного давления BMP108 - 1 шт
Датчик температуры и влажности DHT11 - 1 шт.
Светодиоды - 3 шт
Кнопка - 1 шт

Продолжение следует...


Вложения
1.JPG
Датчики DHT11 и BMP108
2.jpg
Плата Ардуино УНО
3.jpg
модуль расширения Ethernet

Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

Re: Сетевая метеостанция на Ардуино

Сообщение -=dp=- » 25 сен 2014, 15:43

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


Вложения
4.jpg
Наш сэндвич в сборе
5.jpg
Сетевой датчик влажности
6.jpg
Сетевой датчик температуры

Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

Re: Сетевая метеостанция на Ардуино

Сообщение -=dp=- » 25 сен 2014, 15:53

делаем отверстия для светодиодов и кнопки в крышке основного корпуса.
Кнопка будет использоваться для перезагрузки контроллера в случаях зависания.
Светодиод 1 будет индицировать подключение внешнего датчика температуры и влажности.
Светодиод 2 будет индицировать состояние датчика давления.
Светодиод 3 будет отображать подключение клиента к встроенному WEB серверу.

Библиотеки для датчиков и Ethernet модуля можно скачать с сайта ардуино, или попросить у меня :D

Первый этап реализации сетевой метеостанции готов!
Железо собрано, WEB сервер работает и выводит данные датчиков на внутреннюю вэб страничку.
Далее буду разрабатывать программу - логгер для копирования и добавления данных в БД MySQL и страничку на PHP для отображения хронологических данных в виде графиков.

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

Продолжение следует....


Вложения
7.jpg
Сетевая метеостанция в сборе
8.jpg
Блок сетевой метеостанции
9.JPG
Отображение температуры через сеть

Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

Re: Сетевая метеостанция на Ардуино

Сообщение -=dp=- » 01 окт 2015, 22:10

Здравствуйте!

Добрый день. Я Вам уже писал в теме про Большой лазерный гравер. Меня безумно заинтересовала Ваша идея по возможности передачи информации о температуре и влажности по средством интернета, т.к. имеется зимняя теплица. Если со сборкой и запчастями вопросов нет (всё хорошо и подробно оформлено), то Библиотеки для датчиков и Ethernet модуля я хочу у Вас попросить, ну и в процессе сборки как всегда будут вопросы.


Выкладываю библиотеки для сетевой метеостанции на Ардуино, всего их 4
Ethernet - библиотека для взаимодействия с Eternet шилдом на чипе Wiznet W5100,
DHT - библиотека для взаимодействия с датчиком температуры и влажности DHT-11,
bmp085 - библиотека для взаимодействия с датчиком давления BMP-180
SPI - стандартная библиотека, идет вместе с Arduino IDE.

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


Да, это легко можно сделать, нужно подключить к Ардуино, к любому свободному цифровому выходу модуль реле, и прописать в скетче событие к примеру если температура меньше 15 градусов то на цифровом выходе Ардуино установить значение HIGHT (1), тем самым сработает реле и своими контактами подключит ИК- обогреватель к питанию, когда температура поднимется выше 15 градусов то на цифровом выходе установится значение LOW, реле отключится и выключит ИК-обогреватели.

С влажностью то же самое, единственно, для подключения шагового двигателя понадобится драйвер, управляется драйвер с двух цифровых выходов, необходимо предусмотреть количество свободных цифровых выводов, чтоб их хватило для подключения всех устройств.
Потом нужна будет библиотека для управления драйвером шагового двигателя, ну и кусок исполняемого кода , примеры управления шаговыми двигателями вы можете посмотреть в теме про лазерный гравер, он как раз на них сделан.
В Ардуино УНО цифровых выходов всего 13.
А вот в Ардуино МЕГА их 54.


Вложения
bmp085.rar
bmp085 - библиотека для взаимодействия с датчиком давления BMP-180
(30.08 KiB) Скачиваний: 973
DHT.rar
DHT - библиотека для взаимодействия с датчиком температуры и влажности DHT-11
(5.28 KiB) Скачиваний: 956
Ethernet.rar
Ethernet - библиотека для взаимодействия с Eternet шилдом на чипе Wiznet W5100
(51.55 KiB) Скачиваний: 932

Аватар пользователя
 
Сообщений: 799
Зарегистрирован: 27 мар 2013, 22:12

Re: Сетевая метеостанция на Ардуино

Сообщение -=dp=- » 01 окт 2015, 22:14

Скетч для сетевой метеостанции на Ардуино.

Не помню уже тот или нет, но должен быть рабочий :)

Код: выделить все

#include "DHT.h"
DHT dht;
#include <Wire.h>
#include <BMP085.h>
#include <SPI.h>
#include <Ethernet.h>
BMP085 dps = BMP085();
long Temperature = 0, Pressure = 0, Altitude = 0;
// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
IPAddress ip(192, 168, 0, 80);
IPAddress gateway(192, 168, 0, 1);
IPAddress subnet(255, 255, 255, 0);

// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
   Wire.begin();
    pinMode(6, OUTPUT);
    pinMode(5, OUTPUT);
    pinMode(4, OUTPUT);
  delay(1000);
   dht.setup(7); // data pin 7
  dps.init(MODE_ULTRA_HIGHRES, 25000, true);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }


  // start the Ethernet connection and the server:
  Ethernet.begin(mac, ip,gateway,subnet);
  server.begin();
  Serial.print("server is at ");
  digitalWrite(4, HIGH);
  Serial.println(Ethernet.localIP());
}


void loop() {
  // listen for incoming clients
   digitalWrite(6, HIGH);
//--------------------start barometr--------------------
  dps.getPressure(&Pressure);
  dps.getAltitude(&Altitude);
  dps.getTemperature(&Temperature);
  //-------------end barometr-------------------
  //--------------------start dht11-----------------------
   delay(dht.getMinimumSamplingPeriod());
    float humidity = dht.getHumidity();
  float temperature = dht.getTemperature();
  //-----------------------end dht11--------------------------------
  EthernetClient client = server.available();
  if (client) {
    Serial.println("new client");
    digitalWrite(5, HIGH);
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        //Serial.write(c);
        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
        if (c == '\n' && currentLineIsBlank) {
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");  // the connection will be closed after completion of the response
          client.println("Refresh: 5");  // refresh the page automatically every 5 sec
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          client.println((Pressure/133.3));
          client.println("<br>");
          client.println(Temperature*0.1);
          client.println("<br>");
          client.println(float(dht.getTemperature()));
          client.println("<br>");
          client.println(float(dht.getHumidity()));
          client.println("<br>");
          // output the value of each analog input pin
          client.println("</html>");
          break;
        }
        if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    // close the connection:
    client.stop();
    digitalWrite(5, LOW);
    //Serial.println("client disconnected");
   
  }
  digitalWrite(6, LOW);
}






и еще одна библиотека WIRE


Вложения
Web_meteo.rar
Скетч для сетевой метеостанции на Ардуино.
(1.64 KiB) Скачиваний: 961
Wire.rar
библиотека WIRE
(8.98 KiB) Скачиваний: 924


Вернуться в Устройства на Ардуино

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1