Pull to refresh
54
0

Пользователь

Send message

Десятичный счётчик-дешифратор K561ИЕ8 (CD4017) и красивый эффект на нём

Level of difficultyMedium
Reading time8 min
Views20K

Привет, Хабр! Бегущие огни многие из нас уже собирали. А что, если сделать их не одномерными, а двумерными? То есть, чтобы они бегали не по вектору, а по матрице?

Получится эффект со множеством вариантов настройки, в зависимости от частоты вертикальной и горизонтальной развёртки.

И воплотим мы его не на Ардуино и микроконтроллерах, а на микросхемах стандартной логики. Которые и от импорта не зависят, и программному взлому не поддаются, а ещё они олдскульные, тёплые, почти ламповые.
Кроме того, соберём ещё три динамичных светодиодных эффекта.

Разработка небольшого солнечного трекера

Level of difficultyMedium
Reading time6 min
Views18K

Всем привет. Решил немного отдохнуть от гексапода и пощупать проекты с солнечными панелями. Первое, что пришло в голову — установка для автоматического позиционирования солнечных панелей (солнечный трекер). Его главная задача — выставить солнечные панели под максимально эффективным углом для получения наибольшего КПД. В этой статье мы посмотрим, как на коленке можно собрать датчик положения источника света и на его основе создать систему позиционирования. Этот проект никогда не окупится, но и не для этого он делается — мы просто развлекаемся!
Читать дальше →

Создаём планер для своего самодельного самолёта. Ч.2

Level of difficultyMedium
Reading time9 min
Views13K

Итак, на улице становится всё теплее и теплее и настало время подумать о продолжении эпопеи с самодельным самолётом…

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

Предыдущая статья про электронную начинку и её программирование — тут.
Читать дальше →

Извлекаем прошивку GameBoy по фотографии чипа

Reading time9 min
Views8.2K

Привет всем!

Вам предлагается маленький быстрый туториал по восстановлению прошивки GameBoy. Начнём с фотографий, изображающих прошивку металлическими соединениями (mask ROM) от Nintendo GameBoy, и на выходе получим файл ROM, который можно будет дизассемблировать или эмулировать.

Гаджет GameBoy для этого хорошо подходит, поскольку в нём используется так  называемая «постоянная память, программируемая перемычками» (Via ROM). Это означает, что отдельные биты кодируются металлическими перемычками между слоями, и эти биты можно считывать с поверхности чипа. Кроме того, сама прошивка достаточно невелика, и поэтому я смог включить её в репозиторий на Github, тем самым сэкономив вам недели времени, которые вы могли бы потратить на исправление мелких побитовых ошибок.

Привет из Ноксвилла,

— Трэвис Гудспид

Читать далее

Как выбрать оптимальный способ соединения деталей в пластиковых корпусах

Reading time5 min
Views23K

Почему эту статью нужно читать? Потому что выводы, здесь сделанные, помогут вам не накосячить при выборе метода сборки корпуса вашего устройства. Как минимум – критически оценить уже принятые решения :)

Читать и смотреть картинки

Введение в балансировку роторов

Level of difficultyEasy
Reading time16 min
Views22K

Ротор - это тело, которое вращается вокруг некоторой оси и удерживается своими несущими поверхностями в опорах.  Несущие поверхности ротора передают нагрузки на опоры через подшипники качения или скольжения. Под несущими поверхностями подразумеваются поверхности цапф* или поверхности их заменяющие.

*Цапфа (нем. Zapfen "цапфа, шейка, шип, втулка, стержень") — часть вала или оси, на которой находится опора (подшипник). Цапфа, находящаяся на краю вала, называется шип, в средней части вала — шейка. Концевая цапфа, воспринимающая осевые нагрузки, — пята.

Читать далее

Управление бесколлекторным двигателем по сигналам обратной ЭДС – понимание процесса

Reading time13 min
Views124K
Когда я начал разрабатывать блок управления бесколлекторным двигателем (мотор-колесом), было много вопросов о том, как сопоставить реальный двигатель с абстрактной схемой из трех обмоток и магнитов, на которой, как правило, все объясняют принцип управления бесколлекторными двигателями.

Когда я реализовал управление по датчикам Холла я еще не очень понимал, что происходит в двигателе дальше абстрактных трех обмоток и двух полюсов: почему 120 градусов и почему алгоритм управления именно такой.

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

Ниже я постараюсь расписать свой путь к пониманию принципа управления бесколлекторным двигателем постоянного тока.


Читать дальше →

Разработка стековой виртуальной машины и компилятора под неё (часть I)

Reading time8 min
Views15K

Так сложилось, что за последние 18 лет, не приходилось писать на C/C++. На работе использовалась Java, да и ввиду должностей деятельность больше была связана с предпринимательством - переговоры, корпоративные продажи, выстраивание производственных операций и структурирование инвестиционных сделок. Захотелось в свободное от работы время восстановить навыки, размять часть мозга которую не напрягал все 18 лет и, естественно, начать с самых основ. Осталось придумать себе задачу.

В универе преподаватели, молодость которых приходилась на 70-80е годы, до объектно-ориентированного программирования убивались по теме разработке собственных языков (интерпретаторов, компиляторов) под предметные области. Всё это казалось мне невостребованным "старьём", но появление новых языков за последнее десятилетие (Go, Kotlin и множества других) повысили мой интерес к этой теме.

Решил в качестве хобби написать 32-bit стековую виртуальную машину и компилятор C подобного языка под неё, чтобы восстановить базовые навыки. Такая классическая Computer Science задачка для заполнения вечеров с пивом. Как предприниматель, я четко понимаю, что она никому не нужна, но такая практика нужна мне для эстетического инженерного удовольствия. Плюс когда об этом рассказываешь сам понимаешь глубже. С целью и мотивами определился. Начнём.

Так как это виртуальная машина, мне нужно определиться с её характеристиками:

CPU: 32-bitный набор команд, так как машина стековая, в основном операнды команд храним в стеке, из регистров только IP (Instruction Pointer) и SP (Stack Pointer), пока работаем с целыми числами со знаком (__int32), позже добавим остальные типы данных.

RAM: пусть памяти пока будет 65536 ячеек по 32-bit`а. Которую организуем просто. С нижних адресов в верх будут идти код (code/text) и данные (data, heap), а с верхних адресов вниз будет расти стек (stack). Дёшево и сердито.

Читать далее

Всё про USB-C: высокоскоростные интерфейсы

Level of difficultyMedium
Reading time12 min
Views14K

Одной из прекрасных возможностей USB-C является его высокоскоростной потенциал. Распиновка в этом стандарте предоставляет вам четыре высокоскоростные дифференциальные пары и ещё несколько низкоскоростных, что позволяет передавать огромные объёмы данных через разъём размером с центовую монету. Не все устройства используют эту возможность, но от них этого никто и не требует – USB-C спроектирован так, чтобы подходить для любого портативного девайса. Однако, когда у вас есть устройство USB-C с потребностью в высокой скорости, нельзя не отметить весь потенциал этого стандарта и то, насколько хорошо он может работать.

Возможность получения высокоскоростного интерфейса через USB-C называется Alternate Mode (альтернативный режим), или коротко «altmode». Сегодня можно встретить три варианта altmode – это USB3, DisplayPort и Thunderbolt. При этом некоторые, например HDMI и VirtualLink, канули в лету, а другие, например USB4, только собираются появиться на свет. Для большинства альтернативных режимов требуется цифровая коммуникация через USB-C, предполагающая передачу определённых сообщений по каналу Power Delivery (PD). Тем не менее способны на это не все, и самым простым примером является USB3. Давайте разберём, что же лежит в основе альтернативного режима.
Читать дальше →

Конвертация MIDI-времени в такты и доли

Level of difficultyEasy
Reading time12 min
Views3.2K

Представьте: вы создаёте новый шедевр в любимой DAW, вставляете в проект MIDI-файл, редактор показывает, что ноты в нём имеют восьмую длительность. Не обращая на это внимания, вы продолжаете творить. Но, постойте. А как DAW, собственно, понимает, что ноты в файле восьмые?

В статье попробуем разобраться, как времена в MIDI-файле соотносятся с главным форматом времени при работе с музыкой – тактами и долями. Результатом наших исследований будет законченный алгоритм на C#.

Читать далее

STM8L подробное руководство первых шагов

Level of difficultyEasy
Reading time6 min
Views16K

Речь пойдет о маломощном микроконтроллере STM8L001J3. Постараюсь подробно рассказать о необходимых шагах для прошивки "hello world" и различных подводных камнях.

Читать далее

Создаем свой собственный язык программирования с использованием LLVM. Часть 2: Семантический анализ

Reading time32 min
Views8.4K

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

Читать далее

Как работает турбореактивный двигатель

Reading time4 min
Views31K

Введение

Приветствую, ХАБРчане. Пришла мне в голову идея создать турбореактивный мотоцикл. И, естественно, пришлось собирать техническую информацию и во всём разбираться. Но простого объяснения принципа работы такого двигателя я не нашёл. Везде рассказывается сложным техническим языком, зачастую понятным только инженеру. И я решил попробовать рассказать по-простому так, чтобы понял и инженер, и ребёнок.

Читать далее

Bittorrent с нуля на Go

Reading time15 min
Views25K


BitTorrent — протокол загрузки и распространения файлов через Интернет. В отличие от традиционных отношений клиент/сервер, когда загрузчики подключаются к центральному серверу (например, для просмотра фильма на Netflix или загрузки веб-страницы), участники сети BitTorrent, называемые одноранговыми узлами, загружают фрагменты файлов друг с друга. Это то, что делает BitTorrent одноранговым протоколом. Исследуем, как он работает, и создадим собственный клиент, который сможет находить одноранговые узлы и обмениваться с ними данными.

Читать дальше →

Ультра-маленькие демки под DOS

Reading time13 min
Views16K

В статье вы узнаете как сделать маленькие программы для MS-DOS на ассемблере, я покажу как рисовать 2D графику напрямую в видео-буфер. Может быть, вы даже вдохновитесь на создание собственного демо, которое будет ставить рекорды по размерам исполняемого файла.

Читать далее

Контроллер CH579. Начинаем работу и избавляемся от закрытой сетевой библиотеки

Reading time14 min
Views16K


Сегодняшняя статья – не восклицание: «Смотрите, какой мне красивый проц попался». Это скорее просто упорядочивание накопленных сведений о конкретном процессоре CH579. Вдруг кому пригодится. Ну, и, если через годы мне потребуется, я сам буду восстанавливать знания по этой статье. Просто так получилось, что по проекту Заказчик велел освоить его… Это недорогой микроконтроллер на базе ядра Cortex M0. После освоения Заказчик же и сказал, что мы всё будем делать на китайском клоне STM32. Характеристики же самобытного CH579 он признал недостаточными.

Но с другой стороны… Сегодня эта микросхема стоит 120-150 рублей за штуку на Ali Express. А у неё имеется не только встроенный PHY для десятимегабитного Ethernet, но и всё для работы по BLE. По-моему, не самая плохая цена. Кажется, для Интернета вещей может пригодиться. Но это цены за микросхему. Макетки безобразно дороги.

Ещё на многих форумах народ возмущается, что сетевая библиотека для этого контроллера поставляется не в виде исходных кодов. Китайцы отвечают, что они не собираются ничего менять. Наш Заказчик тоже возмущался. Поэтому в статье я покажу, каким путём мы шли, чтобы сделать исходный код. Любой сможет повторить этот путь буквально за пару дней. Там скорее обидно, чем сложно.

В общем, сегодня мы пробежимся по работе с китайским контроллером CH579. Будет немного практических сведений и немного мемуаров, как пришлось вскрывать библиотеки.
Читать дальше →

Рецепт красивого бабаха. Три составляющих хорошего силового преобразователя. Часть 2

Reading time11 min
Views19K

У вас есть симпатичная плата силового преобразователя? Тогда мы идём к вам! Давайте взорвём его! На картинке источник питания и «всё что осталось после нашей с ним работы». Приветствую. Это вторая часть статьи о трёх составляющих преобразователя. Сегодня доберёмся до некоторых хитростей, до пока ещё живых примеров и до салюта. Интересно? Тогда пристёгивайтесь и поехали!
Читать дальше →

Как выбрать широкополосный модем для беспилотного летательного аппарата (БЛА) или робототехники

Reading time15 min
Views21K
Задача передачи большого объема данных с борта беспилотного летательного аппарата (БЛА) или наземной робототехники не редкость в современных приложениях. В данной статье рассматриваются критерии выбора широкополосных модемов и сопутствующие проблемы. Статья написана для разработчиков БЛА и робототехники.
Читать дальше →

Как создать эвристический алгоритм онлайн-мастеринга и получить предупреждение от RIAA

Level of difficultyMedium
Reading time24 min
Views17K

Добрый день, меня зовут Сергей. В своей статье я бы хотел осветить тему аудио мастеринга, а именно: автоматизированного онлайн-мастеринга музыки.

Я расскажу о своём пути от продюсера психоделического транса до мейнтейнера самой популярной open source библиотеки автоматизированного референсного мастеринга на Python, получившей предупреждение от американской ассоциации звукозаписывающих компаний RIAA.

Читать далее

Ретроразработка драйвера для Windows 3.1

Reading time6 min
Views12K
Word, запущенный в Windows 3.1 с удобным разрешением 1152х864

Много месяцев назад я попробовал свои силы в написании 256-цветного драйвера высокого разрешения для Windows 3.1. Попытка была успешной, но работа пока ещё не завершена. В процессе я заново открыл для себя множество забытых вещей и узнал ещё больше новых. Этот пост основан на заметках, которые я делал по ходу разработки.
Читать дальше →

Information

Rating
Does not participate
Date of birth
Registered
Activity