Apricancello CAME

Buongiorno a tutti,
ho acquistato una coppia ricevitore/trasmittente a frequenza 433 Mhz con l'obiettivo di aprire i miei cancelli attraverso Arduino, ho quindi provveduto a realizzare un circuito per clonare il telecomando, per farlo ho utilizzato la libreria RC-Switch.

Una volta premuti i vari pulsanti sull' apricancello sono riuscito ad ottenere tutte le informazioni di cui avevo bisogno(codice,lunghezza in bit del messaggio trasmesso, protocollo e durata del segnale).

Attraverso un secondo Arduino, ho creato un codice che trasmettesse i segnali e qui è nato il problema, il mio primo Arduino (quello ricevente) vede il segnale creato da me in modo identico a quello del telecomando originale, ma i cancelli non si aprono.

I cancelli sono CAME e vengono identificati da RC-SWITCH con il protocollo 8

Qualcuno ha idea del motivo?
Grazie mille
Matteo

Buongiorno,
essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione tutto il su citato REGOLAMENTO ... Grazie. :slight_smile:

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione, nessuno ti potrà rispondere, quindi ti consiglio di farla al più presto. :wink:

Scusa, non lo sapevo,non mi sono presentato, che maleducato!
Dovrei aver fatto tutto,
buona serata

Parlo da non esperto di questa libreria e segnali radio :slight_smile:
Sarà poco utile ma vorrei fare una piccola riflessione :slight_smile:
Premettiamo! Se il segnale generato da arduino è uguale al segnale generato dal telecomando, il cancello si apre!
Se i segnali sono diversi il cancello non si apre! :slight_smile:

Per cui io penso che non hai, o la libreria non ha, decodificato bene il segnale.
Con il primo arduino decodifichi il segnale, con l'arduino trasmittente lo riproduci esattamente, ma il segnale decodificato non corrisponde esattamente a quello del telecomando.

Esattamente come dice torn24.

Aggiungo anche che la richiesta sembra come chi va dal meccanico senza auto e dire che l'auto non parte ma senza dire il modello dell'auto ma solo la marca, né cosa esattamente abbia fatto per cercare di farla partire, o se l'auto faccia qualche rumore... ;D

Detto questo, la sola marca del cancello non è molto significativa, quello che potrebbe servire quantomeno è il modello esatto del telecomando originale, per capire magari che tecnologia usa. Ad esempio se dovesse avere un "rolling code" puoi sniffare quanto ti pare ma il codice che hai ricevuto era valido solo quella volta, non puoi replicarlo successivamente. Inoltre da alcuni forum (si, ho provato anche a farti qualche ricerca...) alcuni che dicono di aver fatto qualcosa con i CAME parlavano di protocollo 7, non 8.

Per cui dovresti dirci COME hai ricavato i parametri (quale codice hai usato? postalo qui...), qual è il telecomando originale, e come hai provato a replicare (anche qui, posta il codice!)

Ciao, grazie mille per la risposta,
si tratta di un telecomando CAME TM3 433 DS a 3 pulsanti, al suo interno è ancora presente un DIP switch (a 12 contatti)
Questo con l'età del telecomandi(Circa 20 anni) e la facilità nel reperire su internet telecomandi "cinesi" compatibili, mi hanno fatto dedurre che non si tratti di rolling code.

Codice ricevente(Codice esempio: ReceiveDemo_Simple)

/*
  Simple example for receiving
  
  https://github.com/sui77/rc-switch/
*/

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

void setup() {
  Serial.begin(9600);
  mySwitch.enableReceive(0);  // Receiver on interrupt 0 => that is pin #2
}

void loop() {
  if (mySwitch.available()) {
    
    Serial.print("Received ");
    Serial.print( mySwitch.getReceivedValue() );
    Serial.print(" / ");
    Serial.print( mySwitch.getReceivedBitlength() );
    Serial.print("bit ");
    Serial.print("Protocol: ");
    Serial.println( mySwitch.getReceivedProtocol() );

    mySwitch.resetAvailable();
  }
}

Codice trasmittente

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

void setup() 
{
  mySwitch.enableTransmit(10);
  mySwitch.setProtocol(8);
  mySwitch.setPulseLength(320);
}

void loop() {
  mySwitch.send(3983, 12); 
  delay(10000);
}

Spero di essere stato più esaustivo questa volta nella risposta!
Matteo

Ho riprodotto i tuoi schetcs, vanno bene, trasmetto e ricevo il tuo codice.
Mi ricordo che oltre al codice , in questi tipi di telecomandi, bisognava tenere
in considerazione la portante, perchè se era troppo veloce o troppo lenta
non riceveva più, cioè i bit erano troppo stetti o troppo larghi.
La frequenza della portante la si otteneva con un oscillatore RC collegato all'integrato.
E nello schetc non vedo tali parametri.
Non sto parlando dell' alta frequenza (433 Mhz), tanto per capirci.
Dovresti vedere la larghezza dei bit del telecomando Came e confrontarli con quelli
generati da "Arduino".

Ps: ho notato che nella trasmissione, dei tuoi codici, c'è il protocollo 8, ma quando ricevo trovo il protocollo 1, non so però se può essere d'aiuto

mpcom:
Spero di essere stato più esaustivo questa volta nella risposta!

Si, grazie!
Quindi puoi postare l'output del ricevitore quando premi un tasto del telecomando? E quando premi più volte (diciamo 3 o 4) lo STESSO pulsante del telecomando ottieni gli stessi identici codici, vero? Quel modello credo che sia fixed code, ma giusto per verifica, anche per capire se magari è Arduino a non interpretare bene i codici.
La codifica dovrebbe dipendere dalla posizione dei 12 dip switch ma di fatto se è fixed code e usi la stessa portante non capisco perché non possa funzionare. Purtroppo non ho più un telecomando di quel tipo per provare (lo avevo nella vecchia casa, 15 anni fa...).

Ad esempio, come detto, avevo letto in alcuni forum che con quel telecomando avevano decodificato il protocollo 7, non l'8. Se tu nel trasmettitore mettessi protocol 7? Ed a stilita risulta protocol 1...

docdoc:
Ad esempio, come detto, avevo letto in alcuni forum che con quel telecomando avevano decodificato il protocollo 7, non l'8. Se tu nel trasmettitore mettessi protocol 7? Ed a stilita risulta protocol 1...

E' un telecomado non rolling code, quello che potevamo costruirci anche noi con il MM53200.
Gli si imposta il codice con i dipswitcs in questo caso 12 bit, e sull'oscilloscopio si vedono gli 1 come
impulsi più larghi, si vedono 13 impulsi, i primi 12 è il numero trasmesso e l'ultimo sempre stretto
identifica la fine.
Quindi l'ho riprodotto, è l'unica cosa che ho notato è che trasmetto con protocollo 8 e ricevo con l'1.
E dovrebbe controllare i tempi di tON degli impulsi e confrontarli con l'originale.