Funciona con el AMS1117?
Funciona con el modulo de alimentación YwRobot que curiosamente tiene dos ASM1117
El ASM1117 es para ponerlo directo a la fuente ATX y alimentar el modulo mirando un vídeo de youtube en el que un asiático intentaba poner varios módulos esp8266 a la fuente ATX y cada modulo tenia su ASM1117 (en minuto 1:40 empieza lo interesante)
Lo que no entiendo bien es porque no usa los 3.3v algo comenta pero entiendo mejor el americano.
Tu crees que se puede tratar el rizado en la salida 3.3V?
Hola amigos, la explicación a las imágenes que han desaparecido es simple en hostinger.com son unos caras duras de repente un día intento entrar en mi web y sin previo aviso esta cerrada por superar el limite de CPU según ellos y si no pago una cuenta premium no me dejan entrar en mi propia web, ya os digo que ni siquiera se dignaron a avisar. Claro que lo que les interesa es que pague para recuperar la web... a mi forma de verlo les importa un carajo todo lo que tenia allí simplemente es una trampa para que pague si quiero recuperar mis cosas... flipo!! con esta gente.
Por fin he conseguido algo después de dos semanas probando cosas he conseguido ver la pagina:
El único problema ahora es que solo conecta a la pagina una única vez, si intentas refrescar la pagina ya no conecta de nuevo.
El código que he utilizado es el de prometec haciendo algún cambio que daba problemas lo he dejado comentado donde me daba problemas.
/* ----------------------------------------------------------------
http://www.prometec.net/
Prog_76_2
Montando un servidor Web en WIFI mediante
un WIFI ESP8266 y comandos AT
http://www.prometec.net/servidor-web-esp8266
--------------------------------------------------------------------
*/
String ordenes[]=
{ "AT",
//"AT+CWMODE=3",
//"AT+CWJAP=\"JAZZTEL_978B\",\"QMnWhMbhAUWX2fEWpmGF\"",
"AT+CWJAP=\"JAZZTEL_978B\",\"QMnWhMbhAUWX2fEWpmGF\"\r\n",
//"AT+CIFSR",
"AT+CIPMUX=1",
"AT+CIPSERVER=1,80",
"END" // Para reconocer el fin de los comandos AT
};
void setup()
{ Serial3.begin(115200);
Serial.begin(115200);
delay (1000);
int index = 0;
while(ordenes[index] != "END")
{ Serial3.println(ordenes[index++]);
while ( true)
{ String s = GetLineWIFI();
if ( s!= "") Serial.println(s);
if ( s.startsWith("no change"))
break;
if ( s.startsWith("OK"))
break;
if ( s.startsWith("ready"))
break;
// if (millis()-T >10000) break;
}
Serial.println("....................");
delay(3000);
}
}
void loop()
{ while (Serial3.available() >0 )
{ char c = Serial3.read();
if (c == 71)
{ Serial.println("Enviada Web Request");
webserver();
delay(500);
}
}
}
void http(String output)
{
Serial3.print("AT+CIPSEND=0,"); // AT+CIPSEND=0, num
Serial3.println(output.length());
if (Serial3.find(">")) // Si recibimos la peticion del mensaje
{ Serial.println(output);
Serial3.println(output); //Aqui va el string hacia el WIFI
delay(10);
while ( Serial3.available() > 0 )
{ if ( Serial3.find("SEND OK") ) // Busca el OK en la respuesta del wifi
break;
}
}
}
void webserver(void)
{ http("<!DOCTYPE HTML>");
http("<html>");
http("<meta charset=\"utf-8\" />");
http("<head><title>Cultivo Autónomo</title>");
// http("<meta http-equiv=\"refresh\" content=\"15\"></head>");
http("<body><h1>Hello World!!</h1>");
http("<p><em>Que bien sienta la victoria!! seguimos adelante con el proyecto</em></p></body></html>");
http("<p><em>Ahora solo tengo que poner en esta página los datos de los sensores ☺</em></p></body></html>");
delay(1);
Serial3.println("AT+CIPCLOSE=0");
delay(500);
}
String GetLineWIFI()
{ String S = "" ;
if (Serial3.available())
{ char c = Serial3.read(); ;
while ( c != '\n' ) //Hasta que el caracter sea intro
{ S = S + c ;
delay(25) ;
c = Serial3.read();
}
return( S ) ;
}
}
Ahí va una duda ¿Alguien sabe porque solo conecta una vez y no puedo refrescar?
Nadie se anima a ayudar? porque la verdad a parte de noter y surbyte que me han ayudado un montón, solo hay por ahí un par de personas que se animaron a poner alguna ayuda pusieron algún ejemplo y no han vuelto no se si es porque no escogí su método o porque simplemente no les interesa el proyecto, espero que sea lo segundo porque yo elegí los códigos según mi nivel de comprensión si me pusieron algún ejemplo que yo no entiendo por eso mismo no lo he usado porque no lo entendía no había otro motivo lo prometo.
Así que venga animaros leche que esto es un foro para compartir, yo por mi parte todo el mundo que me ha pedido enlaces para comprar o para lo que sea siempre he contestado y he intentado ayudar dentro de mis posibilidades, recordar que yo empecé este proyecto sin tener casi idea de programar así que toda ayuda es bienvenida!!
Un saludo a todos los que visitan este hilo que no son pocos porque llevamos como 12.000 visitas
Hola a todos mi nombre es Germán Altuve, soy nuevo en el foro y también felicitarte por tan buen proyecto. Quisiera que me asesoraran con respecto a un proyecto similar quiero hacer un sistema de riego para un cultivo hidroponico pero quisiera saber que shiels debo comprar quiero que un sensor detecte cuando las plantas necesiten ser regadas, también conectar una bomba de agua al arduino y un lcd en donde me indique la humedad eso por ahora si todo sale bien que yo se que si pues quisiera ampliarlo mas como colocarle una wifi y una pantalla mas grande pero para hacer las pruebas seria eso, también si hay librerías para ello. Gracias.
Hola Germán bienvenido al club de los cultivetas electrónicos que somos un montón XD, estaré encantado da ayudarte y compartir lo que llevo hecho.
Te voy a dar los enlaces a las compras que yo hice, pero hay truco para comprar mas barato aun, coge los títulos de los artículos que te paso y lo vuelves a buscar en google veras que salen muchos iguales y algunos mas baratos porque estas cosas siempre están bajando de precio.
A mi el LCD que mas me gusta es este porque puedes hacer muchas cosas con el tiene ranura para tarjetas SD y puedes mostrar imágenes y tal.
Lo malo que necesita de un level sifter de esos porque va a 3.3v este que pongo tiene los pines justos para el lcd y para el WIFI
el sensor de humedad que usamos es este pero las puntas no duran surbyte esta investigando como hacer unas que duren estamos entre oro o nikel pero necesitaras el controlador que trae.
La bomba depende mas de tus necesidades de cuantas plantas tengas y tal pero yo usare esta porque va a 12v para conectarla a la fuente de alimentación. Ojo yo voy a cultivar en tierra y esta bomba hace mucho ruido a mi entendimiento para estar rulando todo el día y toda la noche, si no quieres que el vecino asalte tu casa con la escopeta busca una que no haga tanto ruido.
No se te ocurra conectar bombas ni motores directos al arduino o petara, tienes que usar otras cosas por ejemplo un tip120 pero motores directos a arduino no ok.
bueno me voy a la finca que mi mujer se pone pesada en cuanto pueda te digo las librerías estan en los ejemplos de codigo que puse pero no dudes en preguntar lo que sea.
Un abrazo hermano!!
Hola amigo muchas gracias por tu apoyo, con respecto a la pantalla TFT pues esta bien pero me gustaría colocarle una de LCD como la que utilizaste en el 3 vídeo, la bomba esta bien y mi pregunta es que si en ves del transistor tip 21 le puedo colocar de una ves el Shields de rele así como el que aparece en tu foro, pues te comento que para empezar hacer pruebas me gustaría comenzar con esto claro mas el sensor de tierra que es el que le va a indicar al arduino cuando regar. Pues el proyecto es un sistema de riego para una pequeña digamos granjita hidroponica es como para experimentar después le colocaría la pantalla TFT, el arduino wifi y todo lo demás, ahora te pregunto hace falta colocarle un sensor de temperatura y el reloj, te agradeciera tu consejo y ayuda al respecto. Gracias
el LCD que yo uso es este vale 3€ envío incluido.
Si puedes usar el relé en vez del tip120. Pero depende de para que uso puede ser uno mejor que el otro.
Que les parece si en vez de controlar todo con un mismo arduino, desglosamos los mecanismos.
Se me ocurre que con un arduino nano y un dht22, un caloventor, un humificador y un cooler, se puede controlar temperatura y humedad independientemente del sensor que hayamos puesto en el arduino "principal" que muestra el valor en el LCD.
Es un gasto extra, pero creo que la comodidad de despejar y olvidarnos del control de esas funciones tiene su justificativo.
Si la idea es hacer dos compartimentos (vegetativo y floración) las temperaturas y humedades son iguales en ambos, esto seria productivo a largo plazo.
Abrazo a todos y muchas gracias por el aporte de todos!
Yo lo veo perfecto la verdad, me encanta que cada uno lo adapte a su proyecto es mas me encantaría ver los ejemplos que crea la gente si señor, así aprendo mas cosas.
Yo en su día lo quise enfocar al auto-consumo y sera algo pequeño un armario para 4 plantas y no tener que preocuparme de nada, que me de el trabajo justo y un rendimiento bueno. Y quiero hacerlo yo todo, no me sirve poner temporizadores porque llevo 10 años así me parece demasiado fácil, eso hablando de hardware... hablando de software..
...Siempre viene en el sobre de semillas lo que la planta tarda en crecer, florecer y que tipo es, a mi me gustaría hacer un menú con arduino... y que te pregunte varias cosas.
¿qué tipo de planta es? auto - indica - sativa - mixta-ind-sat - tomates - bonsai ?
¿Tiempo de crecimiento?
¿tiempo de floración?
Y con esos datos sea capaz de sacar las plantas adelante, que pueda hacer un plan de abonado y de iluminación, esta claro que una sativa come menos que una indica por ejemplo en floración y en eso quiero trabajar en una maquina que la enchufes y a los tres meses pases con la guadaña a cosechar.
Quiero que arduino haga todo porque se que se puede soy un manitas se hacer muchas cosas soldar, mi padre fue ebanista me enseño a tallar y hacer cosas chulas, yo estoy plenamente convencido que para figurarme la maquina y montarla estoy de sobra preparado y armado con todo tipo de herramientas, donde flojeo es en esto de programar.
lo bueno de esto es que todos están invitados a compartir sus proyectos siempre que tengan que ver con las plantas con TODAS de hecho mi bonsái disfruta de los cuidados de arduino... total que si alguien quiere compartir o añadir cosas que faltan son bienvenidas.
un saludo chicos
cololata:
Que les parece si en vez de controlar todo con un mismo arduino, desglosamos los mecanismos.Se me ocurre que con un arduino nano y un dht22, un caloventor, un humificador y un cooler, se puede controlar temperatura y humedad independientemente del sensor que hayamos puesto en el arduino "principal" que muestra el valor en el LCD.
Es un gasto extra, pero creo que la comodidad de despejar y olvidarnos del control de esas funciones tiene su justificativo.
Si la idea es hacer dos compartimentos (vegetativo y floración) las temperaturas y humedades son iguales en ambos, esto seria productivo a largo plazo.
Abrazo a todos y muchas gracias por el aporte de todos!
Pienso que eso complica la instalacion y incrementa el coste y solo seria necesario
cuando se agoten las posibilidades de la placa, y se tiene la ventaja de que ninguno de los parametros a controlar requiere de gran potencia de proceso ,es decir ,no es necesario que cada segundo controles temperatura ,humedad,horario y demas parametros.Estructurando bien la programacion ,un mega da para todo eso.
Gracias jose la verdad es que tienes razón no hay que estar midiendo constantemente la temperatura si por ejemplo en un indoor sin ventilación la temperatura se dispara en 2 minutos sobre todo en verano.
Siento mucho llevar un tiempo sin actualizar. pero en mi casa es imposible cultivar nada en verano, incluso con aire acondicionado.
hola a todos, quiero compartir algo parecido pero distinto.
Les dejo el scketch para que los expertos lo analicen. Muchas gracias a todos por la info compartida.
#include <TimeAlarms.h>
#include "Time.h"
#include "DHT.h" //cargamos la librería DHT
#define DHTPIN A2 //Seleccionamos el pin en el que se //conectará el sensor
#define DHTTYPE DHT11 //Se selecciona el DHT11 (hay //otros DHT)
DHT dht(DHTPIN, DHTTYPE); //Se inicia una variable que será usada por Arduino para comunicarse con el sensor
#define address 69
int vaporizador = 4; // Para activar el evaporizador con el pin digital 4
int intraccion = 3; // Para activar la extraccion del aire con el pin digital 3
int luz = 2; // Para activar la luz con el pin digital 2
int dias; // Para contar los dias transcurridos
int conta; //¨Para verificar el siguinte dia
void setup()
{
setTime(15,27,00,6,6,2016);
Serial.begin(9600);
dht.begin(); //Se inicia el sensor
pinMode(intraccion, OUTPUT); // pone el pin como salida
pinMode(vaporizador, OUTPUT); // pone el pin como salida
pinMode(luz, OUTPUT); // pone el pin como sali
}
void loop()
{
control_mensual_crecimiento();
control_mensual_floracion();
}
void control_mensual_crecimiento()
{
while (dias < 30)
{
Serial.println("**Estado de Crecimiento**");
periodo_luz_crecimiento();
if (hour() >= 6 && hour() <= 23)
{
tem_hum_dia();
}
else if (hour() >= 00 && hour() <= 5)
{
tem_hum_noche();
}
Serial.print("Valor Conta: ");
Serial.println(conta);
Serial.print("Dias transcurridos: ");
Serial.println(dias);
if (day() - conta == 1)
{
dias++;
conta = day();
}
}
Serial.println("**Cambiando de estado**");
}
void control_mensual_floracion()
{
while (dias < 45)
{
Serial.println("**Estado de Floracion**");
periodo_luz_floracion();
if (hour() >= 12 && hour() <= 23)
{
tem_hum_dia();
}
else if (hour() >= 00 && hour() <= 11)
{
tem_hum_noche();
}
Serial.print("Valor Conta: ");
Serial.println(conta);
Serial.print("Dias transcurridos: ");
Serial.println(dias);
if (day() - conta == 1)
{
dias++;
conta = day();
}
}
dias = 0;
Serial.println("**Cambiando de estado**");
}
void tem_hum_dia()
{
float h = dht.readHumidity(); //Se lee la humedad
float t = dht.readTemperature(); //Se lee la temperatura
Serial.print("Temperatura Humedad Dia: ");
Serial.print(t, DEC);
Serial.print(" - ");
Serial.println(h, DEC);
if (t >= 25)
{
digitalWrite(intraccion, HIGH);
Serial.println("Ventilacion ON 25s por alta Temperatura ");
unsigned long previousMillis1 = 0; //Sera el que almacene en que ms fue la ultima vez que se encendio o apago
long OnTime1 = 25000;
digitalWrite(intraccion, LOW);
}
else if (t <= 20)
{
digitalWrite(vaporizador, HIGH);
Serial.println("vaporizador ON 25s por baja humedad ");
unsigned long previousMillis1 = 0; //Sera el que almacene en que ms fue la ultima vez que se encendio o apago
long OnTime1 = 25000;
digitalWrite(vaporizador, LOW);
}
if (h >= 65)
{
digitalWrite(intraccion, HIGH);
Serial.println("Ventilacion ON 25s por alta Humedad ");
unsigned long previousMillis1 = 0; //Sera el que almacene en que ms fue la ultima vez que se encendio o apago
long OnTime1 = 25000;
digitalWrite(intraccion, LOW);
}
else if (h <= 45)
{
digitalWrite(vaporizador, HIGH);
Serial.println("Vaporizacion ON 25s por baja Humedad ");
unsigned long previousMillis1 = 0; //Sera el que almacene en que ms fue la ultima vez que se encendio o apago
long OnTime1 = 25000;
digitalWrite(vaporizador, LOW);
}
}
void tem_hum_noche()
{
float h = dht.readHumidity(); //Se lee la humedad
float t = dht.readTemperature(); //Se lee la temperatura
Serial.print("Temperatura Humedad Noche: ");
Serial.print(t, DEC);
Serial.print(" - ");
Serial.println(h, DEC);
if (t >= 20)
{
digitalWrite(intraccion, HIGH);
Serial.println("Ventilacion ON 60s por alta Temperatura ");
unsigned long previousMillis1 = 0; //Sera el que almacene en que ms fue la ultima vez que se encendio o apago
long OnTime1 = 60000;
digitalWrite(intraccion, LOW);
}
else if (t <= 15)
{
digitalWrite(intraccion, HIGH);
Serial.println("Ventilación ON 60s por baja Temperatura ");
unsigned long previousMillis1 = 0; //Sera el que almacene en que ms fue la ultima vez que se encendio o apago
long OnTime1 = 60000;
digitalWrite(intraccion, LOW);
}
if (h >= 65)
{
digitalWrite(vaporizador, HIGH);
Serial.println("Ventilacion ON 30s por alta Humedad ");
unsigned long previousMillis1 = 0; //Sera el que almacene en que ms fue la ultima vez que se encendio o apago
long OnTime1 = 30000;
digitalWrite(vaporizador, LOW);
}
else if (h <= 45)
{
digitalWrite(vaporizador, HIGH);
Serial.println("Vaporizacion ON 30s por baja Humedad ");
unsigned long previousMillis1 = 0; //Sera el que almacene en que ms fue la ultima vez que se encendio o apago
long OnTime1 = 30000;
digitalWrite(vaporizador, LOW);
}
}
void periodo_luz_crecimiento()
{
if (hour() >= 6 && hour() <= 23)
{
Serial.println("Periodo de Luz Crecimiento, Luz ON. Dia");
digitalWrite(luz, HIGH);
}
else if (hour() >= 00 && hour() <= 5)
{
Serial.println("Periodo de Luz Crecimiento, Luz OFF. Noche");
digitalWrite(luz, LOW);
}
}
void periodo_luz_floracion()
{
if (hour() >= 12 && hour() <= 23)
{
Serial.println("Periodo de Luz Floracion, Luz ON. Dia");
digitalWrite(luz, HIGH);
}
else {
if ((hour() >= 00 && hour() <= 11))
Serial.println("Periodo de Luz Floracion, Luz OFF. Noche");
digitalWrite(luz, LOW);
}
}
Gracias compañero no soy experto pero echaremos un ojo.
He venido a traer noticias he encontrado el sensor de humedad de suelo que puede ser el definitivo porque la cobertura es plástica y no de cobre:
les he mandado un email si hacen envíos a España estos serán los que use.
Para aportar algo que cayó a mis manos y ayuda en esta tarea.
Tuve que adaptar un sensor MPS6 Dielectric Water Potential Sensor para ser leído por un arduino NANO y con cada lectura enviar una salida 0-5V para que sea a su ves registrada por una estación meteorológica integrada que tiene entrada analógica de ese tipo.
El sensor tiene un protocolo de 1 Wire llamado SDI-12 muy usado en sistemas agricultores de modo que investigando un poco di con una simple interfaz,
Que funcionó perfectamente bien usando un pin digital del arduino y esta librería Arduino SDI-12 Library
El sensor registra la cantidad de agua y la temperatura del suelo entre un par de capas cerámicas y lo hace perfectamente.
Es caro US 237 (link) pero solo era para aportar un dato posible.
Esta muy bien surbyte merece la pena echar un vistazo! muchas gracias por compartir.
Los de www.vegetronix.com me han contestado y si mandan los sensores a cualquier parte, así que ese sensor es que quiero usar a no ser que alguien tenga inconvenientes con el, o me hagáis cambiar de idea.
Ahora este proyecto le tengo un poco aparcado por varias razones. la primera es que ya no fumo nada, la segunda es que mi mujer esta embarazada otra vez jajaja y me he quedado sin cuarto para cultivar, lo estoy reformando para la niña que viene de camino.
Pero esto no significa que lo voy a dejar de lado, pienso terminarlo por orgullo y me haré un pequeño mueble que pueda cultivar por lo menos 4 plantitas, Pero en estos momentos estoy mas centrado en lo que viene. Pero ya que tengo todo el material las bombas, el foco led y todo lo demás tengo que terminarlo como sea.
PD: Esto de que no funcione la suscripción a los temas no me gusta nada ¿ningún administrador sabe arreglar el problema? un foro como este debería estar perfecto...
Existe la posibilidad de arreglar las fotos de los primeros posts?
Saludos
Claro Hombre las del primer post arregladas si hay algo mas que pueda hacer no dudéis en preguntar.
Si no me avisa surbyte por whatsapp no me entero, espero que algún día arreglen la suscripción a los temas.
Entre la información que acumulaste y de varios sectores que he visto ya, estuve acumulando las variables a sensar y utilizar, quería ver opiniones de acá mientras también busco de otros lados para perfeccionarlo.
Aunque después de tanto ver, creo que quizás la opción óptima sería un cultivo hidropónico, lo estoy pensando todavía.
Saludos
Bueno, me puse a jugar con el Arduino ya, y he ajustado algunas variables y ya estoy sensando varios datos útiles.
- Temperatura Ambiental (De momento estoy ocupando uno normal, ya pediré el DHT22)
- Humedad de la Tierra
- CO2 Ambiental
- Luz Ambiental
Código que hice:
const int sensorHumidity = A0; // Sensor humedad tierra
const int sensorTemp = A1; // Sensor Temperatura
const int ledVerde = 5; // LED Verde
const int ledRojo = 4; // LED Rojo
const int buzzer = 8; // Piezo
const int co2Sensor = A2;
const int lightSensor = A3;
//Puente H
const int controlPin1 = 2;
const int controlPin2 = 3;
const int enablePin = 9;
void setup() {
pinMode(ledVerde, OUTPUT); // LED Verde como Output
pinMode(ledRojo, OUTPUT); // LED Rojo como Output
pinMode(buzzer, OUTPUT); // Buzzer o Piezo como Output
pinMode(controlPin1, OUTPUT);
pinMode(controlPin2, OUTPUT);
pinMode(enablePin, OUTPUT);
Serial.begin(9600); // Abre puerto en serie comunicación USB
digitalWrite(enablePin, LOW); // Deja apagado el Ventilador desde un inicio
}
void loop() {
int temperature = analogRead(sensorTemp); // Lee el sensor de Temperatura
float voltage = (temperature / 1024.0) * 5.0; // Calcula el voltage para luego poder hacer la conversión a Celsius
float humedad = analogRead(sensorHumidity); // Lee el sensor de Humedad de la Tierra
float temperatureCelsius = (voltage - .5) * 100; // Convierte la temperatura a Cª
int co2 = analogRead(co2Sensor); // Define como co2 lo que lee el Sensor de Gas
int light = analogRead(lightSensor); // Define como light el sensor Analog Ambient Light Sensor
if(temperatureCelsius >= 31) { // Si la temperatura aumenta a más de 31 grados, prende el Ventilador conectado al Puente H
digitalWrite(enablePin, HIGH);
digitalWrite(controlPin1, HIGH);
digitalWrite(controlPin2, LOW);
tone(buzzer, 1000);
delay(100);
noTone(buzzer);
delay(100);
delay(5000);
digitalWrite(enablePin, LOW);
}
if ((humedad >= 300) && (humedad <= 900)) // Si la humedad está dentro del rango, prender LED verde
{
digitalWrite(ledRojo, LOW); // LED rojo Off
delay(100);
digitalWrite(ledVerde, HIGH); // LED verde On
}
else if (humedad < 300) // Si la humedad es baja, prender LED rojo y apagar verde
{
digitalWrite(ledVerde, LOW); // LED verde Off
delay(100);
digitalWrite(ledRojo, HIGH); // LED Rojo On
tone(buzzer, 1000);
delay(1000);
noTone(buzzer);
delay(1000);
}
else if (humedad > 900) // Si la humedad es alta, prender ambos LEDs
{
digitalWrite(ledVerde, HIGH); //LED Verde On
delay(100);
digitalWrite(ledRojo, HIGH); //LED Rojo On
}
delay(3000);
Serial.print("Humidity: ");
Serial.print(round((humedad / 10)));
Serial.print("%");
Serial.print(" Temperature: ");
Serial.print(temperatureCelsius);
Serial.print(" CO2: ");
Serial.print(co2);
Serial.print(" Light: ");
Serial.println(light);
}
Un video mostrando funcionamiento: