1. Главная страница » Компьютеры

Lan тестер своими руками

Автор: | 16.12.2019


Начну с того, что данная статья — опыт повторения устройства, впервые опубликованного на ресурсе Хабрахабр.

(К сожалению, мне не удалось связаться с автором устройства. Были и вопросы, и пожелания, и вообще хотелось помочь дальнейшему развитию проекта. Я честно прошел регистрацию, ответил на кучу разных вопросов и все равно, мой статус — READ ONLY 🙁 Весьма странное отношение со стороны администрации ресурса. Ну да ладно, учитывая, тот факт, что разработчик любезно предоставил все информацию по тестеру (включая исходники), он не будет в большой обиде на мой опус).

Итак, автор все очень подробно и дотошно описал. Так, сказать, бери и делай. Но, печатная плата сделана в программе DipTrace , вроде как проблема и не вселенского масштаба, но, как правило, все DIY-разработчики (по крайне мере, на постсоветском пространстве) стараются использовать Sprintlayout.

Кстати, у автора в схеме есть небольшая опечатка, которая меня немного сбила с толку при проверке…
Вот исправленная схема:

Итак, список необходимых для повторения деталей:

Atmega16 (DIP) + колодка
Кварц 8Mhz
стабилизатор на 5В 78M05 (smd)
супрессор 1,5КЕ6,8СА — 8шт
HD44780-совм. дисплей (WH-1604A-YYH-CT#) — 4 строчный
стабилитрон 5.1В — 1шт
разьем LAN — 2шт
ОПЦИОНАЛЬНО: разъем для подключения батарейки «Крона»
колодка 2х5 + ответная часть
колодка 2х10 + ответная часть
конденсатор 22pF — 2шт
конденсатор 100n — 1шт
резистор 1М (0,25Вт) -8шт
(резисторы smd все типоразмера 1206)
8.2kOm (smd) — 9шт
100 Om (smd) — 1шт
1k (smd) — 1шт
2k (smd) — 1шт
3k (smd) — 1шт
5.1k (smd) — 1шт
10k (smd) — 3шт
15k (smd) — 1шт
22k (smd) — 1шт
51k (smd) — 1шт
подстроечный резистор 10кОм
пластиковый корпус 125х70х35

Читайте также:  Msi x370 gaming plus биос

Слегка подкорректированная печатная плата в программе Sprintlayout:

Процесс ЛУТ-а, травления и запайки не представляет ничего нового и интересного:

Вид сверху:

Теперь остановимся на прошивке. Прошивка фьюзов, лично для меня, ОЧЕНЬ туманное дело.
У автора в командной строке для avreal32 указанно следующее:

Ага, засада. Имеющийся у меня программатор USBTinyISP программой AVREAL32 не поддерживается 🙁 Обидно. Ладно, попробуем пересчитать фьюзы…
Тут хороший калькулятор фьюзов.
Получаем:
.

Прошивая первый раз, я не учел необходимость отключения JTAG 🙁 и после прошивки получил следующее сообщение на экране:

Ну, вроде как все хорошо… Разобрались.
Наша строчка для запуска прошивки должна выглядеть так:

Прошиваем микроконтроллер с помощью AVRDUDE и программатора USBTinyISP :

После «правильной» прошивки, запускаем устройство и радостно наблюдаем следующий текст на экране:

На скорую руку делаем «подобие» ответной части (очень уж хотелось потестировать устройство):

Результаты тестирования:
Подключаем обычный патч-корд

Кусок обкусанного патч-корда с 2-мя парами закороченных жил:

Все, очень даже неплохо. Мысленно благодарю автора (некий Potok, он же Иванов Георгий Александрович из города Астрахань)!!

Для питания, я использовал два последовательно соединенных аккумулятора от мобильных телефонов. Сначала планировал сделать разъем USB для их подзарядки… Но потом, отказался от этой идеи. Т.е., в случае необходимости зарядки, придется разбирать корпус и по отдельности заряжать аккумуляторы 🙁 Надеюсь, что это нужно будет делать КРАЙНЕ-КРАЙНЕ редко 🙂

А вот тут самое длительное дело: размещение всего хозяйства в корпус:

Внешний вид:

На фото уже «нормально» сделанная заглушка. Я ее прикрепил на шнурочке (чтобы не потерялась).

еще ракурс:

Приятный момент. Судя по чтению комментариев к статье автора (я же могу только читать :(( ), он озадачился написанием новой прошивки, с новыми возможностями. Так, что разъем на плате под ISP — очень даже важен. Поживем — увидим!

Традиционно, все необходимое, для повторения сложено в один архив. Забирайте тут .
Исходный материал автора сложен в каталог: . _Original version


Начну с того, что данная статья — опыт повторения устройства, впервые опубликованного на ресурсе Хабрахабр.

(К сожалению, мне не удалось связаться с автором устройства. Были и вопросы, и пожелания, и вообще хотелось помочь дальнейшему развитию проекта. Я честно прошел регистрацию, ответил на кучу разных вопросов и все равно, мой статус — READ ONLY 🙁 Весьма странное отношение со стороны администрации ресурса. Ну да ладно, учитывая, тот факт, что разработчик любезно предоставил все информацию по тестеру (включая исходники), он не будет в большой обиде на мой опус).

Итак, автор все очень подробно и дотошно описал. Так, сказать, бери и делай. Но, печатная плата сделана в программе DipTrace , вроде как проблема и не вселенского масштаба, но, как правило, все DIY-разработчики (по крайне мере, на постсоветском пространстве) стараются использовать Sprintlayout.

Кстати, у автора в схеме есть небольшая опечатка, которая меня немного сбила с толку при проверке…
Вот исправленная схема:

Итак, список необходимых для повторения деталей:

Atmega16 (DIP) + колодка
Кварц 8Mhz
стабилизатор на 5В 78M05 (smd)
супрессор 1,5КЕ6,8СА — 8шт
HD44780-совм. дисплей (WH-1604A-YYH-CT#) — 4 строчный
стабилитрон 5.1В — 1шт
разьем LAN — 2шт
ОПЦИОНАЛЬНО: разъем для подключения батарейки «Крона»
колодка 2х5 + ответная часть
колодка 2х10 + ответная часть
конденсатор 22pF — 2шт
конденсатор 100n — 1шт
резистор 1М (0,25Вт) -8шт
(резисторы smd все типоразмера 1206)
8.2kOm (smd) — 9шт
100 Om (smd) — 1шт
1k (smd) — 1шт
2k (smd) — 1шт
3k (smd) — 1шт
5.1k (smd) — 1шт
10k (smd) — 3шт
15k (smd) — 1шт
22k (smd) — 1шт
51k (smd) — 1шт
подстроечный резистор 10кОм
пластиковый корпус 125х70х35

Слегка подкорректированная печатная плата в программе Sprintlayout:

Процесс ЛУТ-а, травления и запайки не представляет ничего нового и интересного:

Вид сверху:

Теперь остановимся на прошивке. Прошивка фьюзов, лично для меня, ОЧЕНЬ туманное дело.
У автора в командной строке для avreal32 указанно следующее:

Ага, засада. Имеющийся у меня программатор USBTinyISP программой AVREAL32 не поддерживается 🙁 Обидно. Ладно, попробуем пересчитать фьюзы…
Тут хороший калькулятор фьюзов.
Получаем:
.

Прошивая первый раз, я не учел необходимость отключения JTAG 🙁 и после прошивки получил следующее сообщение на экране:

Ну, вроде как все хорошо… Разобрались.
Наша строчка для запуска прошивки должна выглядеть так:

Прошиваем микроконтроллер с помощью AVRDUDE и программатора USBTinyISP :

После «правильной» прошивки, запускаем устройство и радостно наблюдаем следующий текст на экране:

На скорую руку делаем «подобие» ответной части (очень уж хотелось потестировать устройство):

Результаты тестирования:
Подключаем обычный патч-корд

Кусок обкусанного патч-корда с 2-мя парами закороченных жил:

Все, очень даже неплохо. Мысленно благодарю автора (некий Potok, он же Иванов Георгий Александрович из города Астрахань)!!

Для питания, я использовал два последовательно соединенных аккумулятора от мобильных телефонов. Сначала планировал сделать разъем USB для их подзарядки… Но потом, отказался от этой идеи. Т.е., в случае необходимости зарядки, придется разбирать корпус и по отдельности заряжать аккумуляторы 🙁 Надеюсь, что это нужно будет делать КРАЙНЕ-КРАЙНЕ редко 🙂

А вот тут самое длительное дело: размещение всего хозяйства в корпус:

Внешний вид:

На фото уже «нормально» сделанная заглушка. Я ее прикрепил на шнурочке (чтобы не потерялась).

еще ракурс:

Приятный момент. Судя по чтению комментариев к статье автора (я же могу только читать :(( ), он озадачился написанием новой прошивки, с новыми возможностями. Так, что разъем на плате под ISP — очень даже важен. Поживем — увидим!

Традиционно, все необходимое, для повторения сложено в один архив. Забирайте тут .
Исходный материал автора сложен в каталог: . _Original version

Проблема тестирования свежепроложенной локальной сети актуальна всегда. Когда-то мне в руки попала железка под названием «Rapport II», которая, вообще говоря, тестер для систем CCTV, но витую пару прозванивать умеет тоже. Железка та давно уже умерла, а вот впечатление осталось: при тестировании витой пары она показывала не просто переполюсовку и распарку, но точную схему обжима! Например, для кроссовера это выглядело 1 &#x2192 3, 2 &#x2192 6, 3 &#x2192 1, и так далее.
Но заплатить порядка 800 нерусских рублей за устройство, в котором я реально буду использовать всего одну функцию? Увольте! Как же это работает, может, проще сделать самому? Гугл в руки, и… сплошное разочарование. Вывод поиска состоит на 80% из мигалок светодиодами на сдвиговом регистре / AVR / PIC / свой вариант, и на 20% из глубокомысленных обсуждений форумных гуру на темы «купите %название_крутой_железки_за_100499.99_вечнозеленых% и не парьтесь». Посему, хочу предложить хабрасообществу свое решение данной проблемы в стиле DIY. Кого заинтересовало — прошу под кат (осторожно, некоторое количество фото!).

Вводная

Определение точной схемы обжима кабеля обязательно.
Вся информация выводится со стороны тестера. Никаких миганий светодиодиками на ответной части. Предположим, что ответная часть находится в руках обезьяны, причем даже не цирковой, и лишь благодаря новейшим технологиям обезьяну удалось обучить пользоваться перфоратором и кроссировать кабель в розетках. Или, говоря чуть более научно: ответная часть — полностью пассивная.

Аппаратная часть

Принцип работы: ответная часть представляет из себя набор сопротивлений различных номиналов. Измерим их. Зная их номиналы и распайку ответной части, мы можем точно выяснить, как кроссирован кабель. Ниже представлена схема устройства (все иллюстрации кликабельны). Конкретные номиналы сопротивлений выбраны скорее с учетом наличия в магазине, чем осознанно, хотя получился кусочек ряда Фибоначчи.


Рис. 1. Схема тестера

Рис. 2. Схема ответной части

Сердцем схемы является микроконтроллер ATMega16. Почему именно он? Спор «AVR vs PIC» есть типичный холивар, поэтому скажу просто: моим произволом пусть будет AVR. А из всей их линейки Mega16 самый дешевый кристалл, имеющий на борту АЦП на 8 каналов. Усложнять схему коммутаторами аналоговых сигналов мне откровенно не хотелось. Немаловажный плюс: эту модель можно купить даже в моем замкадье, где на весь город один магазин электронных комплектующих с ценами по 150-500% от Москвы.

Порт A микроконтроллера — это входы АЦП, на порту B у нас ISP и пара служебных функций, порт C используем для формирования тестовых сигналов, ну а порт D — для общения с пользователем посредством HD44780-совместимого дисплея.

Питаем схему от батарейки типа «Крона», через стабилизатор LP2950, DA1 по схеме. Почему не ШИМ, а обычный линейный стабилизатор, пусть и low-dropout? Ток потребления невелик, на одной батарейке я провел все тестирование и отладку схемы, запустил уже пару реальных объектов по полсотни портов — пока не разрядилась. А вот высокочастотные помехи, которые есть спутник любого ШИМа, могут снизить точность работы АЦП. Усложнять схему, опять же, не хочется. Почему именно LP2950? Он был в магазине.

Входные цепи защитим с помощью супрессоров VD1.1 — VD1.8, я взял 1,5КЕ6,8СА. От попадания в 220В они, конечно, не спасут, а вот 60В с какой-нибудь телефонной линии погасить вполне смогут.

Цепочка VD2 — R4 служит для обнаружения разряда батареи. На стабилитроне падает 5,1В, Таким образом, когда напряжение батареи упадет ниже 6В, на PB2 появится лог. 0. Тут по уму нужен бы триггер Шмитта, но не нашлось.

Информацию выводим с помощью HD44780-совместимого дисплея, мне попался WH-1604A-YYH-CT#. Схема подключения типовая и пояснений не требует. Стоит сказать только о номинале сопротивления R5, задающего яркость подсветки. Чем больше номинал, тем дольше будет жить батарейка — вся остальная схема потребляет менее 5 мА, основной потребитель именно подсветка дисплея. Но если переусердствовать, в темноте ничего не увидишь на экране. Я остановился на 100 Ом.

Программная часть

Для написания программы я использовал среду AVR Studio 4, язык C. Ниже я опишу алгоритм работы, а вот код не покажу, и тому есть причины. Во-первых, он несколько ужасен (картинка с лошадью, блюющей радугой). Во-вторых, раз уж это DIY, то реализацию ниже описанных алгоритмов не грех и самому написать — а то что же это за DIY такое? Ну а в-третьих, если писать не хочется, то в приложениях откомпилированный .hex присутствует.

Описывать стандартные процедуры типа работы с АЦП, реализации обмена с HD44780-совместимым дисплеем и тому подобные очевидные вещи смысла не вижу. Все давно сказано до меня.

Работа тестера делится на несколько этапов, которые повторяются циклически.

Этап 1. Начальные проверки

  • проверим, не подключено ли к линии какое-либо активное оборудование. Все управляющие линии (порт C, напомню) переводим в Hi-Z состояние, измеряем напряжение на всех линиях. Они должны быть околонулевыми. В противном случае мы понимаем, что с другой стороны провода подключено что угодно, но не наша ответная часть, и дальше продолжать смысла не имеет. Зато имеет смысл сообщить пользователю, что «на линии есть напряжение!».
  • проверим уровень сигнала на PB2. Если там 0, то батарея разряжена. Сообщим о неполадке пользователю, если все ОК — идем далее.

Этап 2. Проверка целостности линий и наличия коротких замыканий

Для каждой из 8 линий проделываем следующее. Подаем на нее +5В с порта C, сохраняя все остальные линии порта в высокоимпедансном состоянии, и измеряем напряжение на остальных линиях. Если на всех линиях околонулевые значения — исследуемая линия оборвана. Если же на какой-то из линий тоже появилось +5В — это КЗ. В норме мы увидим некие промежуточные значения.

Этап 3. Выяснение схемы кроссировки

Вот и подобрались к самому интересному. Отсеяв все заведомо неисправные линии (перебитые и закороченные провода), приступим к измерению сопротивлений оставшихся линий (пусть их количество N, 0 Rij, но меньше прочих элементов строки. Получим:
Ri + Rj = Rij
Ri + Rk = Rik
Rj + Rk = Rjk
Решаем и находим среди Ri, Rj, Rk наименьшее (предположим, им оказалось Ri). оставшиеся неизвестные Rx находим из Rx = Rix — Ri.

Этап 4. Определение точки обрыва, если таковая имеется

Умные и дорогие железки измеряют расстояние до точки обрыва с помощью TDR. Сложно, дорого, круто. У нас возможности куда скромнее, да и не так уж часто требуется знание положения обрыва до сантиметров — обычно понимания в стиле «прямо возле меня», «на том конце», «посередине, где недавно стенку долбили» более чем достаточно. Так что — измерение емкости кабеля.

Переводим все линии порта C, кроме той, которая подключена в той жиле, где есть обрыв, в Hi-Z. Подаем на жилу +5В, заряжая ее. Измерим напряжение на ней, это будет наше начальное U0. Переводим все линии в Hi-Z. Начинается разряд кабеля через резистор R2.X сопротивлением 1 МОм. Выждав 1 мс, измеряем напряжение на этой линии U.

Нельзя забывать, что цепи на плате, разъем и т.д. тоже имеют свою емкость, так что устройство нужно откалибровать на паре кусков кабеля разной длины. У меня получилось при нулевой длине 1710 пФ, и емкость кабеля 35 пФ / м. Практика использования показала, что даже если и врет оно, то не сильно, процентов на 10. Ситуация вида «где ж недожали контакт, в шкафу на патч-панели или в розетке?» решается мгновенно.

Пользуюсь. Доволен. Желающие повторить мой путь могут вот тут найти архив с печатной платой в формате DipTrace, схемой в формате sPlan, прошивкой МК, а еще файл с примером командной строки для avreal, в котором можно посмотреть fuse-биты.

Фото процесса

Внимание! Автору статьи при рождении вырезали художественное чувство, как будущему инженеру не нужное. Ценителям незаваленных горизонтов, композиции кадра и всякого прочего баланса белого просьба на этом месте прекратить чтение и перейти сразу к комментариям, во избежание получения серьезных душевных травм.


Начало процесса.


Печатная плата. Изготовлена с помощью ЛУТ, лужение сплавом Розе.




Готовая плата. Сверлим, паяем, промываем спиртом (у кого рука поднимется — этиловым, лично я мыл изопропиловым). После отладки покрываем лаком для защиты от коррозии.


Плата установлена в корпус, дисплей закреплен, к нему припаян шлейф веселенькой расцветки. Отверстие под дисплей прорезал дремелем с помощью миниатюрного отрезного диска, впрочем, есть и другие методы.


Осталось закрыть крышку.


Тест: прямой фабричный патч-корд, 0.5 м. Кнопка включения расположена под указательным пальцем сверху корпуса.


Тест: отрезок кабеля длиной 10 м, обжат с одной стороны.


Тест: самодельный кроссовер, 10 м.

Upd. По просьбам хабражителей таки выкладываю исходник. Можно взять тут.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *