Problema Sleep - PIR - IRremote

Salve a tutti,
Di solito cerco di cavarmela con il codice ed evito di aprire topic per qualsiasi problema mi capiti, google è mio amico, ma questa volta non riesco proprio a venirne a capo..

Stò realizzando un progetto per un sistema di allarme casalingo basato su 5 rilevatori di movimento

Ho fatto un Arduino standalone su una breadboard.

Rilevano il movimento con un sensore PIR HC-SR501

Comunicano mediante un numero intero le rilevazioni di movimento con dei moduli 433Mhz ad un unità centrale che elabora questo numero intero
Inoltre ho messo un rilevatore IR per disattivare con un telecomando il rilevatore di movimento, il codice non è ancora del tutto completo.

Il problema che incontro riguarda la sleep mode, necessaria per la durata della batteria.

Quando il PIR rileva un movimento, il codice dell'interrupt viene eseguito correttamente, e trasmesso il numero intero rientra in sleep mode, ogni tanto però dice di essere entrato in sleep mode, ma in realtà non è così, rimane bloccato a volte (Raramente) oppure ha bisogno di un interrupt per riciclare il codice e ritornare in sleep mode.

Ho misurato la tensione dall'out del PIR, che è 3,62 volt quando attivo, e resta in questo stato per 7 secondi dopo di che torna a 0 volt.
Se la misuro collegandolo direttamente al mio ATmega328p diventa -0.5v (com'è possibile?) quando è HIGH e 0v LOW

La corrente passante è di 1,2 mAh in sleep e 13,1 mAh circa quando attivo l'interrupt

Con un delay di 10 secondi per dare tempo al PIR di ritornare allo stato normale riesco a entrare una prima volta nella sleep mode, usando 1mAh, ma dopo poco secondi (seppur il delay del PIR è 7 secondi) ritorna subito attivo e lo vedo perchè il consumo è di circa 13mAh

Ho provato a mettere dei delay, spostare funzioni, ho regolato il delay del PIR al minimo indispensabile, ma non cambia nulla.

Cosa posso fare?

In allegato il mio codice..grazie mille a tutti! Scusate per il post lungo :slight_smile:

CODICE_RILEVATORI.ino (2.68 KB)

Up..ho veramente bisogno di aiuto:/

Non è che la IRremote interferisce con lo sleep?
Hai provato senza?

PaoloP:
Non è che la IRremote interferisce con lo sleep?
Hai provato senza?

Ehm..effettivamente no..proverò solo il PIR.

Effettivamente quando non funzionava l'IR il PIR non dava troppi problemi, ma pensavo fosse il tipo di approccio usato nel codice ad essere sbagliato.

In che modo si potrebbe risolvere un conflitto del genere?:confused:

Non so se puoi risolvere perché la IRremote è basata sugli interrupt. Ma è un argomento che non ho mai approfondito.

PaoloP:
Non so se puoi risolvere perché la IRremote è basata sugli interrupt. Ma è un argomento che non ho mai approfondito.

Beh in ogni caso questa parte è quella funzionante..
Non c'è molta documentazione su possibili conflitti tra PIR e IR Receivers..

Comunque cambia il titolo nel tuo primo post in qualcosa di più specifico. "Non capisco cosa sbaglio" non invoglia a leggere il topic.
Cambialo ad esempio in "Problema Sleep - PIR - IRremote". Forse arriva qualcun'altro con la soluzione. :slight_smile:

PaoloP:
Comunque cambia il titolo nel tuo primo post in qualcosa di più specifico. "Non capisco cosa sbaglio" non invoglia a leggere il topic.
Cambialo ad esempio in "Problema Sleep - PIR - IRremote". Forse arriva qualcun'altro con la soluzione. :slight_smile:

Immediatamente, grazie per il consiglio:)