WikiElectronique

Wiki sur l'électronique et l'informatique

Outils pour utilisateurs

Outils du site


transmission_433mhz

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
Dernière révisionLes deux révisions suivantes
transmission_433mhz [2018/04/30 09:12] – [Achat] 88.164.131.165transmission_433mhz [2018/04/30 10:55] – [Reproduction du code] 88.164.131.165
Ligne 43: Ligne 43:
   * Cliquer sur Reinstall Driver   * Cliquer sur Reinstall Driver
  
-{{::zadigrtl2838.png?200|}}+{{::zadigrtl2838.png?400|}}
  
 +==== Utilisation ====
 +
 +  * Démarrer SDRSharp
 +  * Dans source RTL-SDR (USB)
 +  * Dans configuration, sélectionner Generique RTL2832U OEM
 +
 +{{::configsdrsharp.png?600}}
 +
 +  * Cliquer sur le bouton play
 +
 +Exemple d'appui sur le bouton de la télécommande de mon portail 
 +
 +{{::sdrsharp_433.jpg?direct}}
 +
 +  * Enregistrement des données transmises par la télécommande
 +
 +Dans le menu Recording cliquer sur le bouton record puis appuyer sur le bouton de votre télécommande.
 +SDRSharp 
 +
 +{{:sdrsharprecording.png?200|}}
 +
 +SDRSharp va créer un fichier audio dans son répertoire : 
 +
 +{{::sdrsharp_record_file.png?direct}}
 +
 +Il est possible d'ouvrir ce fichier avec [[https://www.audacityteam.org/|Audacity]] ou [[https://fr.wavosaur.com/|Wavosaur]] que je préfère et qui permet de facilement mesurer les temps des différents états de la trame.
 +
 +  * Ouvrir le fichier avec Wavosaur
 +
 +Trames reçues :
 +{{::wavosaur_trames.png?direct|}}
 +
 +Détail d'une trame :
 +{{::wavosaur_trame.png?direct|}}
 +
 +Décodage d'une trame OOK :
 +{{::wavosaur_trame_binaire.png?direct|}}
 +
 +Mesure des temps :
 +
 +Sélectionner la partie de trame à mesurer puis faire un clic droit et propriétés.
 +Wavosaur indique que la fréquence échantillonnage est de 2 400 000 Hz et que 3253 échantillons sont sélectionnés. La période est donc de 1/2400000*3253 = 1.355ms
 +
 +{{::wavosaur_mesure_temps.png?direct|}}
 +
 +===== Reproduction du code =====
 +
 +Une fois que le code lu, vous pouvez utiliser le code ci dessous pour le revoyer facilement vers un transmetteur 433Mhz.
 +
 +Indiquer les temps en micro seconde à l'état haut et l'état bas quand un bit est à '1' ou '0'
 +<code csharp>
 +unsigned int TimeHighLevelHigh = 1088;
 +unsigned int TimeLowLevelHigh = 272;
 +unsigned int TimeHighLevelLow = 408;
 +unsigned int TimeLowLevelLow = 952;
 +</code>
 +
 +<code csharp |main.ino>
 +#include "RfManager.h"
 +
 +RfManager rfManager = RfManager();
 +
 +unsigned char code[] = { 1,0,1,1,1,1,1,0,1,0,0,1,1,1,0,1,1,0,1,0,0,0,1,0,0}; //Code bouton
 +
 +void setup() {
 +
 + rfManager.setTransmitPin(4);
 +}
 +
 +void loop() {
 +
 + if (digitalRead(6) == 0)
 + {
 + rfManager.send(code, sizeof(code));
 + //Attend 10 ms
 + delay(10);
 + }
 +}
 +
 +</code>
 +
 +<code csharp |RfManager.cpp>
 +#include "RfManager.h"
 +
 +unsigned char TransmitPin = 0;
 +
 +unsigned int TimeHighLevelHigh = 1088;
 +unsigned int TimeLowLevelHigh = 272;
 +unsigned int TimeHighLevelLow = 408;
 +unsigned int TimeLowLevelLow = 952;
 +
 +RfManager::RfManager() {
 +
 +}
 +
 +void RfManager::send(unsigned char* code, unsigned int length)
 +{
 + for (int i = 0; i <length; i++) {
 + if (code[i] == 1)
 + transmit(1);
 + else
 + transmit(0);
 + }
 +}
 +
 +void RfManager::setTransmitPin(unsigned char pin)
 +{
 + TransmitPin = pin;
 + pinMode(TransmitPin, OUTPUT);
 +}
 +
 +void RfManager::transmit(unsigned char bit) {
 +
 + if (bit == 1)
 + {
 + digitalWrite(TransmitPin, 1);
 + delayMicroseconds(TimeHighLevelHigh);
 + digitalWrite(TransmitPin, 0);
 + delayMicroseconds(TimeLowLevelHigh);
 + }
 + else
 + {
 + digitalWrite(TransmitPin, 1);
 + delayMicroseconds(TimeHighLevelLow);
 + digitalWrite(TransmitPin, 0);
 + delayMicroseconds(TimeLowLevelLow);
 + }
 +}
 +</code>
 +
 +<code csharp |RfManager.h>
 +#ifndef _RfManager_h
 +#define _RfManager_h
 +
 +#if defined(ARDUINO) && ARDUINO >= 100
 +#include "Arduino.h"
 +#endif
 +
 +#include <stdint.h>
 +
 +class RfManager {
 +
 +public:
 + RfManager();
 + void send(unsigned char* code, unsigned int length);
 + void setTransmitPin(unsigned char pin);
 +
 +private:
 + void transmit(unsigned char bit);
 +};
 +
 +#endif
 +</code>
 +
 +Résultat sur la sortie de l'Arduino : 
 +
 +{{::capture2.png?direct|}}
  
transmission_433mhz.txt · Dernière modification : 2018/05/01 16:21 de 88.164.131.165

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki