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:30] – [Installation] 88.164.131.165transmission_433mhz [2018/04/30 10:55] – [Reproduction du code] 88.164.131.165
Ligne 51: Ligne 51:
   * Dans configuration, sélectionner Generique RTL2832U OEM   * Dans configuration, sélectionner Generique RTL2832U OEM
  
-{{::configsdrsharp.png?400|}}+{{::configsdrsharp.png?600}}
  
   * Cliquer sur le bouton play   * Cliquer sur le bouton play
Ligne 57: Ligne 57:
 Exemple d'appui sur le bouton de la télécommande de mon portail  Exemple d'appui sur le bouton de la télécommande de mon portail 
  
-{{::sdrsharp_433.jpg?400|}}+{{::sdrsharp_433.jpg?direct}}
  
   * Enregistrement des données transmises par la télécommande   * Enregistrement des données transmises par la télécommande
Ligne 68: Ligne 68:
 SDRSharp va créer un fichier audio dans son répertoire :  SDRSharp va créer un fichier audio dans son répertoire : 
  
-{{::sdrsharp_record_file.png?200|}}+{{::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|}}
  
-Il est possible d'ouvrir ce fichier avec [[https://www.audacityteam.org/|Audacity]] ou [[https://fr.wavosaur.com/|Wavosaur]] que je préférè et qui permet de facilement mesurer les temps des différents états de la trame. 
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