LAN тестер. Полезное устройство своими руками



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

(К сожалению, мне не удалось связаться с автором устройства. Были и вопросы, и пожелания, и вообще хотелось помочь дальнейшему развитию проекта. Я честно прошел регистрацию, ответил на кучу разных вопросов и все равно, мой статус — 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 указанно следующее:

-fckopt=0,cksel=f,sut=1,ocden=0,jtagen=1

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

hfuse=0xD9 и lfuse=0xdf

.

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

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

avrdude.exe -p atmega16 -c usbtiny -U flash:w:lan_tester.hex -U hfuse:w:0xD9:m -U lfuse:w:0xdf:m

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

avrdude.exe -p atmega16 -c usbtiny -U flash:w:lan_tester.hex -U hfuse:w:0xD9:m -U lfuse:w:0xdf:m

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

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

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

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

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

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

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

Внешний вид:

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

еще ракурс:

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

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


0 комментариев на «“LAN тестер. Полезное устройство своими руками”»

  1. учитывая, тот факт, что разработчик любезно предоставил все информацию по тестеру (включая исходники), он не будет в большой обиде на мой опус)

    Не буду. Более того, приятно удивлен. Благодарю за указание на ошибку в схеме.
    Батарею (крона) не менял уже полгода при достаточно активной эксплуатации, пока не садится.
    Расстояние до обрыва — ну так процентов 10-15 врет, но не больше.
    Кстати, случайно найдя этот пост, и задался целью погуглить — может быть, кто-то еще задался целью сделать себе такую железку? как выясняется, более того: вот тут человек даже допилил схему, нашел еще пару моих ошибок и развил функционал.

  2. Доброго времени суток!
    Собрал устройство по оригинальной схеме с хабра. Работает все, кроме определения длины/расстояния до обрыва.
    У вас кабель при измерении расстояния был обжат только с одного конца и подключался без терминатора?
    И еще вопрос к автору оригинального проекта (если он вдруг сюда еще раз заглянет) — в коде есть несколько «magic numbers». Это например массив R — есть возможность расшифровать значения? Спасибо!

    • У вас кабель при измерении расстояния был обжат только с одного конца и подключался без терминатора?

      С обеих сторон, хотя пробовал и без обжима — все работало. Можно с терминатором, можно без — если есть оборванные жилы, он будет измерять расстояние.

      Это например массив R — есть возможность расшифровать значения?

      R — это массив номиналов сопротивлений на ответной части, где первая строка — сами номиналы (реально она не используется, оставлена для удобства понимания), вторая строка — допустимый разброс номинала в нижнюю сторону, третья — допустимый разброс в верхнюю сторону.
      Как пример: R [0][0] = 15; R [0][1] = 13; R [0][2] = 18; Значит, к контакту №1 на ответке подключено сопротивление на 15 кОм, допускается разброс результата измерения от 13 до 18 кОм.
      Есть еще PinOut — это соответствие битов порта A контактам разъема 8P8C, зависит от разводки платы и ни от чего более.
      В начале объявлены R1 и R2 — это номиналы сопротивлений R1.x и R2.x по схеме.

      А вообще — меня можно найти через [email protected], есть вопросы — пишите.

    • Вау!!! Очень рад, что Вы сами посетили этот ресурс. Я уже упоминал, о сложностях с хабром 🙁 Честно говоря, как-то душа была не не месте, что разместил этот опус не поговорив/согласовав заранее с Вами. Но я очень рад, что Вы не в обиде!
      А Ваше устройство, которое я повторил, относится к таким вещам — «Сделал, работает и все!». Честно говоря, его функционала пока хватает 🙂 Если появиться новая прошивка, наверное воспользуюсь… Просто ради интереса, а не потому, что ОЧЕНЬ надо!
      Еще раз, Вам огромное спасибо!!!

  3. приве! повторил этот девайс и столкнулся с проблемой, прошивал поником, дисплей показывает иероглифы, фузы выстовлял как в калькулятори прошивка с попки «original» HEX фоил. помагите исправить ситуацыю

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

  4. Наконец то добрался до сборки и я.
    Все заработало с пол-пинка, но метраж до обрыва кабеля показывает неправильно.
    Например — у меня 21м кабеля, тестер показывает 8м.
    Что я сделал не так?

    • В процедуре StageThreeCheck (); есть строка:

      float L = (-fTime/log (U2 / U1) — 1.71) / 0.032;

      Здесь 1.71 — емкость цепей тестера при нулевой длине кабеля, 0.032 — емкость метра кабеля.
      Обычно требуется коррекция первой константы. В вашем случае вместо 1.71 будет примерно 1.3.

  5. Доброго времени суток! Наконец собрал тестер, но получил такую засаду. Сразу не завелся, пришлось отключить 15 ногу дисплея, с подключенной садит напругу до 3V и начинает греться чип TJ7660 на дисплее. Изначально при отключенном кабеле показывал длину 80м, заменил один супрессор стал показывать меньше 5м. Подключаю пач-корд 2м с заглушкой и начинаются чудеса, показывает целыми только 1,3 и 7 жилы все остальные S, и нет связи, в программировании я не силен, но все вроде сделал верно. Ткните пожалуйста носом куда копать. С уважением.

    • Ты знаешь, у меня тоже было не все гладко 🙂 Тут скорее всего — «наука о контактах». Проверь еще раз плату на предмет «коротышей и непропаев». Супрессоры выполняют защитную функцию, на этапе отладки можно не запаивать вообще 🙂

  6. Ghost_D Большое спасибо, но ( наука о контактах) не прошла. Промыл на 10 раз, проверил на
    к.з. и обрывы, не помогло. Была вторая заготовка платы, запаял её. В результате те-же
    грабли.1,3,7 норма остальные замыкание(S)и нет связи.Заглушка из оригинальной схемы.
    Есть еще какие идеи? С уважением.

    • Ну, прямо и не знаю, что с тобой делать. 🙂 Давай разбираться. Весь тестер состоит из нескольких «кусков»: питание, индикатор (надеюсь, с ним проблем нету), и интерфейс для тестирования — тут, как я понимаю, и есть проблемы. Будем считать, что прошивка и фьюзы залиты правильно. Или тоже есть вопросы?
      Для организации «тестирования» используется ПОРТ А (это АЦП) и порт С — для формирования запросов.
      Алгоритм работы тестера автор описывает так (можно поковырять исходники):
      1) — проверка состояния порта А (АЦП) (при этом выводы порта С переводятся в Hi-Z состояние.) CheckLineVoltage. Если на любом из выводов значение более fZero=60 сообщаем о наличии напряжения на линии
      2) — Проверка линий на обрыв и КЗ
      3) — тестирование ЦЕЛЫХ линий на предмет кроссировки
      4) — ну и собственно вычисление расстояния до обрыва (StageThreeCheck).

      авторский текст: Для этого переводим все линии порта C, кроме той, которая подключена в той жиле, где есть обрыв, в Hi-Z. Подаем на жилу +5В, заряжая ее. Измерим напряжение на ней, это будет наше начальное U0. Переводим все линии в Hi-Z. Начинается разряд кабеля через резистор R2.X сопротивлением 1 МОм. Выждав 1 мс, измеряем напряжение на этой линии U.
      В этой процедуре формула выглядит так:
      float L = (-fTime/log (U2 / U1) — 1.71) / 0.032;
      Нельзя забывать, что цепи на плате, разъем и т.д. тоже имеют свою емкость, так что устройство нужно откалибровать на паре кусков кабеля разной длины. У меня получилось при нулевой длине 1710 пФ, и емкость кабеля 35 пФ / м.

      Т.е., можно в исходниках вбить свои значения 🙂

      Так, вот на каком из описанных этапов у тебя возникает проблема?

      P.S. Блин, чертяка, заставил смотреть исходники 🙁
      P.S.S. Не требуйте от меня многого. Я только повторил устройство и у меня ВСЕ нормально (почти сразу) заработало. Настоящий автор george.potok.ivanov(собака)gmail.com.

    • привет! удалось ли побороть проблему? если да, то как? столкнулся сегодня с РОВНО той же проблемой — 1,3,7, и остальные S. при этом замыкание двух любых(?) жил понимает правильно. правда, плату я делал свою, ибо у меня мега в tqfp.

  7. Здравствуйте уважаемый автор. Собрал вашу схему.
    Чисто технически все работает. Но при запуске устройства пишет на линии есть напряжение. Прошивал китайским программатором. Прошивку брал из архива. Заранее спасибо.

    • Прежде всего — проверьте фьюзы. Часто забывают отключать jtag, как указал тов. Ghost_D.

    • Тестовая ответка ну очень такая тестовая 😉
      Думаю, собака в этом зарыта.

  8. Всем доброго времени суток. Повторял данный прибор, но ни как не мог добиться корректной работы. Завидую людям, у которых все пошло сразу)))… Теперь о проблемах. После сборки и зашивки хексом автора, прибор не полностью распознавал терминатор на конце (некоторые пары видел как "?") и совсем не мерял длину. После самостоятельной компиляции с дисплея не слазила надпись «На линии есть напряжение!». Я и перемывал плату ацетоном, и перепроверял монтаж, но найти причину не удавалось. Пришлось напрячь уважаемого товарища Ghost_D, который любезно согласился предоставить прошитую атмегу со своего рабочего прибора на фото (еще раз огромное Вам спасибо!!!!) Но, результат остался прежний (аналогичный случаю с прошивкой автора). Все дело заключалось в супрессорах, а точнее в их емкости, которая в мое случае составляла 4500 пФ. Решение: При компиляции в Lan_tester.h изменять значения fZero и fMaxValue. У меня они получились 250 и 800 соответственно, на что автор прибора ответил: «fZero — это уровень, ниже которого считается, что на проводе напряжения нет. Фактически, защита от шума, либо от втыкания LAN-тестера в свитч. fMaxValue — это уровень, выше которого считается, что линии закорочены. Как мы понимаем, шум на уровне 5 * 450/1024 = 2.2 В — это совершенно ненормально…». Однако, с моими супрессорами только данные значения переменных делают прибор работоспособным. На что автор посоветовал: «Да, на проблему с супрессорами жаловались многие. Я так считаю, что первоначально надо наладку делать без них. Часто бывает, что они попадаются изначально пробитые.». Если кому пригодится — есть прошивка под дешевый китайский дисплей не поддерживающий русский язык и ссылка на его покупку на Ali. Еще раз оргомное спавибо автору прибора и Ghost_D за терпение и поддержку!!!

    • Если не сложно выложите пожалуйста прошивку под дешевый китайский дисплей!!!

    • Рад, что вы заглянули… Судя по письмам, ОЧЕНЬ многие собирают данный прибор. Очень оказалось полезная вещь!!! Еще раз спасибо. Может есть новые прошивки? И да, может есть более-менее, «официальная» страница проекта?

    • Пока что новых прошивок нет — основная работа бьет ключом, причем, судя по ощущениям, ключ этот примерно 32 на 36 и бьет она строго по голове 🙂

      В планах:
      — переделать систему защиты, где-то читал форум, в котором указали на ее недостатки
      — запилить кнопку калибровки тестера на нулевую длину кабеля, очень много нареканий
      — сделать англоязычный билд для людей с нерусифицироваными дисплеями

      Страницу не заморачивался делать — просто не ожидал такого интереса, если честно. Думаю, также выложу на хабре, когда обновлю устройство, ну и сюда ссылочку кину.

    • Сколько будет стоить готовый собранный комплект
      если у Вас купить
      почтовым переводом в Ростовскую область

    • Печатная плата — это как бы вид сквозь слой текстолита. Для переноса на медную сторону — зеркалить не нужно. Т.е., на бумаге все должно выглядеть так, как на картинке. После переноса на медный слой — все переносится именно зеркально.

    • спасибо, плату сделал)))докуплю оставшиеся детали и буду паять

  9. Собрал, прошил, выводит сообщение — Не исправен АЦП. что ты имел ввиду: Прошивая первый раз, я не учел необходимость отключения JTAG? как его отключить? я прошиваю USB ASP через SINA Prog/ фьюзы high:D9 Low:DF

    • В чем может быть проблема? входная часть уже досканально просмотрена и прозвонена, КЗ не наблюдается. Единственное отличие от схемы это то что я поставил однонаправленные супрессоры… это может быть причиной? Супрессоры поставил согласно схеме анодом на плюс, катодом на минус… но ведь для защиты нужно ставить как стабилитрон — наоборот, верно?

    • Все верно, если вы ставите однонаправленный супрессор (в маркировке отсутствует «С») — то его нужно ставить как стабилитрон, т.е. в обратном включении. В схеме нарисовано не совсем корректно 🙂

    • Да, я уже проверил перепаял и прибор запустился. Но все еще не гладко)))теперь даже когда кабель не подключен пишет, что до обрыва 17метров. А когда кабель с ответной частью подключаю пишет что жилы замкнуты… резисторы на ответной части все как у автора. Может в исходнике нужно что поменять?

    • И написано: нет связи. когда кабель подключен. С 2х паркой примерно такая картина на дисплее.
      Здесь: 12345678
      Там: ss?xxsxx
      До обрыва примерно 17м
      нет связи

  10. Доброго дня! Огромное спасибо автору за интересную разработку тестера. У меня почти все получилось, только вот расстояние не меряет (точнее постоянно прыгает значение). Пробовал менять значения float L = (-fTime/log (U2 / U1) — 1.71) / 0.032 в моем случае получилось 1.2
    Пробовал менять значения fZero и fMaxValue — вышло fZero: 200 fMaxValue:900 (если fZero:60 — как у автора — то при длинне кабеля около 5 и более метров показывает «напряжение налинии»)
    В общем все перечисленные настройки влияют на корректировку прибора, на значение расстояния все равно прыгают.
    При не подключенном терминаторе и длине кабеля 11м показвыает: <5 до 7м (постоянно прыгает в этом промежутке)
    При подключенном терминаторе и оборванной одной жилой показывает: 7 — 12м (постоянно прыгает в этом промежутке)
    Все остальное: обрыв (кроме расстояния), правильность обжима, короткое — все прекрасно работает.
    Может есть какие-то мысли на сей счет, кто сталкивался?
    Пробовал настроить без супрессоров — вообще ерунду показывает

  11. Собрал устр-во. Остался вопрос! Прошивал через программатор ATtiny через SinaProg. Выставил значения фузов: hfuse=0xD9 и lfuse=0xdf. А именно D9 и df, там есть поля для этих значений. На экране пишет «АЦП неисправно». Почему так?! С любыми другими фузами пишет «на линии есть напряжение».
    При построении устр-ва использовал супроцессоры: 1.5КЕ6.8А, они односторонние. Может в них проблема?!
    С нетерпением жду хоть какой-то совет.

  12. подскажите пожалуйста, собрал данное устройство но есть проблема при подключении гигабитного кабеля выдает сообщение «ацп неисправен», устройство собрано по схеме (переделал под обычные резисторы т.к. smd в моем городе не продаются нигде) и в прошивке поменял сообщения написал латинице чтоб экран не выдавал иероглифы, + была проблема без кабеля тестер думал что длинна -20 метров исправил математически в прошивке, помогите пожалуйста

  13. Доброго всем времени суток!
    Я похоже вхожу в круг людей, которые хотят повторить устройство, но имеют кривые руки =) Собрал схему, прошиваю устройство, а мне сообщение что прошивка не помещается в еепром, смотрю… а действительно, атмега16 имеет 16 кб, а прошивка весит 26кБ. Люди добрые просветите незнайку как прошить устройство=)

  14. Здравствуйте! Можно ли приобрести данное устройство у Вас? Сам опыта сборки плат не имею, прошивать чипы тоже, но такая вещь нужна и она намного лучше чем те которые продают в магазине

  15. Добрый день. Пытаюсь повторить ваше устройсто, но столкнулся с проблемой, после подключения кабеля с ответной частью, на экране появляется надпить «АЦП неисправнн». В чем может быть проблема, в программировании не силен.

  16. Решил повторить устройство. На батарее медленно проседает напряжение до 3V, с чем это может быть связано? В инете почитал, пишут, что из-за линейного стабилизатора, который кушает немало ресурсов.
    И еще есть проблема — если на другом конце провода ничего не подключено, то пишет расстояние всегда "< 5м", как это можно в коде исправить? Я читал комментарии выше, но пока не разобрался что конкретно поправить.

  17. Помимо проседания напряжения еще такая беда, что 2-ю жилу показывает как знак вопроса, хотя она целая. Пробовал на разных патчкордах. Не могу разобраться в чем дело (( И пробовал повторить то что делал уважаемый Ghost_D, т.к. закоротить две пары жил. Закороченные показывает как "?", хотя на на скринштах выше там идут «S» (( Подскажите, в чем может быть трабл?

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

Arduino

Что такое Arduino?
Зачем мне Arduino?
Начало работы с Arduino
Для начинающих ардуинщиков
Радиодетали (точка входа для начинающих ардуинщиков)
Первые шаги с Arduino

Разделы

  1. Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…

  2. Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…

3D-печать AI Android Arduino Bluetooth CraftDuino DIY IDE iRobot Kinect LEGO OpenCV Open Source Python Raspberry Pi RoboCraft ROS swarm ИК автоматизация андроид балансировать бионика версия видео военный датчик дрон интерфейс камера кибервесна конкурс манипулятор машинное обучение наше нейронная сеть подводный пылесос работа распознавание робот робототехника светодиод сервомашинка собака управление ходить шаг за шагом шаговый двигатель шилд

OpenCV
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение