Antifurto: centralina + sensori wireless + sirena

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

#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:

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)

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

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 :wink:

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

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?

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.

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 :wink:

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

  • il tx consuma 4 milliA in trasmissione

minimo 30mA a 5V

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

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)

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

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

per il calcolo della durata puoi usare questo tool

oppure se hai android scaricati Electrodroid: tra i mille tool utilissimi ce n'è uno per il calcolo della durata delle batterie :wink:

grazie molto gentili

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 ..

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 ..

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?

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.

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.

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?

Normalmente sui 7805 si mettono 2 C ceramici da 100nF sui pin Vin e Vout ed un paio di elettrolitici, dimensionati per la potenza che assorbe il circuito a valle. Se alimenti solo il Tiny e poco altro, ti basta anche una coppia 100/10 oppure 47/4,7 uF.
Oltretutto non hai neanche fluttuazioni nell'alimentazione, visto che ti colleghi ad una batteria.

L'IRF520 non va bene per comandarlo direttamente da un pin di un Tiny perché necessita di una decina di volt sul gate per condurre. Devi prenderne uno logic level, tipo un IRL520, che funziona con i 5V delle logiche TTL. Come resistenza sul gate ti basta 100 ohm, perché i Mosfet si pilotano in tensione e non in corrente quindi la R è solo di protezione al pin, non devi limitare nessun flusso di corrente.

leo72:
Normalmente sui 7805 si mettono 2 C ceramici da 100nF sui pin Vin e Vout ed un paio di elettrolitici, dimensionati per la potenza che assorbe il circuito a valle. Se alimenti solo il Tiny e poco altro, ti basta anche una coppia 100/10 oppure 47/4,7 uF.
Oltretutto non hai neanche fluttuazioni nell'alimentazione, visto che ti colleghi ad una batteria.

L'IRF520 non va bene per comandarlo direttamente da un pin di un Tiny perché necessita di una decina di volt sul gate per condurre. Devi prenderne uno logic level, tipo un IRL520, che funziona con i 5V delle logiche TTL. Come resistenza sul gate ti basta 100 ohm, perché i Mosfet si pilotano in tensione e non in corrente quindi la R è solo di protezione al pin, non devi limitare nessun flusso di corrente.

ok grazie ma l'IRF520 l'ho trovato nella confezione di arduino, quindi presumevo che andasse bene

ho letto che il regolatore 7805 consuma ben 5 mA. quindi non è consigliabile se si alimenta con una batteria.
a voi risulta?

Sirena : potresti utilizzare una con un modulo a pannelli solari

per la batteria un pannello solare per caricare la batteria a 9 volt

Credo che cosi con poco riusciresti a tenere in piedi il tuo sistema senza impazzire più di tanto ..

empty_skull:
Sirena : potresti utilizzare una con un modulo a pannelli solari

per la batteria un pannello solare per caricare la batteria a 9 volt

Credo che cosi con poco riusciresti a tenere in piedi il tuo sistema senza impazzire più di tanto ..

con un diodo zener e una resistenza adeguata avrei una tensiione stabilizzata.
da 9V a 5V(circa) quale zener usare e quale resistenza?
se il regolatore di tensione consuma 5ma, in questo caso quanto sarebbe il consumo?