Show Posts
Pages: [1]
1  Using Arduino / Networking, Protocols, and Devices / Re: Ethernet Shield Not taking address on: June 10, 2013, 02:56:06 pm
i've resolved a problem with a mega 2560 and shield W5100.
the ethernet was detected but The problem was  serial port which was returning  adress IP 0.0.0.0  .
The problem was the pins were too long and the contact between mega and shield wasn't correct for the ICSP  connector

So just cut 2 millimeters to all of the shield W5100 pins  to make sure the ICSP connection is well done
between the 2 devices . Just after, an IP adress was available on the serial port monitor .
 

Hi, sorry to revive a post so old. I have a similar problem, rather than get out the ip 0.0.0.0 (which would indicate that there is a good connection on the pins ICSP), I get an ip 255.255.255.255.

Take the W5100 chip and is bought on ebay (11 €).

I have read it can be a faulty chip, but before returning to hong kong I wonder if there is any solution.

Thank you.
A greeting
2  International / Software / Re: Riego Automatico on: October 30, 2012, 03:49:07 am
Me podrias explicar un poco ese sistema??

Me parece interesante esa manera de co
Probar la humedad, pero no me ha quedado del
Todo claro


Un saludo
3  International / Software / Riego Automatico on: August 01, 2012, 11:27:24 am
Buenas, hace poco me compre una Arduino UNO r3 y ando trasteando con ella.

Tengo algun conocimiento de electronica y alguno de programacion (Visual Basic y Python).

Bien el tema es que estaba empecinado en hacerme un sistema de riego automatico para mi planta.

Mi idea era leer la humedad que hay en el sustrato de la planta, si es menos de lo que necesitaria (un parametro añadido por mi), comprobaria que el plato estuviera seco, y actuara una bomba durante unos 5 segundos y despues parar durante unos 3 minutos para que pudiera drenar el agua hasta el plato. Y asi sucesivamente hasta que detectara agua en el plato y parara todo el sistema.


Bueno, como no se me ocurre ninguna manera de comprobar la humedad del sustrato(podria usar dos clavos en el sustrato, aplicarles tension y comprobar la resistencia entre ambas para calcular la humedad. El primer problema que le veia a este sistema era la oxidacion de los clavos y dado a la electrolisis que se me quedaran los nutrientes pegados a los clavos y la planta no absorviera bien los nutrientes.

Tambien pense en usar un sensor de humedad, pero como no tengo ni idea de si funcionaria me decante por la accion humana.


YO (persona fisica) compruebo como se ha echo toda la vida la humedad del sustrato, metiendo el dedo, y decido si esta seco o humedo.

Si lo encuentro seco, aprieto el pulsador y comienza el funcionamiento del programa, que es el siguiente:

Compruebo pulsador
>Si pulsado
>>Compruebo luz
>>>Si luz es menor de parametro establecido
>>>>Enciendo bomba durante 5 seg y paro 3 min.


Basicamente esa es la logica del sketch.


Esto es lo que tengo ahora mismo, completamente funcional(al menos en las pruebas que yo he hecho, ya que todo esta probado con una maceta sin planta, solo sustrato, y forzandole yo la oscuridad.


Code:
 /*      RIEGO AUTOMATICO CON SENSOR DE LUZ
      
      Con este pequeño codigo podras regar tu maceta automaticamente,
      preocupandote unicamente de que no le falte agua al deposito.
      
      Para activarlo, unicamente pulsaremos el boton que indica al
      programa que tiene que regar.
      
      El programa lo primero que comprobara es que sea de noche, mediante
      un sensor de luz.
      
      Confirmado que no hay luz, comprobara que el sensor del plato de
      la maceta este seco (circuito abierto), y procedera a encender la
      bomba durante 5 segundos, despues hara una pausa de unos 5 minutos
      para darle tiempo al agua a que se filtre en el sustrato.
      
      Pasados esos 5 minutos vuelve a comprobar que el plato este seco.
      Si es asi volvera a encender la bomba durante otros 5 segundos y la
      volvera a apagar durante otros 5 minutos.

      Una vez que el programa detecta que el plato esta mojado (circuito cerrado)
      para la bomba y hace un reset de la placa para vaciar todas las variables
      y esperar a que vuelvas a pulsar el boton de inicio.*/

int humedad = 0;
int luz = 1000;
int pulsado = 0;

void setup(){
  Serial.begin(9600);
  pinMode(12, OUTPUT);
  pinMode(9, OUTPUT);    //este pin lo utilizamos para encender la bomba, a través del relé.
  pinMode(5, INPUT);      //este pin sirve para detectar si hay humedad o no. Si detecta energia, es que hay humedad.
  pinMode(3, INPUT);      //Este pin lee el estado del pulsador de inicio de riego.
                          //también se usa el pin A0, que servirá para detectar la cantidad de luz que hay en el exterior, a través de un sensor de luz.
}

void loop() {  
  if (digitalRead(3) == 1) { //comprobamos que el pulsador esta presionado.
    pulsado = 1;
    digitalWrite(12, HIGH); //Encendemos un led que nos indica que el pulsador se a presionado.
  }
  pulsador();
}

void pulsador() {
  int intensidad = analogRead (A0); //se guarda en la variabla la "cantidad de luz" que hay en el exterior
  Serial.println("Intensidad: ");
  Serial.println(intensidad); //esto me sirvio a mi para ver las salidas cuando estuve haciendo el programa.
  Serial.println("\n");
  delay(1000);
  if (pulsado == 1) {
    Serial.println("Pulsador: SI");   //Lo mismo, esto es para cuando estuve aciendo el trasto xD+
    if (intensidad > luz) { //analiza la luz exterior es inforior al límite que hemos marcado. si esto pasa, se cumple el condicional (se supondrá que es de noche)
        delay(5000);    
        if (intensidad > luz){ //se esperan 5 segundos y se vuelve a analizar si es de noche o no. esto sirve para evitar que el sistema reconozca como noche una sombra de una persona, etc
          pulsado = 1;
          riego();
        }
      }else {
         digitalWrite(10, LOW); //si no hay luz (es de dia), el riego se apaga.
         //pulsado = 0;
      
         }
  }else {
    Serial.println("Pulsador: NO");}
}

void riego() {
      if (digitalRead(5) == 0) { //en el caso en que se confirme que es de noche, se analizará si hay humedad o no, en el caso en que no haya, se cumple el condicional
          delay(2000);
          humedad = 0; //se establece en la variable de humedad, que no la tierra no está húmeda
          Serial.println ("Maceta:"); Serial.println(humedad); //mas de lo mismo
          digitalWrite(9, HIGH); //se encienda la válvula y comienza el riego
          Serial.println("Bomba ON");
          delay(25000);
          digitalWrite(9, LOW); // se para durante 5 minutos
          Serial.println("Bomba OFF");
          delay(120000);
          riego();    //volvemos a iniciar la funcion rieego para que compruebe la humedad del plato.
       }
       else {digitalWrite (9, LOW);
       humedad = 1; //se se detecta que hay humedad, se establece que hay humedad en la variable y se apaga el riego
       Serial.println("Maceta: ");
       Serial.println(humedad);
       software_Reset();    //resetamos la placa para liberar las variables.
       }
}

void software_Reset() //Hacemos parpadear el led y resetamos la placa.
{
  Serial.println("RESET");
  pulsado = 0;
  digitalWrite(12, LOW);
  delay(100);
  digitalWrite(12, HIGH);
  delay(100);
  digitalWrite(12, LOW);
  delay(100);
  digitalWrite(12, HIGH);
  delay(100);
  digitalWrite(12, LOW);
  delay(100);
  digitalWrite(12, HIGH);
  delay(100);
  digitalWrite(12, LOW);
  delay(100);
  digitalWrite(12, HIGH);
  delay(100);
  digitalWrite(12, LOW);
  delay(2000);
  asm volatile ("  jmp 0");
}

Bueno esto es lo que tengo.

Seguramente se podra optimizar y mejorar, por eso queria preguntaros a los expertos de que manera se podria mejorar ese codigo.


Os subo tambien un esquematico del sistema por si alguien quiere hacerlo.
Pages: [1]