вторник, 4 февраля 2014 г.

Погодный бот USB.HID термометра (прогноз заморозков, постинг в Twitter и FTP) с контролем нагрузок из браузера

Комплект ПО включает два WEB-сервера USB.HID датчика температуры и устройства контроля нагрузок uniUSB, а также виджет для рабочего стола визуализации данных через сеть Интернет с возможностью озвучивания значений температуры. Это означает, что данный продукт не нуждается в собственном драйвере и опознается в операционной системе (ОС) как USB-HID совместимое устройство, например - мышь. WEB сервер USB.HID датчика температуры обеспечивает обслуживание и считывание показаний USB.HID термометра авторской разработки на базе ATMega8, совмещающего в себе функции как USB-приемника ДУ, так и USB.HID датчика температуры и доступен по порту 500. В устройстве использован 1-Wire датчик температуры DS18B20, что позволяет иметь рабочий диапазон -25...+125°C. Выдача параметров осуществляется по VID/PID в абсолютных значениях градусов Кельвина или Цельсия с прогнозированием заморозков по эмпирическим таблицам Броунова и отправкой данных в Twitter и на заданный FTP.

Разработке посвящен цикл публикаций в ж."Радиолюбитель", №12-2009, №№1-4-2010, №№10-11-2011:
  1. USB термометр и дистанционка в одном флаконе. Часть 1
  2. USB термометр и дистанционка в одном флаконе. Часть 2
  3. USB термометр и дистанционка в одном флаконе. Часть 3
  4. USB термометр и дистанционка в одном флаконе. Часть 4 или... Интерактивный WEB сервер
  5. USB термометр и дистанционка в одном флаконе. Часть 5 или... Говорящий термометр
  6. USB термометр и дистанционка в одном флаконе. Часть 6... Автопостим в Twitter
  7. USB термометр и дистанционка в одном флаконе. Часть 7... Определяем вероятность заморозков
WEB-сервер USB.HID устройства контроля нагрузок обеспечивает управление до 8-ми нагрузок прямо из браузера и доступен по 501-порту.

Состав пакета документации:
  1. Схема электрическая принципиальная USB.HID датчика.
  2. Трассировка платы (OrCad GERBER RS-274X).
  3. Прошивка.
  4. Комплект ПО.
Внешний вид и сравнительные габариты устройства:




Режим управления USB.HID устройством uniUSB:


Результат отправки данных в Twitter:


Результат работы PHP-скрипта на сайте (данные в текстовый файл по FTP):

 
Режим индикации отсутствия датчика:


Режим смены единиц отображения температуры при наличии датчика в USB порту:



Прогнозирование заморозков. Как?

Следует отметить, что вероятность заморозков напрямую связана с изменением влажности окружающего воздуха в течении суток. В принципе, любой школьник знаком с этими причинами: это и движение холодных масс воздуха и тепловое (инфракрасное) излучение поверхностью Земли ночью. Изначально, поверхность Земли нагревается солнцем, часть энергии солнечного потока отражается атмосферой обратно в космос. В среднем, за сутки каждый квадратный сантиметр поверхности поглощает около 4 кДж солнечной энергии. Ночью, тепловое излучение поверхности Земли составляет в среднем 3 кДж и около 0.5 кДж идет на нагрев водной поверхности. Данное состояние и называют тепловым равновесием, в итоге средняя температура Земли остается постоянной, около + 15. Различные метеоусловия в атмосфере Земли часто нарушают этот баланс. По таблицам, составленной профессором Броуновым, вероятность заморозка определяется именно по быстроте понижения температуры.

Для одиночного датчика температуры наиболее приемлемым и самым распространенным способом определения вероятности заморозков – являются эмпирические таблицы профессора Броунова. Графики, построенные по таким таблицам называют – графиками Броунова:

 
На этом графике по вертикали нанесены температуры воздуха в 21 час, а по горизонтали отложены разности температур в 13 часов и 21 час. Сами вероятности образованы зонами – наклонными линейными зависимостями для: 100 (заморозки будут), 80 (заморозки очень возможны), 60 (заморозки возможны), 40 (заморозки маловероятны), 20 (заморозки совсем маловероятны) и 10 (заморозков не будет) %.

Небольшой пример: допустим, температура воздуха в 13 часов была + а в 21 час +3°. Разность температур составляет По вертикали графика находим цифру 3 (температура воздуха в 21 час) и по горизонтали 5 (разность температур). Точка пересечения этих двух линий расположена в зоне 100%, что   означает «заморозки будут». Вот так просто.

Заметьте, зависимости линейные. А значит, достаточно построить уравнение по двум точкам, чтобы  аппроксимировать каждую из зависимостей. Все в школе хорошо учились? Взглянем на полученные формулы (1):

Y10 = 11 + 3 * x / 8;
Y20 = 8.5 + 4.5 * x / 11;
Y40 = 6.5 + 4.5 * x / 11;  (1)
Y60 = 4.5 + 4.5 * x / 11;
Y80 = 2.5 + 4.5 * x / 11;
Y100 = 1.5 + 4.5 * x / 11.

Эти зависимости и положены в основу прогнозирования нашим WEB-сервером. Для особо ленивых дадим готовый код:
// определение вероятности заморозков-
function get_moroz: string;
var y10,y20,y40,y60,y80,y100,x,y: real;
    s: string;
begin
 // разница между температурой в 13 и 21 час
 x:= t21 - t13;
 y:= t21; // и координаты точки [x,y]
 // краевые вероятности по таблице проф.Броунова

 y10 := 11  + 3*x/8;
 y20 := 8.5 + 4.5*x/11;
 y40 := 6.5 + 4.5*x/11;
 y60 := 4.5 + 4.5*x/11;
 y80 := 2.5 + 4.5*x/11;
 //y100:= 1.5 + 4.5*x/11; // кстати - лишняя
 // собственно, определяем принадлежность точки [x,y] области графиков

 if y>y10                then s:= 'заморозки 0%';
 if (y10>=y) and (y>y20) then s:= 'заморозки 20%';
 if (y20>=y) and (y>y40) then s:= 'заморозки 40%';
 if (y40>=y) and (y>y60) then s:= 'заморозки 60%';
 if (y60>=y) and (y>y80) then s:= 'заморозки 80%';
 if y80>=y               then s:= 'заморозки 100%';

 result:= s
end;

скачать

2 комментария:

  1. Проект ввиду неавтономности морально устарел )
    На данный момент функции метеостанции и прогнозирования заморозков, ВНГО взял на себя ESP12 (ESP8266) c автономным питанием от солнечной панели и ионисторов с отправкой данных в облако ThinkSpeak и Twitter.

    ОтветитьУдалить
  2. Last edition проекта Wi-Fi метеостанции c автономным питанием от солнечной панели и ионисторов + возможностью автообновления ПО на Lua.

    ОтветитьУдалить

В комментариях уважайте собеседника, внимательно читайте посты и не додумывайте. Просьбы и предложения из разряда: «можно ваш Skype/Viber/телефон», «напишите мне в vk/FB», а также другие им подобные — игнорируются. Выход новых версий ПО, внешняя ссылка, переставшая работать с течением времени и т.п. не является основанием для претензий. Желающие спокойно подискутировать и высказаться — Welcome. Желающие спонсировать блог — Donate. Нарушение этих простых правил ведет к бану и удалению комментариев без предупреждения.