This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
DUDA sistema de riego con arduino mega
#1
hola buenos dias soy alguien novat6a con el tema de arduino, quisiera una ayuda grande ya que tengo problemas con el codigo lo tome de una pagi8na tengo ya los materiales pero, me arroga en error de subir el codigo a la placa arduino, y aparte osea dectecta pero no me lee los datos que nesesito que arrogue la libreria ni nada... ahora los sensores estan bien los probe y estan en buen estadop todo funciona, pero no se que pasa, quisiera una ayuda por favor , si es lo mejor urgente ya llevo tres dias leyendo y aplicando cosas y nada da resultado, es para el cuidado de mi mata y ver su crecimiento es un experimento, gracias chicos y chicas 

dejo el error y cap de esto junto con el codigo
 [Imagen: image.png][Imagen: image.png]

#include <DHT.h>
#define DHTTYPE DHT11

#define sensor_humedad_pin A0
#define fotorresistor_pin A5

int pinDHT11 = 2;
DHT dht(pinDHT11,DHTTYPE);

int fotorresistor_valvue = 0;
int agua_pin = 3;
int agua_speed = 255;

void setup() {
  Serial.begin(9600);
  dht.begin();
}

void loop(){
  float h = dht.readHumidity();
  float t = dht.readTemperature();

  if (isnan(h) || isnan(t)){
    Serial.println("Error");
  }

int valor_humedad_tierra = map(analogRead(sensor_humedad_pin), 0, 1023, 100, 0);
int fotorresistor_value = map(analogRead(fotorresistor_pin), 1023, 0, 100, 0);

Serial.println(" ");
Serial.print("Humedad: ");
Serial.print(h);
Serial.print(" %/t");
Serial.print("Temperatura: ");
Serial.print(t);
Serial.print(" *C ");

Serial.print("Humedad en suelo: ");
Serial.print(valor_humedad_tierra);
Serial.println("%");

Serial.print("Luz: ");
Serial.print(fotorresistor_value);
Serial.println("%");

if( valor_humedad_tierra <= 50 && fotorresistor_value <30 && t<30) {
  digitalWrite(agua_pin, HIGH);
  analogWrite(agua_pin, agua_speed);
  } else{
    digitalWrite(agua_pin, LOW);
}
delay (2000);
}


[Imagen: image.png]

[Imagen: image.png]
  Responder
#2
Buenas noches.

Tu código me compila sin tocar nada, por lo tanto no es un error de programación, por lo poco que veo en la foto que adjuntas donde te pone el error, veo que te falta instalar la librería

<Adafruit_Sensor.h>

Te adjunto la librería para que la instales

Para darte mas información necesito saber si te dice algún error mas, ya que en la foto no se ve todas las líneas en rojo, que son los errores que detecta el IDE de Arduino.

Un saludo

El otro error que te dice, no tiene nada que ver con tu programa

"Librería invalida encontrada en C:\Users\.........."

Quiere decir que en esa ruta de archivo que esta dentro de donde el IDE de Arduino guarda las librerías, y en esa carpeta

"cortina_uwu"

le falta un archivo terminado en

.h

Pero ya te digo que eso no influye para nada en tu programa.


Archivos adjuntos
.zip   Adafruit_Sensor-master.zip (Tamaño: 7.65 KB / Descargas: 28)
  Responder
#3
hola,utilizo arduino mega al principio pense que estaba dañadp pero no, ahora meti la carpeta archivo que me enviaste ya me da VALORES PERO AHORA LA TEMPERATURA NO ME DA SOLO HUMEDAS SUELO Y LUZ MIRA

 [Imagen: image.png]

TE AGRADEZCO CON LA AYUDA AY POR FIS TE DEBO UNA
  Responder
#4
Ahora que el programa compila, viene cuando hay que estudiar qué es lo que hace (ingeniería inversa).
Cuando esto es lo primero que tienes que saber, que quiero que haga mi programa, y como tengo que escribir el programa para que Arduino, ejecute mis órdenes, que siempre empezamos al revés.

El sensor DHT11, es capaz de realizar 2 lecturas de temperatura y humedad por segundo.  OK

La fotorresistencia, está midiendo los valores constantemente.  OK

Al final del programa tienes un    delay (2000);  que esta interrumpiendo la ejecución del código durante 2 segundos (2000 mili segundos), lo que provoca que el programa se detenga durante esos 2 segundos, mientras tanto, los sensores siguen leyendo sus valores, y cuando el programa reanuda su ejecución, hay una descompensación entre el tiempo transcurrido y las lecturas realizadas, que es lo que te provoca el error de lectura.

Por lo tanto, cambia a

delay (200);

y veras como cambia la ejecución del código.

Por otro lado, todo tu proyecto está realizando lecturas de humedad, temperatura y luz cada segundo, por mucho que quiera tu planta, no es capaz de realizar variaciones en tan poco tiempo, no se bebe el agua tan rápido, la temperatura ambiente no cambia tan rápido, y la luz, por rápido que se mueva el sol, tampoco cambiara tan rápido. De no ser que estés alumbrando con una lámpara y tengas el interruptor en la mano. A demás, está demostrado que Arduino en periodos largos de tiempo, (semanas o meses), pierde la capacidad de mantener las lecturas.

Una vez que hayas estabilizado las lecturas, prueba a poner un reloj en tiempo real y una tarjeta SD, para que haga las lecturas como mínimo 1 vez cada hora, o una vez cada 2 horas, y guarde los datos, así el proyecto se acercará mas a la realidad.

Esta página es de gran utilidad

https://www.luisllamas.es/tutoriales-de-arduino/

Y en esta pagina tienes un proyecto como el que te digo.

https://www.automatizacionparatodos.com/...utomatico/


Un saludo.
  Responder
#5
hola de nuevo vale hice lo que me dijiste pero aun asi no me da el valor de el dht11 la temperatua ni la hunmedad me sale "nan" y ahora concetando la minibomba de 3-6v no funciona la prove aparte si funciona pero junto con el codigo del circuito no acciona, cuando se supone que tiene que funcionar cuando esta seco, pero ahora no quiere, que podria hacer hay gracias .

[Imagen: image.png]
[/url][url=https://ibb.co/1fQTMTN][Imagen: image.png]
[Imagen: image.png]
[Imagen: image.png]

mira espero no molestarte mucho, gracias :"3 es que estoy corta de tiempo por que me toca mostar todo
  Responder
#6
¿Ese error de lectura "nan", te lo hace con los sensores solos o cuando conectas la bomba de agua?


Uno de los errores mas frecuentes que cometemos todos, es no fijarnos en las características de Arduino, si estas alimentando al Arduino desde el USB, solo le entran 5V y 2 A como máximo, en cuanto conectes 2 o 3 sensores, la alimentación hay que repartirla entre el propio Arduino y esos sensores, por lo que todos los componentes dejan de alimentarse correctamente, y con ello dejan de funcionar bien.

Por eso cuando conectas 1 sensor solo, si funciona, pero cuando conectas mas sensores empiezan todos a hacer cosas raras.

La solución pasa por alimentar solo el Arduino desde el USB, y todo lo demás hay que alimentarlo desde una fuente externa. Quita los cables de tensión de la protoboard que vienen desde el Arduino (5V y 3.3 V), deja solo 1 cable GND desde Arduino a la protoboard, y conecta una pila o batería de 5V a la línea de alimentación de la protoboard, veras como se quitan todos los problemas.

Como no vas a tener a mano una batería de 5V, deja los cables como están y desconecta el Arduino del ordenador y alimenta el Arduino desde una pila de 9V, veras como se solucionan parte de los problemas.

Para que te funcione la bomba de agua correctamente, tienes que alimentarla desde una pila, y hacer que Arduino active un relé para conectar la bomba.

Este motor consume muchos Voltios y Amperios para las posibilidades del Arduino, y cuando la bomba se ponga en marcha, "tirará" del voltaje y Amperios del circuito, haciendo que todo deje de funcionar correctamente.
  Responder
#7
y no los errores *nan* me los da aún así sin conectar la bomba, Osea que lo que quieres decir es que meta los 9 voltios a la bomba y ya funcionará el sensor de temperatura dht11...?... Pero entonces la bomba la conectaría ha para que coga la programación en el 2 si?

Quiero confirmar que sea así gracias ...

O cómo está en la imagen de circuito hecha por fritzing meto los nueve voltios hay ya normal al alguno con el broche y conecto la pila y ya debe funcionar si?.

Por qué la otra que vi es que bueno puedo quitar la.bomba de agua si no tengo problema pero quisiera que funcionara el sensor de dht11 y si es posible la bomba de agua...

Gracias amigo bendiciones
  Responder
#8
Mientras tu compruebas las conexiones del proyecto estoy mirando el código y hay varias cosas que no entiendo por que las pones.

Si ya has definido el tipo de sensor DHT11 en la línea 2, y el pin del sensor DHT11 en la línea 7, ¿Para que vuelves a dejar la línea 8 escrita y sin poner valores?
Estas duplicando la información del sensor y liando al Arduino, porque sigue buscando la definición del tipo de sensor y el pin del sensor, por lo tanto te sobra la línea 8.

¿Para que le marcas la velocidad de giro del motor de la bomba de agua?, la bomba no es un motor paso a paso, es un motor simple que o esta encendido o esta apagado, no puedes controlarlo en nada mas, por lo tanto te sobran las líneas 12 y 48.


Código:
#include <DHT.h>
#define DHTTYPE DHT11

#define sensor_humedad_pin A0
#define fotorresistor_pin A5

int pinDHT11 = 2;
// DHT dht(pinDHT11,DHTTYPE); *****

int fotorresistor_valvue = 0;
int agua_pin = 3;
//  int agua_speed = 255;  ******

void setup() {
  Serial.begin(9600);
  dht.begin();
}

void loop(){
  float h = dht.readHumidity();
  float t = dht.readTemperature();

  if (isnan(h) || isnan(t)){
    Serial.println("Error");
  }

int valor_humedad_tierra = map(analogRead(sensor_humedad_pin), 0, 1023, 100, 0);
int fotorresistor_value = map(analogRead(fotorresistor_pin), 1023, 0, 100, 0);

Serial.println(" ");
Serial.print("Humedad: ");
Serial.print(h);
Serial.print(" %/t");
Serial.print("Temperatura: ");
Serial.print(t);
Serial.print(" *C ");

Serial.print("Humedad en suelo: ");
Serial.print(valor_humedad_tierra);
Serial.println("%");

Serial.print("Luz: ");
Serial.print(fotorresistor_value);
Serial.println("%");

if( valor_humedad_tierra <= 50 && fotorresistor_value <30 && t<30) {
  digitalWrite(agua_pin, HIGH);
//  analogWrite(agua_pin, agua_speed);  *****
  } else{
    digitalWrite(agua_pin, LOW);
}
delay (2000);
}

Primero vamos a hacer que funcionen los sensores, y luego haremos funcionar la bomba de agua, si no nos volveremos locos sin saber que es lo que no funciona bien.

El error "nan" es un error de lectura del sensor DHT11, por lo tanto el Arduino no esta leyendo los valores del sensor DHT11, mueve un poco los cables del sensor DHT11, porque no están haciendo buen contacto, con el Monitor Serie abierto, para que veas en que punto los cables hacen buen contacto y el Arduino lee los valores.

NO puedes poner los 9V al motor directamente, porque me estas diciendo que es de 3-6V, si conectas el motor directamente a la pila de 9V, lo quemarás.

Los 9V, conéctalos al Arduino, quitando primero el USB, como tienes en el dibujo de Frizting
  Responder
#9
Hola listo los sensores funcionan ahora la bomba es la que no quiere pero pues volví y la probe aparte se todo lo que tengo y funciona... Que me sugieres que deje la bomba por aparte y mejor la programe aparte o qué... Pues por qué ya es la bomba no el sensor...

Gracias
  Responder
#10
No, ahora vamos a hacer que funcione todo correctamente.

Cambia el código como te he dicho, y con el Arduino alimentado desde la pila de 9V, conecta la bomba de agua en su sitio como tienes en el dibujo de Fritzing.

Cruza los dedos, que vamos a hacer magia, a ver si todo funciona correctamente.

Sigo repasando el código, y me he dado cuenta de que te falta definir el pin de la bomba de agua como salida, por eso no funciona bien, con esa pista, a demás de los cambios anteriores, ¿Qué es lo que tienes que hacer?

Código:
#include <DHT.h>
#define DHTTYPE DHT11

#define sensor_humedad_pin A0
#define fotorresistor_pin A5

int pinDHT11 = 2;

int fotorresistor_valvue = 0;
int agua_pin = 3;

void setup() {
  Serial.begin(9600);
  dht.begin();
  pinMode(agua_pin, OUTPUT);  // *****
}

void loop(){
  float h = dht.readHumidity();
  float t = dht.readTemperature();

  if (isnan(h) || isnan(t)){
    Serial.println("Error");
  }

int valor_humedad_tierra = map(analogRead(sensor_humedad_pin), 0, 1023, 100, 0);
int fotorresistor_value = map(analogRead(fotorresistor_pin), 1023, 0, 100, 0);

Serial.println(" ");
Serial.print("Humedad: ");
Serial.print(h);
Serial.print(" %/t");
Serial.print("Temperatura: ");
Serial.print(t);
Serial.print(" *C ");

Serial.print("Humedad en suelo: ");
Serial.print(valor_humedad_tierra);
Serial.println("%");

Serial.print("Luz: ");
Serial.print(fotorresistor_value);
Serial.println("%");

if( valor_humedad_tierra <= 50 && fotorresistor_value <30 && t<30) {
  digitalWrite(agua_pin, HIGH);
//  analogWrite(agua_pin, agua_speed);  *****
  } else{
    digitalWrite(agua_pin, LOW);
}
delay (200);
}

Vale, ahora el código da error al compilar, este otro código no da error

Código:
#include <DHT.h>
#define DHTTYPE DHT11

#define sensor_humedad_pin A0
#define fotorresistor_pin A5

int pinDHT11 = 2;

DHT dht(pinDHT11, DHTTYPE);

int fotorresistor_valvue = 0;
int agua_pin = 3;

void setup() {
  Serial.begin(9600);
  dht.begin();
  pinMode(agua_pin, OUTPUT);  // *****
}

void loop(){
  float h = dht.readHumidity();
  float t = dht.readTemperature();

  if (isnan(h) || isnan(t)){
    Serial.println("Error");
  }

int valor_humedad_tierra = map(analogRead(sensor_humedad_pin), 0, 1023, 100, 0);
int fotorresistor_value = map(analogRead(fotorresistor_pin), 1023, 0, 100, 0);

Serial.println(" ");
Serial.print("Humedad: ");
Serial.print(h);
Serial.print(" %/t");
Serial.print("Temperatura: ");
Serial.print(t);
Serial.print(" *C ");

Serial.print("Humedad en suelo: ");
Serial.print(valor_humedad_tierra);
Serial.println("%");

Serial.print("Luz: ");
Serial.print(fotorresistor_value);
Serial.println("%");

if( valor_humedad_tierra <= 50 && fotorresistor_value <30 && t<30) {
  digitalWrite(agua_pin, HIGH);
//  analogWrite(agua_pin, agua_speed);  *****
  } else{
    digitalWrite(agua_pin, LOW);
}
delay (200);
}
  Responder
#11
Hola lo intente pero no no funcionó, bueno no importa tienes una programación para la bomba digamos que , tengo un interruptor y quisiera saber cómo puedo programarlo.cpn la.bimba de agua y el Arduino, digamos quiero que la bomba al momento de darle clip o tocar el interruptor salga el agua y luego cuando oprima otra vez deje de salir, como aria hay?
  Responder
#12
Buenas noches desde España.

Que yo tenga un programa para hacer funcionar un motor no soluciona tus problemas, lo que tenemos que hacer es que tu proyecto funcione.

Si ya hemos hecho funcionar los sensores, que es la parte mas difícil, ahora tenemos que hacer funcionar la bomba de agua.

Por lo que has comentado en otras publicaciones, el programa que tienes solo para el motor de agua te funciona. Súbelo para que lo vea, a ver que parte es la que no estamos poniendo bien en el proyecto de riego de la planta.

Dime que transistor estas usando, por ejemplo un 2N2222, es el código que lleva impreso el transistor.

Creo que esto te ayudará a entender que estamos haciendo

https://programarfacil.com/blog/arduino-...r-bjt-npn/

https://learn.adafruit.com/adafruit-ardu...s?view=all

https://www.ardumotive.com/how-to-drive-...istor.html
  Responder
#13
Este proyecto también ayuda bastante

https://www.circuitschools.com/automatic...r-esp8266/

Un saludo.
  Responder


Posibles temas similares…
Tema Autor Respuestas Vistas Último mensaje
  CONSULTA Error compilando para la tarjeta Arduino Mega or Mega 2560. minaki24fc 2 538 26-03-2021, 10:45 PM
Último mensaje: asesorplaza1
  problemas con arduino mega vs UGC jcvb 0 371 08-12-2020, 11:07 PM
Último mensaje: jcvb
  CONSULTA Re: Arduino Mega, 1 servo ,1 nema, 3 motor DC carlos hop 8 2,089 26-09-2018, 01:30 PM
Último mensaje: Shellmer
  No me reconoce el arduino mega. hansugrove 2 3,141 15-10-2017, 10:35 PM
Último mensaje: ismaelcd
  Instalación de Arduino Mega 2560 en Linux planck669 4 3,780 21-05-2017, 12:47 PM
Último mensaje: planck669