Sensore ir per antifurto fai da te

Ciao ragazzi. Ho pensato di creare un antifurto. Ho riciclato un sensore ir 12V. Ho difficoltà a collegarlo ad arduino. Ho due ingressi per + e - e altri due che andrebbero collegati ad arduino, per quello che ho capito, uno al gnd e uno al pin digitale.
Io ho provato ad applicare ciò che ho trovato su questo sito
e come codice sto utilizzando questo:


int sn = 7;

void setup() {
  Serial.begin(9600);
  pinMode(7, INPUT);
}

void loop() {
  delay(200);
  int sn = digitalRead(sn);

  Serial.println(sn);
}

Devo solo verificare che mi dia un dato, per poi sviluppare il tutto. Per ora mi dà fisso 1, anche quando il sensore rileva movimento (si accende il led del sensore). Qualcuno mi può aiutare?

Direi:

  1. di quale Arduino parliamo? UNO R3, UNO R4, Nano, Mini, cosa?...
  2. posta possibilmente uno schema delle connessioni (o almeno una foto) ed anche come hai alimentato il tutto (sensore ed Arduino)
  3. posta marca e modello del sensore (se le trovi da qualche parte) e qualche foto dettagliata ed a fuoco, incluse le connessioni. Se possibile, anche una dell'interno.

E comunque il codice che hai postato non ha molto senso perché "sn" dovrebbe essere il numero del pin del sensore ma poi definisci anche una variabile locale con lo stesso nome!
Inoltre per convenzione i valori costanti (tipicamente i numeri dei pin) vanno messi in maiuscolo, e se rappresentano pin basta dichiararli "byte". E se hai una costante che definisce il sensore, usala ovunque (nel setup non l'hai messo).

Una cosa di questo tipo:

const byte SENSORE_IR = 7;

void setup() {
  Serial.begin(9600);
  pinMode(SENSORE_IR, INPUT);
}

void loop() {
  delay(200);
  int sensore = digitalRead(SENSORE_IR);
  Serial.println(sensore);
}

per ora sto utilizzando un Arduino uno per fare i test e poi pensavo di montare tutto su un Arduino R4 wifi. Il sensore è un Alarmcom ir 222 B (su google non ho trovato nulla se non un paio di fornitori)
Allego le foto
Per il codice grazie, ora lo modifico.


I collegamenti ora non saranno sicuramente giusti perché le sto provando tutte. Ho alimentato il tutto con un alimentatore stabilizzato impostato su 12v

E come hai dedotto quali siano le connessioni da fare? Mi sembra di vedere una descrizione delle 8 connessioni a vite, ma dalla foto non si legge bene. Diciamo che mi fido, e che tu abbia a sinistra GND e +12V ed a destra GND e uscita (ma sei sicuro, si?).

In ogni caso non capisco bene come tu abbia connesso il tutto, quindi provo ad indovinare, ed a farti qualche domanda:

  1. Immagino che il cavo nero in alto a sinistra sia l'alimentatore. Hai detto che è a 12 V, confermi?
  2. E quindi penso (spero) che dopo il mammuth i fili bianco e arancio siano rispettivamente +12V e GND (primo consiglio: usa SEMPRE colori standard almeno per l'alimentazione, sempre nero per GND e rosso per Vcc, poi puoi scegliere altri colori che preferisci per il resto ad esempio giallo per i segnali).
    EDIT: ho letto meglio le scritte, il PIR sembra accettare da 8 a 12V quindi potresti usare un alimentatore da 9 V ed alimentare con questo anche Arduino (sul pin Vin...).
  3. Poi il +12 V vedo che lo porti ad Arduino tramite quel dupont giallo al pin 5V. Assolutamente NO, devi alimentarlo sul pin Vin che ha il regolatore interno! Al pin 5V devi mandarci 5 V, altrimenti friggi Arduino.
  4. E il GND non lo mandi su Arduino? Come può funzionare secondo te? Tra parentesi immagino anche che Arduino non sia morto proprio per questo, nonostante i 12V sul pin 5V...
  5. Poi il primo cavo rosso (!) che viene da sotto dal sensore, si vede che arriva ad un altro mammuth, da cui partono due fili rossi (!), uno va al pin D7 ed ok, ma il secondo dove lo mandi che non si capisce bene? Sembra che vada al pin 3.3V il che non ha alcun senso, e comunque l'uscita del sensore la devi mandare al D7 e basta!

Insomma, devi prima capire il tipo di uscita ossia se in caso di allarme va a GND o se va a Vcc, e se necessario usare una resistenza di pull-up o pull-down... Alimenta il PIR separatamente e con il tester vedi cosa succede all'uscita.
Poi fatto questo si può iniziare a capire il resto. Per sicurezza poi io userei un alimentatore 12V separato per il PIR ed uno a 9V per Arduino (o uno step-down per andare da 12 a 9), anche perché alimentando Arduino a 12V vai a stressare il regolatore interno che con i 12V si surriscalda e non ha neanche il dissipatore.

Allora i primi due fili al sensore sono + e - e lì ok. poi mi rimangono altri due fili dove gli attacco?

quello che ho montato ora su arduino so che non ha senso, l'ho fatto per provare. arduino lo collego con la usb al pc, non lo collego all'alimentatore 12V. Non saprei risponderti alle domande devo fare tutti i collegamenti da 0. Ho scritto sul forum proprio per un aiuto

Secondo lo schema della morsettiera stampato nelle foto che mostri, isola l'alimentazione del sensore dalla logica del tuo Arduino, puoi usarlo per alimentarlo come indicato da @docdoc
Per fare ciò, taglia il filo bianco, (A), collegalo al GND dell'arduino.
Il filo rosso, (B), a un pin digitale configurato come "INPUT-PULLUP".
Una lettura di quel pin con "digitalRead" ti darà un ALTO o un BASSO, cambiando al contrario a seconda che il sensore lo rilevi o meno.

Saluti:
E.gonzalez.

PS:
I terminali 10 e 11, (Cover Swith), servono per rilevare manipolazioni o sabotaggi, (tentativo di cancellare l'allarme), potete usarli allo stesso modo degli altri, uno su GND e l'altro su un "INPUT-PULLUP" pin. , la lettura di quel nuovo pi avvisa di possibili manipolazioni del sensore.

Queste indicazioni si basano su un sensore dello stesso produttore non fuori produzione di quello che possiedi e con una morsettiera molto simile alla tua.

grazie infinite funziona alla perfezione

Già che ci sono, collegato a quel sensore cera un sensore di vibrazione, ovviamente l'ho staccato senza fare foto. Ha 4 cavi bianco, blu, verde e giallo, come faccio a sapere come collegarlo?

Inoltre se io volessi far si che quando il sensore rileva mi accenda qualcosa, ad esempio un relè o un led ma dopo 10 secondi si spenga come faccio, non sono bravo con millis, ci sono altri modi?

const byte SENSORE_IR = 7;
const byte COVER_SW = 4;
int LED = 8;

void setup() {
  Serial.begin(9600);
  pinMode(SENSORE_IR, INPUT);
  pinMode(COVER_SW, INPUT);
  pinMode(VIBR, INPUT);
  pinMode(LED, OUTPUT);
}

void loop() {
  delay(200);
  int sensore = digitalRead(SENSORE_IR);
  Serial.println(sensore);

  int COVER = digitalRead(COVER_SW);
  Serial.println(COVER);

  if (SENSORE_IR != 0) {
    digitalWrite(LED, HIGH);
  }
}

Esempio di codice che vorrei utilizzare

Non ho idea della connessione dell'altro sensore, dovresti dire la marca, caricare una foto per vedere se indica connessioni come infrarossi, ecc. Dov'era collegato agli infrarossi?​

Se utilizzare delay o millis dipende da cosa vuoi fare, come sai il delay interrompe il codice mentre attende il tempo contrassegnato. Devi sempre porti la domanda: devo fare qualcos'altro mentre il delay è in corso? . Se la risposta è no, usatelo.

if (SENSORE_IR != 0) {
    digitalWrite(LED, HIGH);
    delay (10000);
   digitalWrite(LED, LOW);
  }

Altrimenti usa i milli:

const byte SENSORE_IR = 7;
const byte COVER_SW = 4;
int LED = 8;
unsigned long finale;

void setup() {
  Serial.begin(9600);
  pinMode(SENSORE_IR, INPUT_PULLUP);
  pinMode(COVER_SW, INPUT_PULLUP);
  //  pinMode(VIBR, INPUT);
  pinMode(LED, OUTPUT);
}

void loop() {
  //delay(200);
  boolean sensore = digitalRead(SENSORE_IR);
  Serial.println(sensore);

  boolean COVER = digitalRead(COVER_SW);
  Serial.println(COVER);

  if (sensore || COVER) {
    digitalWrite(LED, HIGH);
    finale = millis() + 10000UL;
  }
  if ((millis() > finale)){
  digitalWrite(LED, LOW);
  }
}

Grazie mille per il codice, più tardi provo a modificare il mio con le tue indicazioni.
Il sensore di vibrazione era collegato al sensore Ir ma non mi ricordo come. Eventualmente posso collegarlo anche senza passare dal sensore Ir se è un casino capire i collegamenti e così potrei avere un'altra variabile e chiamarla tipo "sensore_vibr" per non confonderli. Ti mando la foto del sensore, presumo sia della stessa marca del sensore Ir, sopra non c'è scritto niente

Forse sì, ma non riesco a trovare alcuna informazione su quel tipo di sensore, quindi possiamo solo fare supposizioni.
Può essere aperto e scattare foto da entrambi i lati del circuito? Comunque carica una foto del retro.

Scherzo l'ho dovuto pulire bene ed è uscita una scritta. Non vedo possibili modi per aprirlo. Dove arriva il cavo c'è una specie di colla nera

Bene, possiamo solo supporre che se segue gli stessi criteri del sensore IR, abbiamo due cavi di alimentazione e due cavi per un interruttore NC. Prova a localizzare questi ultimi due misurandoli tutti con un multimetro finché non ne trovi 2 che hanno resistenza zero tra di loro.

Ok proverò grazie

Assomiglia a questo:

Allora il codice funziona alla perfezione. Ho provato con il tester a cercare il positivo e negativo, solo che un po' tutti i cavi tranne il verde (credo sia un negativo) mi danno un valore. Consigli?

Giallo e verde mi da 0 e anche blu e bianco (tutti hanno dei valori molto vicini a zero)
e oltre tutto il tester suona come se fossero in corto. ora che ho individuato i veri 0 cosa faccio?

Se collego uno tra giallo e verde con uno bianco o blu mi da più di 1khom

Con quelle misurazioni non so cosa fare (mi aspettavo un solo zero e nessuna connessione con gli altri), non posso aiutarti. Butterei via quel sensore e ne comprerei un altro di cui conoscevo le specifiche.

1 Like