Herramientas de usuario

Herramientas del sitio


personas:johnny:proyectos:indoor_diy_autosostenible

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
Próxima revisiónAmbos lados, revisión siguiente
personas:johnny:proyectos:indoor_diy_autosostenible [2019/12/01 07:39] kzpersonas:johnny:proyectos:indoor_diy_autosostenible [2020/07/13 09:12] kz
Línea 554: Línea 554:
   - actualizar el firmware por medio de ota   - actualizar el firmware por medio de ota
  
 +====== Actualización 13 de julio 2020 ======
  
-<code> +En todo este tiempo he estado aprendiendo mas que todo sobre las plantas, conociendolas y mirando como los diferentes factores que inciden en ella(Temperatura y humedad, calidad de la tierra, calidad del agua, lummens necesarios, etc...) 
-/* Library used +Entonces antes de seguir con el codigo y el prototipo de placaEstuve un tiempo pensando en la mejoras que se le arian al indoor.
- * https://github.com/PaulStoffregen/Time +
- * https://github.com/PaulStoffregen/TimeAlarms +
- * https://learn.adafruit.com/dht/using-a-dhtxx-sensor +
- *  +
- * resources from sensor +
- * https://www.switchdoc.com/2018/11/tutorial-capacitive-moisture-sensor-grove/ +
- *  +
-  config NTP +
-  this code take the time from server using NTP  +
-  https://lastminuteengineers.com/esp8266-ntp-server-date-time-tutorial/+
  
-  !!! IMPORTANT +He dispuesto un extrator de 125v para sacar el aire caliente y regular la temperatura del indoor en la parte superiorTambien arregle el espacio y le trabaje junto con mi tio para volverlo mejor.
-  You need to adjust the UTC offset for your timezone in milliseconds +
-  Refer the list of UTC time offsets Here are some examples for different timezones: +
-  https://upload.wikimedia.org/wikipedia/commons/8/88/World_Time_Zones_Map.png+
  
-  For UTC -5.00 : -5 * 60 * 60 : -18000 +ANTES
-  For UTC +1.00 : 1 * 60 * 60 : 3600 +
-  For UTC +0.00 : 0 * 60 * 60 : 0 +
-  used -> const long utcOffsetInSeconds = 3600; +
-*/+
  
-#include <Arduino.h> +{{:personas:johnny:proyectos:viejo-indoor.jpg?400|}}
-#include <NTPClient.h> +
-#include <DHT.h> +
-#include <Time.h> +
-#include <SPI.h> +
-#include <Wire.h> +
-#include <Adafruit_GFX.h> +
-#include <Adafruit_SSD1306.h> +
-#include <ESP8266HTTPClient.h> +
-#include <ESP8266WiFi.h> +
-#include <WiFiUdp.h> +
-#include <string.h>+
  
-// pin out oled ssd1306 +AHORA
-#define OLED_MOSI 14   //D5 +
-#define OLED_CLK 16    //D0 +
-#define OLED_DC 13     //D7 +
-#define OLED_CS 15     //D6 +
-#define OLED_RESET 12  //D8+
  
-#define lights D1 +{{:personas:johnny:proyectos:nuevo-indoor.jpg?400|}}
-char stateLights = 'F';+
  
-// config NTP variables +Tambien mi tio me ayudo a construir un reflector para adaptarle hasta 6 bombillos a este mismo. Este cambio ayudo mucho a las plantas pero tambien afecto bastante otros factores que detallaremos mas adelante.
-int time_hours = 0; +
-int time_minutes = 0; +
-int time_seconds = 0; +
-const int *ntp_hours, *ntp_minutes, *ntp_seconds; +
-const long utcOffsetInSeconds = -18000; // colombia UTC -5 +
-char daysOfTheWeek[7][12] = { +
-  "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" +
-};+
  
-const char *ssid = "TP-LINK_Extender_C464C2"; +{{:personas:johnny:proyectos:reflector1.jpg?400|}}
-const char *pass = "alex1988alex";+
  
-// Define NTP client to get time +{{:personas:johnny:proyectos:reflector2.jpg?400|}}
-WiFiUDP ntpUDP; +
-NTPClient timeClient(ntpUDP, "pool.ntp.org", utcOffsetInSeconds);+
  
-// config display +En este cultivo tambien estuve experimentando y aprendiendo sobre las podas. En especial la fim y la apical.
-Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS); +
-#if (SSD1306_LCDHEIGHT != 64) +
-//#error("Height incorrect, please fix Adafruit_SH1106.h!"); +
-#endif+
  
-// define template function +{{:personas:johnny:proyectos:podas.png?400|}}
-void firstSync(); +
-void syncNtptoTime(); +
-void stateVegetative(); +
-void stateFlowering();+
  
-void setup() { +Entonces esta fue mi planta experimental... a la cual le hice de todo... apicales y fim... dando espacio minimo de un mes entre poda y poda para que la planta se recuperara y finalmente siempre podando en cuarto menguante.
-  // display +
-  Serial.begin(115200); +
-  setTime(time_hours,time_minutes,time_seconds,30,11,19); +
-  WiFi.begin(ssid, pass); +
-  display.begin(SSD1306_SWITCHCAPVCC); +
-  display.clearDisplay(); +
-  Serial.println(); +
-  Serial.println(); +
-  delay(1000); +
-  display.setTextSize(1); +
-  display.setTextColor(WHITE); +
-  display.setCursor(0,10); +
-  display.println("Init ... "); +
-  display.display(); +
-  delay(1000); +
-  while (WiFi.status() != WL_CONNECTED) { +
-    delay(500); +
-    display.clearDisplay(); +
-    display.setTextSize(1); +
-    display.setCursor(0,10); +
-    display.setTextColor(BLACK, WHITE); +
-    display.println("connecting wifi "); +
-    display.print("."); +
-    display.display(); +
-  } +
-  display.clearDisplay(); +
-  display.setTextSize(1); +
-  display.setCursor(0,10); +
-  display.setTextColor(WHITE); +
-  display.println("Wifi connected"); +
-  display.println(WiFi.localIP()); +
-  display.display(); +
-  timeClient.begin(); +
-  delay(5000); +
-  display.clearDisplay(); +
-  display.setTextSize(1); +
-  display.setTextColor(WHITE); +
-  display.setCursor(0,10); +
-  display.println("first sync NTP to Time hardware..."); +
-  display.display(); +
-  firstSync(); +
-  delay(5000); +
-  //Serial.print(WiFi.localIP());   +
-  //pinMode(ledTrigger, OUTPUT); +
-  pinMode(lights, OUTPUT); +
-}+
  
-void loop() { +{{:personas:johnny:proyectos:poda-apical1.jpg?400|}} 
-  display.clearDisplay(); +{{:personas:johnny:proyectos:poda-apical2.jpg?400|}}
-  display.setTextSize(0.5); +
-  display.setTextColor(WHITE); +
-  display.setCursor(0,0); +
-  display.print(daysOfTheWeek[timeClient.getDay()]); +
-  if (stateLights == 'V'{ +
-    display.print(" lights Onn"); +
-  else { +
-    display.print(" | lights Off"); +
-  +
-  display.println(); +
-  display.setCursor(0,8); +
-  // time library +
-  display.print("rtc d"); +
-  display.print(hour()); +
-  display.print(":"); +
-  display.print(minute()); +
-  display.print(":"); +
-  display.print(second());+
  
-  // time ntp +Dadas las experimentaciones, la planta desarrollo un brazo mas grande que el otroTambien se observa como queda la cicatriz del cortepero la planta a medida que pasa el tiempo se va curando.
-  display.setCursor(0,16); +
-  display.print("last sync: "); +
-  display.print(*ntp_hours); +
-  display.print(":"); +
-  display.print(*ntp_minutes); +
-  display.print(":"); +
-  display.print(*ntp_seconds);+
  
-  // state lights +Este experimento fue para aprender a realizar un cultivo tipo scrog... donde son necesarias este tipo de podas para hacer que las plantas sean mas eficientes a la hora del cultivo... pero el unico contra es que se alarga el tiempo de vegetacion para que las plantas se recuperen.
-  display.setCursor(0,24);+
  
-  syncNtptoTime(); +** Pasamos la placa base a baquela y actualizaciones y fixes en el código**
-  // stateFlowering(); +
-  stateVegetative();+
  
-  // update display +Primero hablaremos de la placaEntonces antes teniamos este hardware, 4 reles (de los cuales solo estoy usando 1y una pantallita para ver las lecturas del dht11.
-  display.display()+
-  delay(1000); +
-+
  
-void firstSync() { +Antes
-  // pointer update with what is in ntp +
-  timeClient.update(); +
-  ntp_hours = &time_hours; +
-  ntp_minutes = &time_minutes; +
-  ntp_seconds = &time_seconds;  +
-  // first update ntp to time variables +
-  time_hours = timeClient.getHours(); +
-  time_minutes = timeClient.getMinutes(); +
-  time_seconds = timeClient.getSeconds(); +
-  // frist sync Ntp time to local time, get values from value pointers +
-  setTime(*ntp_hours,*ntp_minutes,*ntp_seconds,30,11,19); +
-  timeClient.end(); +
-}+
  
-void syncNtptoTime() { +{{:personas:johnny:proyectos:placa-antes.jpg?400|}}
-  // update local time from NTP server over get minutes and seconds +
-  // from local time hardware +
-  if ( (minute() == 10 && second() == 58) ||  +
-       (minute() == 20 && second() == 58) || +
-       (minute() == 30 && second() == 58) || +
-       (minute() == 40 && second() == 58) || +
-       (minute() == 50 && second() == 58) +
-     { +
-    timeClient.update(); +
-    time_hours = timeClient.getHours(); +
-    time_minutes = timeClient.getMinutes(); +
-    time_seconds = timeClient.getSeconds(); +
-    timeClient.end(); +
-    // TODO: how to update days, month and year ? +
-    setTime(*ntp_hours,*ntp_minutes,*ntp_seconds,30,11,19); +
-    delay(500); +
-  } +
-}+
  
-void stateVegetative() { +Cuando teniamos este circuito. Disponiamos de problemas de interrumciones de corriente... porque como vemos los cables estan pegados con mocos y mi casa a veces se mueve el pisoocacionando que los cables se desconenten.
-  // 18 hours lights6 hours night +
-  // they turn on 6 in the morning and turn off at the 12 last night +
-  if ( hour() < 6 ) { +
-    digitalWrite(lights, LOW); +
-    stateLights = 'F'; +
-  } else { +
-    digitalWrite(lights, HIGH); +
-    stateLights = 'V'; +
-  } +
-}+
  
-void stateFlowering() { +Por otro lado estabamos haciendo un request al server **NTP** cada minuto y con esta misma hora era que se configuraba todo en el codigo... ocacionando que cuando se cae el internet... no exista hora y se volviera loca la alarma... 
-  // 12 hours lights, 12 hours night +
-  //  a las 6 de la mañana se prenden a las 6 de la tarde se apagan +
-  if ( (hour() >= 6) && (hour() < 18) ) { +
-    digitalWrite(lights, HIGH); +
-    stateLights = 'V'; +
-  } else { +
-    digitalWrite(lights, LOW); +
-    stateLights = 'F'; +
-  } +
-}+
  
-</code>+Otra cosa grave era que cuando se hiba la luz... entonces como la alarma del codigo estaba seteada con una hora quemada... coacionaba que los ciclos de luz se corrieran o no fueran los esperados. 
 + 
 +Otro problema que existia era que cuando las plantas ya necesitan eñ cambio de fotoperiodo... era necesario ingresar de nuevo el firmware a la placa con el cambio de periodo... entonces era tedidoso cada cierto tiempo estar ingresando el codigo a la base. 
 + 
 +**Ahora** 
 + 
 +Circuito actualmente 
 +{{:personas:johnny:proyectos:dsc06738.jpg?400|}} 
 + 
 +{{:personas:johnny:proyectos:placa-antes-2.jpg?400|}} 
 + 
 +Ahora este hardware cuenta con un led ws2812B para indicar los diferentes estados del esp y un boton. 
 + 
 +Tenemos principalmente 6 colores que indican estados y acciones del circuito con respecto a determinados momentos. --- //[[johnnyalexandersepulveda@gmail.com|johnny]] 2020/07/13 09:04// 
 + 
 +cyan 
 +azul 
 +naranja 
 +magenta 
 + 
 +amarillo 
 +verde 
 + 
 +rojo
  
  
  
  
personas/johnny/proyectos/indoor_diy_autosostenible.txt · Última modificación: 2020/08/13 06:00 por kz