(deleted)
La fréquence c'est une chose mais reste a trouver la modulation : FM, AM, PM,.. ? le codage : Manchester, NRZ, .. ?
Le mieux est de trouver quel circuit intégré permet l'envoie des données et si possible se renseigner sur les détails techniques avec la datasheet.
hakelec:
Bonjour,
Depuis quelques jours, je suis sur un projet plutôt simple dans l’ensemble qui consiste à "sniffer" le code d'une sonnette sans fil que j'ai récupérée, pour ensuite le réémettre et m'amuser un peu.
Et puis le projet me permet aussi de "toucher" aux ondes radio, un vaste sujet que je commence tout juste à explorer.
Bon passons aux choses sérieuses ! Je vous donne une image du code sniffé !Mon problème est simple, j'ai seulement besoin de quelques précisions sur ce signal pour élargir un peu mes connaissances. Je sais que le code est émis à 433,92MHz mais est ce que vous pouvez me donner des précisions sur le type de code utilisé par cette sonnette ? Et est ce que je dis vrai lorsque j'annonce d'un 1 correspond à une impulsion longue et qu'un 0 correspond à une impulsion courte ? Et si je dis vrai, comment s'appelle ce type de codage ?
Voilà, toutes les informations que vous me donnerez vont me ravir j'en suis sur !
Bonne soirée !
bonsoir
ça ressemble à du codage fixe sur 56 bits
poste ton wav
c'est quoi comme sonnette ?
(deleted)
(deleted)
hakelec:
Voilà le fichier, il représente l'appui de deux fois sur le bouton : MEGAAu niveau de la sonnette c'est une SilverCrest IAN 53605 : http://offers.kd2.org/pics/46/b0/46b087453d6ada73a331ad1ccc87a9a97a16ba6c.jpg
c'est un fichier wav I/Q issu de SDR# , je regarderais demain
la sonnette c'est du "lidl"
la plupart (en tous cas toutes celles que j'ai testé ) sont "compatibles" avec la lib RCSWITCH
teste déjà l'exemple receivedemosimple
(deleted)
hakelec:
Ok, je fais ça ce soir et je donne le résultat demain.
Merci beaucoup du temps que tu me consacre !
J'ai hacké recemment "juste pour jouer" une sonnette lidl qui detecte l'ouverture d'un frigo ( une LDR en // sur le contact)
anecdotiquement , j'ai été surpris du nombre d'ouvertures/fermetures d'un frigo par jour en " milieu familial leger"
(deleted)
(deleted)
(deleted)
hakelec:
C'est bon ! Les vacances sont arrivées ! Je vais pouvoir enfin continuer mon petit hack !Alors voilà où j'en suis, quand j'utilise RCSWITCH avec l'exemple "receivedemosimple", rien ne se passe. Rien ne s'affiche dans le moniteur, que j'appuis sur le bouton ou pas.
Du coup, j'ai plutôt commencé à envoyer le code de ma sonnette que j'avais déjà sniffé, en comptant comme un 1 une impulsion longue et comme un 0 une impulsion courte, et là, presque bingo !
En fait, en sniffant le code que j'ai envoyé pour le comparer avec le vrai signal de ma sonnette, je me retrouve avec ça.
1ère piste : signal de ma sonnette (le vrai)
2ème piste: envoi avec le protocole numéro 1
3ème piste: envoi avec le protocole numéro 2
4ème piste: envoi avec le protocole numéro 3
Bonsoir
dans ce type de codage c'est souvent la durée des etats bas qui est importante (0,1 et intertrame)
c'est assez etonnant que rcswitch ne renvoie rien ?
je suis à peu pres sur d'avoir joué avec une sonnette identique à la tienne (mais bon , un boitier identique n'impose pas non plus une conception electro identique)
qu'utilise tu comme recepteur avec ton arduino , a tu validé "cette chaine de reception"
un petit prog de test que j'utilise souvent pour voir/sentir ce qui se passe
ça donne quoi chez toi ?
enum PinAssignments {
encoderPinA = 2,
};
unsigned long Tparc=0; // temps de parcours du secteur
unsigned long Tact=0; // Test pour micros() en entrée
unsigned long ParcMax=3000000; // delai max en µs pour parcourir un secteur, si > arret theorique
unsigned long Tparct[256] ; // tableau de long stockant les valeurs micros() à chaque interruption
byte Eparc; // etat du 1er creneau
byte Iparc=0; // indice pour parcourir Tparct
boolean Sint=false; // passé par l'interruption oui/non
void setup() {
pinMode(encoderPinA, INPUT);
attachInterrupt(0, doEncoderA, CHANGE); // // encoder pin on interrupt 0 (pin 2)
Serial.begin(115200);
}
void loop(){
Eparc=digitalRead(encoderPinA); // recup de l'etat pin à l'init
if (Sint==true)
{
Serial.print(">"); // pour test d'entre/sortie de secteur ,indique passage par int0
Sint=false;
}
if (micros()-Tact > ParcMax) { // tempo en µsecondes pour test si pas eu d'interruption
Tact=micros();
Serial.println();
Serial.print("-- passe tempo --> ETATS=");
Serial.print(Iparc-1);
Serial.print(" ");
Serial.print(millis());
Serial.print("=millis ");
Serial.print("Etat init=");
Serial.print(Eparc);
Serial.print(" ");
for (byte i=1; i < Iparc; i++){
Tparc=Tparct[i]-Tparct[i-1];
Serial.print(Tparc);
Serial.print(","); // delimiteur pour log tableur
}
Serial.println();
Iparc=0;
}
}
// Interrupt on A changing state
void doEncoderA(){
Tparct[Iparc]=micros(); // plus rapide
Iparc ++;
Sint=true;
}
(deleted)
(deleted)
hakelec:
Si c'est la bonne façon d'utiliser le programme, voici ce que j'obtiens :
-- passe tempo --> ETATS=65 174001=millis Etat init=0 448,172,448,172,128,496,448,172,128,496,444,176,128,492,128,500,448,172,128,496,444,176,448,172,448,176,444,176,128,492,448,180,124,496,448,172,132,492,128,492,128,496,448,172,128,492,132,496,448,172,448,176,128,492,448,176,124,496,448,172,128,492,448,180,424,Mais bon je n'obtiens par toujours la même chose alors je ne sais pas trop ce que ça vaut...
ça "prouve" déjà que ton recepteur "receptionne" 8)
et si tu regarde/analyse bien tu verra à Delta T prés des grandes similitudes temporelles pour les états. ;D