temporizzatore per scacciastorni

riferimenti

Genere

DATA

Generalità

Note

Distribuzione

vario

2011

SW E HW PROGETTO DI GT PER ALLONTANARE STORNI E ALTRO DAL CAMPO

GIORGIO TADDEI

Gt - af

GENERALITA’

Si tratta di una costruzione per risolvere il problema degli storni che si pappano l’uva, le susine, le sementi nell’orto.

L’idea base è quella di fare rumore a intervalli regolari per spaventare gli uccelli e farli scappare. Il rumore migliore sarebbe la registrazione di un falco all’attacco e il conseguente segnale di allarme degli stessi storni, ma è una registrazione difficile da ottenere. Per il momento si fa un rumore che gli assomiglia vagamente e basta.

Questo marchingegno è quindi ecologico nei confronti degli stessi animali, il rumore riprodotto è tratto dalla natura quindi sopportabile anche dagli umani.

Il rumore è registrato su un registratore vocale elettronico che funziona ininterrottamente. Il segnale va ad un amplificatore da 15 W che pilota degli altoparlanti posizionati strategicamente nel campo. L’amplificatore viene comandato da Arduino-uno tramite un relè, secondo i tempi stabiliti dal programma.

Una fotocellula segnala ad Arduino se è notte o è giorno, in modo da eseguire il programma scaccia storni solo durante il giorno.

Volendo con un selettore si può far funzionare il sistema anche di notte se si vuole spaventare gli istrici.

La batteria è necessaria perché il registratore vocale elettronico non ripartirebbe autonomamente se mancasse la tensione di alimentazione. La batteria viene tenuta carica da un piccolo pannello solare. Le alimentazioni appaiono un po’ caotiche proprio perché la necessità della batteria è venuta con le prove, inizialmente il progetto voleva solo alimentazione da rete elettrica.

L’amplificatore di bassa frequenza utilizza un integrato TDA1521 che contiene due amplificatori, ognuno ad un diffusore, e con gli ingressi in comune. Tra finale e registratore vocale è stato necessario inserire un preamplificatore con un BC547.

La discriminazione giorno – notte viene regolata tramite il programma in Arduino, con la soglia sul segnale dalla fotocellula.

FIGURE E FOTO

L’elettronica principale è alloggiata in contenitore per lavori elettrici. Il circuito stampato millefori permette di assemblare i regolatori di tensione, l’amplificatore e il preamplificatore di bassa frequenza, il relè e i circuiti ausiliari.

Dei cavetti con connettori ad aghi collegano il circuito principale ad Arduino. Vedi foto.

RELE’1 è da 12 Volt, ma funziona egregiamente anche a 9 Volt.

La batteria e i rimanenti circuiti sono alloggiati in altri contenitori.

Gli altoparlanti sono stati dislocati in campo un po’ dappertutto, ecco alcuni esempi con “l’antipioggia” !

LO SKETCH – PROGRAMMA DI ARDUINO


/*

 giorgio taddei

 stornelli1

 */

 

// These constants won't change.  They're used to give names

// to the pins used:

const int analogInPin = A0;  // Analog input pin that the potentiometer is attached to

const int estinvPin = 3;     // the number of the pushbutton pin

const int rele =2;           //digitale 2 per uscita rele

const int LED13 =13;           //digitale 13 per led segnalazione

 

int statoestinv = 0;         // variable 0 estate, 1 inverno

int valoresensore = 0;        // valore letto da foto cella

float volt = 0;                //valore sensore tramutato in volt

 

void setup() {

  // initialize serial communications at 9600 bps:

  Serial.begin(9600);

  // initialize the pushbutton pin as an input:

  pinMode(estinvPin, INPUT);     //pinD3

  pinMode(rele, OUTPUT);     //pinD2

  pinMode(LED13, OUTPUT);     //pinD13

}

 

void loop() {

  //leggi interruttore su D3 per sapere se è estate o inverno

  statoestinv = digitalRead(estinvPin);

 

  // legge fotocella:

  valoresensore = analogRead(analogInPin); 

  volt = map(valoresensore, 0, 1023, 0, 5000); 

  volt= volt/1000;

 

  // stampa risultati a  serial monitor:

  Serial.print("ingresso A0 (fotocella) = " );                       

  if (volt >= 2.0 ){

     Serial.print("sensore = ");

     Serial.println(valoresensore);

     Serial.println(" notte, volt > 2.");

     Serial.print("volt = ");

     Serial.println(volt);

    }

    else

    {

     Serial.print("sensore = ");

     Serial.println(valoresensore);

     Serial.println(" giorno, volt < 2.");

     Serial.print("volt = ");

     Serial.println(volt);

    }  //fine if else g/n

 

  Serial.print("estate o inverno   ");

  if (statoestinv == 0){

     Serial.println(" estate");

    }

    else

    {

     Serial.println(" inverno");

    }  //fine if else e/i

   

  delay(1000);      //ritardo per evitare casino

 

  if (valoresensore > 400)

    {      //deve essere notte, buio!

      if (statoestinv == 1){      //è inverno cioè caccia gli istrici

          //accende rele per tot tempo e spegne

          digitalWrite(rele,HIGH);    //ACCENDE RELE'

          digitalWrite(LED13,HIGH);    //ACCENDE ANCHE UN LED SU ARDUINO, PER CONTROLLO

          delay(60000);               //DURA 60'000 MILLISECONDI = 1 MINUTO

          digitalWrite(rele,LOW);     //SPEGNE RELE'

          digitalWrite(LED13,LOW);    //SPEGNE ANCHE IL LED SU ARDUINO

             for (int i=1; i <= 5; i++){      //I è UN INDICE GENERICO

               if (i % 2)         //se i è dispari

                  {      // A QUESTO MODO ACCENDO UN MINUTO SI E UN MINUTO NO

                    digitalWrite(rele,LOW);    //SPEGNE RELE'

                    digitalWrite(LED13,LOW);    //SPEGNE ANCHE IL LED SU ARDUINO

                    delay(60000);               //DURA 60'000 MILLISECONDI = 1 MINUTO

                  }

                  else

                  {          //SE i NON è DISPARI ALLORA è PARI

                    digitalWrite(rele,HIGH);    //ACCENDE RELE'

                    digitalWrite(LED13,HIGH);    //ACCENDE ANCHE UN LED SU ARDUINO, PER CONTROLLO

                    delay(60000);               //DURA 60'000 MILLISECONDI = 1 MINUTO

                  }              //FINE IF

               digitalWrite(rele,LOW);    //SPEGNE RELE',ANCHE SE FOSSE GIA SPENTO, PER SICUREZZA!

               digitalWrite(LED13,LOW);    //SPEGNE ANCHE IL LED SU ARDUINO

               }     //fine for

          }     //fine if inverno

    }    //fine if notte

    else    //altrimenti se non è notte è giorno!

    {

      if (statoestinv == 0)    //è ESTATE QUINDI CACCIA STORNI - SWITCH SU CHIUSO

        {

          //accende rele per tot tempo e spegne

          digitalWrite(rele,HIGH);    //ACCENDE RELE'

          digitalWrite(LED13,HIGH);    //ACCENDE ANCHE UN LED SU ARDUINO, PER CONTROLLO

          delay(60000);               //DURA 60'000 MILLISECONDI = 1 MINUTO

          digitalWrite(rele,LOW);     //SPEGNE RELE'

          digitalWrite(LED13,LOW);    //SPEGNE ANCHE IL LED SU ARDUINO

             for (int i=1; i <= 5; i++){      //I è UN INDICE GENERICO

               if (i % 2)         //se i è dispari

                  {      // A QUESTO MODO ACCENDO UN MINUTO SI E UN MINUTO NO

                    digitalWrite(rele,LOW);    //SPEGNE RELE'

                    digitalWrite(LED13,LOW);    //SPEGNE ANCHE IL LED SU ARDUINO

                    delay(60000);               //DURA 60'000 MILLISECONDI = 1 MINUTO

                  }

                  else

                  {          //SE i NON è DISPARI ALLORA è PARI

                    digitalWrite(rele,HIGH);    //ACCENDE RELE'

                    digitalWrite(LED13,HIGH);    //ACCENDE ANCHE UN LED SU ARDUINO, PER CONTROLLO

                    delay(60000);               //DURA 60'000 MILLISECONDI = 1 MINUTO

                  }              //FINE IF

               digitalWrite(rele,LOW);    //SPEGNE RELE',ANCHE SE FOSSE GIA SPENTO, PER SICUREZZA!

               digitalWrite(LED13,LOW);    //SPEGNE ANCHE IL LED SU ARDUINO

               }     //fine for

        }  //fine if estate

    }     //fine if else giorno

    Serial.println("------------------------------");

}    //fine void loop e ricomincia all'infinito


Buon divertimento, e buon orto

Giorgio Taddei – IW5DLG