Taula de continguts:

Indicador de velocitat d'Internet: 4 passos (amb imatges)
Indicador de velocitat d'Internet: 4 passos (amb imatges)

Vídeo: Indicador de velocitat d'Internet: 4 passos (amb imatges)

Vídeo: Indicador de velocitat d'Internet: 4 passos (amb imatges)
Vídeo: Generate Studio Quality Realistic Photos By Kohya LoRA Stable Diffusion Training - Full Tutorial 2024, Juliol
Anonim
Image
Image
Indicador de velocitat d'Internet
Indicador de velocitat d'Internet
Indicador de velocitat d'Internet
Indicador de velocitat d'Internet

Visió general

Aquest "indicador de velocitat d'Internet" us proporcionarà una supervisió gairebé en temps real de l'ús de la vostra xarxa. Aquesta informació està disponible a la interfície web de la majoria d’encaminadors domèstics. Tot i això, per accedir-hi cal que atureu la tasca actual per anar a buscar-la.

Volia veure aquesta informació sense haver d'interrompre la meva tasca actual, mostrar-la en un format que fos comprensible amb només un cop d'ull ràpid i obtenir la informació d'una manera que funcionés amb tants encaminadors com sigui possible, perquè altres poguessin potencialment també utilitzeu-lo.

Com funciona les coses

Em vaig decidir per SNMP (Simple Network Management Protocol) com la manera d’obtenir la informació del router. SNMP s’utilitza àmpliament en equips de xarxa i si el vostre dispositiu no l’admet per defecte es pot utilitzar DDWRT (firmware de router de codi obert) per implementar SNMP.

Per mostrar la informació d'una manera fàcil d'entendre, he utilitzat un indicador d'un cotxe. Els indicadors per a automoció estan dissenyats per proporcionar-vos informació sense distreure ni confondre, de manera que el conductor pot mantenir la vista a la carretera. A més, vaig tenir algunes estirades.

Com que estaria al meu escriptori, vaig decidir que també faria la llum de fons RGB perquè els accessoris de l'ordinador haurien de ser tots RGB. Dret?

Desafiaments

Els indicadors que tenia utilitzaven un actuador Air-Core. Mai no n’havia sentit a parlar abans d’aquest projecte.

De Wikipedia: L'indicador del nucli d'aire consta de dues bobines perpendiculars independents que envolten una cambra buida. Un eix d’agulla sobresurt a la cambra, on s’hi fixa un imant permanent. Quan el corrent flueix a través de les bobines perpendiculars, els seus camps magnètics se superposen i l’imant s’alinea lliure amb els camps combinats.

No he pogut trobar una biblioteca per a Arduino que admeti SNMP a la configuració del gestor. SNMP té dues formes principals: agent i gestor. Els agents responen a la sol·licitud i els gestors envien la sol·licitud als agents. Vaig poder fer funcionar la funcionalitat del gestor modificant la biblioteca Arduino_SNMP creada per 0neblock. Mai he programat en C ++, a part de fer parpellejar els LEDs en un Arduino, de manera que si hi ha problemes amb la biblioteca SNMP, feu-m’ho saber i intentaré solucionar-los, ara per ara funciona.

A més, SNMP no està dissenyat per a la visualització en temps real. L’ús previst és per al seguiment d’estadístiques i la detecció d’interrupcions. Per això, la informació del router només s'actualitza cada 5 segons (el dispositiu pot variar). Aquesta és la causa del retard entre el número de la prova de velocitat i el moviment de l'agulla.

Pas 1: eines i materials

Eines i materials
Eines i materials
Eines i materials
Eines i materials
Eines i materials
Eines i materials
Eines i materials
Eines i materials
Disseny de circuits
Disseny de circuits

Necessitarem 3 ponts H complets. Els models que he fet servir són Dual TB6612FNGand Dual L298N.

Cada actuador Air-Core requereix 2 ponts H complets perquè les bobines s’han de controlar independentment.

Un dels indicadors que estic fent servir té una bobina curta a terra amb un díode i una resistència. No estic segur de la ciència que hi ha al darrere, però fer-ho permet girar uns 90 graus amb només una bobina alimentada.

Utilitzaré el regulador de 12v a 5v que forma part de la placa L298N que he seleccionat per alimentar l’ESP32.

Tots els circuits LED són opcionals, així com els connectors JST. Podeu soldar fàcilment els cables directament a ESP32 i al controlador del motor.

Pas 3: disseny de codis

Configuració del codi

Haurem de configurar Arduino per poder utilitzar la placa ESP32. Aquí hi ha una bona guia que us guiarà per la configuració ESP32 Arduino.

També necessitareu la biblioteca Arduino_SNMP que es troba aquí.

Per configurar el codi, haureu de recopilar informació.

  1. IP del router
  2. Velocitat màxima de pujada
  3. Velocitat màxima de descàrrega
  4. El vostre nom i contrasenya WiFi
  5. OID que conté el recompte d'octets per a "in" i "out" a la interfície WAN dels routers

Hi ha OID estàndard (identificadors d’objectes) per a la informació que desitgem. Segons l'estàndard MIB-2, els números que volem són:

ifInOctets.1.3.6.1.2.1.2.2.1.16. X

ifOutOctets.1.3.6.1.2.1.2.2.1.10. X

On X és el número assignat a la interfície de la qual voleu obtenir les estadístiques. Per a mi, aquest número és 3. Una manera de confirmar que aquest és l’OID correcte i identificar quin número d’interfície heu d’utilitzar és utilitzar una eina com el navegador MIB.

Per aconseguir velocitats màximes, he utilitzat SpeedTest.net. un cop tingueu les velocitats en Mbps, haureu de convertir-les en octets mitjançant aquesta fórmula.

Octets per segon = (Resultat de la prova de velocitat en Mbps * 1048576) / 8

Funció de codi

El codi envia una petició d'obtenció SNMP al router. Aleshores, l’encaminador respon amb un número, que representa el recompte d’octets que s’han enviat o rebut. Al mateix temps, registrem el nombre de mil·lisegons que han passat des que va començar l'Arduino.

Un cop aquest procés hagi passat almenys dues vegades, podem calcular el percentatge d’ús basat en els nostres valors màxims mitjançant aquest codi

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

Les matemàtiques es desglossen així:

octetsDiff = snmp_result - Previous_ snmp_result

timeFrame = currentTime - timeLast

MaxPosableOverTime = (timeFrame * Octets_per_second) / 1000

Percentatge = (octetsDiff / MaxPosableOverTime) * 100

Ara que tenim el percentatge d'ús de la xarxa, només cal escriure-la al mesurador. Ho fem en 2 passos. Primer fem servir la funció updateDownloadGauge. En aquesta funció utilitzem "mapa" per convertir el percentatge a un nombre que representa una posició radiana a l'indicador. A continuació, donem aquest número a la funció setMeterPosition per moure l’agulla a la nova posició.

Pas 4: disseny de casos

Disseny de casos
Disseny de casos
Disseny de casos
Disseny de casos
Disseny de casos
Disseny de casos

Per contenir-ho tot, vaig dissenyar un recinte a fusion360 i el vaig imprimir en 3D. El disseny que he fet és relativament senzill. Vaig fer servir cola calenta per fixar els components a l'interior i es mantenia fixat l'indicador al seu lloc mitjançant un pinçament entre la tapa frontal i la tapa posterior. No cal que utilitzeu la impressió 3D per crear la funda. Per exemple, podeu fer una caixa de fusta o bé podeu tornar a posar-ho tot en la caixa original en què entraven els indicadors.

Els meus fitxers STL estan disponibles a thingiverse si voleu mirar-los, però és poc probable que us funcionin tret que obtingueu els mateixos indicadors que he utilitzat.

Expedients de casos:

Gràcies per llegir. Feu-me saber si teniu cap pregunta i faré tot el possible per respondre-us.

Recomanat: