byte_shifter
80 subscribers
177 photos
20 videos
23 links
hardware developer notes by @kishovRasul
Download Telegram
Сделал плату под OrangePi CM5 для небольшого стартапа. Взялся за этот проект в порядке исключения - все-таки это не совсем мой обычный профиль. Но задача была интересная, а ребятам это было действительно нужно.

К плате подключаются тач AMOLED-дисплей высокого разрешения, почти как у небольшого планшета, SD-карта, 3.5 мм аудиоджек для вывода звука, разные кнопки, контроллер заряда аккумулятора, схема питания, RTC-модуль и еще всякое по мелочи.

Работать с OrangePi - удовольствие сомнительное, конечно. Поддержка слабая, документация местами очень сырая и даже с явными ошибками (в смысле не просто опечатка, а прям ошибка и непонятно, что там в итоге должно быть), коммьюнити почти нет. В целом с ними, наверное, можно работать, если ты уже в теме и понимаешь, как устроены SoC от Rockchip. В противном случае, как было у меня, приходится собирать по кускам всю доступную документацию, читать даташиты и сопоставлять их между собой. И даже после этого нет полной уверенности, что все будет работать как надо.

P.S. Модельки в новой версии KiCad выглядят как-то странно и блекло. Пока не разобрался, почему так
👍6❤2🔥1
Несколько постов назад я писал про тестовый стенд. Собственно вот и он.
Чтобы сэкономить время, я тут срезал углы как мог. Не стал его интегрировать в корпус, по максимуму использовал готовую электронику.

Ну и навайбкодил все что можно было навайбкодить. Получилось дешево и быстро.

Стенд тестирует две разные половинки одного устройства.

Одна половинка вставляется и прижимается к иголкам (pogo pins) в этом оранжевом блоке, а они шлейфом подключаются к моей собранной плате. Вторая половинка зажимается прищепкой и к ней подключается разъем.

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

Ну и всем этим процессом руководит комп. На скриншоте можно увидеть измеряемые напряжения, интерфейс управления. Тут у меня нет полной автоматизации, но есть сценарии, которые подают разные комбинации сигналов. Например сценарий "зарядка аккумулятора", в этом варианте подается 5В на USB вход и можно увидеть токи зарядки и соответствующие напряжения. Или сценарий "кручу мотор" при котором подается питание от аккумулятора (на самом деле от лабораторника), контроллер этой синей платы имитирует переключение датчиков Холла при вращении двигателя и контроллер на тестируемой плате думает, что он на самом деле им управляет (а на самом деле он нагружает мощные резисторы), а я в это время вижу, что контроллер действительно ведет себя как должен, что он формирует сигнал вращения двигателя (FQ на графике), вижу соответствующие напряжения питания на графиках и потребление у лабораторного блока питания.

Все это позволяет мне не собирать изделие из дефектных плат и в большинстве случаев сразу понимать, что с платой не так и экономить тучу времени на последующей диагностике, разборке/сборке. Учитывая, насколько проблемными были платы от некоторых поставщиков, потраченное на него время окупилось многократно
👍3🔥3❤‍🔥1
Я помню, как еще студентом смотрел вакансии по интересующим меня специальностям. Там часто, помимо разработки электроники, был пункт про разработку софта для компьютера.

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

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

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

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

Вот, например, скрин «прошивальщика» для производства nomlamp.ru.

Этот софт обращается к утилитам STMicroelectronics, чтобы стереть, настроить и запрограммировать контроллер нужной прошивкой под конкретное устройство. Интерфейс специально сделан максимально простым, чтобы не очень квалифицированный персонал ничего не перепутал.

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

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

P.S. Электроника на картинках на скрине моей разработки
👍4🔥2👏1
byte_shifter
Сделал плату под OrangePi CM5 для небольшого стартапа. Взялся за этот проект в порядке исключения - все-таки это не совсем мой обычный профиль. Но задача была интересная, а ребятам это было действительно нужно. К плате подключаются тач AMOLED-дисплей высокого…
Эта плата, модельку которой прикладывал выше, уже на стадии завершения производства.
Прикольно рассматривать ее рентген снимок. Если есть BGA на плате, то такой снимок делают обязательно
❤5
Моя плата выше готова и уже у заказчика)
Так выглядит обвес для работы CM5 модуля Orange Pi
🔥7👍4❤1👏1
Сегодня впервые посмотрел на свое устройство вживую)
Это ячейка выдачи заказов Дринкит. До этого я видел работу только совсем ранних прототипов.
И если что, сама идея не моя. Ко мне пришли с рабочим, но отчаянно глючавшим прототипом, чтобы я сделал из него серийное изделие.

Работает он так - делаешь заказ, загорается вот такая ячейка с твоим именем, подсветка жёлтого цвета. Когда заказ готов - он на этой ячейке и она горит уже синим цветом. Просто идёшь и забираешь свой заказ.

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

Вспомнил одну историю, как мы поменяли на плате один разъем при переводе производства этих ячеек в Китай и у нас тут же начались проблемы с надёжностью. Расскажу про нее в следующем посте.
👍5🔥3❤1
Прикольное видео про одну особенность оперативной памяти DDR:
https://www.youtube.com/watch?v=KKbgulTp3FE
Я начал смотреть его с изрядной долей скепсиса: ну да, DDR хранит каждый бит буквально в заряженном или разряженном конденсаторе. А поскольку у любого конденсатора есть саморазряд, контроллеру приходится периодически «обновлять» эти ячейки. Знаю, читал ещё студентом, всем известно — ничего нового.
С этого ролик и начинается. Но потом постепенно появляются всё более интересные детали, и незаметно уровень погружения становится гораздо глубже.

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

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

Или ещё интереснее: существует техника Rowhammer, которая позволяет влиять на биты в соседних ячейках памяти, если достаточно агрессивно обращаться к соседним ячейкам памяти. Потенциально это можно использовать для атак.

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

Формат повествования такой, что можно детям показывать - все увлекательно и просто
❤3👍3
https://www.youtube.com/watch?v=tz23G_UXCGA

Вчера посмотрел классное видео от веритасиума, очень рекомендую к просмотрю. Настоящий шпионский детектив, до мурашек.

Оказывается, исследователи заметили странные сбои GPS над огромными территориями. Не где-то в одной точке, не рядом с конкретным городом или военной базой, а сразу над большими участками Европы, Гренландии и Канады. На множестве приёмников одновременно ухудшался сигнал. И длительность помехи всего одна секунда, повторяемость всего пару раз в месяц.

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

А здесь масштаб был слишком большой.

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

То есть GPS мог глушиться сверху. Дело в том, что GPS-сигнал на земле очень слабый. Он приходит от спутников, которые находятся очень далеко, и приёмник ловит буквально крошечный радиосигнал на фоне шума. Поэтому, если кто-то создаёт помеху в нужном диапазоне, вся эта огромная и привычная инфраструктура внезапно оказывается уязвимой.

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

Очень рекомендую посмотреть. Это тот случай, когда после ролика начинаешь иначе относиться к вещам, которые обычно считаешь само собой разумеющимися. Можно представить, что будет с Европой, если весь GPS вырубится в один момент. Ролик намекает, что это вот прям возможно и может произойти в любой момент.

А обещанный рассказ про умную выдачу для DrinkIT и как мы поменяли один разъем на плате и огребли проблем будет чуть позже. Как раз прямо сейчас с ними вожусь)
👍6🔥4❤3
Уже почти два года прошло с тех пор, как я закончил разработку умной выдачи для кофеен DrinkIT. С тех пор её серийно производят в Китае уже без моего участия, но время от времени ко мне всё равно возвращаются с разными просьбами.

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

Хотя не совсем первый.

Для начала небольшое техническое отступление. В этой системе все модули соединяются последовательно, «паровозиком». Чтобы упростить монтаж, используется всего один кабель, по которому одновременно передаются и питание, и данные. Чтобы снизить требования к кабелю и уменьшить потери на длинных линиях, я предложил использовать питание 48 В. Под такую задачу отлично подходит обычный Ethernet-кабель или готовый патч-корд. По похожей логике построен и PoE. И по тем же парам проводов, которые обычно используются для питания в PoE, мы передаём 48 В, а по сигнальным парам работает общая шина CAN.

И вот такой вариант — на втором фото — благополучно использовался без каких-либо нареканий. Система работала стабильно и не требовала обслуживания.

Но потом настал момент, когда команда решила передать производство в Китай. А раз система теперь должна была поставляться полностью «под ключ», появилась идея заменить Ethernet-кабель на обычный, дешёвый и простой JST-кабель (третье фото).

И тут меня спросили, а можно ли заменить разъём и сразу пустить в производство выдачу без тестов? Как меня научил мой опыт, такой вопрос — один из самых опасных, на которые приходится отвечать инженеру.

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

Опыт, конечно, в какой-то степени помогает предвидеть проблемы. Тут даже хорошо ложится эффект Даннинга — Крюгера.

Мой личный совет: если область требует сложной экспертизы, а молодой неопытный специалист уверенно говорит вам, что «всё будет хорошо», это почти наверняка значит, что "хорошо" не будет. Это тот самый "пик глупости".

Бывалый инженер в такой ситуации, наоборот, шарахнется и скажет, что ничего менять категорически нельзя. Он находится в "долине отчаяния".

А более опытный специалист постарается не просто запретить изменение, а расписать риски, предложить рискменеджмент. Это уже "склон просветления".

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

И да, когда эта партия попала к клиентам, системы начали выходить из строя.

Диагностика показала, что в ячейках сгорали CAN-трансиверы. Сам по себе интерфейс очень надёжный и помехоустойчивый, но у любого трансивера есть пределы по допустимому напряжению на линиях и по common-mode диапазону. Если их регулярно превышать, пусть даже короткими импульсами, трансивер может деградировать и в итоге сгореть.

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

CAN-трансиверы бывают очень разные. Технически они делают одну и ту же работу, но рассчитаны на совершенно разные условия эксплуатации. Есть дорогие, крутые, которые обладают огромным запасом по защите. А есть совсем бюджетные варианты
Мне нужно было найти компромисс: чтобы не был очень дорогим, был pin-to-pin совместим и был существенно лучше. И я нашел тогда такую замену.

Сейчас у DrinkIT уже 216 кофеен, прошло 2 года и вот одна система всё-таки вышла из строя. Эту систему я починил, а дополнительные меры по защите уже согласовал. Теперь запас должен быть ещё больше — и, надеюсь, такие отказы больше не повторятся.
👍6🔥3
https://cepr.org/publications/dp21577
https://markokovic.substack.com/p/ki-ruiniert-bildung

Случайно наткнулся на пост про это исследование и полез читать. Не по теме канала, но очень интересно.

Это масштабное исследование, изучающее влияние использования чатботов на более чем 26 000 студентов в Китае в течение 30 месяцев. В исследовании не тестировались специально настроенные ИИ-репетиторы, а скорее эффект общей доступности чат-ботов.

И если коротко, то весь цимес статьи можно увидеть на картинке. Если неинтересно и картинку рассматривать, то вот выводы:
- средний бал растет
- скорость выполнения домашки растет
- расплата - снижение бала где-то на 20% на экзаменах, где их применять нельзя.

Около 80% учеников сокращали время на домашки и добивались высоких баллов.
А те кто продолжал тратить на задания столько же времени, как и раньше, почти не пострадали в учёбе.
❤4👍2