Genere |
DATA |
Generalità |
Note |
Distribuzione |
vario |
2011 |
SW E HW PROGETTO DI GT PER ALLONTANARE STORNI E ALTRO DAL CAMPO |
GIORGIO TADDEI |
Gt - af |
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.
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” !
/*
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