Table des matières:

Jauge de vitesse Internet : 4 étapes (avec photos)
Jauge de vitesse Internet : 4 étapes (avec photos)

Vidéo: Jauge de vitesse Internet : 4 étapes (avec photos)

Vidéo: Jauge de vitesse Internet : 4 étapes (avec photos)
Vidéo: Comment améliorer sa connexion internet en changeant 1 seul paramètre ! 2024, Juillet
Anonim
Image
Image
Jauge de vitesse Internet
Jauge de vitesse Internet
Jauge de vitesse Internet
Jauge de vitesse Internet

Aperçu

Cette "jauge de vitesse Internet" vous donnera une surveillance en temps quasi réel de votre utilisation du réseau. Ces informations sont disponibles sur l'interface Web de la plupart des routeurs domestiques. Cependant, pour y accéder, vous devez arrêter votre tâche en cours pour la rechercher.

Je voulais afficher ces informations sans avoir à interrompre ma tâche en cours, les afficher dans un format compréhensible d'un simple coup d'œil et obtenir les informations d'une manière qui fonctionnerait avec autant de routeurs que possible, afin que d'autres puissent l'utiliser aussi potentiellement.

Comment ça fait les choses

J'ai opté pour SNMP (Simple Network Management Protocol) comme moyen d'obtenir les informations du routeur. SNMP est largement utilisé dans les équipements réseau et si votre appareil ne le prend pas en charge par défaut, DDWRT (micrologiciel de routeur open source) peut être utilisé pour implémenter SNMP.

Pour afficher les informations d'une manière facile à comprendre, j'ai utilisé une jauge d'une voiture. Les jauges automobiles sont conçues pour vous donner des informations sans être distrayantes ou déroutantes, afin que le conducteur puisse garder les yeux sur la route. De plus, j'en ai eu un peu à traîner.

Comme ce serait sur mon bureau, j'ai décidé de faire également le rétro-éclairage RVB car les accessoires informatiques devraient tous être RVB. Droit?

Défis

Les jauges que j'avais utilisent un actionneur Air-Core. Je n'en avais jamais entendu parler avant ce projet.

De Wikipédia: La jauge à noyau d'air se compose de deux bobines perpendiculaires indépendantes entourant une chambre creuse. Une tige d'aiguille fait saillie dans la chambre, où un aimant permanent est fixé à la tige. Lorsque le courant traverse les bobines perpendiculaires, leurs champs magnétiques se superposent et l'aimant est libre de s'aligner avec les champs combinés.

Je n'ai pas pu trouver de bibliothèque pour Arduino prenant en charge SNMP dans la configuration du gestionnaire. SNMP a deux formes principales, agent et gestionnaire. Les agents répondent à la demande et les gestionnaires envoient la demande aux agents. J'ai pu faire fonctionner la fonctionnalité du gestionnaire en modifiant la bibliothèque Arduino_SNMP créée par 0neblock. Je n'ai jamais programmé en C++ autre que de faire clignoter les LED sur un Arduino, donc s'il y a des problèmes avec la bibliothèque SNMP, faites-le moi savoir et j'essaierai de les réparer, pour l'instant cela fonctionne cependant.

De plus, SNMP n'est pas conçu pour une visualisation en temps réel. L'utilisation prévue est le suivi des statistiques et la détection des pannes. Pour cette raison, les informations sur le routeur ne sont mises à jour que toutes les 5 secondes environ (votre appareil peut varier). C'est la cause du délai entre le nombre sur le test de vitesse et le déplacement de l'aiguille.

Étape 1: Outils et matériaux

Outils et matériaux
Outils et matériaux
Outils et matériaux
Outils et matériaux
Outils et matériaux
Outils et matériaux
Outils et matériaux
Outils et matériaux
Conception de circuits
Conception de circuits

Nous aurons besoin de 3 ponts en H complets. Les modèles que j'ai utilisés sont Dual TB6612FNG et Dual L298N.

Chaque actionneur Air-Core nécessite 2 ponts en H complets car les bobines doivent être contrôlées indépendamment.

L'une des jauges que j'utilise a une bobine court-circuitée à la terre avec une diode et une résistance. Je ne suis pas sûr de la science derrière cela, mais cela lui permet de tourner à environ 90 degrés avec une seule bobine alimentée.

J'utiliserai le régulateur 12v à 5v qui fait partie de la carte L298N que j'ai sélectionnée pour alimenter l'ESP32.

Tous les circuits LED sont optionnels, ainsi que les connecteurs JST. Vous pouvez facilement souder les fils directement à l'ESP32 et au pilote de moteur.

Étape 3: Conception de code

Configuration du code

Nous devrons configurer Arduino pour pouvoir utiliser la carte ESP32. Il y a un bon guide situé ici qui vous guidera à travers la configuration ESP32 Arduino.

Vous aurez également besoin de la bibliothèque Arduino_SNMP située ici.

Pour configurer le code, vous devrez collecter certaines informations.

  1. IP du routeur
  2. Vitesse de téléchargement maximale
  3. Vitesse de téléchargement maximale
  4. Votre nom et mot de passe WiFi
  5. OID qui contient le nombre d'octets pour "in" et "out" sur l'interface WAN de vos routeurs

Il existe des OID (Object Identifiers) standard pour les informations que nous voulons. Selon la norme MIB-2 les nombres que nous voulons sont:

ifInOctets.1.3.6.1.2.1.2.2.1.16. X

ifOutOctets.1.3.6.1.1.2.1.2.2.1.10. X

Où X est le numéro attribué à l'interface à partir de laquelle vous souhaitez obtenir les statistiques. Pour moi, ce nombre est 3. Une façon de confirmer qu'il s'agit du bon OID pour vous et d'identifier le numéro d'interface que vous devez utiliser consiste à utiliser un outil tel que MIB Browser.

Pour obtenir des vitesses maximales, j'ai utilisé SpeedTest.net. une fois que vous avez vos vitesses en Mbps, vous devrez les convertir en octets en utilisant cette formule.

Octets par seconde = (Résultat du test de vitesse en Mbps * 1048576) / 8

Fonction de code

Le code envoie une demande d'obtention SNMP au routeur. Le routeur répond alors avec un nombre, le nombre représente le nombre d'octets qui ont été envoyés ou reçus. Dans le même temps, nous enregistrons le nombre de millisecondes écoulées depuis le démarrage de l'Arduino.

Une fois que ce processus s'est produit au moins deux fois, nous pouvons calculer le pourcentage d'utilisation en fonction de nos valeurs maximales à l'aide de ce code

percentDown = ((float)(byteDown - byteDownLast)/(float)(maxDown*((millis() - timeLast)/1000)))) * 100;

Le calcul se décompose ainsi:

octetsDiff = snmp_result - Précédent_ snmp_result

timeFrame = currentTime - timeLast

MaxPosableOverTime = (timeFrame * Octets_per_second)/1000

Pourcentage = (octetsDiff / MaxPosableOverTime) * 100

Maintenant que nous avons le pourcentage d'utilisation du réseau, il nous suffit de l'écrire dans la jauge. Nous le faisons en 2 étapes. Nous utilisons d'abord la fonction updateDownloadGauge. Dans cette fonction, nous utilisons « map » pour convertir le pourcentage en un nombre qui représente une position en radian sur la jauge. Ensuite, nous donnons ce numéro à la fonction setMeterPosition pour déplacer l'aiguille vers la nouvelle position.

Étape 4: Conception du boîtier

Conception de boîtier
Conception de boîtier
Conception de boîtier
Conception de boîtier
Conception de boîtier
Conception de boîtier

Pour tout contenir, j'ai conçu un boîtier en fusion360 et je l'ai imprimé en 3D. Le design que j'ai fait est relativement simple. J'ai utilisé de la colle chaude pour fixer les composants à l'intérieur et la jauge est maintenue en place en étant pincée entre le capot avant et le capot arrière. Vous n'avez pas besoin d'utiliser l'impression 3D pour créer le boîtier. Par exemple, vous pouvez fabriquer un étui en bois ou tout remettre dans l'étui d'origine dans lequel les jauges sont arrivées.

Mes fichiers STL sont disponibles sur thingiverse si vous souhaitez les consulter, mais il est peu probable qu'ils fonctionnent pour vous à moins que vous n'obteniez exactement les mêmes jauges que celles que j'ai utilisées.

Dossiers:

Merci d'avoir lu. Faites-moi savoir si vous avez des questions et je ferai de mon mieux pour y répondre.

Conseillé: