Теплица

Marchenko
Marchenko аватар
Offline
Зарегистрирован: 15.12.2014

Привет, снова открываю тему про свою теплицу.

На сей раз уже в полевых условиях , вот ссылка на старый проект http://arduino.ru/forum/proekty/registrator-dannykh-teplitsy-avtopoliv-teplitsy

в новом проекте добавленны аккураторы на китайских моторах,

систему открытия форточек сам ваял + полив работает на шаровом клапане (кран ПНД)

https://leroymerlin.ru/product/kran-pnd-16609291/

к которому я прикрутил серву на 6v.

все добро работает на солнечных батереях 165х210 4 шт. 12v 

и выдает в мае на прямых солнечных лучах 2А.

вечером под углом солца примерно 20 градусов 0,4 А.

+ аккумулятор на 4 а.ч.

 

к сожалению серву не получилось подключить напрямую к меге , видимо был конфликт библиотек

с часами . пришлось ещё ставит нану на серву.

 

 

 


/*

beta 3.0

скетч для регистрации данных теплицы + полив по таймеру
код написан любителем и возможно имеет ряд недостатков, но функционал работает
если у Вас есть вопросы, замечания и предложения по коду присылайте на print-spb@yandex.ru

в проекте используются датчики и модули:

датчики влажности воздуха и температуры внутри и снаружи
датчик влажности почвы
датчик света
датчик температуры герметичный

часы реального времени
модуль записи на SD

arduino mega 2560

дисплей nextion

реле


*/



//#include <DHT.h>

#include <OneWire.h>
#include <DallasTemperature.h>

#include <SPI.h>
#include <SD.h>
#include <Wire.h>
 #include <DS3231.h>

#include <SoftwareSerial.h>
#include <Nextion.h>

#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

#define SEALEVELPRESSURE_HPA (1013.25)

Adafruit_BME280 bme; // I2C

#include <HTU21D.h>

SoftwareSerial nextion(13, 12);// Nextion TX to pin 11 and RX to pin 10 of Arduino

Nextion myNextion(nextion, 9600);


#define moisture_sensor A13 // датчик влажности почвы
int very_moist_value = 0;   // Показания датчика влажности почвы  при очень мокрой почве (для калибровки процентного вывода)

//DHT dht1(4, DHT22); // датчик влажноси и температуры
//DHT dht2(5, DHT22); // датчик влажноси и температуры

#define ONE_WIRE_BUS 3 // герметичный датчик температуры


#define photocellPin A1  // датчик света
int photocellReading;



long secund;
long minut;
long hor;
String days;

const int chipSelect = 53; // пин sd карты

DS3231 clock;

RTCDateTime dt;

//const int ledPin = 2; // пин подачи питания на датчики

long secstar;
long minstar;
long horstar;

long secfin;
long minfin;
long horfin;

long Curent_Time;
long Curent_Alarm_On1;
long Curent_Alarm_Off1;

boolean Monday=false;
boolean Tuesday=false;
boolean Wednesday=false;
boolean Thursday=false;
boolean Friday=false;
boolean Saturday=false;
boolean Sunday=false;

boolean N=false; // является ли день недели с установленным сейчас

boolean W=false; // запись данных на sd карту в установленные минуты
boolean G=false; // подача питания на пин для датчиков в установленные минуты

boolean z=false; // (delay для nextion кроме момента записи)

OneWire oneWire(ONE_WIRE_BUS);        // Сообщаем библиотеке об устройстве, работающем по протоколу 1-Wire
DallasTemperature sensors(&oneWire);  // Связываем функции библиотеки DallasTemperature с нашим 1-Wire устройством (DS18B20)

HTU21D myHTU21D;

byte dd = 9; // дождь
byte val; // дождь

byte vlaj; // переменная установки влажности почвы
boolean fvlaj=false; // кнопка использования привязки к влажности почвы
boolean govlaj=false; // клапан полива

const int pi1 = 39; // кнопка на открытие 1
const int pi2 = 41; // кнопка на закрытие 1

const int pi3 = 43; // кнопка на открытие 2
const int pi4 = 45; // кнопка на закрытие 2

byte x1 = 0; // состояние кнопки
byte x2 = 0; // состояние кнопки
byte x3 = 0; // состояние кнопки
byte x4 = 0; // состояние кнопки

byte x; // состояние окна проветривания
byte y;

byte t1 = 25; // температура закрытия
byte t2 = 30; // температура открытия
byte t3 = 25; // температура закрытия
byte t4 = 30; // температура открытия



byte t; // температура online
byte h; // влажность online
byte t0; // второй датчик температуры online
byte h0; // второй датчик влажности online

byte intt1 = 5; // интервал температур на закрытие и открытие
byte intt2 = 5; // интервал температур на закрытие и открытие

void setup()
{

bme.begin();

myHTU21D.begin();

sensors.begin();

//dht1.begin();
//dht2.begin();

vlaj=50; // переменная установки влажности почвы




//servo.attach(10);

//pinMode(ledPin, OUTPUT);
pinMode(2, OUTPUT); // пин питания датчиков
pinMode(7, OUTPUT); // пин реле
pinMode(dd, INPUT); // датчик дождя
pinMode(10, OUTPUT); // сигнал на контроллер для сервы (полив)

pinMode(pi1, INPUT); // кнопка форточки 
pinMode(pi2, INPUT); // кнопка форточки

pinMode(pi3, INPUT); // кнопка форточки 
pinMode(pi4, INPUT); // кнопка форточки

pinMode(38, OUTPUT); // пины на двигатель форточки
pinMode(40, OUTPUT); // пины на двигатель форточки

//  Serial.begin(9600);

  myNextion.init();

  clock.begin();

  {
    if (!SD.begin(chipSelect))
    {
      myNextion.setComponentText("t9", "error");
    }
    myNextion.setComponentText("t9", "ready");
  }

    // Set from UNIX timestamp
    // clock.setDateTime(1397408400);

    // Manual (YYYY, MM, DD, HH, II, SS
    // Set sketch compiling time
    //clock.setDateTime(__DATE__, __TIME__);
   //
//   clock.setDateTime(2017, 04, 14, 23, 59, 20);

}
void loop()
{
    
dt = clock.getDateTime();
secund = (dt.second); 
minut = (dt.minute);
hor = (dt.hour);
days = (clock.dateFormat("N", dt));

t = myHTU21D.readTemperature()+1;
h = myHTU21D.readHumidity()+7;
t0 = bme.readTemperature();
h0 = bme.readHumidity();

x1= digitalRead (pi1); // состояние кнопки
x2= digitalRead (pi2); // состояние кнопки
x3= digitalRead (pi3); // состояние кнопки
x4= digitalRead (pi4); // состояние кнопки



{
if (x1 == HIGH){ // кнопка на максимальное закрытие
  x=1;
}
if (x2 == HIGH) { // кнопка на максимальное открытие
  x=2;
}
if ((x1 == LOW) && (x2 == LOW)){ // обе кнопки не нажаты
  x=3;
}

if (x3 == HIGH){ // кнопка на максимальное закрытие
  y=1;
}
if (x4 == HIGH) { // кнопка на максимальное открытие
  y=2;
}
if ((x3 == LOW) && (x4 == LOW)){ // обе кнопки не нажаты
  y=3;
}





if ((t0>=t2)&&( x!=1)){ // если температура ровна или больше температуры открытия  и не нажата кнопка на максимальное открытие
  digitalWrite (38, LOW);
  digitalWrite (40, HIGH);
}
else if ((t0<=t1)&&(x!=2)){ // если температура ровна или меньше температуры закрытия и не нажата кнопка на максимальное закрытие
  digitalWrite (38, HIGH);
  digitalWrite (40, LOW);
}
else {
  digitalWrite (38, LOW);
  digitalWrite (40, LOW);
}



if ((t0>=t4)&&( y!=1)){ // если температура ровна или больше температуры открытия  и не нажата кнопка на максимальное открытие
  digitalWrite (42, LOW);
  digitalWrite (44, HIGH);
}
else if ((t0<=t3)&&(y!=2)){ // если температура ровна или меньше температуры закрытия и не нажата кнопка на максимальное закрытие
  digitalWrite (42, HIGH);
  digitalWrite (44, LOW);
}
else {
  digitalWrite (42, LOW);
  digitalWrite (44, LOW);
}


}


Curent_Time = ((hor * 3600) + (minut * 60)) + secund; //текущее время
Curent_Alarm_On1 = (horstar*3600)+ (minstar*60) + secstar; // начало работы реле
Curent_Alarm_Off1 = (horfin*3600)+ (minfin*60) + secfin; // завершение работы реле

  {
  String message = myNextion.listen(); 
  if (message != "") { 
//    Serial.println(message);
  } 
//**************************функции кнопок таймера**********************************************
  
   if ((message == "65 2 e 1 ffff ffff ffff") || (message == "65 2 e 0 ffff ffff ffff")) {
    secstar++;
  }
   if ((message == "65 2 f 1 ffff ffff ffff") || (message == "65 2 f 0 ffff ffff ffff")) {
    secstar--;
  }
   if ((message == "65 2 c 1 ffff ffff ffff") || (message == "65 2 c 0 ffff ffff ffff")) {
    minstar++;
  }
  if ((message == "65 2 d 1 ffff ffff ffff") || (message == "65 2 d 0 ffff ffff ffff")) {
    minstar--;
  }
  if ((message == "65 2 a 1 ffff ffff ffff") || (message == "65 2 a 0 ffff ffff ffff")) {
    horstar++;
  }
  if ((message == "65 2 b 1 ffff ffff ffff") || (message == "65 2 b 0 ffff ffff ffff")) {
    horstar--;
  }
  
  
  if ((message == "65 2 14 1 ffff ffff ffff") || (message == "65 2 14 0 ffff ffff ffff")) {
    secfin++;
  }
  if ((message == "65 2 15 1 ffff ffff ffff") || (message == "65 2 15 0 ffff ffff ffff")) {
    secfin--;
  }
  if ((message == "65 2 12 1 ffff ffff ffff") || (message == "65 2 12 0 ffff ffff ffff")) {
    minfin++;
  }
  if ((message == "65 2 13 1 ffff ffff ffff") || (message == "65 2 13 0 ffff ffff ffff")) {
    minfin--;
  }
  if ((message == "65 2 10 1 ffff ffff ffff") || (message == "65 2 10 0 ffff ffff ffff")) {
    horfin++;
  }
  if ((message == "65 2 11 1 ffff ffff ffff") || (message == "65 2 11 0 ffff ffff ffff")) {
    horfin--;
  }
  
//****************************режим работы по дням недели********************************************  

if ((message == "65 3 4 1 ffff ffff ffff") || (message == "65 3 4 0 ffff ffff ffff")) {
    Monday=!Monday;
  }
  if (Monday==true) {
   myNextion.sendCommand("b32.bco=63488"); 
  }
  else if (Monday==false){
  myNextion.sendCommand("b32.bco=48631"); 
  }
  
if ((message == "65 3 5 1 ffff ffff ffff") || (message == "65 3 5 0 ffff ffff ffff")) {
    Tuesday=!Tuesday;
  }
  if (Tuesday==true) {
   myNextion.sendCommand("b33.bco=63488"); 
  }
  else if (Tuesday==false){
  myNextion.sendCommand("b33.bco=48631"); 
  }
  
if ((message == "65 3 6 1 ffff ffff ffff") || (message == "65 3 6 0 ffff ffff ffff")) {
    Wednesday=!Wednesday;
  }
  if (Wednesday==true) {
   myNextion.sendCommand("b34.bco=63488"); 
  }
  else if (Wednesday==false){
  myNextion.sendCommand("b34.bco=48631"); 
  }
if ((message == "65 3 7 1 ffff ffff ffff") || (message == "65 3 7 0 ffff ffff ffff")) {
    Thursday=!Thursday;
  }
  if (Thursday==true) {
   myNextion.sendCommand("b35.bco=63488"); 
  }
  else if (Thursday==false){
  myNextion.sendCommand("b35.bco=48631"); 
  }
if ((message == "65 3 8 1 ffff ffff ffff") || (message == "65 3 8 0 ffff ffff ffff")) {
    Friday=!Friday;
  }
  if (Friday==true) {
   myNextion.sendCommand("b36.bco=63488"); 
  }
  else if (Friday==false){
  myNextion.sendCommand("b36.bco=48631"); 
  }
if ((message == "65 3 9 1 ffff ffff ffff") || (message == "65 3 9 0 ffff ffff ffff")) {
    Saturday=!Saturday;
  }
  if (Saturday==true) {
   myNextion.sendCommand("b37.bco=63488"); 
  }
  else if (Saturday==false){
  myNextion.sendCommand("b37.bco=48631"); 
  }
if ((message == "65 3 a 1 ffff ffff ffff") || (message == "65 3 a 0 ffff ffff ffff")) {
    Sunday=!Sunday;
  }
  if (Sunday==true) {
   myNextion.sendCommand("b38.bco=63488"); 
  }
  else if (Sunday==false){
  myNextion.sendCommand("b38.bco=48631"); 
  }
  

//****************************влажность почвы полив******************************************** 

if ((message == "65 4 8 1 ffff ffff ffff") || (message == "65 4 8 0 ffff ffff ffff")) {
  fvlaj=!fvlaj;
}
 if (fvlaj==true) {
   myNextion.sendCommand("b42.bco=1024"); 
  }
  else if (fvlaj==false){
  myNextion.sendCommand("b42.bco=48631"); 
  }
if ((message == "65 4 5 1 ffff ffff ffff") || (message == "65 4 5 0 ffff ffff ffff")) {
  vlaj++; }
  
if ((message == "65 4 6 1 ffff ffff ffff") || (message == "65 4 6 0 ffff ffff ffff")) {
  vlaj--; }

//****************************ffffffff********************************************

if ((message == "65 5 1 1 ffff ffff ffff") || (message == "65 5 1 0 ffff ffff ffff")) {
  t1++;
  t2++;
}
if ((message == "65 5 7 1 ffff ffff ffff") || (message == "65 5 7 0 ffff ffff ffff")) {
  t1--;
  t2--;
}
if ((message == "65 5 8 1 ffff ffff ffff") || (message == "65 5 8 0 ffff ffff ffff")) {
  intt1++;
}
if ((message == "65 5 9 1 ffff ffff ffff") || (message == "65 5 9 0 ffff ffff ffff")) {
  intt1--;
}

t2=t1+intt1;

/*
if (intt1<1){
  intt1=10;
} 
if (intt1>10){
  intt1=1;
}
*/

//**************6666666666666666666666666666666666666666666666666666

if ((message == "65 6 4 1 ffff ffff ffff") || (message == "65 6 4 0 ffff ffff ffff")) {
  t3++;
  t4++;
}
if ((message == "65 6 5 1 ffff ffff ffff") || (message == "65 6 5 0 ffff ffff ffff")) {
  t3--;
  t4--;
}
if ((message == "65 6 9 1 ffff ffff ffff") || (message == "65 6 9 0 ffff ffff ffff")) {
  intt2++;
}
if ((message == "65 6 a 1 ffff ffff ffff") || (message == "65 6 a 0 ffff ffff ffff")) {
  intt2--;
}
t4=t3+intt2;

/*
if (intt2<1){
  intt2=10;
} 
if (intt2>10){
  intt2=1;
}
*/
  }
  

if (Curent_Time >= Curent_Alarm_On1 && Curent_Time <= Curent_Alarm_Off1 && N==true && govlaj==true) { // включение реле по таймеру(видимо китайская версия начинает работать при LOW  )

    digitalWrite (10, HIGH);
    
}
else {
    digitalWrite (10, LOW);
    
} 


//******************************************переменная на влючения реле по дням недели********************************************************************

if ((days == "1")&&(Monday==true)){
 N=true;
}
else if ((days == "2")&&(Tuesday==true)){
  N=true;
}
else if ((days == "3")&&(Wednesday==true)){
  N=true;
}
else if ((days == "4")&&(Thursday==true)){
  N=true;
}
else if ((days == "5")&&(Friday==true)){
  N=true;
}
else if ((days == "6")&&(Saturday==true)){
  N=true;
}
else if ((days == "7")&&(Sunday==true)){
  N=true;
}
else{
  N=false;
}

//***********************************тут всё понятно********************************************************

if ( horstar > 23) {
  horstar = 0;
}
if (horfin > 23) {
  horfin = 0;
}
if (minstar > 59) {
  minstar = 0;
}
if (minfin > 59) {
  minfin = 0;
}
if (secstar > 59) {
  secstar = 0;
}
if (secfin > 59) {
  secfin = 0;
}


if ( horstar < 0) {
  horstar = 23;
}
if (horfin < 0) {
  horfin = 23;
}
if (minstar < 0) {
  minstar = 59;
}
if (minfin < 0) {
  minfin = 59;
}
if (secstar < 0) {
  secstar = 59;
}
if (secfin < 00) {
  secfin = 59;
}

if ((minut==59) || (minut==04) || (minut==9) || (minut==14) || (minut==19) || (minut==24) || (minut==29) || (minut==34) || (minut==39) || (minut==44) || (minut==49) || (minut==54))
{
 G=true ;
}
else
{
 G=false;
}


if ((minut==00) || (minut==05) || (minut==10) || (minut==15) || (minut==20) || (minut==25) || (minut==30) || (minut==35) || (minut==40) || (minut==45) || (minut==50) || (minut==55))
{
 W=true ;
}
else
{
 W=false;
}

//*******************************переменные датчиков*******************************************************

// static int hh1;
// static int tt1;
// static int hh2;
// static int tt2;

 static int fff; // почва
 static int hhh; // яркость
 static int ggg; // температура воды

 static int rein; // дождь

 // int moisture_value = analogRead(moisture_sensor);
// int t1 = dht1.readTemperature();
//**************************************функция чтения переменных с датчиков******************************************************
 
   if((secund == 57 && G==true) || (secund == 58 && G==true) || (secund == 58 && G==true)) {
 
boolean z=true;

//*********************************************************************

      
 int moisture_value = analogRead(moisture_sensor);
 if (moisture_value>0){                                   
 fff = map(moisture_value, very_moist_value, 1023, 100, 0); // Переводим показания датчика влажности почвы в проценты      
       }
//***********************************************************************


 photocellReading = analogRead (photocellPin);
      hhh = photocellReading / 10;
 
//      hh1 = dht1.readHumidity();
//      tt1 = dht1.readTemperature();
//      hh2 = dht2.readHumidity();
//      tt2 = dht2.readTemperature();

sensors.requestTemperatures();
      ggg = (sensors.getTempCByIndex(0));


//***********************это дождь************************************************

val=digitalRead(dd);

if  (val == HIGH)   
{
rein = 0;
}
if  (val == LOW)
{
rein = 100;
}
//***********************************************************************
      
  }
else
 {
 boolean z=false;
 }  

//******************************включение пина подачи питания на датчики  (опытным путём установленно ,что для стабилизации питания для чтения ,необходимо 3 секунды )******************************************************

  if((secund == 55 && G==true) || (secund == 55 && G==true) || (secund == 56 && G==true) || (secund == 57 && G==true) || (secund == 58 && G==true)) {
 digitalWrite (2, LOW); // у нас тут (датчик влажности почвы). (датчик дождя). (датчик света). 
  }
 else
 {
 digitalWrite (2, HIGH);
 }

//*******************************************************************************************
 {
if (fvlaj==false) {
  govlaj=true; 
}
else if ((fvlaj==true)&&(vlaj<fff)) {
  govlaj=true;
}
else
govlaj=false;
}

//*******************************запись данных на SD карту******************************************************

if (secund == 00 && W==true) {
  boolean z=true;
//String dataString = String(clock.dateFormat("H:i:s", dt)) + "," + String(hhh) + "," + String(fff) + "," + String(hh2)+ "," + String(tt2)+ "," + String(hh1)+ "," + String(tt1)+ "," + String(ggg)+ "," + String(rein);

String dataString = String(clock.dateFormat("H:i:s", dt)) + "," + String(hhh) + "," + String(fff) + "," 
+ String(h0)+"," + String(t0)+ "," + String(h)+ "," + String(t)+ "," + String(ggg)+ "," + String(rein);

String dat = String(clock.dateFormat("d_m_y", dt)) + ".csv"; // каждый день новый фаил
File dataFile = SD.open(dat, FILE_WRITE);

  if (dataFile)  {
//    delay (740);  // задержка на запись ( для одной записи в пределах секунды)
    dataFile.println(dataString);
    dataFile.close();
    myNextion.setComponentText("t10", "Rec"); 
  }
  }
  else
  {
    myNextion.setComponentText("t10", "NO Rec");
    boolean z=false;
  }





myNextion.setComponentText("t13",String(secstar));
myNextion.setComponentText("t12",String(minstar));
myNextion.setComponentText("t11",String(horstar));

myNextion.setComponentText("t16",String(secfin));
myNextion.setComponentText("t15",String(minfin));
myNextion.setComponentText("t14",String(horfin));

myNextion.setComponentText("t7", String(fff));
myNextion.setComponentText("t6", String(hhh));

//myNextion.setComponentText("t3", String(tt2));
myNextion.setComponentText("t4", String(myHTU21D.readHumidity()+7));
//myNextion.setComponentText("t4", String(hh2));
myNextion.setComponentText("t3", String(myHTU21D.readTemperature()+1));

//myNextion.setComponentText("t1", String(tt1));
myNextion.setComponentText("t1", String(bme.readTemperature()));
//myNextion.setComponentText("t2", String(hh1));
myNextion.setComponentText("t2", String (bme.readHumidity()));


myNextion.setComponentText("t8", String((bme.readPressure() / 100.0F)*0.75));

myNextion.setComponentText("t0", String(clock.dateFormat("H:i:s d_m_y", dt)));
myNextion.setComponentText("t20", String(clock.dateFormat("l", dt)));
myNextion.setComponentText("t5", String(ggg));

myNextion.setComponentText("t22", String(t2));
myNextion.setComponentText("t23", String(t1));
myNextion.setComponentText("t25", String(t4));
myNextion.setComponentText("t26", String(t3));
myNextion.setComponentText("t24", String(t0));


myNextion.setComponentText("t21", String(vlaj));

myNextion.setComponentText("t60", String(rein));



if (z==false) 
{
   delay (200); // нужна для работы сенсорных кнопо (видимо особенность работы библиотеки )
}
} 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Круто!

YRA
Offline
Зарегистрирован: 10.01.2015

Отлично!!!!! А справа от Nextion это DC-DC

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

YRA пишет:

А справа от Nextion

Слева

Marchenko
Marchenko аватар
Offline
Зарегистрирован: 15.12.2014

Да, понижает с 12 до 9 + от него питается серва , ну и заряд на акамуляторе смотреть

vvadim
Offline
Зарегистрирован: 23.05.2012

КЛАСС!!!

anshor
anshor аватар
Offline
Зарегистрирован: 21.06.2016

Очень здорово!!! А можно поподробней про комплектующие???

YRA
Offline
Зарегистрирован: 10.01.2015

Вот бы бибилиотеки к этому проекту приложить и какая версия IDE

 

Marchenko
Marchenko аватар
Offline
Зарегистрирован: 15.12.2014
Marchenko
Marchenko аватар
Offline
Зарегистрирован: 15.12.2014

библиотеки , если что-то пропустил сильно не пинайте https://yadi.sk/d/L0o8okLU3KaNXT

монитор 320х240 горизонталь   исходник   https://yadi.sk/d/KaY4ALKl3KaNbm ,  для загрузки с sd на nextion https://yadi.sk/d/W32dEMmG3KaPNf

 

 

Marchenko
Marchenko аватар
Offline
Зарегистрирован: 15.12.2014

в рхиве есть библиотека для dht 11 или 22  , их можно использовать вместо si7021 и 

BME280 

только скетч чуть отредактируйте , там впринципе всё прописанно уберите только (//).

 

YRA
Offline
Зарегистрирован: 10.01.2015

Спасибо, за быстрый ответ, сею  поздно уже разбираться, только с дачи приехал( для Вашего региона это вообще ни очем 6 км), а завтра на работе, если время позволит, попробую, у меня из Вашей первой разработки все компилировась в 1.6.7. Да пришли нехтионы, пришла мега  мини ( очень интересная  платка)

Запустил 1.8.1 все скомпилировалось ,но в железе пока проверить не могу, на работе ремонт, все в коробках а где, сам черт ногу сломит

Вопрос:

082 //const int ledPin = 2; // пин подачи питания на датчики
 

Это закометирован пин 2 для подачи питания, как я понял, на часть датчиков,  скорее всего DHT?

171 //pinMode(ledPin, OUTPUT);

Это я не понимаю что скорее всего для актуатора сигнализация.

 

"Это строки для установки дата и времени. раскоментирушь, устанавливаешь, прошиваешь далее можно закоментировать и прошить -время сохраниться. Так верно???

200     // Set from UNIX timestamp
201     // clock.setDateTime(1397408400);
202  
203     // Manual (YYYY, MM, DD, HH, II, SS
204     // Set sketch compiling time
205     //clock.setDateTime(__DATE__, __TIME__);
206    //
207 //   clock.setDateTime(2017, 04, 14, 23, 59, 20);
208  

 

Marchenko
Marchenko аватар
Offline
Зарегистрирован: 15.12.2014

Вот как раз следующая строка 172 включает датчики , на 2 пине. 82 и 171 просто лишние строки
В 207 строке ставлю время

YRA
Offline
Зарегистрирован: 10.01.2015

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

P.S. Маниторчик то у меня 480х320

Ан нет нашел таки 320х240. Теперь прошьемся.

 

YRA
Offline
Зарегистрирован: 10.01.2015

052SoftwareSerial nextion(13, 12);// Nextion TX to pin 11 and RX to pin 10 of Arduino

не въеду . 

 То ли "лыжи не едут у меня, толи я ...". но я то знаю, что Я .... от природы.

Завтра н работе попрбую собрать на проводах, если ситуевина позволит. 

gyhyk90
Offline
Зарегистрирован: 23.03.2015

Здравствуйте,Есть теплица, хочиться повторить ваш Marchenko проект,купил всё что написано в 8-ом посте,ардуино только изучаю,на макетной плате ,соединил arduino mega 2560 //nextion //датчик дождя //sd kart//Скетч залил в мега в nextion.Вопрос nextion RX -13pin//TX-12pin я правильно соединил,//дачик дождя A0-20pin.D0-21pin//sd kart cs-53..miso-50..mosi-53.sck-52.   Мега соединил через usb к комп,nextion показывает меню нажимаю полив и вижу что nextion не видить датчик ,не записывает дни недели ,в sd kart стоит карточка, Пробовал менял местами пины по разному но всё равно не работает

Marchenko
Marchenko аватар
Offline
Зарегистрирован: 15.12.2014

привет, надо как то всё по порядку .

датчик дождя у меня на 9 пин цифровой 

byte dd = 9; // дождь

174  pinMode(dd, INPUT); // датчик дождя

 

 

val=digitalRead(dd);
625  
626 if  (val == HIGH)  
627 {
628 rein = 0;
629 }
630 if  (val == LOW)
631 {
632 rein = 100;
633

}

 

 

тоесть либо дождь это 100

либо дождя нет это 0 

d kart cs-53..miso-50..mosi-53.sck-52. ?????

http://howtomechatronics.com/wp-content/uploads/2016/08/Arduino-SD-Card-...

 

питание на цифровой датчик дождя идёт 172

pinMode(2, OUTPUT); // пин питания датчиков

Marchenko
Marchenko аватар
Offline
Зарегистрирован: 15.12.2014
gyhyk90
Offline
Зарегистрирован: 23.03.2015

Привет,буду по порядку,   1,Nextion RX-13pin pwm.TX-12pin pwm.????? правильно я соединил НА pwm или на analog in запутлся ...//2,sd kart я содинял как показано в посте 17-ом,вставил пустую micro sd 16g .....//3.датчик дождя два пина на плату а четыре пина vcc. gnd. D0. A0.pinMode(2, OUTPUT); // пин питания датчиков ,D0.или A0 на 9-ый пин,pinMode(2 я так понимаю это на плате где написано pwm

Marchenko
Marchenko аватар
Offline
Зарегистрирован: 15.12.2014

На пвм ,экран работает картинка есть кнлпки работают ? у меня карта 8g fat 32 птшет каждые 5 минут ,тут надо с картридером разбираться, датчик дождя vcc - d2 , gnd - gnd , d0 - d9

Marchenko
Marchenko аватар
Offline
Зарегистрирован: 15.12.2014

есть возможность фото прислать ?

gyhyk90
Offline
Зарегистрирован: 23.03.2015

На следующей недели буду дальше разбираться ,дачный сезон ,загатовки 

gyhyk90
Offline
Зарегистрирован: 23.03.2015

DS3231: Real-Time Clock эти часы надо отдельно покупать я правильно понял

 https://ru.aliexpress.com/item/Free-shipping-5PCS-DS3231-Real-Time-Clock-Module-for-arduino-3-3V-5V-with-battery-For/1812869576.html?spm=a2g0s.13010208.99999999.262.BRTX4V

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ну, если у Вас нет, то надо покупать. Странный вопрос :)

bwn
Offline
Зарегистрирован: 25.08.2014

ЕвгенийП пишет:

Ну, если у Вас нет, то надо покупать. Странный вопрос :)

А если спереть где? Будут работать?
Как вариант, чтобы не ждать долго, можно у соседа счетчик многотарифный раскурочить, правда 1307 ...дарасы ставят.))))

Pyotr
Offline
Зарегистрирован: 12.03.2014

Marchenko пишет:

...датчик дождя у меня на 9 пин цифровой 

byte dd = 9; // дождь

174  pinMode(dd, INPUT); // датчик дождя
.....

Предполагаю, что датчик дождя типа такого

Как он реагирует на утреннюю росу?

Сколько времени обсыхает после дождя?

Подогрев ему не делали, чтоб быстрее обсыхал?

Не рассматривали другие датчики осадков?

Marchenko
Marchenko аватар
Offline
Зарегистрирован: 15.12.2014

Да такой датчик, он установлен на крыше, не смотрел как он реагирует на росу. но проработал он месяца 3 , весь окислелся. 

это при том, что питание на него подаётся на несколько секунд с интервалом 5 минут . я думаю что нужна принципиально другая схема.

 

gyhyk90
Offline
Зарегистрирован: 23.03.2015

Не могу найти биилиотеку   43 #include <Adafruit_Sensor.h>  при компиляции пишет ошибку

Marchenko
Marchenko аватар
Offline
Зарегистрирован: 15.12.2014

а разве тут её нет ? https://yadi.sk/d/L0o8okLU3KaNXT

Marchenko
Marchenko аватар
Offline
Зарегистрирован: 15.12.2014

Adafruit_BME280_Library-master

043 #include <Adafruit_Sensor.h>
044 #include <Adafruit_BME280.h>

 

https://github.com/adafruit/Adafruit_BME280_Library/blob/master/examples...

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

gyhyk90 пишет:

Не могу найти биилиотеку   43 #include <Adafruit_Sensor.h>  при компиляции пишет ошибку

У гугла пробовал спрашивать?

https://www.google.com/search?q=Adafruit_Sensor.h

Marchenko
Marchenko аватар
Offline
Зарегистрирован: 15.12.2014
Pyotr
Offline
Зарегистрирован: 12.03.2014

Marchenko пишет:

Да такой датчик, он установлен на крыше, не смотрел как он реагирует на росу. но проработал он месяца 3 , весь окислелся. 

это при том, что питание на него подаётся на несколько секунд с интервалом 5 минут . я думаю что нужна принципиально другая схема.

Я так и не нашёл подходящего датчика осадков по приемлемой цене - до 1 т.руб, а дороже - жаба душит).

Делал несколько вариантов. На 555 таймере, на МК и даже на элементе Пельтье-самый простой. Подавал импульс тока (верх нагрев, а низ охлаждение) и затем  мерил ЭДС с элемента. Хорошо определяется влажный верх или сухой. Недостаток - импульс тока порядка 2 А - тоже не подходит.

gyhyk90
Offline
Зарегистрирован: 23.03.2015

У гугла спрашивал 

gyhyk90
Offline
Зарегистрирован: 23.03.2015
ua0coo
Offline
Зарегистрирован: 13.04.2020

Всем привет! Хочу озвучить зачем я сдесь..

Есть желание собрать на ардуино простую теплицу , но чтоб дома через инет смотреть что там творится. О себе 60 лет, радиолюбитель UA0COO, на даче есть инет хороший канал (микротики с оптики транстелеком), сейчас работают Вэб сдр приемники. С паяльникам в ладах , но в свое время заразился асемблером и вот в свои годы трудновато шагнуть в писанину скетчев.. Прошу , кто не ровно дышит к желанию сделать доступную теплицу, которая будет популярная по повторениям, (написать для  ардуино) - отзовитесь... Со своей стороны подскажу что и как нужно для теплицы... Во всех просмотренных проектах, все хорошо, все работает , но нет простоты, гибкости, возможности упрощать или усложнять, обрастать исполнительным железом.......... Ну и согласитесь у пенсионера есть дома комп и у него просто будет чесаться зайти на вэб морду мозгов его теплицы, которая в 40-50 км от него и посмотреть как она кубатурит.

Ребята, жду советов, предложений, участия... Хорошо бы спеца, который бы мог визуализировать в винде работу теплицы (может даже с анимацией)

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

ua0coo пишет:

Всем привет! Хочу озвучить зачем я сдесь..

Ребята, жду советов, предложений, участия... Хорошо бы спеца, который бы мог визуализировать в винде работу теплицы (может даже с анимацией)

Готовый проект, с вебмордой, приложением под андроид, большим дисплеем с тачскрином, исходники открыты для некоммерческого использования: http://gardenboss.ru

Ессно, есть недоработки, т.к. проект хоббийный, и делается в свободное время.

Обсуждение: https://www.forumhouse.ru/threads/489004/page-104 

Гитхаб: https://github.com/Porokhnya/GreenHouseProject