Метеостанции для гроубокса
Метеостанции для растений – это многофункциональный прибор, включающий термометр, гигрометр, датчик влажности почвы. Благодаря этим показателя садовод или флорист может уточнить насколько подходящие условия для взращивания, стоит ли проводить корректировку либо поддерживание на том же уровне. Наша компания предлагает данные приборы в ассортименте.
Как выбирать?
Домашняя метеостанции для гроубокса имеет некоторые схожести в принципе работы с аппаратурой для мониторинга погодных факторов. Но специфика такого оборудования в:
- Локальном отслеживания факторов воздействия – температуры, давления и влажности;
- Сфере применения – для горшков с растениями, в теплицах, на грядках;
- Сроках проведения контроля – мониторинг осуществляется только по необходимости, а не в автоматическом режиме.
Самые популярные модели агротехнических станций – цифровые. Принцип работы таков – датчики втыкаются в почву, анализатор запускается и на дисплее появляется результат, характеризующий важные показатели качества грунта. Портативные образцы – лучший вариант для дома. Достаточно будет изделия на 5 датчиков. При необходимости их всегда можно докупить.
Выбирать метеостанцию для растений следует с учетом производителя. В числе авторитетных компаний, чей товар сертифицирован — Garden, Ventilution и прочие.
Мы стараемся для вас
Купить метеостанцию для гроубокса получится в интернет-магазине. Мы предоставляем гарантии:
По Москве и в другие города страны доставка осуществляется почтой и транспортными компаниями. Сотрудничаем только с проверенными перевозчиками. В Казане действует пункт самовывоза.
Источник статьи: http://agrodom.com/kontrol-klimata-dlya-grouboksov/kontrol-rastitelnoy-sredy/meteostantsii/
Погодный модуль для автоматической теплицы
- Цена: $15,29 + $11.69 (покупалось за $14,44+$9.94)
- Перейти в магазин
В своём предыдущем обзоре я рассказывал об автоматизации дачной теплицы. Обзор закончился на том, что наша теплица научилась поливать две независимые секции (огурцы и томаты) по расписанию, открывать и закрывать форточки по ситуациям внутри теплицы (полив, время, температура, закат/рассвет), использовать тёплую воду (для полива) и холодную (для дождевания во время жары) и, при этом, уметь безболезненно оправляться от сбоев по питанию/водоснабжению. Главным же недостатком являлось то, что теплица ничего не знала о погоде снаружи. Уже в прошлый сезон я наблюдал ситуации, когда льёт ливень, а фрамуги открыты. И хорошо ещё, что в прошлом году не было значительных порывов ветра, а то в интернете полно рассказов, как форточки теплиц выкорчёвывало вместе с петлями и механическими термоприводами.
Закроем эту проблему, построив независимый погодный модуль.
По сути, чёткой привязки погодного модуля именно для работы с теплицей и нет. Модуль — отдельное законченное устройство. Он просто получает информацию о силе ветра, температуре и осадках, программно анализирует порывы ветра и выносит суждения о хорошей или плохой погоде. Точнее, он выносит суждение о том, подходящая ли в данный момент погода для открытых или закрытых форточек в теплице. И по радиоканалу в теплицу сообщает контроллеру, что пора бы закрыть фрамуги или, наоборот, что погода наладилась. Но ничто не мешает принимать и использовать эту информацию не для теплицы, а по своему усмотрению (например, с минимальными доделками скетча, в домашней метеостанции; или сливать эти данные на НародМон).
Самым затратным в реализации проекта оказался датчик ветра, поэтому главным объектом обзора является именно он.
После анализа предложений на просторах интернета, мною был куплен чашечный анемометрический датчик, вынесенный в заголовок. Я ничего не знал о производителе и конструкции, приобретённый лот — это запчасть к их погодным станциям. Оказалось, что его конструкция настолько проста, что я даже не стал делать традиционных фоток типа «распаковка», «с разных ракурсов» и т.д.
Одной единственной картинки будет более чем достаточно.
Датчик конструкционно — это две литые пластмассовые детали: флюгерная часть (три чашки, объединённые с валом) и статорная часть, крепящаяся к опоре. В полусфере ротора расположен магнитик. В статорной части — геркон с припаянным проводом, оканчивающимся разъёмом RG11. И это всё.
За один полный оборот флюгерной части, по задумке конструкторов, геркон должен замкнуться и разомкнуться один раз.
Я подключил датчик к ноге ардуины и попытался посчитать обороты, вращая датчик рукой. Всё вышло именно так, как и ожидалось. Геркон — крайне шумный (в электронном смысле) и помехогенерирующий элемент. Я не знаю, как конструкторы собирались подавлять дребезг (ведь тут применён геркон только на замыкание). У меня каждый раз получалось «плюс/минус погода на Марсе». Потратил день на различные схемные решения и программные методы (включая несколько вилок библиотеки Bounce), вменяемого результата толком не добился: даже на малых оборотах куча ложных срабатываний и дребезга, а уж в боевых условиях, когда период срабатываний будет минимальным, и говорить нечего. Идею применять тут геркон я признал полностью бесперспективной. Я видел только единственную альтернативу: заменить геркон на датчик Холла.
Чтобы не терять времени на нудную и ненужную работу по покупке датчика Холла и постройке минимальной обвязки для нормальной его работы, поступил просто. Взял пыльный заклинивший вентилятор от старого процессорного кулера, у которого было три контакта (питание+датчик оборотов), достал оттуда плату управления целиком и освободил от катушек статора. Плата — кольцевой формы, идеально подходящая во внутренний объём корпуса датчика. Вместо выброшенных обмоток нагрузил микропроцессор бывшего вентилятора парой десятикилоомных резисторов (а иначе он сходил с ума), а сигналы от пробегающего флюгерного магнита штатно снимал с третьего контакта платки. Отличное решение! Никаких ложных срабатываний. Один оборот флюгера — один передний и один задний фронт импульса. А уж подсчитать ардуиной эти передние или задние фронты за секундный интервал — плёвая задача.
С электронной частью датчика ветра разобрались. Теперь его нужно отградуировать. Т.е. превратить частоту (или периоды) импульсов от датчика в метры/сек или км/ч реального ветра. А это уже зависит от количества чаш флюгера, от их объёма и формы, от трения качения в подшипнике, от массы флюгера и других факторов… Словом, калибровка необходима.
Но заставить ветер дуть с различной фиксированной силой, чтобы отградуировать датчик — я не могу. Я не шаман, хотя и сисадмин. Поступил проще. Если мы не можем заставить воздух двигаться с заданной скоростью относительно неподвижного флюгера, то уж заставить двигаться флюгер с заданной скоростью относительно неподвижного воздуха нам вполне по силам!
Для этого нам нужно:
— автомобиль со спидометром;
— открытое окно автомобиля;
— рука, держащая флюгер в этом окне на достаточном расстоянии от корпуса автомобиля;
— стенд, собирающий все данные, необходимые для калибровки.
Стенд в данном случае — это опытная конструкция, собирающая в лог текущую скорость, текущее время и частоту/период, получаемую с датчика ветра. Конструкция собирается лишь на время, и её главная задача — работать правильно и быть достаточно мобильной, чтобы разместиться в движущемся автомобиле.
А дальше был выбран тихий вечер, когда не шевелились даже макушки деревьев, был выбран прямой участок дороги полукилометровой длины, по которой автомобили ездят нечасто и было сделано много-много рейсов «туда-обратно», чтобы свести к минимуму погрешности от теоретически возможного слабого ветерка.
Данные не разочаровали. Всё довольно неплохо укладывалось в линейную зависимость:
Угол наклона прямой — и есть те физические параметры флюгера.
Ардуина пересчитывает частоту импульсов от датчика ветра в привычные нам метры/сек и в удобные для понимания баллы Бофорта.
У того же продавца и в то же время был приобретён и датчик дождя коромысельного типа.
Основой датчика является подвижное коромысло, которое может перекидываться в одно из двух устойчивых положений. Собранные воронкой осадки стекают точно в плоскости, проходящей через ось вращения коромысла. Таким образом, всегда будет наполняться то плечо, которое сейчас выше. И, по мере течения струйки, коромысло будет перекидываться из одного устойчивого положения в другое.
На самом коромысле закреплён магнитик. Догадались? Да-да, в стойке датчика закреплён знакомый геркон. По срабатыванию геркона можно определять, идёт ли сейчас дождь и с какой интенсивностью это происходит.
Вот тут видна плата с припаянным герконом, размещённым в плоскости оси коромысла:
В датчике дождя заменять геркон на датчик Холла я не стал. Тут это действительно неважно. Таких частот, как при вращении флюгера, тут не будет, опрашивать можно спокойно и не торопясь, программно отсекая весь дребезг.
Модуль располагается не внутри теплицы, а на определённом удалении от неё, что очевидно: он находится там, где мне было удобно размещать датчики ветра и дождя и где мне было несложно подать ему питание. Собственно, питание 12v — это единственное, что погодному модулю нужно для работы.
А для связи с теплицей организован радиоканал. Радиоканал я сделал на UART-радиомодулях. Спасибо Юрию за обзор. С этими радиомодулями действительно удобно работать, мне они понравились. Соответственно, контроллер внутри теплицы был дооснащён ответным радиомодулем. Благо, у ArduinoMega аппаратных serial-интерфейсов полно: бери, да пользуйся.
Схематически погодный модуль совсем несложен.
Понижающий DC-DC преобразователь (у меня на KIS-3R33S, но подойдёт любой, токи совсем небольшие) питает ардуину, датчик ветра (поскольку у него внутри плата от старого вентилятора) и радиомодуль.
Ардуина собирает сигналы от платы датчика ветра и от геркона датчика осадков, обрабатывает их и посылает результаты символьным потоком в программный serial-порт, к которому подключён радиомодуль.
Как я уже сказал выше, этот поток можно использовать не только для теплицы. Можно просто логировать этот поток в файл и использовать логи погоды по своему усмотрению. Теплица, со своей стороны, ловит собственным радиомодулем этот поток, выделяет из этого потока только свои ключевые хештеги и реагирует только на них, игнорируя всё остальное, что к ней не относится.
Такой механизм реализован не просто так. Как я выяснил чуть ранее, данные радиомодули спокойно живут на одном канале и в бóльшем, чем 2 шт, количестве. Модули никак не мешают друг другу, а совершенно добросовестно принимают и отправляют всё то, что идёт в данном радиоканале. Если один радиомодуль что-то передаёт, все другие на этом канале спокойно примут этот поток. Если передают сразу два, то в принимаемом остальными модулями потоке никаких битовых коллизий не возникает.
Практически это означает, что на огороде или в доме в будущем могут быть организованы ещё какие-то точки, «подписанные» на радиоканал о погоде или о теплице, и алгоритм должен быть таким, чтобы засорение эфира не приводило к нежелательным последствиям. Да, в данной реализации радиообмен организован на достаточно низком уровне OSI, мне в моей конструкции этого хватает. Если структура разрастётся и станет более сложной, свяжу точки в беспроводную сетку, и тогда уже можно будет реализовать какой-нибудь MQTT поверх TCP/IP. Пока же мне обмена символьным потоком хватает «за глаза», всё просто, надёжно и устойчиво.
Конструктивно погодный модуль прост и лаконичен. Небольшая коробочка, к которой подводится питание и в разъёмы которой подключаются погодные датчики.
Ещё я оснастил эту коробочку маленькой незаметной тактовой кнопкой и парой светодиодов. Мне это было нужно на этапе тестирования всей системы. Помимо основного («боевого») режима, тактовой кнопочкой можно включить принудительную трансляцию в эфир сообщений о, якобы, «плохой» погоде (не взирая на реальные показания датчиков ветра и дождя) или принудительную трансляцию о «хорошей» погоде (аналогично). Тестовые режимы в EEPROM не сохраняются и после включения или перезагрузки погодный модуль будет функционировать в основном, правильном режиме.
Для тех, кто решит повторить описанную тут конструкцию, я приготовил архив с исходником и всеми необходимыми библиотеками.
На случай, если архив протухнет, повторю код ещё и тут:
#include
#include
#include
#include
#include
#include
#define ReposeTime 250 // Период времени, который будет считаться спокойствием
#define ReposeTheres 9 // Критическая сила ветра 9 единиц = 6 bft
#define MaxCountLife 60 // Период учёта максимальной силы ветра, сек
#define AlarmLockLife 4 // Критическое время между порывами ветра, сек
#define RainMaxTime 900 // Период времени, за который не выпадет осадков, сек
#define MaxWeatherInformer 25 //Сводки погоды каждые 25 секунд
#define DHT1PIN 8 // К этому пину подключается датчик температуры
#define DHT1TYPE DHT21 // DHT 21 (AM2301)
#define WindPin 2
#define RainPin 3
#define ButtonPin 10
#define GreenLed 11
#define RedLed 12
int Wcount, Wcount2, MaxWcount, CountLife=0;
int Rcount=0;
int BofortWind=0;
int Repose=0;
byte Alarm=0;
byte AlarmLock=0;
byte PrintLock=true;
byte WeatherPrintLock=true;
byte WeatherInformer=0;
byte Screen=false;
byte Screenmode;
byte Mode=0;
byte RainNow=false;
long RainLength=0;
long LastRainLength=0;
int LastRcount=0;
int LastMinuteRain, MinuteRain=0;
int RainPeriod=0;
byte firsttime;
DHT dht1(DHT1PIN, DHT1TYPE);
SoftwareSerial ss(9, 7); // К этим пинам подключается RadioUART.
Bounce Button = Bounce(ButtonPin,40 );
Bounce Rain = Bounce(RainPin,400 );
void TickEvery1s()
<
Wcount2=Wcount;
Wcount=0;
if (CountLife>0)
if (Repose>0)
if (AlarmLock>0)
void D2Int() <
// Приращение счетчика по прерыванию
Wcount++;
>
pinMode (WindPin, INPUT_PULLUP);
pinMode (RainPin, INPUT_PULLUP);
attachInterrupt(0, D2Int, RISING);
pinMode (ButtonPin, INPUT_PULLUP);
pinMode (RedLed, OUTPUT); digitalWrite(RedLed, HIGH);
pinMode (GreenLed, OUTPUT); digitalWrite(GreenLed, HIGH);
MsTimer2::set(1000, TickEvery1s); // 1000ms period
MsTimer2::start();
Rcount=0;
Wcount=0;
MinuteRain=0;
RainPeriod=0;
PrintLock=true;
firsttime=1;
>
if (Button.update())
if (Mode==1) digitalWrite(RedLed,LOW); else digitalWrite(RedLed,HIGH);
if (Mode==2) digitalWrite(GreenLed,LOW); else digitalWrite(GreenLed,HIGH);
if (Rain.update()) <
if (firsttime==0) <
Rcount++;
MinuteRain++;
RainPeriod=RainMaxTime; >
firsttime=0;
>
if ((WeatherInformer==0) && (WeatherPrintLock==false)) <
switch(Screenmode) <
case 0:
ss.print(“Rain value in minute: „); ss.print(LastMinuteRain);
ss.print(“. Total lenght: „); ss.print(LastRainLength);
ss.print(“ sec. Total value: „); ss.print(LastRcount);ss.println(“.»);break;>
case 1:
ss.print(«Current wind „);ss.print(Wcount2*1.3,1);ss.print(“ m/s, „);ss.print(BofortWind);ss.print(“ bft. „);
GetBofort(MaxWcount);
ss.print(“Maximum wind in minute „);ss.print(MaxWcount*1.3,1);ss.print(“ m/s, „);ss.print(BofortWind);ss.println(“ bft. „); break;>
>
if (Screenmode==0)
h1 = dht1.readHumidity();
t1 = dht1.readTemperature();
printDHT();
WeatherPrintLock=true;
>
delay(10);
>
В константах менять, думаю, ничего не надо. В двух местах при выводе значений в «метрах в секунду» встречается коэффициент 1.3. В процедуре пересчёта в Бофорты этот коэффициент уже учтён внутри таблицы. Это значение «1.3» — и есть тот коэффициент, который мы получили в результате градуировки датчика ветра на испытательном стенде. Под флюгер с другими физическими параметрами или другой конструкции, градуировку придётся проводить заново и получить другой коэффициент, увязывающий электрические «импульсы в секунду» с «метрами в секунду» реального ветра.
Описанный тут датчик ветра удачно пережил зиму. Я его поставил прошлой осенью; на зиму, правда, натянул сверху большой полиэтиленовый пакет и обвязал. Весной освободил. Пока всё работает отлично.
Это лето наглядно доказало своими ураганами и дождями очевидную целесообразность применения такого погодного модуля. Урон от выдранных с корнем фрамуг, петель или механических открывалок, а также от залива объёмов дождя, превращающего грядки внутри теплицы в маленькую Венецию, был бы несравнимо выше затрат на построение данного модуля.
PS: Да, чуть не забыл. Для тех, кто интересуется проектом теплицы из моего предыдущего обзора. Я там дописал несколько абзацев по итогам годовой эксплуатации теплицы.
PPS: Никто ничего для обзора не предоставлял и не спонсировал. Всё, что описано в конструкции, покупалось в разное время за свои собственные деньги или было найдено в собственных закромах.
Источник статьи: http://mysku.me/blog/ebay/51160.html