Spisu treści:
- Krok 1: Plan
- Krok 2: Rzeczy, których będziesz potrzebować
- Krok 3: Obliczanie prądu ugięcia w pełnej skali
- Krok 4: Tworzenie żądania SNMP GET
- Krok 5: Zrozumienie odpowiedzi GET
- Krok 6: Przetwornik cyfrowo-analogowy (DAC)
- Krok 7: Zgromadzenie
- Krok 8: Czas na kodowanie
- Krok 9: Ciesz się
Wideo: Internetowy prędkościomierz: 9 kroków (ze zdjęciami)
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:28
Wraz z całkowitą blokadą w Indiach wszystko, w tym usługi pocztowe, zostało zamknięte. Żadnych nowych projektów PCB, żadnych nowych komponentów, nic! Aby więc przezwyciężyć nudę i zająć się czymś, postanowiłem zrobić coś z części, które już mam w domu. Zacząłem szukać od sterty śmieci elektronicznych i znalazłem stary, zepsuty multimetr analogowy. Uratowałem z niej „ruch licznika” i postanowiłem wyświetlić jakąś informację, ale nie bardzo wiedziałem co. Najpierw pomyślałem o wyświetleniu statystyk COVID-19, ale w Internecie jest już wiele lepszych projektów. Również dane są aktualizowane po kilku godzinach i nieruchoma wskazówka miernika byłaby nudna. Potrzebowałem danych, które zmieniają się szybko, co sekundę. Poprosiłem o sugestie na Instagramie, a jeden z moich obserwujących odpowiedział Internetowym prędkościomierzem. Brzmiało to interesująco i postanowiłem to zrobić!
W tej instrukcji pokażę, jak pobrałem dane z mojego routera WiFi za pomocą SNMP i wyświetliłem prędkości przesyłania i pobierania na liczniku.
Zacznijmy
Krok 1: Plan
Jak zawsze przed rozpoczęciem projektu zrobiłem trochę researchu w Internecie. Znalazłem kilka projektów związanych z tym tematem. Były dwojakiego rodzaju. Jeden, który pokazywał prędkość Internetu, mierząc „siłę” sygnału Wi-Fi. Nie jestem ekspertem od sieci, ale to nie brzmiało dobrze. Inni mierzyli opóźnienie i klasyfikowali prędkość jako powolną, średnią lub szybką. Opóźnienie to opóźnienie między wysłaniem żądania a otrzymaniem odpowiedzi, więc nie może być rzeczywistą reprezentacją prędkości Internetu. Możemy to jednak nazwać szybkością odpowiedzi sieci! Potem były legalne projekty, które mierzyły czas potrzebny na pobranie niektórych danych i na tej podstawie obliczały prędkość Internetu.
Ale to właśnie w tym projekcie (Alistaira) dowiedziałem się o Simple Network Management Protocol lub SNMP. Za pomocą SNMP możemy komunikować się z routerem WiFi i bezpośrednio z niego pobierać wymagane dane. Łatwe, prawda? Właściwie nie! Ponieważ różne modele routerów WiFi mają różne ustawienia i wymagają wielu prób i błędów, zanim w końcu uzyskasz dane wyjściowe. Nie bój się. Wyjaśnię pokrótce, czego się dowiedziałem o SNMP i trudnościach, jakie napotkałem w kolejnych krokach.
Plan polega więc na użyciu NodeMCU do połączenia z routerem WiFi. Oto kroki prowadzące do ostatecznego wyniku:
- Wyślij żądanie do routera „żądające” wymagane dane
- Uzyskaj odpowiedź od routera
- Przeanalizuj odpowiedź i przeanalizuj z niej wymagane dane
- Przekształć „surowe” dane w zrozumiałe informacje
- Wygeneruj napięcie proporcjonalne do prędkości internetu dla licznika
- Powtarzać
Do sterowania miernikiem będę używał przetwornika cyfrowo-analogowego lub przetwornika cyfrowo-analogowego.
Krok 2: Rzeczy, których będziesz potrzebować
1x WęzełMCU
1x ruch miernika analogowego
1x przetwornik cyfrowo-analogowy MPU4725
1x przełącznik SPDT
Potencjometr 1x10 k
1x Rezystor
Krok 3: Obliczanie prądu ugięcia w pełnej skali
Uwaga: Przejdź do kroku 7, aby uzyskać aktualną wersję!
Pomiń ten krok, jeśli znasz już prąd odchylenia w pełnej skali dla swojego miernika. Mój licznik nie miał o tym wzmianki, więc musiałem liczyć. Ale najpierw zobaczmy, jak działa taki ruch. Składa się z cewki zawieszonej w polu magnetycznym. Kiedy prąd przepływa przez cewkę, zgodnie z prawem Faradaya, doświadcza siły. Cewka może się swobodnie obracać w polu magnetycznym, podobnie jak wskaźnik przymocowany do cewki. Wielkość prądu, który powoduje ruch wskaźnika na „końcu skali”, nazywa się prądem odchylania pełnej skali. Jest to również maksymalny prąd, który musi przepłynąć przez cewkę.
Dzieje się dużo więcej, ale to wystarczy do tego, co robimy. Mamy teraz ruch. Może być używany jako woltomierz poprzez dodanie z nim dużej rezystancji szeregowo lub jako amperomierz poprzez dodanie niewielkiej rezystancji równolegle do niego. Będziemy używać go jako woltomierza do wyświetlania napięcia proporcjonalnego do prędkości Internetu. Musimy więc obliczyć opór, który ma być dodany szeregowo. W tym celu najpierw musimy obliczyć prąd ugięcia w pełnej skali.
- Wybierz wysoką wartość rezystancji (np. >100k)
- Połącz go szeregowo z ruchem i przyłóż do niego zmienne napięcie za pomocą garnka.
- Powoli zwiększaj napięcie, aż wskaźnik osiągnie koniec skali.
- Za pomocą multimetru zmierz przepływający prąd. Jest to prąd ugięcia w pełnej skali. (I = 150uA w moim przypadku)
Używamy przetwornika cyfrowo-analogowego o napięciu wyjściowym w zakresie od 0 do VCC (3,3 V dzięki NodeMCU). Oznacza to, że po przyłożeniu napięcia 3,3 V do miernika powinien wskazywać koniec skali. Może się to zdarzyć, gdy prąd odchylający w pełnej skali przepływa przez obwód po przyłożeniu napięcia 3,3 V. Korzystając z prawa Ohma, 3.3/(prąd odchylania pełnej skali) podaje wartość rezystancji, która ma być wstawiona szeregowo.
Krok 4: Tworzenie żądania SNMP GET
Simple Network Management Protocol (SNMP) to protokół standardu internetowego służący do gromadzenia i organizowania informacji o zarządzanych urządzeniach w sieciach IP oraz do modyfikowania tych informacji w celu zmiany zachowania urządzenia. Urządzenia, które zazwyczaj obsługują SNMP, to modemy kablowe, routery, przełączniki, serwery, stacje robocze, drukarki i inne. W tej wersji będziemy komunikować się z naszym routerem WiFi za pomocą protokołu SNMP i uzyskać wymagane dane.
Ale najpierw musimy wysłać żądanie znane jako „GET Request” do routera, podając szczegóły danych, które chcemy. Format GET Request jest pokazany na rysunku. Prośba składa się z różnych części. Podkreśliłem bajty, które możesz chcieć zmienić.
Pamiętaj, że wszystko jest w systemie szesnastkowym.
Wiadomość SNMP - W moim przypadku długość całej wiadomości to 40 (kolor szary), co po przeliczeniu na szesnastkę wynosi 0x28.
SNMP Community String - Wartość 'PUBLIC' jest zapisywana w systemie szesnastkowym jako '70 75 62 6C 69 63' o długości 6 (żółty).
SNMP PDU Type - W moim przypadku długość wiadomości to 27 (niebieski) czyli 0x1B.
Varbind List Type - W moim przypadku długość wiadomości to 16 (zielony) czyli 0x10.
Varbind Type - W moim przypadku długość wiadomości to 14 (różowy) czyli 0x0E.
Identyfikator obiektu -
Jak wspomniano wcześniej, urządzenia sieciowe obsługujące protokół SNMP (np. routery, przełączniki itp.) utrzymują bazę danych informacji o stanie systemu, dostępności i wydajności jako obiekty identyfikowane przez identyfikatory OID. Musisz zidentyfikować identyfikatory OID routera dla pakietów przesyłania i pobierania. Można to zrobić za pomocą bezpłatnej przeglądarki MIB, takiej jak ta.
Wpisz adres jako 192.168.1.1 i OID jako.1.3.6.1.2.1.2.2.1.10.x (ifInOctets) lub.1.3.6.1.2.1.2.2.1.16.x. (ifOutOctets). Wybierz Pobierz operację i kliknij Go. Powinieneś zobaczyć OID wraz z jego wartością i typem.
W moim przypadku długość wiadomości to 10 (czerwony) czyli 0x0A. Zastąp wartość identyfikatorem OID. W tym przypadku „2B 06 01 02 01 02 02 01 10 10”
Otóż to! Twoja wiadomość z prośbą jest gotowa. Zachowaj resztę bajtów bez zmian.
WŁĄCZANIE SNMP na routerze:
- Zaloguj się na stronie routera WiFi przez bramę domyślną. Wpisz 192.168.1.1 w przeglądarce i naciśnij enter. Domyślnie nazwa użytkownika i hasło powinny brzmieć „admin”.
- Używam routera TP-LINK (TD-W8961N). W przypadku tego routera należy przejść do Zarządzanie dostępem > SNMP i wybrać opcję „Aktywowany”.
- Społeczność GET: public
- Host pułapki: 0.0.0.0
Krok 5: Zrozumienie odpowiedzi GET
Możesz pominąć ten krok, ale dobrze jest wiedzieć, czy musisz rozwiązać problem.
Po przesłaniu kodu i uruchomieniu go możesz przyjrzeć się odpowiedzi na monitorze szeregowym. Powinien wyglądać tak, jak pokazano na zdjęciu. Musisz poszukać kilku bajtów, które zaznaczyłem.
Począwszy od 0, 15. bajt określa typ PDU - 0xA2 oznacza, że jest to GetResponse.
48. bajt mówi o typie danych - 0x41 oznacza, że typem danych jest Licznik.
49. bajt mówi o długości danych - 0x04 oznacza, że dane mają długość 4 bajtów.
Bajt 50, 51, 52, 53 zawiera dane.
Krok 6: Przetwornik cyfrowo-analogowy (DAC)
Mikrokontrolery to urządzenia cyfrowe, które nie rozumieją bezpośrednio napięć analogowych. Używam miernika analogowego, który wymaga zmiennego napięcia jako wejścia. Ale mikrokontroler może po prostu wyprowadzać WYSOKIE (3,3 V w przypadku NodeMCU) i NISKI (0 V). Teraz możesz powiedzieć, dlaczego po prostu nie używasz PWM. Nie będzie działać, ponieważ miernik wyświetli tylko średnią wartość.
Używam przetwornika cyfrowo-analogowego MCP4725, aby uzyskać zmienne napięcie. Jest to 12-bitowy przetwornik cyfrowo-analogowy, czyli w uproszczeniu dzieli od 0 do 3,3 V na 4096 (= 2^12) części. Rozdzielczość wyniesie 3,3/4096 = 0,8056mV. Oznacza to, że 0 odpowiada 0V, 1 odpowiada 0.8056mV, 2 odpowiada 1.6112mV, ….., 4095 odpowiada 3.3V.
Prędkość Internetu zostanie „mapowana” od „0 do 7 Mb/s” do „0 do 4095”, a następnie ta wartość zostanie przekazana do przetwornika cyfrowo-analogowego w celu wyprowadzenia napięcia proporcjonalnego do prędkości Internetu.
Krok 7: Zgromadzenie
Połączenia są bardzo proste. Schemat został dołączony tutaj.
Zaprojektowałem i wydrukowałem skalę. Górna dotyczy prędkości pobierania, a dolna prędkości wysyłania. Nową skalę nakleiłem na starą.
Wyjąłem wszystkie stare rzeczy z multimetru i wszystko w niego upchałem. To było ciasno dopasowane. Musiałem wywiercić otwór z przodu, aby podłączyć przełącznik, który służy do wyboru między prędkością przesyłania i pobierania.
Krok 8: Czas na kodowanie
Kod został dołączony tutaj. Pobierz i otwórz w Arduino IDE. Zainstaluj bibliotekę MCP4725 z Adafruit.
Zanim prześlesz:
- Wprowadź swój SSID Wi-Fi i hasło
- Wprowadź maksymalną prędkość wysyłania i pobierania podaną na wadze.
- Wprowadź niezbędne zmiany w tablicy żądań, aby pobrać i przesłać pakiety.
- Odkomentuj wiersz 165, aby wyświetlić odpowiedź na monitorze szeregowym.
Hit prześlij!
Krok 9: Ciesz się
Włącz go i ciesz się oglądaniem tańczącej igły podczas surfowania po Internecie!
Dziękuję za trzymanie się do końca. Mam nadzieję, że wszyscy kochacie ten projekt i nauczyliście się dzisiaj czegoś nowego. Daj mi znać, jeśli zrobisz dla siebie. Subskrybuj mój kanał na YouTube, aby zobaczyć więcej takich projektów.
Zalecana:
Prędkościomierz GPS: 4 kroki (ze zdjęciami)
Prędkościomierz GPS: Mój samochód służbowy, którym normalnie jeżdżę, ma zwykle „mały”; problemy od czasu do czasu, prędkościomierz spada do 0 km/h podczas jazdy (po jakimś czasie wznawia się ponownie). Normalnie nie jest to duży problem, ponieważ jeśli wiesz, jak prowadzić samochód
Działający prędkościomierz RC Car: 4 kroki (ze zdjęciami)
Działający prędkościomierz RC Car: Jest to krótki projekt, który stworzyłem jako część większej wersji RC lekkiego Land Rovera. Uznałem, że podoba mi się działający prędkościomierz na desce rozdzielczej, ale wiedziałem, że serwo go nie przetnie. Była tylko jedna rozsądna opcja: d
Prędkościomierz cyklu DIY: 6 kroków (ze zdjęciami)
Prędkościomierz rowerowy DIY: Ten projekt przyszedł mi do głowy, gdy robiłem mój projekt MEM (pomiar inżynierii mechanicznej), temat w moim B.tech. Pomysł polega na zmierzeniu prędkości kątowej koła mojego roweru. W ten sposób znając średnicę i wszech czasów matematyczną legendę th
Wyświetlacz ESP32 i OLED: Zegar internetowy - DHT22: 10 kroków (ze zdjęciami)
Wyświetlacz ESP32 i OLED: zegar internetowy - DHT22: Ten Instructable bierze udział w konkursie: „GIFs Challenge 2017”. Jeśli Ci się spodoba, oddaj swój głos, klikając powyższy baner. Wielkie dzięki!;-)Ten samouczek jest kontynuacją podróży, aby dowiedzieć się więcej o tym wspaniałym urządzeniu IoT
Internetowy pomiar wody z IoBridge: 10 kroków (ze zdjęciami)
Pomiary wody oparte na sieci Web z IoBridge: Po projekcie licznika energii w czasie rzeczywistym, który wykonałem w styczniu, następnym logicznym krokiem wydawał się być wodomierz oparty na ioBridge. Spójrzmy prawdzie w oczy, samo oszczędzanie energii nie uratuje planety. Istnieje wiele zasobów oprócz wybranych