Poniższy projekt został przetłumaczony na prośbę jednego z użytkowników elektroda.pl;)
Pomysł na zrobienie tego urządzenia pojawił się po tym jak korzystałem z fabrycznego testera ADSL.
Na jednym z forów, na których szukałem inspiracji, jeden z użytkowników zaprojektował urządzenie, które za pomocą podłączenia przez terminal pozwala uzyskać informacje z modemu o parametrach połączenia.
Biorąc pod uwagę, że takie urządzenia tworzy się na własne potrzeby, postanowiłem wybrać inne rozwiązanie. W danym przypadku chodzi o rozwiązania mobilne, więc laptop nie bardzo nam się tu przyda. Stwierdziłem, że najlepszym wyjściem będzie zaprojektowanie urządzenia na mikrokontrolerze.
Po przeszukaniu różnych zakamarków znalazłem wyświetlacz z telefonu na kartę wraz z płytką na mikrokontrolerze AT90S2313. W pracy bardzo mi pomogła pewna strona poświęcona mikrokontrolerom AVR:http://www.123avr.com/ [tekst w języku rosyjskim, przyp. tłum.].
Trochę teorii
Wiele osób wie, że modemem można sterować nie tylko za pomocą interfejsu WWW, ale też usługi telnet i konsoli. Chociaż większość modemów nie posiada złącza do konsoli na obudowie, wiele z nich ma je w środku na płytce. Tak więc należy podłączyć się dowolnym urządzeniem do portu konsoli (nawiasem mówiąc w modemie nie ma zwykłego portu RS-232, tylko UART(USART). Różni się tym, że pracuje z poziomami TTL, a nie bipolarnie jak w RS-232), wybrać odpowiednie komendy i po otrzymaniu odpowiedzi od modemu, zaznaczyć potrzebną informację i wyświetlić ją na wyświetlaczu.
Jak to działa
Firmware testowałem na modemie DLink DSL-2640, ale lepiej korzystać z modelu DLink DSL-2500 - pobiera mniej prądu (w przypadku pracy na zewnątrz i zasilania akumulatorem to niewątpliwa zaleta) i jest mniejszy. Przy odpowiednich umiejętnościach powinno się udać zamontować urządzenie w środku modemu.
Urządzenie podłączamy do modemu za pomocą trzech kabli - TxD, RxD i GND. O podłączeniu kabla konsoli do modemu DLink DSL-2640 możecie przeczytać tu: http://pudeev.livejournal.com/26499.html#cutid1 [tekst w języku rosyjskim, przyp. tłum.].
Rozkład pinów dla DSL-2500U/BRU/D
Podłączamy urządzenie do modemu.
Urządzenie na 0,5s wyświetli informację o autorze, a następnie komunikat o gotowości do wykonania pomiarów. Po połączeniu się z modemem (dsl się świeci), wciskamy pierwszy przycisk. Logujemy się (admin, admin) i wysyłamy komendę adsl info --show.
Fragment odpowiedzi modemu:
adsl: ADSL driver and PHY status
Status: Showtime Channel: FAST, Upstream rate = 924 Kbps, Downstream rate = 489
6 Kbps
Link Power State: L0
Mode: ADSL2+
Channel: Fast
Trellis: U
Line Status: No Defect
Training Status: Showtime
Down Up
SNR (dB): 32.5 11.0
Attn(dB): 7.0 0.6
Pwr(dBm): 0.0 2.6
Max(Kbps): 25684 1024
Rate (Kbps): 4896 924
G.dmt framing
K: 77(0) 29
R: 16 16
Parsujemy odpowiedź modemu i wyświetlamy na wyświetlaczu komunikat o parametrach SN i tłumieniu sygnału. Po powtórnym wciśnięciu przycisku wyświetla się prędkość maksymalna i bieżąca. W przypadku drugiego przycisku pierwsze wciśnięcie to wyświetlenie trybu, a drugie - mocy. Przycisk przekierowania nie jest wymagany, można go nie umieszczać na panelu.
Chociaż korzystałem z układu scalonego AT90S2313, ponieważ akurat takim dysponowałem, lepiej wybrać ATtiny2313 - w jego przypadku minimalne napięcie zasilania wynosi ok. 2V, co umożliwia zasilanie z modemu (większość modemów posiada wewnętrzne zasilane 3,3V).
Schemat urządzenia
Elementy
Korzystałem z wyświetlacza 2x16 z telefonu na kartę, ale można również wykorzystać dowolny dwuwierszowy na kontrolerze HD44780. Rezonator kwarcowy powinien być na 3,686MHz, ale ja miałem tylko na 3,580MHz (wszystko pracuje stabilnie). Przy 4MHz generujemy dużo zakłóceń do modemu W moim przypadku urządzenie jest zasilane ze stabilizatora napięcia modemu. Gniazdo zasilania zamontowałem w obudowie urządzenia, od którego idzie kabel zasilający do modemu. Wyłącznik włącza i wyłącza zarówno samo urządzenie, jak i modem.
W załączniku:
Kod dla AT90S2313 (źródło CodeVisionAVR V2.05.0 i projekt w ISIS 7 Professional)
Kod dla AT90S2313 (zmodyfikowany - wykorzystałem timery, zoptymalizowałem kod)
Płytka drukowana od użytkownika tauro dla obudowy DIP-20 w Sprint Layout
Firmware od alez59 dla DSL-2500 na AT90S2313 (tylko plik HEX)
O tym jak wgrać firmware można przeczytać tutaj: http://www.123avr.com/07.htm [tekst w języku rosyjskim, przyp. tłum.].
Tak wygląda moje urządzenie z zewnątrz:
A tak w środku:
Uwaga: Ponieważ układ scalony AT90S2313 nie jest już produkowany, przygotowałem program w przypadku zastąpienia go ATtiny2313.
W załączniku:
Kod dla ATtiny2313 (źródło CodeVisionAVR V2.05.0 i projekt w ISIS 7 Professional)
Kod dla ATtiny2313 (zmodyfikowany - wykorzystałem timery, zoptymalizowałem kod. Sprawdzane tylko na emulatorze!)
Jest to trochę bardziej skomplikowane, trzeba odpowiednio wstawić FUSE bity przy wgrywaniu firmware. Teoretycznie na emulatorze sobie z tym poradziłem (CodeVisionAVR)
Autor prosi, aby jego projekt nie był wykorzystywany w celach komercyjnych.
Źródło tłumaczonego tekstu: http://adslinfo.org.ua/25-adsl-tester-svoimi-rukami.html
Fajne? Ranking DIY
