Arduino et carillon

Le module zwave c'est le module radio, dont le site du revendeur fait allusion?
Ils parlent aussi de connectique, c'est uniquement pour manipuler le fautieul ?

Sinon du coup l'Arduino sera quelque pars dans la pièce ou embarqué sur le fauteuil?

Il semble que le plus simple, soit de vampiriser la télécomande.

le module radio c'est un module zwave
la connectique du boitier permet soit de relier le boitier à un fauteuil electrisque pour contrôler le boitier avec le joystick du fauteuil, soit pour brancher un contacteur adapté au handicap de la personne pour lui permettre d'interargir avec le boitier
l'arduino sera placé Dans la pièce ou se trouve la personne

Bonjour,

Je sui rentré de chez mon père. J'ai acheté le carillon de psfox2001. J'ai réussi à obtenir un fichier brut qui me donne des valeurs temps en μsecondes comprenant des silences (valeurs négatives) et des signaux (valeurs positives) . A partir de ces valeurs de temps je dois trouver l'algorithme qui va me permettre d'extraire non seulement la clé (24 bits) envoyée par l'émetteur mais également la structure qui est utilisée pour l'envoi avec certainement un préambule et une fin pour chaque trame. Le problème c'est que pour l'instant je n'y arrive pas :

475 -1436 1417 -454 477 -1444 467 -14760 471 -1448 1419 -474 477 -1416 1435 -480 1417 -494 1433 -452 1451 -476 475 -1410 1437 -480 471 -1418 1441 -480 453 -1440 1439 -462 1435 -482 485 -1406 1431 -468 483 -1436 477 -1414 1435 -480 473 -1430 481 -1408 473 -1444 1439 -448 487 -1444 471 -14754 481 -1406 1435 -476 473 -1430 1449 -454 1435 -472 1435 -458 1435 -482 489 -1416 1435 -478 455 -1434 1437 -460 477 -1432 1427 -484 1443 -478 451 -1434 1437 -458 479 -1430 471 -1438 1415 -494 481 -1404 475 -1438 485 -1426 1427 -488 443 -1444 469 -14752 481 -1452 1405 -484 489 -1406 1441 -474 1431 -482 1403 -476 1439 -488 467 -1438 1411 -484 477 -1434 1413 -492 479 -1410 1429 -486 1409 -500 479 -1420 1427 -456 475 -1444 467 -1440 1441 -450 473 -1442 457 -1436 479 -1416 1453 -476 475 -1410 479 -14770 477 -1440 1399 -484 483 -1410 1429 -484 1431 -478 1415 -484 1433 -486 479 -1410 1439 -450 485 -1444 1415 -492 445 -1444 1425 -486 1441 -486 449 -1414 1435 -478 475 -1446 445 -1444 1429 -486 483 -1410 481 -1424 473 -1440 1417 -490 479 -1408 473 -14752 513 -1396 1441 -456 497 -1406 1437 -472 1455 -450 1437 -482 1413 -490 471 -1440 1409 -486 489 -1410 1431 -480 483 -1414 1439 -454 1451 -446 507 -1410 1449 -450 487 -1412 489 -1410 1457 -466 479 -1404 511 -1410 481 -1422 1427 -490 477 -1406 507 -14716 515 -1424 1407 -484 491 -1406 1439 -458 1445 -484 1415 -490 1433 -450 491 -1436 1407 -474 471 -1448 1435 -478 449 -1436 1439 -460 1445 -448 487 -1448 1421 -454 477 -1442 471 -1440 1417 -486 479 -1404 485 -1450 461 -1412 1441 -470 481 -1440 479 -14746 479 -1418 1419 -486 475 -1440 1437 -450 1423 -482 1433 -480 1413 -486 475 -1440 1411 -486 473 -1438 1411 -494 481 -1406 1429 -486 1443 -450 485 -1414 1427 -482 477 -1444 465 -1438 1403 -474 473 -1450 481 -1412 483 -1436 1433 -486 451 -1416 479 -14772 479 -1434 1409 -482 483 -1418 1437 -482 1421 -490 1401 -482 1445 -486 443 -1442 1407 -484 471 -1438 1429 -470 483 -1438 1433 -464 1435 -450 475 -1446 1437 -480 451 -1438 479 -1414 1445 -484 449 -1446 457 -1446 449 -1444 1439 -484 463 -1442 449 -14758 511 -1408 1425 -484 481 -1408 1437 -482 1419 -490 1399 -484 1447 -486 443 -1444 1411 -486 487 -1408 1445 -482 451 -1448 1403 -482 1447 -474 481 -1418 1429 -490 441 -1436 471 -1444 1435 -450 473 -1466 443 -1444 467 -1436 1435 -450 499 -1410 485 -14758 507 -1402 1441 -450 469 -1436 1429 -472 1437 -482 1421 -472 1437 -478 473 -1414 1433 -482 491 -1404 1437 -456 505 -1410 1443 -468 1435 -488 463 -1442 1407 -488 487 -1408 469 -1438 1431 -466 481 -1440 477 -1410 481 -1424 1419 -478 489 -1416 479 -14754 493 -1400 1433 -482

PS : La clé est :00 00 00 00 00 5E AD 22 - la fréquence est de 433,92, la modulation est OOK mais ici on s'en fiche un peu. 476 est une unité en μsecondes (TE), 31 ou 3 fois 476 en est une autre (Guard_time).

Je cherche juste à savoir comment est envoyée la trame avec un début et une fin.

Pas simple pour ma petite cervelle de moineau :joy:

OK peut être une piste :

  • un signal de 476 µs plus un silence de 1428 doit donner un 0 binaire ;
  • un signal de 1428 µs plus un silence de 476 doit donner un 1 binaire ;

Ps : les temps c'est environ bien sûr. Tout ça correspond bien au protocole On-Off Keying ...
32 * TE (-14756)doit constituer le temps de silence de fin de trame. Bon j’arrête pour aujourd’hui, j’en ai marre :wink:

Effectivement c'est beaucoup plus compliqué que je ne pensais
bravo

Bonjour Philippe

Très probable et vu comme ça la trame serait répétée 10 fois (à première vue) , redondance fréquente en OOK 433MHz

475 -1436 1417 -454 477 -1444 467  -14760 

471 -1448 1419 -474 477 -1416 1435 -480 1417 -494 1433 -452 1451 -476 475 -1410 1437 -480 471 -1418 1441 -480 453 -1440 1439 -462 1435 -482 485 -1406 1431 -468 483 -1436 477 -1414 1435 -480 473 -1430 481 -1408 473 -1444 1439 -448 487 -1444 471  -14754 

481 -1406 1435 -476 473 -1430 1449 -454 1435 -472 1435 -458 1435 -482 489 -1416 1435 -478 455 -1434 1437 -460 477 -1432 1427 -484 1443 -478 451 -1434 1437 -458 479 -1430 471 -1438 1415 -494 481 -1404 475 -1438 485 -1426 1427 -488 443 -1444 469 -14752 

481 -1452 1405 -484 489 -1406 1441 -474 1431 -482 1403 -476 1439 -488 467 -1438 1411 -484 477 -1434 1413 -492 479 -1410 1429 -486 1409 -500 479 -1420 1427 -456 475 -1444 467 -1440 1441 -450 473 -1442 457 -1436 479 -1416 1453 -476 475 -1410 479  -14770 

477 -1440 1399 -484 483 -1410 1429 -484 1431 -478 1415 -484 1433 -486 479 -1410 1439 -450 485 -1444 1415 -492 445 -1444 1425 -486 1441 -486 449 -1414 1435 -478 475 -1446 445 -1444 1429 -486 483 -1410 481 -1424 473 -1440 1417 -490 479 -1408 473  -14752

513 -1396 1441 -456 497 -1406 1437 -472 1455 -450 1437 -482 1413 -490 471 -1440 1409 -486 489 -1410 1431 -480 483 -1414 1439 -454 1451 -446 507 -1410 1449 -450 487 -1412 489 -1410 1457 -466 479 -1404 511 -1410 481 -1422 1427 -490 477 -1406 507 -14716 

515 -1424 1407 -484 491 -1406 1439 -458 1445 -484 1415 -490 1433 -450 491 -1436 1407 -474 471 -1448 1435 -478 449 -1436 1439 -460 1445 -448 487 -1448 1421 -454 477 -1442 471 -1440 1417 -486 479 -1404 485 -1450 461 -1412 1441 -470 481 -1440 479 -14746 

479 -1418 1419 -486 475 -1440 1437 -450 1423 -482 1433 -480 1413 -486 475 -1440 1411 -486 473 -1438 1411 -494 481 -1406 1429 -486 1443 -450 485 -1414 1427 -482 477 -1444 465 -1438 1403 -474 473 -1450 481 -1412 483 -1436 1433 -486 451 -1416 479  -14772 

479 -1434 1409 -482 483 -1418 1437 -482 1421 -490 1401 -482 1445 -486 443 -1442 1407 -484 471 -1438 1429 -470 483 -1438 1433 -464 1435 -450 475 -1446 1437 -480 451 -1438 479 -1414 1445 -484 449 -1446 457 -1446 449 -1444 1439 -484 463 -1442 449  -14758

511 -1408 1425 -484 481 -1408 1437 -482 1419 -490 1399 -484 1447 -486 443 -1444 1411 -486 487 -1408 1445 -482 451 -1448 1403 -482 1447 -474 481 -1418 1429 -490 441 -1436 471 -1444 1435 -450 473 -1466 443 -1444 467 -1436 1435 -450 499 -1410 485  -14758

507 -1402 1441 -450 469 -1436 1429 -472 1437 -482 1421 -472 1437 -478 473 -1414 1433 -482 491 -1404 1437 -456 505 -1410 1443 -468 1435 -488 463 -1442 1407 -488 487 -1408 469 -1438 1431 -466 481 -1440 477 -1410 481 -1424 1419 -478 489 -1416 479  -14754 

493 -1400 1433 -482

( OOK, Modulation par largeur d'impulsion, chaque bit durant environ 2ms)

en suivant cette hypothèse on constate que la trame répétée 10 fois commence par 5 E A D 2 2 , la clé :wink:

471-1448  1419-474  477-1416 1435-480    1417-494 1433-452 1451-476 475-1410    1437-480 471-1418 1441-480 453-1440
             O101 = 5                                1110 = E                               1010 = A
    
1439-462 1435-482 485-1406 1431-468      483-1436 477-1414 1435-480 473-1430     481-140   473-1444 1439-448 487-1444 
           1101 = D                                0010 = 2                                 0010 = 2
   

Bonjour @psfox2001 et @al1fch

Maintenant il ne reste plus qu’à faire un programme (j’ai ma petite idée) et à trouver le bon matériel :wink:

Merci
Je vous tiens au courant :wink:

Bonjour phillipe
pouvez Vous me dire avec quel materiel vous arrivez à ontenir vos données brutes?
merci

Bonjour @psfox2001,

Avec un flipper zéro.
Pour info, cet appareil n'est pas interdit à l'utilisation cependant pour rester dans le cadre de la loi et c'est bien normal par exemple, il ne faut pas hacker la sonnette sans fil de son voisin et lui créer un préjudice en la faisant sonner de manière intempestive.

Je rencontre actuellement des difficultés pour la reproduction du signal avec un module CC1101 + ESP32, la librairie RadioLib.h
et avec une modulation OOK. Je pense que ma configuration n'est pas bonne :

#include <RadioLib.h>
#define TE 476
#define GT (TE * 31)
#define FREQ 433.92

// Broches ESP32 et CC1101
#define CC1101_CS 2
#define CC1101_GDO0 4

CC1101 radio = new Module(CC1101_CS, CC1101_GDO0, RADIOLIB_NC);

// Clé Princeton 24 bits sous forme binaire
const char* code = "010111101010110100100010";

// Envoi d'un seul bit 0 ou 1 en OOK avec les bons timings
void sendOOKBit(char bit) {
  if (bit == '1') {
    radio.transmitDirect();
    delayMicroseconds(3 * TE);
    radio.standby();
    delayMicroseconds(TE);
  } else {
    radio.transmitDirect();
    delayMicroseconds(TE);
    radio.standby();
    delayMicroseconds(3 * TE);
  }
}

// Envoi d'une trame  complète
void envoiSignal() {
  Serial.println("Envoi de la trame 24 bits");

  for (int repeat = 0; repeat < 10; repeat++) {
    Serial.print("Trame ");
    Serial.println(repeat + 1);

    // Temps de Garde avant la trame
    delayMicroseconds(GT);

    // Envoi des 24 bits 
    for (int i = 0; i < 24; i++) {
      sendOOKBit(code[i]);
      Serial.print(code[i]);
    }
    Serial.println("FIN");
    // Pause de fin de trame
    delayMicroseconds(TE);

    // Temps de Garde après la trame
    delayMicroseconds(GT);
  }

  Serial.println("Trame envoyée");
}

void setup() {
  Serial.begin(115200);
  Serial.println("Initialisation du CC1101");

  radio.setOOK(true);
  radio.setOutputPower(5);
  //int state = radio.begin(FREQ, 4.8, 0.0, 500.0, 10, 32);
  //int state = radio.begin(FREQ, 4.8, 0.0, 135.0, 10, 16);
  int state = radio.begin(FREQ, 2.4, 0.0, 135.0, 10, 16);
  if (state == RADIOLIB_ERR_NONE) {
    Serial.println("CC1101 initialisé");
  } else {
    Serial.print("Erreur CC1101: ");
    Serial.println(state);
    while (1);
  }
}

void loop() {
  Serial.println("Envoi de la trame Princeton 24 bits");
  envoiSignal();

}

Je pense sans en être certain que le problème vient de cette ligne de code :

int state = radio.begin(FREQ, 2.4, 0.0, 135.0, 10, 16);

Je ne maîtrise pas tout malheureusement.
Pourtant le module est parfaitement reconnu et envoi une trame mais elle ne correspond pas à ce qui est attendu :

1407 -486 475 -1438 1423 -488 445 -1432

1431 -486 1411 -468 479 -1452 1431 -454

479 -1446 465 -1440 1403 -486 473 -1438

459 -1438 479 -1416 1447 -472 483 -1422

475

-14746

481 -1438 1409 -500 447 -1452 1429 -486 --> 0101

1409 -478 1413 -486 1431 -470 477 -1448 --> 1110

1399 -484 481 -1422 1421 -480 469 -1440 --> 1010

1437 -482 1397 -494 479 -1436 1401 -484 --> 1101

483 -1416 479 -1430 1451 -446 487 -1416 --> 0010

477 -1446 467 -1440 1437 -450 473 -1436 --> 0010

473

-14740

509 -1406 1449 -482 449 -1448 1409 -482

1421 -488 1431 -488 1407 -486 481 -1414

1439 -484 463 -1444 1411 -470 483 -1440

1407 -484 1441 -464 483 -1428 1411 -478

487 -1416 479 -1448 1425 -476 473 -1410

479 -1424 473 -1434 1433 -480 455 -1440

479

-14756

475 -1426 1431 -472 477 -1452 1405 -482

1415 -484 1435 -480 1409 -486 471 -1438

1439 -450 471 -1448 1407 -510 451 -1442

1405 -484 1443 -460 483 -1430 1427 -478

475 -1414 491 -1440 1407 -486 487 -1406

471 -1440 459 -1436 1435 -478 487 -1400

481

-14762

...

Voilà pour l'instant où j'en suis.

Bonne journée.

PS : Sinon vous avez cette méthode :
https://wiki.jelectronique.com/doku.php?id=transmission_433mhz
Il vous faudra investir dans du matériel également mais le prix sera moins élevé.

Il y a une erreur dans mon code, la pause de fin de trame est constituée d'un signal de 476 µs puis d'un silence de 31 * TE soit : GT :

459 -1438 479 -1416 1447 -472 483 -1422

475 <--

-14746 <--

du coup il faut lire :

    
    // Pause de fin de trame
    radio.transmitDirect();
    delayMicroseconds(TE);
    radio.standby();

    // Temps de Garde après la trame
    delayMicroseconds(GT);
  }

au lieu de :

// Pause de fin de trame
    delayMicroseconds(TE);

    // Temps de Garde après la trame
    delayMicroseconds(GT);
  }

  Serial.println("Trame envoyée");
}

Mais ça ne fonctionne pas mieux pour autant :wink:

Pour info
https://munier.perso.univ-pau.fr/tutorial/hackrf/2024/20240329-hackrf433_sensors_part01/

je n'ai jamais utilisé Radiolib en OOK , jamais utilisé un CC1101 : ce qui suis n'est pas garanti !
Pourquoi avoir pris 2400Hz pour le paramètre 'bit rate' ?
1bit durant environ 2ms dans ton cas , je verrais plutôt 500Hz

Merci je ne suis jamais tombé sur cette page Web dans mes recherches ... Il y a de la lecture mais je ne sais pas si ça va me faire avancer ...

Bonjour @al1fch,

Pas mieux avec :
int state = radio.begin(FREQ, 0.5, 0.0, 135.0, 10, 16);

J'avais bêtement mis 2.4 parce que j'avais trouvé un lien qui conseillé ça :wink:

Vous utilisez quelle librairie et quel module pour l'OOK ?

Merci beaucoup.

je n'utilise plus d'OOK, plus de 433Mhz depuis de nombreuses années
quand le le faisais c'était sans bibliothèque , avec des petits modules 433 MHz basiques

Dans ton cas pourquoi ne pas présenter tes trains d'impulsions à un petit module émetteur OOK 433.92 ?

(mon impression sur CC1101 et Radiolib : avant tout pour FSK)

Merci @al1fch

J'ai commandé ça : TECNOIOT 5pcs SI4432 Wireless Module 470MHz 433MHz 1000m Wireless Communication Module : Amazon.fr: Informatique

Il me semble que je dois avoir votre module dans mes tiroirs, il est dédié à l'OOK ?

Bonne journée.

as-tu bon espoir de pouvoir émettre en OOK avec le bon timing de modulation en utilisant un SI4432 et une bibliothèque (Radiolib ? RadioHead ?)

avec ça tu maîtrise complètement le timing des bits dans les trames , onde à 433MH pendant le niveau Haut reçu, pas d'oinde émise pendant le niveau bas :

Je n'en ai strictement aucune idée. Il y a encore quelques jours je ne savais pas exactement en quoi consistait la modulation OOK.
Maintenant j'en sais un peu plus :wink:
J'en suis là pour l'instant.

D'accord @al1fch je vais essayer de retrouver votre module ou en acheter un (ou plusieurs) et trouver la bonne librairie qui va avec

Merci.

n'importe quel module émetteur vendu sous l'appellation 'RF433' fait l'affaire si sa fréquence est 433.92 MHz 'ce qui est presque toujours le cas.
Il suffit ensuite de lui envoyer la trame à partir d'un GPIO, faisable sans bibliothèque.

Ces modules ne savent en général rien faire d'autre que de l'OOK.(= tout ou rien , j'émets/je n'émets pas)
Ce qui est nommé souvent nommé par les arduinistes 'RF433' c'est de la radio en modulation OOK sur la fréquence 433,92MHz