Новости:

Форум Infotex WeaponMod

Тема: APRS Meteo  (Прочитано 110604 раз)

Оффлайн rv1cj 12 Ноября 2015, 14:00:40

  • Старожил
  • ****
  • Сообщений: 95
  • Карма: +16/-0
    • Просмотр профиля
Привет, есть желание сваять погодную станцию. Очередную  :happy:
Хотелось бы температура, влажность, давление, направление и скорость ветра.
Температура/влажность на DHT22
Давление BMP085 (или аналог)
Ветер есть промышленный датчик. Выход раздельный для направления и скорости.
Возьмешься?
  • « Последнее редактирование: 18 Ноября 2015, 17:37:51 от Koshak »

Оффлайн Koshak 13 Ноября 2015, 07:07:03 (#1)

  • Отпусти меня чудо халфа
  • КотЭ
  • Ветеран
  • *
  • Сообщений: 2758
  • Карма: +270/-16
    • Просмотр профиля
    • Infotex Мир Хобби
Игорь я так понял тебе нужно типа SmallMeteo только самоделку с поддержкой датчика ветра   ???
Могу попробовать замутить на ардуине, только под руками пока ни датчиков ни платы LAN под ардуину нема.
 
У кошки четыре ноги: вход, выход, земля и питание

Оффлайн rv1cj 13 Ноября 2015, 21:16:18 (#2)

  • Старожил
  • ****
  • Сообщений: 95
  • Карма: +16/-0
    • Просмотр профиля
Датчик я тебе отправлю.
Надо софт для ардуины написать что бы снимала показания с датчиков.
А вот в каком виде выдавать наружу  :!

Может подкинешь идею?

Оффлайн rv1cj 13 Ноября 2015, 22:26:07 (#3)

  • Старожил
  • ****
  • Сообщений: 95
  • Карма: +16/-0
    • Просмотр профиля
Я отправлю Arduino UNO и плату Ethernet
Датчик ветра, влажность/температура
С датчиком давления пока думаю

Оффлайн Koshak 14 Ноября 2015, 20:58:41 (#4)

  • Отпусти меня чудо халфа
  • КотЭ
  • Ветеран
  • *
  • Сообщений: 2758
  • Карма: +270/-16
    • Просмотр профиля
    • Infotex Мир Хобби
Так а выход то какой у датчика ветра? Направление и сила ветра по разным портам?
Вывод в WEB думаю сделать как в SmallMeteo но нужно пробовать будет  :po:
У кошки четыре ноги: вход, выход, земля и питание

Оффлайн rv1cj 14 Ноября 2015, 22:52:50 (#5)

  • Старожил
  • ****
  • Сообщений: 95
  • Карма: +16/-0
    • Просмотр профиля
Так а выход то какой у датчика ветра? Направление и сила ветра по разным портам?
Вывод в WEB думаю сделать как в SmallMeteo но нужно пробовать будет  :po:

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

Оффлайн rv1cj 15 Ноября 2015, 10:23:17 (#6)

  • Старожил
  • ****
  • Сообщений: 95
  • Карма: +16/-0
    • Просмотр профиля
Данные по датчику ветра

Velocity section:  Smooth-running cup anemometer with maintenance free optical scanning of rotor movement

- Measuring range:                                      0.35...80 m/s (metres per second)
- Resolution:                                                0.11 m/s
- Linearity:                                                   0...10 m/s: ±0.5 m/s
                                                                  10...80 m/s: ±5% of measured value

Direction section:  Vane consisting of polyurethane with counterweight. Optically scanned code
disk and digital transmitter (UART)
- Measuring range:                                      0...360° continuously
- Resolution:                                                8 bit (1.41°)
- Accuracy:                                                  ±3° in relation to the wind direction

Оффлайн Koshak 15 Ноября 2015, 17:56:45 (#7)

  • Отпусти меня чудо халфа
  • КотЭ
  • Ветеран
  • *
  • Сообщений: 2758
  • Карма: +270/-16
    • Просмотр профиля
    • Infotex Мир Хобби
Ну присылай  :-) попробую сделать  :po:
У кошки четыре ноги: вход, выход, земля и питание

Оффлайн rv1cj 16 Ноября 2015, 21:25:10 (#8)

  • Старожил
  • ****
  • Сообщений: 95
  • Карма: +16/-0
    • Просмотр профиля
Купил Ethernet shield W5100, датчик влажность/температура DHT-22, датчик давления GY-68.
Плата UNO уже была. Так что на этой неделе отправлю.

Оффлайн Koshak 07 Декабря 2015, 17:37:13 (#9)

  • Отпусти меня чудо халфа
  • КотЭ
  • Ветеран
  • *
  • Сообщений: 2758
  • Карма: +270/-16
    • Просмотр профиля
    • Infotex Мир Хобби
Приехала сегодня посылка от Игоря RV1CJ  :-)
Анбоксинг в фотках  ;)





Ардуинка и остальной обвес )) Спасибо за платы TNC модема!!!



При перевозки одно ухо всё таки отлетело  ???



Я так понял что на клей садится отлично  :-)

Вообщем будем разбираться с этим хозяйством  :D
У кошки четыре ноги: вход, выход, земля и питание

Оффлайн Koshak 09 Декабря 2015, 21:09:27 (#10)

  • Отпусти меня чудо халфа
  • КотЭ
  • Ветеран
  • *
  • Сообщений: 2758
  • Карма: +270/-16
    • Просмотр профиля
    • Infotex Мир Хобби
Вообщем пока начал с "лёгкого"  :-)
Web сервер работает с датчиков вывод инфы идёт, температуру снимаю с DHT22 . Остаётся анемометр....
Вывод наверное сделаю как у Павла Тюменцева в SmallMeteo.
Ну а дальше bash скрипт подпилим в OpenWRT  :D
У кошки четыре ноги: вход, выход, земля и питание

Оффлайн Koshak 12 Декабря 2015, 22:58:19 (#11)

  • Отпусти меня чудо халфа
  • КотЭ
  • Ветеран
  • *
  • Сообщений: 2758
  • Карма: +270/-16
    • Просмотр профиля
    • Infotex Мир Хобби
На данный момент вывод температуры с двух датчиков, влажность, и давление в форматах hPa и mmHg.
Вывод данных делал как в SmallMeteo в формате tiny.
IP адрес и порт подключения правим на свои значения, мои настройки 192.168.0.58:8086. 
MAC адрес можно в принципе не менять если шилд подключен к роутеру  :D
Текущий вариант кода:

Цитировать
//  Метеостанция для RV1CJ, вывод инфы в формате SmallMeteo tiny.htm xDD
//  1#26.60 Температура с датчика DHT22 в C
//  2#26.80 Температура с датчика BMP085 в C
//  3#15    Влажность с датчика DHT22 в %
//  4#997   Давление с датчика BMP085 в hPa
//  5#748   Давление с датчика BMP085 в mmHg
//  Ver 0.1
 
#include <SPI.h>
#include <Ethernet.h>
#include <Wire.h>
#include <BMP085.h>
#include <DHT.h>

BMP085 dps = BMP085();
long Temperature085 = 0, Pressure085 = 0;

#define DHTTYPE DHT22   // DHT 22
DHT dht(8, DHTTYPE);

// MAC придумываем от балды xDD
byte mac[] = { 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF };
// IP адрес, назначаемый Ethernet shield:
byte ip[] = { 192, 168, 0, 58 };
// адрес шлюза:
byte gateway[] = { 192, 168, 0, 1 };
// маска:
byte subnet[] = { 255, 255, 255, 0 };
// Порт
EthernetServer server(8086);

void setup() {
  Serial.begin(9600);
  Serial.println("start");
  // инициализация Ethernet shield
  Ethernet.begin(mac, ip);
  // запуск сервера
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
  delay(1000);
  dps.init();
}

void loop ()
{
  EthernetClient client = server.available();
  if (client) {
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        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();
          float h = dht.readHumidity();
          float t = dht.readTemperature();
          dps.getTemperature(&Temperature085);
          dps.getPressure(&Pressure085);
          client.print("1#"); client.print(t); client.println(" </BR>");
          client.print("2#"); client.print(Temperature085 * 0.1); client.println(" </BR>");
          client.print("3#"); client.print(h , 0); client.println(" </BR>");
          client.print("4#"); client.print(Pressure085 * .01, 0); client.println(" </BR>");
          client.print("5#"); client.print(Pressure085 / 133.3, 0); client.println(" </BR>");
         
         
          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();
  }
}

Подключение датчиков:

DHT22
VCC--->5v
OUT--->D8
GND--->GND

BMP085
VCC--->3.3v
SDA--->A4
SCL--->A5
GND--->GND

Ethernet Shield W5100
Втыкаем бутербродом в Ардуину  :-)

У кошки четыре ноги: вход, выход, земля и питание

Оффлайн Koshak 23 Декабря 2015, 21:47:49 (#12)

  • Отпусти меня чудо халфа
  • КотЭ
  • Ветеран
  • *
  • Сообщений: 2758
  • Карма: +270/-16
    • Просмотр профиля
    • Infotex Мир Хобби
Вариант два! Ардуина сама коннектится на APRS сервак и кидает погодную инфу, роутер с APRX уже не нужен  :D

Подключение датчиков как в предыдущем посте.

Цитировать
// APRS погодная станция v 0.1 made in RA4FHE xDDD

#include <SPI.h>
#include <Ethernet.h>
#include <Wire.h>
#include <BMP085.h>
#include <DHT.h>

BMP085 dps = BMP085();
long Temperature085 = 0, Pressure085 = 0;

#define DHTTYPE DHT22   // Тип датчика DHT 22
DHT dht(8, DHTTYPE);

byte mac[] = { 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF };    // MAC адрес от балды
IPAddress ip(192, 168, 0, 14); // Локальный адрес
IPAddress server(194, 186, 45, 251); // IP сервера http://aprs.cqham.ru/
EthernetClient client;

void setup() {
  Ethernet.begin(mac, ip);
  Serial.begin(9600);
  delay(1000);
  dps.init();
  Serial.println("connecting...");
  if (client.connect(server, 14580)) { // Ломимся на сервер xDD рекомендованный порт подключения 14580
    Serial.println("connected");
  } else {
    Serial.println("connection failed");
  }
}

void loop() {
  if (client.connected()) {
    float h = dht.readHumidity();
    float t = dht.readTemperature();
    dps.getTemperature(&Temperature085);
    dps.getPressure(&Pressure085);
    delay(250);
    client.println("user RA4FHE-2 pass -1 vers Arduino_WX 0.1 filter m/15");  // Логинемся на сервер
    delay (250);
    client.print("RA4FHE-2>APRS,TCPIP*,qAC,T2RUSSIA:=5312.66N/04500.72EW");     // Поехали кидать инфу на сервак
    client.print(" Tmp1="); client.print(t, 1); client.print("C");
    client.print(" Tmp2="); client.print(Temperature085 * 0.1, 1); client.print("C");
    client.print(" Hum="); client.print(h, 0); client.print("%");
    client.print(" Press="); client.print(Pressure085 / 133.3, 0); client.print("mmHg");
    client.println("  **Experimental Arduino Meteo**");                        // Небольшой комментарий...
    delay(120000); // Данные кидаем каждые 2 минуты
  }

  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();
    while (true);
  }
}
 

Ну и пару скринов...



Размеры с пачку сигарет  :-)



В дальнейшем строку с данными приведу к стандарту WX APRS а пока играюсь с железом  :Y:
У кошки четыре ноги: вход, выход, земля и питание

Оффлайн Koshak 24 Декабря 2015, 16:18:30 (#13)

  • Отпусти меня чудо халфа
  • КотЭ
  • Ветеран
  • *
  • Сообщений: 2758
  • Карма: +270/-16
    • Просмотр профиля
    • Infotex Мир Хобби
Почистил код  :Y:

Цитировать
// APRS погодная станция v 0.21 made in RA4FHE xDDD

#include <SPI.h>
#include <Ethernet.h>
#include <Wire.h>
#include <BMP085.h>
#include <DHT.h>

BMP085 dps = BMP085();
long Temperature085 = 0, Pressure085 = 0;

#define DHTTYPE DHT22   // Тип датчика DHT 22
DHT dht(8, DHTTYPE);

byte mac[] = { 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF };    // MAC адрес от балды
IPAddress ip(192, 168, 0, 14); // Локальный адрес
IPAddress server(194, 186, 45, 251); // IP сервера http://aprs.cqham.ru/
EthernetClient client;

void setup() {
  Ethernet.begin(mac, ip);
  delay(1000);
  dps.init();
}

void loop() {

  tcp();
  delay(600000); //Кидаем инфу каждые 10мин
}

void tcp() {

  client.connect(server, 14580);
  delay(250);
  client.println("user RA4FHE-2 pass -1 vers Arduino_WX 0.21 filter m/1");  // Логинемся на сервер
  delay (250);
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  dps.getTemperature(&Temperature085);
  dps.getPressure(&Pressure085);
  client.print("RA4FHE-2>APRS,TCPIP*,qAC,T2RUSSIA:=5312.66N/04500.72EW");     // Поехали кидать инфу на сервак
  client.print(" Tmp1="); client.print(t, 1); client.print("C");
  client.print(" Tmp2="); client.print(Temperature085 * 0.1, 1); client.print("C");
  client.print(" Hum="); client.print(h, 0); client.print("%");
  client.print(" Press="); client.print(Pressure085 / 133.3, 0); client.print("mmHg");
  client.println("  **Experimental Arduino Meteo**");                        // Небольшой комментарий...
}
У кошки четыре ноги: вход, выход, земля и питание

Оффлайн Koshak 04 Января 2016, 21:13:59 (#14)

  • Отпусти меня чудо халфа
  • КотЭ
  • Ветеран
  • *
  • Сообщений: 2758
  • Карма: +270/-16
    • Просмотр профиля
    • Infotex Мир Хобби
Игорь с направлением ветра пока полная Ж.... входной формат данный на встроенный контроллер в коде Грея, выходной пока не понятен  /:( По сути нужен точный протокол выходных данных, от чего "плясать"!!!! Со скоростью ветра проще.... В разработке....
У кошки четыре ноги: вход, выход, земля и питание