Table des matières:

Analyseur RF433 : 7 étapes
Analyseur RF433 : 7 étapes

Vidéo: Analyseur RF433 : 7 étapes

Vidéo: Analyseur RF433 : 7 étapes
Vidéo: TRONIK AVENTUR 278 LIAISON RADIO AM 27 MHZ 2024, Novembre
Anonim
RF433Analyseur
RF433Analyseur
RF433Analyseur
RF433Analyseur

Cette instructable crée un instrument de mesure pour aider à analyser les transmissions RF 433MHz qui sont couramment utilisées pour les communications à distance de faible puissance dans la domotique et les capteurs. Il pourrait probablement être facilement modifié pour fonctionner avec les transmissions à 315 MHz utilisées dans certains pays. Ce serait en utilisant la version 315MHz du RXB6 au lieu de l'actuelle 433MHz.

Le but de l'instrument est double. Premièrement, il fournit un indicateur de force du signal (RSSI) qui peut être utilisé pour examiner la couverture autour d'une propriété et trouver les points noirs. Deuxièmement, il peut capturer des données propres à partir des émetteurs pour permettre une analyse plus facile des données et des protocoles utilisés par différents appareils. Ceci est utile si vous essayez de concevoir des modules complémentaires compatibles avec des unités existantes. Normalement, la capture de données est compliquée par le bruit de fond présent dans les récepteurs produisant de nombreuses transitions parasites et rendant plus difficile la découverte des vraies transmissions.

L'unité utilise un récepteur superhet RXB6. Cela utilise la puce de réception Synoxo-SYN500R qui a une sortie analogique RSSI. Il s'agit en fait d'une version tamponnée du signal AGC utilisée pour contrôler le gain du récepteur et donne la force du signal sur une large plage.

Le récepteur est surveillé par un module ESP8266 (ESP-12F) qui convertit le signal RSSI. Il pilote également un petit écran OLED local (SSD1306). L'électronique peut également capturer des informations de synchronisation sur les transitions de données.

Les captures peuvent être déclenchées localement par un bouton sur l'appareil. Les données capturées sont enregistrées dans des fichiers pour une analyse ultérieure.

Le module ESP12 exécute un serveur Web pour donner accès aux fichiers et les captures peuvent également être déclenchées à partir d'ici.

L'instrument est alimenté par une petite batterie rechargeable LIPO. Cela donne un temps de fonctionnement raisonnable et l'électronique a un faible courant de repos lorsqu'elle n'est pas utilisée.

Étape 1: Composants et outils requis

Note importante:

J'ai trouvé que certains récepteurs RXB6 433Mhz ont une sortie RSSI qui ne fonctionne pas même si l'AGC et le reste de la fonctionnalité sont OK. Je soupçonne que des puces clones Syn500R peuvent être utilisées. J'ai constaté que les récepteurs étiquetés WL301-341 utilisent une puce compatible Syn5500R et que le RSSI est fonctionnel. Ils ont également l'avantage de ne pas utiliser de bidon de blindage facilitant la modification du condensateur AGC. Je recommanderais d'utiliser ces unités.

Les composants suivants sont nécessaires

Module wifi ESP-12F

  • Régulateur 3.3V xc6203
  • Condensateur 220uF 6V
  • 2 diodes Schottky
  • bouton poussoir 6mm
  • MOSFET canal n, par ex. AO3400
  • MOSFET canal p par ex. AO3401
  • résistances 2x4k7, 3 x 100K, 1 x 470K
  • petit morceau de planche de prototypage
  • Récepteur RXB6 ou WL301-341 superhet 433MHz
  • Écran OLED SSD1306 0,96 (version SPI monochrome)
  • Batterie LIPO 802030 400mAh
  • Connecteur 3 broches pour la charge
  • Brancher le fil
  • Fil de cuivre émaillé auto-fondant
  • Une résine époxy
  • Ruban adhésif double face
  • Boîtier imprimé en 3D

Outils nécessaires

  • Fer à souder à pointe fine
  • Tresse à dessouder
  • Pince à épiler
  • Pinces

Étape 2: Schéma

Schématique
Schématique

Le circuit est assez simple.

Un régulateur LDO 3,3V convertit le LIP en 3,3V nécessaire au module ESP-12F.

L'alimentation est fournie à la fois à l'écran et au récepteur via deux MOSFETS de commutation afin qu'ils soient éteints lorsque le module ESP est en veille.

Le bouton démarre le système en fournissant 3,3 V à l'entrée EN de l'ESP8266. Le GPIO5 le maintient alors pendant que le module est actif. Le bouton est également surveillé à l'aide de GPIO12. Lorsque GPIO5 est relâché, l'EN est supprimé et l'unité s'éteint.

La ligne de données du récepteur est surveillée par GPIO4. Le signal RSSI est surveillé par l'AGC via un diviseur de potentiel 2:1.

L'affichage SSD1306 est contrôlé via SPI composé de 5 signaux GPIO. Il peut être possible d'utiliser une version I2C mais cela nécessitera de changer la bibliothèque utilisée et de remapper une partie du GPIO.

Étape 3: Modification du récepteur

Modification du récepteur
Modification du récepteur
Modification du récepteur
Modification du récepteur
Modification du récepteur
Modification du récepteur

Tel qu'il est fourni, le RXB6 ne rend pas le signal RSSI disponible sur ses broches de données externes.

Une simple modification rend cela possible. Le connecteur de signal DER de l'unité n'est en fait qu'une répétition du signal de signal de données. Ils sont câblés ensemble via la résistance 0 Ohm étiquetée R6. Cela doit être enlevé à l'aide d'un fer à souder. Le composant étiqueté R7 doit maintenant être lié à travers. L'extrémité supérieure est en fait le signal RSSI et la partie inférieure va au connecteur DER. On pourrait utiliser une résistance de 0 Ohm mais je viens de relier avec un peu de fil. Ces emplacements sont accessibles à l'extérieur de la boîte de blindage métallique qui n'a pas besoin d'être retirée pour cette modification.

La modification peut être testée en connectant un voltmètre entre DER et GND avec le récepteur sous tension. Il affichera une tension comprise entre environ 0,4V (aucune alimentation reçue) et environ 1,8V avec une source locale de 433MHz (par exemple une télécommande).

La seconde modification n'est pas absolument indispensable mais est tout à fait souhaitable. Tel qu'il est fourni, le temps de réponse AGC du récepteur est réglé pour être assez lent, prenant plusieurs centaines de millisecondes pour répondre au signal reçu. Cela réduit la résolution temporelle lors des captures RSSI et rend également moins réactif l'utilisation de RSSI comme déclencheur pour la capture de données.

Il y a un seul condensateur qui contrôle les temps de réponse de l'AGC mais, malheureusement, il est situé sous la boîte de blindage métallique. Il est en fait assez facile de retirer la boîte de blindage car elle est juste tenue par 3 ergots et il peut être valorisé en chauffant chacun d'eux à tour de rôle et en faisant levier avec un petit tournevis. Une fois retiré, vous pouvez nettoyer les trous pour le remontage en utilisant une tresse à dessouder ou en perçant à nouveau avec une mèche d'environ 0,8 mm.

La modification consiste à supprimer le condensateur AGC C4 existant et à le remplacer par un condensateur de 0,22 uF. Cela accélère la réponse de l'AGC d'environ 10 fois. Il n'a aucun effet néfaste sur les performances du récepteur. Dans l'image, je montre une coupure de piste et un lien vers cette piste à partir du condensateur AGC. Ce n'est pas nécessaire mais rend le point AGC disponible sur un tampon à l'extérieur de la boîte de blindage sous le cristal au cas où l'on voudrait rajouter une capacité supplémentaire. Je n'ai pas eu besoin de le faire. Le blindage peut alors être remplacé.

Si vous utilisez l'unité RX WL301-341, la photo le montre avec le condensateur AGC en surbrillance. La broche de signal RSSI est également affichée. Ce n'est en fait lié à rien. On peut simplement connecter un fil fin directement à la broche. Sinon, les deux broches de cavalier centrales sont connectées ensemble et transportent toutes les deux la sortie de données. La trace entre eux peut être coupée, puis le RSSI relié à celui de réserve pour rendre le signal RSSI disponible sur une sortie de cavalier.

Étape 4: Construction

Construction
Construction
Construction
Construction
Construction
Construction
Construction
Construction

Il y a environ 10 composants nécessaires en dehors du module ESP-12. Ceux-ci peuvent être constitués et connectés sur un morceau de carte de prototypage. J'ai utilisé une carte de prototypage spécifique à ESP que j'ai utilisée pour faciliter le montage du régulateur et d'autres composants smd. Celui-ci se fixe directement sur le module ESP-12.

La boîte que j'ai utilisée est une conception imprimée en 3D avec 3 indentations dans la base pour recevoir le récepteur, l'affichage et le module esp. Il a une découpe pour l'écran et des trous pour le point de charge et le bouton-poussoir qui doivent être insérés et fixés avec une petite quantité de résine époxy.

J'ai utilisé du fil de connexion pour faire les connexions entre les 3 modules, le point de charge et les boutons. puis les fixer en place à l'aide de ruban adhésif double face pour l'ESP et le récepteur et de petites gouttes d'époxy pour maintenir les côtés de l'écran en place. La batterie est câblée au point de charge et montée sur le récepteur à l'aide de ruban adhésif double face.

Étape 5: Logiciel et configuration

Le logiciel est construit dans l'environnement Arduino.

Le code source pour cela se trouve sur https://github.com/roberttidey/RF433Analyser Le code peut avoir des constantes pour les mots de passe modifiées à des fins de sécurité avant d'être compilé et flashé sur le périphérique ES8266.

  • WM_PASSWORD définit le mot de passe utilisé par wifiManager lors de la configuration de l'appareil sur le réseau wifi local
  • update_password définit un mot de passe utilisé pour autoriser les mises à jour du firmware.

Lors de la première utilisation, l'appareil passe en mode de configuration wifi. Utilisez un téléphone ou une tablette pour vous connecter au point d'accès configuré par l'appareil, puis accédez à 192.168.4.1. De là, vous pouvez sélectionner le réseau wifi local et entrer son mot de passe. Cela ne doit être fait qu'une seule fois ou si vous modifiez les réseaux wifi ou les mots de passe.

Une fois que l'appareil s'est connecté à son réseau local, il écoutera les commandes. En supposant que son adresse IP est 192.168.0.100, utilisez d'abord 192.168.0.100:AP_PORT/upload pour télécharger les fichiers dans le dossier de données. Cela permettra ensuite à 192.168.0.100/edit d'afficher et de télécharger d'autres fichiers et permettra également à 192.168.0.100 d'accéder à l'interface utilisateur.

Les points à noter dans le logiciel sont

  • L'ADC de l'ESP8266 peut être calibré pour améliorer sa précision. Une chaîne dans le fichier de configuration définit les valeurs brutes obtenues pour deux tensions d'entrée. Ce n'est pas particulièrement important car le RSSI est un signal assez relatif en fonction de l'antenne, etc.
  • La tension RSSI en db est raisonnablement linéaire mais se courbe aux extrêmes. Le logiciel a un ajustement cubique pour améliorer la précision.
  • La plupart des calculs sont effectués à l'aide d'entiers mis à l'échelle, de sorte que les valeurs RSSI sont en réalité 100 fois supérieures à la valeur réelle. Les valeurs écrites dans des fichiers ou affichées sont reconverties.
  • Le logiciel utilise une machine à états simple pour contrôler la capture du RSSI et les transitions de données.
  • Les transitions de données sont surveillées à l'aide d'une routine de service d'interruption. Le traitement normal de la boucle Arduino est suspendu pendant la capture des données et le chien de garde est maintenu en vie localement. Il s'agit d'essayer d'améliorer la latence d'interruption pour garder les mesures de synchronisation aussi fidèles que possible.

Configuration

Ceci est conservé dans le fichier esp433Config.txt.

Pour la capture RSSI, l'intervalle d'échantillonnage et la durée peuvent être configurés.

Pour la capture de données, le niveau de déclenchement RSSI, le nombre de transitions et la durée maximale peuvent être configurés. Un niveau de déclenchement approprié est d'environ +20dB sur le fond sans niveau de signal. Une chaîne pulseWidths permet également une catégorisation simple des largeurs d'impulsion pour faciliter l'analyse. Chaque ligne enregistrée a pulseLevel, la largeur en microsecondes et le code qui est l'indice dans la chaîne pulseWidths qui est supérieur à la largeur mesurée.

CalString peut améliorer la précision de l'ADC.

idleTimeout contrôle le nombre de millisecondes d'inactivité (aucune capture) avant l'arrêt automatique de l'appareil. Le mettre à 0 signifie qu'il n'expirera pas.

Les trois réglages de bouton contrôlent ce qui distingue les pressions courtes, moyennes et longues.

displayUpdate donne l'intervalle de rafraîchissement de l'affichage local.

Étape 6: Utilisation

L'appareil s'allume en appuyant brièvement sur le bouton.

L'écran affichera d'abord l'adresse IP locale pendant quelques secondes avant de commencer à afficher le niveau RSSI en temps réel.

Une brève pression sur un bouton lancera une capture RSSI dans un fichier. Normalement, cela se terminera à la fin de la durée RSSI, mais une nouvelle pression courte sur le bouton terminera également la capture.

Une pression moyenne sur un bouton lancera une capture de transition de données. L'écran affichera en attente de déclenchement. Lorsque le RSSI dépasse le niveau de déclenchement, il commence alors à capturer des transitions de données chronométrées pour le nombre de transitions spécifié.

Maintenir le bouton enfoncé plus longtemps que la durée prolongée du bouton mettra l'appareil hors tension.

Les commandes de capture peuvent également être lancées à partir de l'interface Web.

Étape 7: Interface Web

Interface Web
Interface Web
Interface Web
Interface Web

L'accès à l'appareil par son adresse IP affiche une interface Web avec 3 onglets; Captures, état et config.

L'écran des captures affiche les fichiers actuellement capturés. Le contenu d'un fichier peut être affiché en cliquant sur son nom. Il existe également des boutons de suppression et de téléchargement pour chaque fichier.

Il existe également des boutons Capture RSSI et Capture Data qui peuvent être utilisés pour lancer une capture. Si un nom de fichier est donné, il sera utilisé sinon un nom par défaut sera généré.

L'onglet config affiche la configuration actuelle et permet de modifier et d'enregistrer les valeurs s.

L'interface Web prend en charge les appels suivants

/edit - accéder au système de fichiers de l'appareil; peut être utilisé pour télécharger des fichiers de mesures

  • /status - renvoie une chaîne contenant les détails de l'état
  • /loadconfig -retourne une chaîne contenant les détails de la configuration
  • /saveconfig - envoie et enregistre une chaîne pour mettre à jour la configuration
  • /loadcapture - renvoie une chaîne contenant les mesures d'un fichier
  • /setmeasureindex - modifie l'index à utiliser pour la prochaine mesure
  • /getcapturefiles - obtient une chaîne avec la liste des fichiers de mesure disponibles
  • /capture - déclencher la capture de RSSI ou de données
  • /firmware - lancer la mise à jour du firmware

Conseillé: