• Заземление. Что это такое и как его сделать (часть 1)



      Мой рассказ будет состоять из трёх частей.

      1 часть. Заземление
      (общая информация, термины и определения)


      2 часть. Традиционные способы строительства заземляющих устройств
      (описание, расчёт, монтаж)


      3 часть. Современные способы строительства заземляющих устройств
      (описание, расчёт, монтаж)


      В первой части (теория) я опишу терминологию, основные виды заземления (назначение) и предъявляемые к заземлению требования.
      Во второй части (практика) будет рассказ про традиционные решения, применяемые при строительстве заземляющих устройств, с перечислением достоинств и недостатков этих решений.
      Третья часть (практика) в некотором смысле продолжит вторую. В ней будет содержаться описание новых технологий, используемых при строительстве заземляющих устройств. Как и во второй части, с перечислением достоинств и недостатков этих технологий.

      Если читатель обладает теоретическими знаниями и интересуется только практической реализацией — ему лучше пропустить первую часть и начать чтение со второй части.

      Если читатель обладает необходимыми знаниями и хочет познакомиться только с новинками — лучше пропустить первые две части и сразу перейти к чтению третьей.

      Мой взгляд на описанные методы и решения в какой-то степени однобокий. Прошу читателя понимать, что я не выдвигаю свой материал за всеобъемлющий объективный труд и выражаю в нём свою точку зрения, свой опыт.

      Некоторая часть текста является компромиссом между точностью и желанием объяснить “человеческим языком”, поэтому допущены упрощения, могущие “резать слух” технически подкованного читателя.

      Читать дальше →
    • Возможности роутера ZyXEL Keenetic на прошивке второго поколения NDMS v2.00

        Некоторое время назад на сайте ZyXEL в разделе загрузок для интернет-центра Keenetic появилась бета-версия прошивки под названием NDMS 2.0. Приглашение погонять ее получили также зарегистрированно-заинтересованные владельцы обычных «Кинетиков». В аннотации говорится, что это не очередное обновление, а второе поколение программной платформы, кардинально отличающееся от предыдущего и адресованное продвинутым пользователям. Наиболее интересное из заявленного (по сравнению с микропрограммами первого поколения):
        • Полнофункциональный механизм трансляции адресов (Full feature NAT) с поддержкой нескольких внешних IP-адресов; перенаправление портов с возможностью выбора порта назначения в локальной сети; переназначение ролей сетевых интерфейсов.
        • Поддержка множественных PPP-туннелей для доступа в Интернет и подключения к виртуальным частным сетям (VPN).
        • Возможность назначения нескольких дополнительных физических WAN-интерфейсов на порты встроенного коммутатора Ethernet.
        • Резервирование подключения к интернету через USB-модемы 3G/4G и дополнительно назначаемые WAN-интерфейсы.
        • Профессиональный интерфейс настройки через командную строку (Cisco like CLI). Все функции могут быть настроены с командной строки и сохранены в виде текстового файла.
        • Пакетная сборка прошивки «по требованию». Функциональность устройства выбирается пользователем в веб-интерфейсе устройства и прошивается автоматически.
        Читать дальше →
      • JBrainfuck — Пишем компилятор Brainfuck под Java VM

        • Tutorial
        Меня давно интересовал вопрос написания своего компилятора под Java VM, но было недостаточно опыта, дабы сделать это. Да и как-то руки не доходили, а недавно все же решил разобраться в этой теме и заодно рассказать о своем опыте создания компилятора под эту VM.

        В качестве реализуемого языка возьмем Brainfuck. Он прост в реализации, что отлично подходит для изучения данной темы, но сначала предоставлю вам свою реализацию.

        JBrainfuck — оптимизирующий интерпретатор и компилятор Brainfuck под Java VM. Благодаря JIT обладает высокой производительностью.


        Ну что, приступим?
      • Коды Рида-Соломона. Простой пример

        Гауссово котэБлагодаря кодам Рида-Соломона можно прочитать компакт-диск с множеством царапин, либо передать информацию в условиях связи с большим количеством помех. В среднем для компакт-диска избыточность кода (т.е. количество дополнительных символов, благодаря которым информацию можно восстанавливать) составляет примерно 25%. Восстановить при этом можно количество данных, равное половине избыточных. Если емкость диска 700 Мб, то, получается, теоретически можно восстановить до 87,5 Мб из 700. При этом нам не обязательно знать, какой именно символ передан с ошибкой. Также стоит отметить, что вместе с кодированием используется перемежевание, когда байты разных блоков перемешиваются в определенном порядке, что в результате позволяет читать диски с обширными повреждениями, локализированными близко друг к другу (например, глубокие царапины), так как после операции, обратной перемежеванию, обширное повреждение оборачивается единичными ошибками во множестве блоков кода, которые поддаются восстановлению.

        Давайте возьмем простой пример и попробуем пройти весь путь – от кодирования до получения исходных данных на приемнике. Пусть нам нужно передать кодовое слово С, состоящее из двух чисел – 3 и 1 именно в такой последовательности, т.е. нам нужно передать вектор С=(3,1). Допустим, мы хотим исправить максимум две ошибки, не зная точно, где они могут появиться. Для этого нужно взять 2*2=4 избыточных символа. Запишем их нулями в нашем слове, т.е. С теперь равно (3,1,0,0,0,0). Далее необходимо немного разобраться с математическими особенностями.

        Поля Галуа


        Многие знают романтическую историю о молодом человеке, который прожил всего 20 лет и однажды ночью написал свою математическую теорию, а утром был убит на дуэли. Это Эварист Галуа. Также он несколько раз пытался поступить в университеты, однако экзаменаторы не понимали его решений, и он проваливал экзамены. Приходилось ему учиться самостоятельно. Ни Гаусс, ни Пуассон, которым он послал свои работы, также не поняли их, однако его теория отлично пригодилась в 60-х годах ХХ-го века, и активно используется в наше время как для теоретических вычислений в новых разделах математики, так и на практике.
        Читать дальше →
      • ARM-ы для самых маленьких

        • Tutorial


        Пару дней назад я опубликовал и потом внезапно убрал в черновики статью о плане написать про создание своей ОС для архитектуры ARM. Я сделал это, потому что получил много интересных отзывов как на Хабре, так и в G+.

        Сегодня я попробую подойти к вопросу с другой стороны, я буду рассказывать о том, как программировать микроконтроллеры ARM на нарастающих по сложности примерах, пока мы не напишем свою ОС или пока мне не надоест. А может, мы перепрыгнем на ковыряние в Contiki, TinyOS, ChibiOS или FreeRTOS, кто знает, их там столько много разных и интересных (а у TinyOS еще и свой язык программирования!).

        Итак, почему ARM? Возиться с 8-битными микроконтроллерами хотя и интересно, но скоро надоедает. Кроме того, средства разработки под ARM обкатаны долгим опытом и намного приятнее в работе. При этом, начать мигать светодиодами на каком-то «evaluation board» так же просто, как и на Arduino.

        Читать дальше →
      • Как Яндекс распознаёт музыку с микрофона

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

          image

          В мире есть всего несколько специализированных компаний, которые профессионально занимаются распознаванием музыкальных треков. Насколько нам известно, из поисковых компаний Яндекс стал первым, кто стал помогать российскому пользователю в решении этой задачи. Несмотря на то, что нам предстоит ещё немало сделать, качество распознавания уже сопоставимо с лидерами в этой области. К тому же поиск музыки по аудиофрагменту не самая тривиальная и освещённая в Рунете тема; надеемся, что многим будет любопытно узнать подробности.
          Читать дальше →
        • 19 команд ffmpeg для любых нужд

          • Translation
          • Tutorial
          От переводчика:
          Многие знают, что ffmpeg — это сила, но не все знают, какая именно. Он многогранен и безграничен, а его man объёмен и местами малопонятен, лишь немногие постигли дао профессиональной работы с ним. И тем не менее, этот инструмент может быть полезен почти всем, кто хоть иногда работает с видео и звуком, даже на бытовом уровне. О некоторых полезных консольных командах ffmpeg и пойдёт речь в статье. В некоторых местах я взял на себя смелость вставить ссылки на поясняющие статьи.


          ffmpeg — это кроссплатформенная open-source библиотека для обработки видео- и аудиофайлов. Я собрал 19 полезных и удивительных команд, покрывающих почти все нужды: конвертация видео, извлечение звуковой дорожки, конвертирование для iPod или PSP, и многое другое.

          1. Получение информации о видеофайле

          ffmpeg -i video.avi
          

          2. Превратить набор картинок в видео

          ffmpeg -f image2 -i image%d.jpg video.mpg
          

          Эта команда преобразует все картинки из текущей директории (названные image1.jpg, image2.jpg и т.д.) в видеофайл video.mpg

          (примечание переводчика: мне больше нравится такой формат:
          ffmpeg -r 12 -y -i "image_%010d.png" output.mpg
          

          здесь задаётся frame rate (12) для видео, формат «image_%010d.png» означает, что картинки будут искаться в виде image_0000000001.png, image_0000000002.png и тд, то есть, в формате printf)
          Читать дальше →
        • Поддержка USB в KolibriOS: что внутри? Часть 1: общая схема

          • Tutorial
          Архитектура USB содержит несколько уровней. На самом низком уровне специально обученное железо, называемое хост-контроллером (host controller), общается с USB-устройством специальными сигналами. Сигналы кодируют биты, биты складываются в пакеты, пакеты образуют транзакции, транзакции составляют передачи (transfers).

          Я рассказываю о программной поддержке USB, поэтому уровни ниже передач почти неинтересны: за них отвечает хост-контроллер. Зато важно, какой интерфейс представляет хост-контроллер софту. Сейчас распространены три интерфейса, и постепенно распространяется четвёртый:
          Аббр. Название интерфейса Версия Код поддержки контроллера в KolibriOS
          UHCI Universal Host Controller Interface USB 1.1 kernel/trunk/bus/usb/uhci.inc
          OHCI Open Host Controller Interface USB 1.1 kernel/trunk/bus/usb/ohci.inc
          EHCI Enhanced Host Controller Interface USB 2.0 kernel/trunk/bus/usb/ehci.inc
          XHCI eXtensible Host Controller Interface (новый) USB 3.0 В KolibriOS ещё не поддерживается
          На этом же уровне взаимодействия с контроллерами находятся файлы kernel/trunk/bus/usb/hccommon.inc, где реализованы некоторые функции, общие для всех контроллеров, и kernel/trunk/bus/usb/init.inc, который запускает всю подсистему. Впрочем, не торопитесь пока лезть в код — во-первых, я ещё не рассказала про то, чего же ожидают от него более высокие уровни, а во-вторых, после демонстрации общей схемы я вернусь к отдельным компонентам с подробностями.
          И что же на более высоких уровнях?
        • Как запустить программу без операционной системы: часть 3: Графика



            В этой части попробуем сделать “невозможное”: научимся использовать графический дисплей без операционной системы. На самом деле это задача не из легких, особенно в случае работы в 32-х битном защищенном режиме, и особенно если хочется использовать приличное разрешение экрана а не 320x200x8. Но все по порядку: раз хотим графику – значит нужно работать с видеокартой.

            Современные графические карты – это практически полноценные компьютеры по мощности не уступающие основному: тут и декодирование MPEG2 в качестве 1080p, поддержка 3D графики и шейдеров, технологии вроде CUDA, и многое другое. Это все выглядит весьма сложно. С другой стороны видеокарты – это всего лишь очередной PCI девайс, такой же, как и остальные. Это устройство мы даже “нашли” в предыдущей статье с номером класса устройства 0x03 (class_name=graphics adapter). Как и с любым, устройством с видеокартой можно работать при помощи портов ввода-вывода или MMIO областей памяти, а сама видеокарта может использовать DMA и прерывания для взаимодействия с основным процессором. Если посмотреть на диапазон портов ввода-вывода, доступных у видео карт, то мы увидим, что всего ей выделяется менее 50-ти байт – не так уж и много с учетом огромной функциональности, которой обладают современные видеокарты.
            Читать дальше →
          • Плейн- и радарспоттинг, или я болен авиацией

              Я болен авиацией. Да, именно так и никак иначе. На моем ноутбуке хранится куча мануалов к различным самолётам от Boeing и Airbus, пособия по радиообмену, фильмы по авиационной тематике. Помимо всего этого я слушаю авиадиапазон с помощью портативной радиостанции (которая, кстати, не имеет возможности передавать на этих частотах, только слушать!). И плюс ко всему я регулярно, раз или два в месяц выбираюсь к аэропорту Шереметьево и фотографирую самолёты, заходящие на посадку. В этом посте я расскажу, как докатился до такой жизни. Может быть кто-то из вас, уважаемые читатели, тоже заболеет авиацией.
              Кому интересно — прошу под кат.
              Читать дальше →
            • Миникомпьютер из роутера с OpenWRT: разрабатываем USB-видеокарту


                Добрый день, уважаемые хабровчане. В этом цикле статей мы с вами пройдем достаточно длинный, но весьма интересный путь по превращению обычного роутера в мини-компьютер с LCD-дисплеем. Для этого мы разработаем сначала USB-видеокарту на базе микроконтроллера STM32F103, потом тестовый драйвер, который позволит нам выводить на него графику, и, наконец – полноценный драйвер фреймбуффера, благодаря которому можно будет запустить настоящие графические приложения, такие как x-сервер. Заодно мы научимся включать наш код в дерево исходников OpenWRT, допиливать его ядро и делать прочие полезные вещи.
                Ну а в самом конце мы получим результат, который, я надеюсь, вызовет ностальгическую слезу у многих читателей. Я постараюсь излагать материал таким образом, чтобы в конце каждого этапа мы получали осязаемый результат, не дающий угаснуть энтузиазму. Итак, начнем.
                Читать дальше →
              • Строим универсальную, машинную USB зарядку (попытка номер раз)

                  image
                  Здравствуйте Хабра-господа и Хабра-Дамы!
                  Думаю некоторым из Вас знакома ситуация:
                  «Автомобиль, пробка, N-ый час за рулем. Коммуникатор с запущенным навигатором уже 3-й раз пиликает об окончании заряда, несмотря на то что все время подключен к зарядке. А Вы, как на зло, абсолютно не ориентируетесь в этой части города.»
                  Далее, я расскажу о том, как имея в меру прямые руки, небольшой набор инструментов и немного денег соорудить универсальную (подходящую для зарядки номинальным током, как Apple, так и всех остальных устройств), автомобильную USB зарядку для Ваших гаджетов.

                  ОСТОРОЖНО: Под катом много фото, немного работы, никакого ЛУТ и нет хеппи энда (пока нет).
                  Хочу заряжать смартфон и планшет в машине
                • Приставка к роутеру (USB HUB + USB HDD + UPS)


                  После приобретения достаточно мощного роутера с портами USB (это был ASUS RT-N16), задался вопросом — как использовать роутер по полной?
                  Что мне было нужно:
                  • сетевое хранилище,
                  • торрент-качалка,
                  • и конечно, чтобы всё это не падало при бросках/перебоях в сети электропитания.

                  Читать дальше →
                • Контроллер «Virt2real», или просто — Виртурилка

                    — Ты пил пиво, — тихо заговорил Джо. — Плохо работал консервный нож.
                    Ты сказал, что сам смастеришь консервный нож, побольше и получше. Это я и есть.
                    Генри Каттнер, «Робот-зазнайка»


                    UPD> Начат сбор предзаказов habrahabr.ru/post/163865

                    Кто-бы мог подумать, что мы своими руками сможем разработать такую красавицу и умницу. Мало того — не просто разработать на бумаге, а ещё и получить десяток работающих образцов.

                    Картинка Для Привлечения Внимания


                    Пролог


                    Давным-давно мы с коллегой начали заниматься управлением через Интернет всякими штуковинами типа вебкамер и маленьких машинок. Чуть позже у нас появились ездящие девайсы посерьёзнее, способные нести на борту свой контроллер и ёмкую батарею. К тому же я увлёкся всякими летающими штуковинами — самолётами и коптерами, что внесло дополнительную лепту в список хотелок.

                    Не покидала мысль о том что хорошо бы сделать видео не «вид сбоку или сверху», а вид с борта девайса, от первого лица. То что самолётчики/коптеристы называют FPV. Было это примерно пару лет назад. Пробовали ставить на машинку аналоговую камеру и передатчик, принимали видео на ТВ-тюнер, далее отдавали на видеосервер для раздачи рулящим машинками. Но сразу всплыли нюансы — одновременно можно транслировать только 3-4 видеопотока, иначе появляются наводки с одного канала на другой. Плюс дороговизна такого решения, плюс проблемы с разрешёнными частотами, плюс паршивое качество картинки с постоянно появляющимися помехами… В общем, попробовали и забили на это дело. К тому же, возможностей управляющего контроллера (тогда всё было сделано на базе всем известной Ардуинки) начало нехватать. Стали искать другие варианты, чтоб было недорого, дёшево, удобно и практично. Но имеющиеся в продаже (за границей, само собой и с довольно высокой стомостью) на тот момент железки для нужд не подходили. Одни умели всё кроме видео, другие умели только видео, но не позволяли подключать периферию, и т.д. и т.п.

                    Читать дальше →
                  • Восстановление расфокусированных и смазанных изображений. Повышаем качество

                      Представляю вашему вниманию заключительную статью из трилогии «Восстановление расфокусированных и смазанных изображений». Первые две вызвали заметный интерес — область, действительно, интересная. В этой части я рассмотрю семейство методов, которые дают лучшее качество, по сравнении со стандартным Винеровским фильтром — это методы, основанные на Total Variaton prior.
                      Также по традиции я выложил новую версию SmartDeblur (вместе с исходниками в open-source) в которой реализовал этот метод. Итоговое качество получилось на уровне коммерческих аналогов типа Topaz InFocus. Вот пример обработки реального изображения с очень большим размытием:


                      Читать дальше →
                    • Прошиваем AVR вручную

                      • Tutorial

                      Картинка для привлечения внимания — xkcd

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

                      Радуясь, что еще не забыли курс ассемблера, вы кое-как написали программу палочкой на песке. Среди уцелевших вещей каким-то чудом оказалась распечатка документации на контроллер (хорошо, что вы еще не успели пустить её на растопку!), и программу удалось перевести в машинные коды. Осталась самая ерунда — прошить её в контроллер. Но в радиусе 500 километров нет ни одного программатора, не говоря уже о компьютерах. У вас только источник питания (батарея из картошки кокосов) и пара кусков провода.

                      Как же прошить МК фактически голыми руками?
                      Читать дальше →
                    • ИК пульт для ПК и розеток. Часть 2

                        Часть 1
                        Вчера я рассказал, как собрать USB-IRPC на основе Arduino. Зачем? Чтобы показать, как быстро собрать макет и сложности особой тут нет.
                        Сегодня сделаем все как положено. С самого начала — с принципиальной схемы, PCB, ЛУТ. Кусочек фольгированного стеклотекстолита превратим с помощью кучки деталек в готовое устройство. Разумеется с корпусом, мы же хотим аккуратно, правда?
                        Вот наша цель:
                        USB-IRPC Bare Front
                        «USB-IRPC Bare Front»
                        USB-IRPC Finished
                        «USB-IRPC Finished»
                        делаем USB-IRPC с нуля
                        • +44
                        • 33.4k
                        • 5
                      • ИК пульт для ПК и розеток. Часть 1

                          У меня нет телевизора. Совсем. На антресолях где-то лежит старый маленький пузатик, но кабель антенны давно свернут, а телевизор этот — скорее издевательство, разве что на кухне поставить и то маловат.
                          Поэтому в качестве музыкального центра и телевизора я использую свой ПК. И все бы хорошо, но лень — это не только двигатель прогресса, но и фактор, который портит удовольствие, заставляя встать с дивана, на котором уютно устроился с кружкой чая, чтобы запустить программу или выключить колонки после просмотра фильма перед сном.
                          Существует множество ИК приемников, практически все они могут управлять компьютером и даже могут его выключить, но не могут его включить. И вот в этот момент компьютер перестает быть столь же удобным сколь телевизор или музыкальный центр. Но и проект Igor HID не порадовал своим софтом. Вроде все умеет, а неудобно. И не влезешь в него, исходников нет. Вот поэтому я собрался и сделал свой проект, открытый и доступный всем.
                          Сделал я его с нуля до законченного комплекта. А поскольку мой опыт в разработке и программировании электронных девайсов до него можно сказать был нулевым, то я считаю, что повторить это сможет каждый, кому это интересно.
                          image
                          Называется он USB-IRPC (USB Infrared Remote Personal Computer Control — «Юэсби-ИРПиСи» или ИРПЦ, кому как больше нравится :). Буква R на самом девайсе — просто сокращение от моего ника.
                          Важным преимуществом девайса является то, что он программно совместим с Arduino и в случае отсутствия уверенности в своих силах в ЛУТ может быть сделан на основе Arduino на макетной плате. Это, конечно, не так компактно и аккуратно, не так дешево, но зато доступно практически всем, даже навыки пайки особые не потребуются.
                          Если стремление к комфорту вам не чуждо и идея превратить свой компьютер в медиацентр, а заодно поуправлять электророзетками с пульта вам интересна, тогда вперед.

                          Просьба, если соберетесь делать устройство после прочтения статьи, задавайте вопросы в комментариях. По опыту предыдущих статей: вас довольно много и вопросы вы задаете одинаковые :)
                          Я лучше один раз отвечу всем, добавив в статью или в комментариях. Уведомления о комментариях с вопросами я просматриваю и стараюсь отвечать.
                          поехали, делаем USB-IRPC
                        • M for Mice

                          Глюки иногда бывают интереснее самих программ, в которых возникают. Иногда они помогают развлечься или даже узнать что-то новое. В этот раз благодаря глюку я узнал, как сделать мышь.

                          Experimental set


                          Вечером в четверг я отлаживал небольшую программку для контроллера: состояние аналоговых джойстиков пересылалось с отладочной платы по УАРТ в комп. Компы нынче КОМ-портами оснащают редко, поэтому я работал через переходник USB-COM. Я пытался понять, почему столбик данных в Comport Toolkit приходит неровным, когда мои размышления были грубо прерваны Синим Экраном Смерти.
                          Читать дальше →
                        • Делаем сами Single-Side Arduino c COM-портом на борту

                            Занимаясь электроникой и микроконтроллерами, я прекрасно осознаю, что было бы неплохо иметь под рукой готовую отладочную плату. С ее помощью можно быстро проверить какой-нибудь сервопривод, датчик и т.д., а то и собрать на ней целиком весь проект. Именно поэтому решил самостоятельно изготовить Arduino.

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

                            image

                            Конечно, идея не новая, и на просторах интернета не раз звучала идея прикручивания виртуального COM-порта к Single-Side Board, но готового проекта я нигде не встречал.

                            Всех, кто когда-нибудь мечтал сделать для себя Arduino самостоятельно, прошу под кат.
                            Читать дальше →