Go Down

Topic: Antifurto: centralina + sensori wireless + sirena (Read 3025 times) previous topic - next topic

Faster

Oct 07, 2013, 12:28 pm Last Edit: Oct 23, 2013, 04:34 pm by Faster Reason: 1
Come da titolo sto cercando di costruire un antifurto con sensori wireless
avrei alcuni consigli da chiedervi, procediamo per gradi:
il sistema è costituito da una centralina e vari sensori magnetici che comunicano via radio.
inizialmente mi concentrerei sul sensore.
ho usato:
arduino micro
modulo tx
http://www.ebay.it/itm/KIT-RF-AM-315-330-433-MHz-Modulo-TX-e-RX-per-ARDUINO-433-92-/121134544891?pt=Automazione_domestica&hash=item1c342e77fb
contatto magnetico
http://www.futurashop.it/index.php?route=product/product&filter_name=sensore+magnetico&product_id=513

Code: [Select]
#include <avr/sleep.h>
#include <VirtualWire.h>

int allarme;
int stato=0;
char *a="1";
char *b="R";

void setup()
{
 Serial.begin(9600);
 pinMode(12, OUTPUT);   // led
 pinMode(2, INPUT);     // sensore

 vw_set_tx_pin(4);    // Arduino pin to connect the receiver data pin
 vw_setup(2000);      // bps connection speed
}

void wakeUpNow()
{
}

void sleepNow()
{
 ADCSRA = 0;   // disable ADC
 set_sleep_mode (SLEEP_MODE_PWR_DOWN);  
 sleep_enable();
 noInterrupts ();
 attachInterrupt (0, wakeUpNow, LOW);
 interrupts ();  
 sleep_cpu ();

 sleep_disable();
 detachInterrupt (0);  
}

void loop()
{  
 sleepNow();
 allarme = digitalRead(2);

 if (allarme == LOW && stato == 0)
 {  
   vw_send((uint8_t *)a, 1);
   vw_wait_tx();
   stato=1;
   digitalWrite(12,HIGH);
   delay(400);
   digitalWrite(12,LOW);

   /* DEBUG */
   Serial.println("Allarme acceso");
   Serial.print("Stato: ");
   Serial.println(allarme);
   Serial.print("Trasmesso: ");
   Serial.println(a);
 }

 if (allarme== HIGH && stato==1)
 {
   vw_send((uint8_t *)b, 1);
   vw_wait_tx();
   stato=0;
   digitalWrite(12,LOW);

   /* DEBUG */
   Serial.println(" ");
   Serial.println("Allarme spento");
   Serial.print("Stato: ");
   Serial.println(allarme);
   Serial.print("Trasmesso: ");
   Serial.println(b);
   Serial.println(" ");
 }
}

funzionamento:
quando allontano i contatti, invio "1" e quando li riavvicino invia "R", poi la centralina agisce di conseguenza...ma lo vedremo dopo.
funziona tutto, il mio problema è il risparmio energetico.
al posto dell'arduino micro potrei usare:
http://www.robot-italy.com/it/solarbotics-ardweeny.html
che sicuramente consuma meno. secondo voi quanto?
poi ho introdotto la modalità sleep, ad ogni allontanamento o riavvicinamento dei contatti avviene un interrupt che risveglia il micro per poi tornare in sleep (almeno credo)
ho fatto una prova con una batteria da 9 volt... risultato?.. è restato acceso per 20 ore....però  non avevo disabilitato ADC (ADCSRA = 0;   // disable ADC), non so quanto possa risparmiare.
in sostanza la domanda è:
a batteria sto sensore può funzionare per alcuni mesi?  (almeno 6)

Faster

Ok per risparmiare utilizzo un attiny85, consuma pochissimo in sleep mode 0,1microA.
Ma il programma va cambiato?

ricdata

nell'altro topic ti avevo consigliato l'attiny85, ma mi sto rendendo conto (anche io sto facendo la stessa cosa) che non ha abbastanza pin. io però come modulo radio ho nRF24L01+ che ha 5 pin da collegare e due mi servono per il sensore, quindi credo che dovrò ripegare sull'attiny84.
ma forse per te va bene l'85, vedo che il tuo modulo ha meno contatti.

per quanto riguarda il programma dovrebbe essere lo stesso, ma vedo che per il modulo che ho io, c'è una libreria apposita per l'attiny, per cui non ti so dire se funzionerà.
per sicurezza attendi qualche risposta più autorevole ;)

PS: hai già testato i moduli radio? puoi dirmi come vanno?
La vera saggezza sta in colui che sa di non sapere. Perché io so di sapere più di te, che pensi di sapere. (Socrate)

Alex96T

Ho trovato questi due moduli radio, che sembrano essere simili ai tuoi.
http://www.ebay.it/itm/10-sets-433Mhz-RF-transmitter-and-receiver-link-kit-for-Arduino-ARM-MCU-WL-/370823977631?pt=LH_DefaultDomain_0&hash=item5656d4da9f
http://www.ebay.it/itm/10-sets-315Mhz-RF-transmitter-and-receiver-link-kit-for-Arduino-ARM-MCU-WL-/121117935230?pt=LH_DefaultDomain_0&hash=item1c3331067e

La differenza sta che il primo trasmette a 433Mhz e il secondo a 315Mhz. Il primo dovrebbe avere maggiore portata e velocità.
E' giusto? E per quanto riguarda le frequenze, tenerle sempre attive in casa che problemi potrebbe dare? In termini di salute intendo. Sarebbe meglio il secondo da 315Mhz?

diego3vsan

ciao,
non ho dati precisi da darti, ma se misuri con un milliamperometro il consumo puoi facilmente calcolare la durata di una batteria.
improbabile che tu riesca a farlo se si parla di microampere... ma allora la durata è notevole.

Faster


nell'altro topic ti avevo consigliato l'attiny85, ma mi sto rendendo conto (anche io sto facendo la stessa cosa) che non ha abbastanza pin. io però come modulo radio ho nRF24L01+ che ha 5 pin da collegare e due mi servono per il sensore, quindi credo che dovrò ripegare sull'attiny84.
ma forse per te va bene l'85, vedo che il tuo modulo ha meno contatti.

per quanto riguarda il programma dovrebbe essere lo stesso, ma vedo che per il modulo che ho io, c'è una libreria apposita per l'attiny, per cui non ti so dire se funzionerà.
per sicurezza attendi qualche risposta più autorevole ;)

PS: hai già testato i moduli radio? puoi dirmi come vanno?


per il tx serve solo un pin, e ovviamente due per l'alimentazione. la libreria che ho usato è la VirtualWire.
nel mio caso servirebbero:
1 pin per il tx
1 pin per il contatto magnetico
1 pin per un eventuale led
per quanto riguarda il consumo:
- il tx consuma 4 milliA in trasmissione e 10microA a riposo
- attinity pochi microA  (in sleep dice 0,1 microA ma a 1.8V, quindi a 5V non saprei)
- led resta acceso mezzo secondo
- contatto magnetico non so

al microp attinity devo fornigli 5 volt (giusto?) cosi come al tx, led e contatto magnetico
la maggior parte del tempo lavorerà in sleep quindi con 4 batterie AA da 1,2 v con 2400 milliA resterà in funzione per molto tempo.
io li ho provati ai due estremi di casa mia (due piani), al piano terra il sensore e al primo piano la centralina, usando una antenna artigianale comunicano benissimo.
questo attinity ha un pin per l'interrupt? a cui collegargli il contatto magnetico.
grazie

Brunello

Quote
- il tx consuma 4 milliA in trasmissione


minimo 30mA a 5V

Quote
attinity pochi microA  (in sleep dice 0,1 microA ma a 1.8V, quindi a 5V non saprei)


per consumare 0.1µA devi tenerlo spento

Faster

questo dovrebbe essere lo schema, scusate il pasticcio ma l'ho fatto di fretta.
per il programma basta cambiare i pin.
la libreria VirtualWire (versione 1.20) dovrebbe funzionare sia con attiny85 che 84.
secondo voi quanto durano le batterie? (4 AA 1,2V 2400milliA)

Faster

#8
Oct 23, 2013, 12:34 pm Last Edit: Oct 23, 2013, 02:09 pm by Faster Reason: 1
dopo il sensore è la volta di una piccola sirena.
utilizzo una sirena: alimentazione 12 V  - corrente max 800mAh.
Vorrei utilizzare una sola alimentazione sia per la sirena che per il tiny85.
Uso un regolatore di tensione 7805: due domande
1 - quali condensatori devo usare ?
2 - quanto scalda ?

Per comandare la sirena (12V) uso un transistor irf520
3 - quale  resistenza tra pin e gate ?

Infine il circuito è giusto?
Per l'alimentazione vorrei usare una batteria al piombo 12V - 12 A
grazie


ricdata


secondo voi quanto durano le batterie? (4 AA 1,2V 2400milliA)

per il calcolo della durata puoi usare questo tool
http://www.picpic.it/autonomiabatteria.php
oppure se hai android scaricati Electrodroid: tra i mille tool utilissimi ce n'è uno per il calcolo della durata delle batterie ;)
La vera saggezza sta in colui che sa di non sapere. Perché io so di sapere più di te, che pensi di sapere. (Socrate)


leo72

Mi intrometto solo relativamente alla scelta del micro.
Se usate librerie particolari scritte per l'Atmega328, attenti che poi non è detto che siano compatibili con un altro chip, come il Tiny84. Quindi, prima di menarvela nel cambio del chip, assicuratevi della perfetta compatibilità e del perfetto funzionamento della lib che volete usare, ad esempio la VirtualWire ..


Faster


Mi intrometto solo relativamente alla scelta del micro.
Se usate librerie particolari scritte per l'Atmega328, attenti che poi non è detto che siano compatibili con un altro chip, come il Tiny84. Quindi, prima di menarvela nel cambio del chip, assicuratevi della perfetta compatibilità e del perfetto funzionamento della lib che volete usare, ad esempio la VirtualWire ..

con il tiny85 la virtualwire (v. 1.20) funziona perfettamente, ma dovrebbe funzionare anche con il tiny84.
mi daresti un giudizio sul circuito della sirena?

leo72

Se funziona con il T85 allora deve funzionare anche con il T84.

Un Tiny85 lavora con tensioni anche inferiori a 3V, solo che poi devi adeguare gli input/output dei pin a quel livello.

Faster


Se funziona con il T85 allora deve funzionare anche con il T84.

Un Tiny85 lavora con tensioni anche inferiori a 3V, solo che poi devi adeguare gli input/output dei pin a quel livello.

ok ma avrei bisogno di aiuti inerenti alle mie domande, ossia quali tipi di condensatori (100nF ?) da usare nel regolatore 7805 e quale resistenza usare tra gate e pin arduino (4.7 k dovrebbe andare bene).
alimentare il tutto con una batteria al piombp da 12V 12A andrà bene?

Go Up