Search
Write a publication
Pull to refresh
119
0
Send message

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

Reading time14 min
Views16K


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

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

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

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

OpenRPNCalc: делаем бескомпромиссный калькулятор

Reading time12 min
Views24K

Вообще-то в блогах я обычно выступаю в роли фриковатого научного сотрудника, занудным голосом вещающего про какое-нибудь измерение параметров Стандартной Модели. Но сейчас я попробую совсем другой жанр. Короче говоря, в один прекрасный день я понял, что мне не хватает «железного» научного калькулятора. Пришлось делать самому. 

Но зачем?

3D лазерный сканер на Android телефоне

Reading time6 min
Views45K

Представляю вниманию DIY сканер на базе Android смартфона.

При проектировании и создании сканера, в первую очередь, интересовало сканирование крупных объектов. Минимум – фигура человека в полный рост с точность – хотя бы 1-2 мм.

Данные критерии успешно достигнуты. Успешно сканируются объекты при естественном освещении (без прямого солнечного света). Поле сканирования определяется углом захвата камеры смартфона и расстоянием, на котором лазерный луч сохраняет достаточную для детектирования яркость (днем в помещении). Это фигура человека в полный рост (1.8 метров) с шириной захвата в 1.2 метров.

Сканер был сделан из соображений «а не сделать ли что ни будь более или менее полезное и интересное, когда заняться нечем». Все иллюстрации – на примере «тестового» объекта (выкладывать сканы людей не корректно).

Как показал опыт, для сканера такого типа ПО — это вторично и на него было потрачено меньше всего времени (на окончательный вариант. Не считая эксперименты и тупиковые варианты). Поэтому в статье особенностей ПО касаться не буду (Ссылка на исходные коды в конце статьи.)

Цель статьи – рассказать о тупиковых ветках и проблемах, собранных на пути к созданию окончательной рабочей версии.

Пишем телеграм-бота на Rust, предварительно спаяв сетевую карту

Reading time11 min
Views19K

Что делать, если ваш микроконтроллер не умеет работать с сетью, а бота для телеграма написать хочется? Конечно же, сделать свой сетевой адаптер на логических микросхемах!

Читать далее

Превращаем FX3-устройство в анализатор шины USB 2.0

Reading time16 min
Views3K
Обычно для своих статей я выбираю или учебную тему, или какую-то проблему, а дальше – если тему, то раскрываю её, а если проблему, то соответственно, решаю. Но в рамках цикла про работу с FX3, все темы, какие хотел, я раскрыл. Из тех, что лежат на поверхности, не раскрыта тема обслуживания пакетов нулевой длины, но мне с нею на FX3 не пришлось разбираться. Из скрытых – ну, на то они и скрытые. Я почти в каждой статье говорил, что не собираюсь становиться гуру FX3. Так что я не владею скрытыми темами. Я хочу просто взять чип, взять готовый пример, допилить его и пользоваться. Собственно, после нескольких приключений, это сделать вполне себе удалось. Можно завершать цикл.

Однако красной нитью через цикл проходит разработка анализатора шины USB 2.0 на основе модуля ULPI. Возможно, кто-то статьи читал не из-за FX3, а из-за интриги, выйдет или не выйдет. Вышло! Давайте сегодня я покажу, как скрестить ежа и ужа (ежом будет голова анализатора из этой статьи, а ужом – туловище из этой с доработками, размазанными по всему циклу статей). Дальше пробежимся намного по программе для работы с этим делом и по тому, как правильно разбирать логи.

Итак, начинаем внедрять в жизнь идеи Мичурина! Приступаем к скрещиванию!


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

Ethernet поверх USB на STM32F4

Reading time9 min
Views59K


Недавно возникла идея заставить плату на базе МК STM32F4 работать по сети. Поскольку на борту отсутствовал Ethernet PHY контроллер, то единственным вариантом было использовать USB FullSpeed интерфейс для эмуляции Ethernet устройства. Распространённый стандарт USB-класса, реализующий данную функцию, называется RNDIS.
К своему огорчению, поиск RNDIS драйвера для STM32 не увенчался успехом. Впрочем, это не удивило, т.к. открытые примеры использования USB порта у STM32 ограничиваются только теми, что предоставил нам производитель.
Захотелось исправить сию несправедливость. А заодно и поиметь нужные исходники, благо в будущем они пригодятся.
Сейчас, когда демонстрационная версия библиотеки готова, выкладываю её в свет на правах MIT-лицензии. Поэтому, все кому библиотека интересна — пользуйтесь «на здоровье». Библиотека имеет название LRNDIS, первая буква которого означает использование сетевого стека для встраиваемых систем «LwIP».
Для демонстрации возможностей библиотеки был создан пример на плате stm32f4discovery. Его работа заключается в поддержке основных сервисов (DHCP и DNS сервера) и передаче usb-хосту запрашиваемых WEB-страниц. Таким образом, наш discovery превратился в почти полноценный WEB-сервер, работающий по порту USB!
Пару слов о том, где это применимо.
В быту RNDIS устройства обычно являются USB-модемами для доступа в Интернет. Возможно, такое применение, действительно, окажется полезным, если разработчик выберет STM32 в роли связующей цепочки между ПК и радиочастотным (или другим) трансивером. Или, может быть, захочет расширить собственную сеть на Ethernet-сегмент?
Другое применение, в котором нахожу основную пользу для себя, — это интерфейс управления сложными устройствами. Типовое решение в этой области — создание терминального ПО. При этом приходится заниматься его поддержкой вместе с поддержкой устройства, что бывает неудобным. Собственно, в отказе от такой схемы в пользу управляющего Web-интерфейса и заключается смысл возможного применения библиотеки. Вспомните Web-интерфейсы настройки роутеров. Удобно. Красиво. Без лишнего ПО.

Итак, если Вы заинтересовались, читайте далее…
Читать дальше →

Самодельная клавиатура PS/2 – это просто

Reading time14 min
Views17K

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

Суть сегодняшнего предмета для изучения опять сугубо академическая.

Лично я взялся за подобную разработку по одной простой причине: Потребовалась клавиатура для самодельного компьютера Z80-MBC2.

Однако, устройство вполне работоспособно с любым PC.

Читать далее

Reticulum — радиопротокол для mesh-сети. Зашифрованная пиринговая связь без интернета

Reading time4 min
Views24K


Как мы обсуждали ранее, отключение интернета в конкретной стране или городе — не вымышленная угроза, а вполне реализуемое действие. В частности, международная ассоциация Internet Society зафиксировала в 2021 году 49 искусственно вызванных шатдаунов.

Но есть эффективные технологии, которые позволят пережить возможный шатдаун. Например, mesh-сети для радиосвязи.
Читать дальше →

Прямое подключение крохотного OLED-дисплея по HDMI

Reading time11 min
Views27K

Есть у меня склонность к реализации глупых и бессмысленных проектов. Перед вами один из них, который появился в результате беседы, закончившейся словами: «Слушай, а ведь технически возможно…», — не вопрос, давай сделаем.
Читать дальше →

PINE64: не PinePro единым. Что еще может предложить разработчик «свободного» Linux-телефона

Reading time4 min
Views22K

Компания PINE64 известна, в первую очередь, своими телефонами. До недавнего времени нужно было бы писать «телефон», но на днях в дополнение к первой модели, PinePhone, вышла вторая — PinePro.

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

Предельная скорость USB на STM32F103, чем она обусловлена?

Reading time18 min
Views21K
У данной статьи тяжёлая история. Мне надо было сделать USB-устройства, не выполняющие никакой функции, но работающие на максимальной скорости. Это были бы эталоны для проверки некоторых вещей. HS-устройство я сделал на базе ПЛИС и ULPI, загрузив туда «прошивку» на базе проекта Daisho. Для FS-устройства, разумеется, была взята «голубая пилюля». Скорость получалась смешная. Прямо скажем, черепашья скорость.



Но я же крутой, у меня теперь есть USB-анализатор (его разработка была описана в блоке из нескольких предыдущих статей). Посмотрев логи, я понял, что похоже, знаю, почему скорость невозможно поднять, даже если STM32F103 обслуживает исключительно USB и ничего больше. Даже начал писать о результатах… Но потом решил, что кому-то это будет не интересно, а кто-то скажет, что и так это знал.

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

Итак, давайте выясним, почему именно STM32F103C8T6 не может прокачать по шине USB данные на скорости 12 мегабит, заняв всю ширину предоставленного канала, и можно ли с этим что-то сделать.
Читать дальше →

Изготавливаем самодельный электролюминесцентный индикатор

Reading time11 min
Views25K
В прошлый раз я показывал вам свою коллекцию советских электролюминесцентных индикаторов. Я капитально подсел на эту тему и последние три месяца пытаюсь изготовить самодельный индикатор удовлетворительного качества.

Дерпи Хувс ловит маффины. Стекло. Эпоксидка. Зелёный люминофор.

Я потратил целых три месяца и изготовил добрую сотню образцов, прежде чем у меня стало получаться что-то сносное. На данный момент я провёл пять экспериментов и изготовил две серии прототипов.

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

Запуск X-приложения в chroot на примере POSE (или «QEMU не нужен»)

Reading time4 min
Views4.2K

Эта мини-статья родилась как ответ на статью Упрощаем эмуляцию X86 с помощью Live CD, в которой для запуска старых 32-битных приложений на 64-битных дистрибутивах Linux предлагалось использовать QEMU + Live CD — по моему мнению «из пушки по воробьям». Опишу своё решение на chroot + debootstrap.

Читать далее

Проброс видеокарты в ноутбуке. Laptop GPU Passthrough

Reading time10 min
Views24K


… или как из игрового ноутбука средствами виртуализации сохранить игровую систему!
Если Вы рассматриваете ноутбук/ПК не только как игровую станцию, а еще и как хост для виртуальных машин, но при этом иногда нужно поиграть/поработать с 3d, то это возможно!

Добро пожаловать под cut.
Читать дальше →

Генерация перемещаемого кода для процессоров ARM в компиляторе LLVM

Reading time12 min
Views5K


Процесс обновления «прошивки» для микроконтроллера – опасная вещь. Раньше при обновлении «прошивки» любой аппаратный сбой приводил к тому, что устройство превращалось в кирпич. В наше время часто имеется начальный загрузчик, который позволит произвести процесс обновления заново, но до того, весь функционал устройства будет потерян. Пока не будет завершено обновление, работать оно уже не будет. Самым красивым способом является использование двух областей для размещения «прошивки» — основной и запасной. На рисунке ниже это красная и синяя области. Исходно активная красная, а обновление будет загружаться в синюю. Сбой загрузки не страшен. Если он произойдёт, управление останется у красной области. При успехе операции, активной станет синяя область, а новое обновление будет загружаться в красную. Ну, и так далее. Каждое обновление будет приводить к рокировке.



К сожалению, в системах Cortex M такой путь напрямую невозможен. Программа привязана к абсолютным адресам и не может исполняться в произвольном месте. С чем это связано и как мы сделали её перемещаемой, подправив компилятор LLVM, рассказано в данной статье.
Читать дальше →

Как мы сделали оффлайновый SMS-локатор/трекер

Level of difficultyEasy
Reading time4 min
Views5.2K

Сейчас начинается самый продуктивный сезон сбора грибов. В этой статье я расскажу о технически успешной попытке сделать "оффлайновый" SMS-локатор, и о том, почему проект "не взлетел". И о том, при чём тут грибы :)

Начну издалека. С пяти лет я начал ходить в лес, чуть позже - на рыбалку, ещё позже, во взрослом возрасте — на охоту, а где-то с 2014-го года более-менее регулярно езжу искать потерявшихся в природной среде людей. Были и успешные поиски, и случаи, когда находили потерявшихся слишком поздно, и когда не находили совсем — причем, во многих случаях, у потерявшихся людей были с собой сотовые телефоны.

В 2017 мне в голову пришли мысли: ну хорошо, я сам пока здоровый, и хожу в лес один, наматывая с ружьем десяток километров за раз, но вот если со мной что-то случится - то как меня найдут? Да и чтобы близкие не беспокоились — можно ли их как-то держать в курсе? Есть ли надежные способы давать весточку о своем местонахождении?

Читать далее: идея, разработка, и Гугл

Всемогущий FFmpeg: скриншаринг в WebRTC

Reading time9 min
Views17K

Когда мы пишем статьи о своем сервере в комментариях очень часто находится читатель, который говорит:

"И зачем такой огород городить? Все это одной FFmpeg командой делается!"

Читать далее

ДЕЛАЕМ МОЩНУЮ ПЛАВИЛЬНЮ — DIY

Reading time12 min
Views14K

Хомяки приветствуют вас друзья!

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

Читать далее

Перехват инфракрасных пультов с помощью Flipper Zero

Reading time14 min
Views53K


Flipper Zero — проект карманного мультитула для хакеров в формфакторе тамагочи, который мы разрабатываем.
Предыдущие посты
Как выглядит тестирование электроники Flipper Zero




Как мы делаем корпус Flipper Zero безупречным




Нахлобучиваем домофонные ключи iButton с помощью Flipper Zero




Как выглядит производство корпусов Flipper Zero изнутри




Altium 365 — как GitHub, но для разработки железа. Как мы делаем Flipper Zero




Flipper Zero — вымученная сертификация, открытие исходников и новые приколдесы




Делаем отладочную плату для Flipper Zero в Altium




Flipper Zero — план по производству и доставке




[Конкурс завершён] Помогите написать лор для Flipper Zero




Flipper Zero — предфинальные детали для пресс-форм, готовимся к запуску производства




Flipper Zero — в шаге от финальной версии железа




Псс, парень, не хочешь сделать модуль для Flipper Zero?




Flipper Zero — прогресс за сентябрь




Flipper Zero — давайте пилить вместе. Приглашаем разработчиков




Flipper Zero — как выйти на Кикстартер сидя на карантине на даче




Flipper Zero/One — теперь два устройства. Подготовка к Кикстартеру




[Flipper Zero] отказываемся от Raspberry Pi, делаем собственную плату с нуля. Поиск правильного WiFi чипа




Flipper Zero — пацанский мультитул-тамагочи для пентестера
Первый пост




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

В статье я покажу:

  • Как устроены инфракрасные приемники и передатчики
  • Какие бывают цифровые сигналы ИК-пультов
  • Перехват и анализ ИК-сигналов
  • Как с помощью Flipper Zero стать инфракрасным властелином

Как работает усилитель звуковой частоты

Reading time7 min
Views232K

Введение


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

Усилитель звуковой частоты или усилитель низкой частоты, что бы разобраться как он всё таки работает и зачем там так много всяких транзисторов, резисторов и конденсаторов, нужно понять как работает каждый элемент и попробовать узнать как эти элементы устроены. Для того что бы собрать примитивный усилитель нам понадобятся три вида электронных элементов: резисторы, конденсаторы и конечно транзисторы.
Читать дальше →

Information

Rating
788-th
Registered
Activity