Что можно сделать из старого мультиметра

от admin

Как сделать металлоискатель из мультиметра

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

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

Что можно сделать из старого китайского мультиметра

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

Что можно сделать из старого китайского мультиметра

Рассмотрим, как сделать из старого мультиметра самодельный металлоискатель.

Металлоискатель из мультиметра своими руками

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

Металлоискатель из мультиметра своими руками

Итак, для изготовления самодельного металлоискателя из мультиметра понадобятся:

  • Китайский мультиметр;
  • Эмалированная проволока диаметром не более 0,3 мм;
  • Полутораметровый кусок пластиковой трубы 20 мм;
  • Скотч или синяя изолента.

Самодельный металлоискатель из мультиметра работает за счет медной катушки, которая наматывается тонкой эмалированной проволокой. Для наматывания катушки нужно забить два гвоздя на расстоянии 15-20 см друг от друга, после чего следует намотать на них около 150 витков медной проволоки.

Металлоискатель из мультиметра своими руками

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

Как работает самодельный металлоискатель

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

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

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

Как работает самодельный металлоискатель

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

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

7 доработок мультиметра — фонарик, подсветка, аккумулятор, щупы, крепеж на руку, колпачки, кнопка отключения.

доработка мультиметра DT830

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

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

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

В первую очередь с чем сталкивается 99% пользователей дешевых китайских мультиметров — это выход из строя некачественных щупов для замеров.

заводские китайский щупы для измерения

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

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

Чаще всего излом провода происходит в местах подсоединения на втычном контакте и непосредственно на пайке острого наконечника щупа.излом провода щупов мультиметра
Когда это произойдет вы удивитесь насколько проводок внутри действительно тонкий. тонкий проводок на щупе мультиметра dt830А между тем мультиметр должен быть рассчитан на измерение токовых нагрузок до 10А! Как это можно сделать с помощью такого провода не понятно.измеряемая величина мультиметром в 10А

погрешность при измерении стандартными щупами мультиметра

Вот реальные данные замеров тока потребления для фонариков, выполненные с помощью стандартных щупов идущих в комплекте и с помощью самодельных щупов сечением 1,5мм2. Разница погрешности как видите более чем существенная.

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

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

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

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

самодельный щуп для измерения

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

При замене втычных контактов лучше всего использовать вот такие штекеры применяемые в аудио аппаратуре под гнезда динамиков.доработка щупов штекерных разъемов на мультиметре
Если уж совсем колхозить или других вариантов под рукой нет, то в крайнем случае можно применить обычные контакты из разборной вилки.
Они также идеально подходят под разъем на мультиметре. вилка в разобранном состоянииПри этом не забудьте заизолировать термотрубкой концы, которые будут торчать снаружи мультиметра, в местах пайки проводов к вилке.

Когда возможности самостоятельно изготовить щупы нет, то корпус можно оставить прежний, заменив лишь провода.

При этом возможны три варианта:

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

  • заказать в Китае по дешевке силиконовые провода

После замены такие провода очень легко будут собираться в пучок и при этом не путаться.

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

В третьих погрешность измерений из-за их большего сечения по сравнению с оригинальными будет минимальна. То есть везде сплошные плюсы.

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

качественные силиконовые щупы для мультиметра

Те, кто не хочет заниматься самоделками, может заказать уже готовые качественные силиконовые щупы с множеством наконечников на Али вот здесь.

скрученные измерительные провода под измерительный прибор

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

В дешевом варианте такой фокус не пройдет. А при использовании для разогрева строительного фена изоляция и вовсе может поплыть.

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

А что делать если измеряешь напряжение в щитке или в распредкоробке под потолком?

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

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

магнитное крепление измерителя на стойку

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

подставка из скрепок

Еще один вариант недорогой модернизации мультиметра в части его удобного размещения и установки на поверхность при замерах — изготовление самодельной подставки. Для этого вам понадобится всего 2 скрепки и термоклей.

крепление мультиметра на руке

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

Делаете из резинки кольцо, пропускаете его через корпус и все. Таким образом мультиметр можно удобно закрепить прямо на руке, наподобие часов.

доработка крепежа мультиметра на руку

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

защитные колпачки на щупы мультиметра

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

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

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

Функция которой не хватает мультиметру в плохо освещенных местах — подсветка дисплея. Решить эту проблему не сложно, достаточно применить:

2 светодиода

  • 2 светодиода последовательно припаянных друг к другу

самодельная подсветка мультиметра dt830

Проделываете в корпусе сбоку отверстие для выключателя. Приклеиваете отражатель под дисплеем индикации и припаиваете два проводка к контактам кроны. От них подается питание на выключатель и далее на светодиоды. Конструкция готова.

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

В конечном результате самодельная доработка подсветки мультиметра будет выглядеть вот так:

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

зарядно разрядные платы

В последние годы стала очень популярной переделка мультиметра по замене питания с оригинальной кроны на литий ионную батарейку от сотовых телефонов и смартфонов. Для этих целей помимо самого аккумулятора понадобится зарядно-разрядные платы. Покупаются они на Алиэкспрессе или других интернет магазинах.

Плата защиты от переразряда у подобных элементов питания изначально встроена в батарейку в верхней ее части. Нужна она чтобы аккумулятор не разрядился свыше номинально допустимых норм (примерно 3 Вольт и ниже).аккумулятор от телефона в разрезе
Зарядная же плата не дает перезарядить аккумулятор свыше 4,2 Вольт (ссылка на ali). зарядная плата на батарейкуКроме этого понадобится плата повышающая напряжение от 4В до необходимых 9В (ссылка на ali).плата повышающая напряжение
Сама батарейка компактно помещается на задней крышке и нисколько не мешает ее закрытию.переделка мультиметра под литий ион
Предварительно на повышающем модуле необходимо выставить выходное напряжение в 9 Вольт. Подключаете его проводками к еще не переделанному мультиметру и отверткой выкручиваете требуемое значение.регулировка выходного напряжения на плате

В корпусе под зарядный разъем микро или мини usb придется проделать отверстие.

отверстие в корпусе мультиметра под микро usb разъем

доработка питания мультиметра под литий ионную батарейку

Сам повышающий модуль располагается в месте где должна стоять крона.

Обязательно позаботьтесь о том, чтобы проводки от модуля до батарейки были необходимой длины. В будущем это позволит без проблем снимать крышку, и располовинив корпус, заниматься при необходимости внутренней ревизией мультиметра.

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

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

залитые термоклеем проводки и платы

Термоклеем желательно залить не только корпус, но и контакты с проводами, чтобы продлить их срок службы.

Существенным недостатком такого мультиметра на литий ионном аккумуляторе является его работа, а вернее не работа при отрицательных температурах.

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

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

доработка кнопки на мультиметре

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

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

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

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

шарики переключателя

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

переключатель dt 830 изнутри

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

добавление кнопки включения отключения питания на мультиметр

Сделать кнопочку можно как во внутреннем исполнении, если найдете свободное место, так и во внешнем. Для этого придется просверлить всего два микро отверстия под проводки питания.

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

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

Ножку анода диода ставите в разъем Е, а ножку катода в разъем С (ножка анода длиннее, чем катод). Все это проделывается в разъемах для режима измерения транзисторов на колодке P-N-P.фонарик из мультиметра добавление функций

Светодиод будет светиться в любых положениях переключателя и потухнет, только когда вы сами отключите мультиметр. Чтобы все это смонтировать внутри, необходимо на монтажной плате найти нужные выводы и припаять два проводка к эмиттеру (разъем Е) и коллектору (разъем С). В разрыв провода впаивается кнопка и монтируется через отверстие в корпусе мультиметра.доработка мультиметра под фонарик

Нестандартное применение мультиметра

Нестандартное применение цифрового мультиметра

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

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

Нестандартное применение цифрового мультиметра

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

Измеритель температуры из мультиметра

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

Нестандартное применение цифрового мультиметра

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

Измеритель температуры из мультиметра

Дополнить устройство поможет переменный резистор номиналом 100 кОм и термодатчик LM35. Для подключения потребуется батарейка типа «Крона» на 9 Вольт. Подключается дополнительное устройство к мультиметру при измерениях на 20 мВ.

Как измерить электромагнитное поле мультиметром

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

Как измерить электромагнитное поле мультиметром

Детектор электромагнитного поля для измерения мультиметром собирается на базе следующих компонентов:

  • Нужен диод 1N34;
  • Постоянный резистор на 3,3 кОм;
  • Два постоянных конденсатора на 30 пФ и 10 нФ;
  • Кусочек медной проволоки в качестве антенны для работы детектора электромагнитного поля.

Собирается дополнительное приспособление на отдельной печатной плате.

Из чего сделать определитель напряжения стабилизации стабилитрона

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

Из чего сделать определитель напряжения стабилизации стабилитрона

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

  • Транзисторов 2N5551 и 2N5401;
  • Диода UF4007;
  • Постоянных резисторов: два на 1 кОм и по 220, 100, 47 кОм;
  • Электролитического конденсатора на 10 мФ;
  • Небольшого дросселя в виде медной проволоки диаметром 0,15 мм, которая наматывается на ферритовый стержень в количестве 150 витков.

Схема определителя напряжения стабилизации стабилитронов питается от автономного источника на 1,5 Вольт.

Вторая жизнь старому стрелочному мультиметру ⁠ ⁠

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

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

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

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

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

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Выбираем провод с более резким наклоном прямой. В моем случае получилось что при максимальном отклонении стрелки напряжение равно 96,4 мВ. Для оцифровки микроконтроллером мало, но ничего страшного, это напряжение можно усилить операционным усилителем. Подойдет любой ОУ, я взял LM2904, просто потому что у меня такой был. Смотрим документ на микросхему – два ОУ в одном корпусе, максимальное выходное напряжение Vcc-1.5v. Запитывать будем от 3.3 вольт, значит надо подобрать коэффициенты усиления так, чтобы при зашкаливающей стрелке ОУ выдавал максимально возможное напряжение.

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

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

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

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

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

На борту у нее микроконтроллер STM32F103C8T6. Есть АЦП и USB. Подходит. Для первоначальной настройки предлагаю воспользоваться STM32CubeMX. Включаем тактирование, настраиваем кварцевые резонаторы.

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Включаем и настраиваем АЦП, не забываем про прерывание по готовности.

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

АЦП будет запускаться по событию таймера, настраиваем таймер.

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Таймер тактируется частотой 48 МГц, с предделителем 24 и периодом 2000 получится, что он будет запускать АЦП каждую 1 мс. В принципе так часто нет смысла, но мы будем использовать усреднение значений, поэтому пусть будет. Включаем USB, выбираем Custom HID.

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Генерируем проект и переходим к написанию кода. Я использовал System Workbench for STM32. Добавляем в «main.c» запуск таймера и АЦП, и несколько глобальных переменных.

/* USER CODE BEGIN PV */

volatile uint16_t x;

/* USER CODE END PV */

/* USER CODE BEGIN 2 */

/* USER CODE END 2 */

В прерывании прибавляем к переменной значение с АЦП и увеличиваем счетчик. Когда счетчик достигнет 200, усредняем значение и перекладываем в буфер для отправки по USB. Поднимем флаг, что пора отправлять.

/* USER CODE BEGIN 4 */

void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)<

adc_sum+=HAL_ADC_GetValue(hadc);

adc_counter++;

HAL_GPIO_TogglePin(LD_1_GPIO_Port,LD_1_Pin);

adc_to_send=adc_sum/ADC_MAX_CONVERSATIONS;

adc_counter=0;

/* USER CODE END 4 */

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

/* USER CODE BEGIN WHILE */

// HAL_GPIO_TogglePin(LD_1_GPIO_Port,LD_1_Pin);

..USB_Send_report(adc_to_send);

/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */

Дескриптор USB устройства уже создался стм кубом, его трогать не будем, только проверим интервал опроса, должно быть не больше наших 200 мс.

0x07, /* bLength: Endpoint Descriptor size */

USB_DESC_TYPE_ENDPOINT, /* bDescriptorType: */

CUSTOM_HID_EPOUT_ADDR, /*bEndpointAddress: Endpoint Address (OUT)*/

0x03, /* bmAttributes: Interrupt endpoint */

CUSTOM_HID_EPOUT_SIZE, /* wMaxPacketSize: 2 Bytes max */

0x20, /* bInterval: Polling Interval (20 ms) */

Далее составим «HID Report» дескриптор в программке HID Descriptor Tool.

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Тут мы говорим, что наше устройство сообщает температуру в комнате (Usage). Report Size=8 и Report Count=4 означают, что 32 бита посылается от устройства к компьютеру (Input) и столько же от компьютера к устройству (Output). Нам из этого всего понадобится только 2 байта, остальное на будущее. Сохраняем как заголовочный файл, и копируем в наш код (куб там оставил место в файле usbd_custom_hid_if.c). Так же надо проверить соответствие размеров репорт дескриптора 35 байт и размер буфера под отправку (тут должно быть 5 байт, потому что мы еще указали Report ID – это еще 1 байт в самом начале). Прошьем и проверим, что устройство правильно определилось в системе.

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Раскомментируем функцию отправки в файле «usbd_custom_hid_if.c» и заполняем, указав первым байтом Report ID, дальше наше значение АЦП.

/* USER CODE BEGIN 7 */

* @brief Send the report to the Host

* @Param report: The report to be sent

* @Param len: The report length

* @retval USBD_OK if all operations are OK else USBD_FAIL

static uint8_t USBD_CUSTOM_HID_SendReport_FS(uint8_t *report, uint16_t len)

return USBD_CUSTOM_HID_SendReport(&hUsbDeviceFS, report, len);

uint8_t USB_Send_report(uint16_t data)<

Rep_buffer[0]=0x01;//report id

Rep_buffer[2]=data;

Rep_buffer[3]=0xFF;

Rep_buffer[4]=0xFF;

return USBD_CUSTOM_HID_SendReport_FS(Rep_buffer,5);

/* USER CODE END 7 */

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

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Осталось написать программку под Windows, которая бы все это обрабатывала. Берем любимую среду программирования и библиотеку для работы с HID устройствами. Я взял старенькую Delphi 7 и библиотеку компонентов JEDI VCL. Из нее нужны «TJvHidDeviceController» и «TJvHidDevice». Добавляем обработчик «OnEnumerate» у девайс контроллера, в него по очереди прилетают все HID устройства при вызове энумерации. Остается отфильтровать наше устройство по VID и PID, затем связать с компонентом «TJvHidDevice».

Читать:
Катчер что это такое

function TUSBMeter.HidControllerEnumerate(HidDev: TJvHidDevice; const Idx: Integer): Boolean;

if (IntToHex(HidDev.Attributes.VendorID,4)=VID)and

(IntToHex(HidDev.Attributes.ProductID,4)=PID) then

if (HidDev.Caps.OutputReportByteLength=OUT_REPORT_COUNT_AMPERAGE) then

HidController.CheckOutByIndex(HidAmperage,Idx);

Result := True;

Данные будут приходить в обработчик «OnDeviceData». В нем вычисляем из посылки значение АЦП и выводим куда-нибудь для проверки.

procedure TUSBMeter.HidControllerDeviceData(HidDev: TJvHidDevice; ReportID: Byte; const Data: Pointer; Size: Word);

if (IntToHex(HidDev.Attributes.VendorID,4)<>VID)or((IntToHex(HidDev.Attributes.ProductID,4)<>PID)) then exit;

buf:=Data; // rep

adc_abs:= adc_abs shl 8;

adc_abs:=adc_abs+(buf^);

Теперь надо сделать пересчет, добавим на форму RadioGroup и настроим как на переключателе мультиметра. Я не стал добавлять шкалу сопротивлений, не нужна.

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Заведем так же масштабирующий массив для пересчета и массив с единицами измерений.

scale_arr: array[1..18] of real = (600,300,150,60,30,15,6,3,0.75,1500,300,60,15,3,0.6,0.12,0.000012,1);

Для пересчета еще понадобятся два граничных значения acd_min и adc_max. Подключаем потенциометр к мультиметру, выставляем стрелку на 0 и смотрим, что присылается в программу. Если тоже 0 – хорошо, если нет – не беда, подкорректируем. Потом выставляем стрелку на максимум и так же смотрим. Важно чтобы когда стрелка «зашкаливала» значение продолжало увеличиваться, так будет запас. Если этого нет, надо подкрутить потенциометр ОУ. У меня получилось 0 и 2365. Пересчитываем и выводим уже на основное табло.

procedure TMainForm.HID_Callback;

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Большая часть готова, теперь надо прикрутить запись в файл, страницу настроек с сохранением и красивый GUI. Формат файла я взял CSV, так как из него будет легко строить графики в Экселе.

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Вторая жизнь старому стрелочному мультиметру Мультиметр, Новая жизнь старых вещей, Схемотехника, Микроконтроллеры, Arduino, Stm32, Delphi, Программирование, Видео, Длиннопост

Все, готово. Осталось собрать все в корпус мультиметра, свободного места там полно. Прорезать отверстие под USB шнурок и убрать обратно на самую дальнюю полку до тех пор, пока не понадобится снять долгий график разряда аккумулятора или график потребления тока каким-нибудь устройством.

Надеюсь, кому-нибудь будет полезно.

и опять USB без гальваноразвязки. комп не жалко?

По умному все, с цифрами, плюсану, вдруг кому-нить пригодится)

Спасибо моему Деду за такой «мультик», благодаря ему перебрал всю проводку в vw golf mk2. А в самой машине смотрится очень аутентично.

Игры на Дельфи⁠ ⁠

Увидел пост на пикабушечке, как чувак рекламирует игру Infinite loop, и захотелось наваять аналог, взяв за основу спрайты из предыдущего своего проекта. Собственно результат:

Игры на Дельфи Игры, Компьютерные игры, Delphi, Инди игра, Головоломка, Программирование

Задача — собрать замкнутую фигуру, вращая элементы головоломки. Сделал 100 этапов, и только потом осенило, что можно сделать процедурную генерацию, чтобы игра была бесконечной. Ну может быть потом доделаю.

Другие мои проекты на Дельфи:

Пазлы (есть сохранение, можно создавать пазлы любого размера и формы): https://disk.yandex.ru/d/8RccyBgVWKevgA

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

Кружок по изучению Arduino бесплатно⁠ ⁠

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

1 — Обучающий набор с 10 уроками
2 — Набор шасси-робот
2 — Набор для ознакомления с Wi-Fi, GPS, Bluetooth стандартами

Все наборы полностью готовы к работе, кроме разбивки на уроки (были бы рады получить помощь методистов, либо сделаем это по обратной связи), доставка за наш счёт, вам надо найти помещение(школы, лицеи, ДК) и желательно тех, кого будете обучать)
Если вы готовы потратить своё время и силы – пишите на почту TPB78@yandex.ru следующую информацию о вас: краткое резюме, главное учили ли вы когда-нибудь детей и знакомы ли с миром Arduino, есть ли желающие кто готов обучаться и потратить 40-60 часов за учебный год для освоения начальных знаний, так как всё таки хотелось начав довести дело до конца. В конце каждого блока мы бы хотели получить обратную связь о заинтересованности детей и доступности материалов.
После нашего знакомства и понимания, что мы подходим друг другу вам будут высланы материалы для ознакомления – наборы и инструкция, чтобы вы оценили свой уровень подготовки к данной деятельности,. Так же мы готовы сотрудничать с НКО работающих в сфере образованием.
Мы не будем просить оплатить какие либо расходы (наборы,доставка и тп), но и покрывать расходы не готовы. Сейчас в бюджет заложено 10 кружков по 10 обучающихся. Это первый наш такой проект, поэтому просим понимания и терпения – мы готовы учится вместе с вами.
На текущий момент ориентируемся на полноценный старт в начале октября.
У нас есть интернет магазин в данной сфере, но пока проект не заработает не хотелось бы получить неоправданную рекламу или оправданный (если что то пойдёт не так) хейт)
Давайте вместе менять мир в лучшую сторону!
Если мы нарушили какие-то правила Пикабу – готовы предоставить администрации подтверждающую информацию.

Топ 20 электронных комплектов «сделай сам» для самостоятельной сборки, пайки и программирования⁠ ⁠

1) Зарядная станция

Топ 20 электронных комплектов «сделай сам» для самостоятельной сборки, пайки и программирования AliExpress, Электроника, Arduino, Самоделки, Хобби, Пайка, Конструктор, Программирование, Программист, Игрушки, Сборка, Своими руками, Робот, Робототехника, Видео, Без звука, Длиннопост

Набор для сборки зарядной станции с солнечной панелью с трекером для отслеживания положения солнца. Для работы требуются знания в Arduino (Ардуино). Ссылка на источник

Топ 20 электронных комплектов «сделай сам» для самостоятельной сборки, пайки и программирования AliExpress, Электроника, Arduino, Самоделки, Хобби, Пайка, Конструктор, Программирование, Программист, Игрушки, Сборка, Своими руками, Робот, Робототехника, Видео, Без звука, Длиннопост

Набор электронных деталей для сборки умного робота-фургона с множеством интересных функций. Ссылка на модель

Топ 20 электронных комплектов «сделай сам» для самостоятельной сборки, пайки и программирования AliExpress, Электроника, Arduino, Самоделки, Хобби, Пайка, Конструктор, Программирование, Программист, Игрушки, Сборка, Своими руками, Робот, Робототехника, Видео, Без звука, Длиннопост

Обучающий комплект для сборки дома с различными способностями, например, если датчик ‘почует’ дым, то срабатывает сигнализация, если начинается дождь (капает вода на сенсор), то закрываются окна и тд. Ссылка на набор

4) Поливочный робот

Топ 20 электронных комплектов «сделай сам» для самостоятельной сборки, пайки и программирования AliExpress, Электроника, Arduino, Самоделки, Хобби, Пайка, Конструктор, Программирование, Программист, Игрушки, Сборка, Своими руками, Робот, Робототехника, Видео, Без звука, Длиннопост

Набор для создания устройства для автоматической поливки цветов. Ссылка

Топ 20 электронных комплектов «сделай сам» для самостоятельной сборки, пайки и программирования AliExpress, Электроника, Arduino, Самоделки, Хобби, Пайка, Конструктор, Программирование, Программист, Игрушки, Сборка, Своими руками, Робот, Робототехника, Видео, Без звука, Длиннопост

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

6) Электронные весы

Топ 20 электронных комплектов «сделай сам» для самостоятельной сборки, пайки и программирования AliExpress, Электроника, Arduino, Самоделки, Хобби, Пайка, Конструктор, Программирование, Программист, Игрушки, Сборка, Своими руками, Робот, Робототехника, Видео, Без звука, Длиннопост

Весы для сборки в деревянном корпусе и электронной ‘начинкой’. Ссылка

Топ 20 электронных комплектов «сделай сам» для самостоятельной сборки, пайки и программирования AliExpress, Электроника, Arduino, Самоделки, Хобби, Пайка, Конструктор, Программирование, Программист, Игрушки, Сборка, Своими руками, Робот, Робототехника, Видео, Без звука, Длиннопост

Умный робот для программирования на ‘гусеницах’. Ссылка на источник

Топ 20 электронных комплектов «сделай сам» для самостоятельной сборки, пайки и программирования AliExpress, Электроника, Arduino, Самоделки, Хобби, Пайка, Конструктор, Программирование, Программист, Игрушки, Сборка, Своими руками, Робот, Робототехника, Видео, Без звука, Длиннопост

Классный ультразвуковой радар. ссылка

Топ 20 электронных комплектов «сделай сам» для самостоятельной сборки, пайки и программирования AliExpress, Электроника, Arduino, Самоделки, Хобби, Пайка, Конструктор, Программирование, Программист, Игрушки, Сборка, Своими руками, Робот, Робототехника, Видео, Без звука, Длиннопост

Набор для создания рисующего робота. Ссылка на набор

Топ 20 электронных комплектов «сделай сам» для самостоятельной сборки, пайки и программирования AliExpress, Электроника, Arduino, Самоделки, Хобби, Пайка, Конструктор, Программирование, Программист, Игрушки, Сборка, Своими руками, Робот, Робототехника, Видео, Без звука, Длиннопост

Набор для сборки и программирования робота-машинки с камерой. Ссылка

Топ 20 электронных комплектов «сделай сам» для самостоятельной сборки, пайки и программирования AliExpress, Электроника, Arduino, Самоделки, Хобби, Пайка, Конструктор, Программирование, Программист, Игрушки, Сборка, Своими руками, Робот, Робототехника, Видео, Без звука, Длиннопост

Ходячий и танцующий робот-гуманоид. Ссылка

Топ 20 электронных комплектов «сделай сам» для самостоятельной сборки, пайки и программирования AliExpress, Электроника, Arduino, Самоделки, Хобби, Пайка, Конструктор, Программирование, Программист, Игрушки, Сборка, Своими руками, Робот, Робототехника, Видео, Без звука, Длиннопост

Комплект деталей для сборки любого робота на Ваш вкус. ссылка

13) Мусорное ведерко

Топ 20 электронных комплектов «сделай сам» для самостоятельной сборки, пайки и программирования AliExpress, Электроника, Arduino, Самоделки, Хобби, Пайка, Конструктор, Программирование, Программист, Игрушки, Сборка, Своими руками, Робот, Робототехника, Видео, Без звука, Длиннопост

Умное мусорное ведро с автоматическим открыванием крышки. ссылка на источник

14) Дозатор мыла

Топ 20 электронных комплектов «сделай сам» для самостоятельной сборки, пайки и программирования AliExpress, Электроника, Arduino, Самоделки, Хобби, Пайка, Конструктор, Программирование, Программист, Игрушки, Сборка, Своими руками, Робот, Робототехника, Видео, Без звука, Длиннопост

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

Топ 20 электронных комплектов «сделай сам» для самостоятельной сборки, пайки и программирования AliExpress, Электроника, Arduino, Самоделки, Хобби, Пайка, Конструктор, Программирование, Программист, Игрушки, Сборка, Своими руками, Робот, Робототехника, Видео, Без звука, Длиннопост

Эмоциональный робот для сборки из 635 деталей. Ссылка на модель

Топ 20 электронных комплектов «сделай сам» для самостоятельной сборки, пайки и программирования AliExpress, Электроника, Arduino, Самоделки, Хобби, Пайка, Конструктор, Программирование, Программист, Игрушки, Сборка, Своими руками, Робот, Робототехника, Видео, Без звука, Длиннопост

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

Забавный робот, который сначала что-то напишет, потом сотрет. Ссылка на источник

Топ 20 электронных комплектов «сделай сам» для самостоятельной сборки, пайки и программирования AliExpress, Электроника, Arduino, Самоделки, Хобби, Пайка, Конструктор, Программирование, Программист, Игрушки, Сборка, Своими руками, Робот, Робототехника, Видео, Без звука, Длиннопост

Arduino программируемая рука. Ссылка

Топ 20 электронных комплектов «сделай сам» для самостоятельной сборки, пайки и программирования AliExpress, Электроника, Arduino, Самоделки, Хобби, Пайка, Конструктор, Программирование, Программист, Игрушки, Сборка, Своими руками, Робот, Робототехника, Видео, Без звука, Длиннопост

Необычный термометр с гигрометром. Ссылка

Топ 20 электронных комплектов «сделай сам» для самостоятельной сборки, пайки и программирования AliExpress, Электроника, Arduino, Самоделки, Хобби, Пайка, Конструктор, Программирование, Программист, Игрушки, Сборка, Своими руками, Робот, Робототехника, Видео, Без звука, Длиннопост

Робот-паук для самостоятельной сборки и программирования. Ссылка на источник.

Компьютерная игра на Arduino Nano⁠ ⁠

Когда пытался заинтересовать сына Arduino, он заявил, что на таком слабом микроконтроллере (32K флеша и 2K оперативки) никакой полезной программы не напишешь, даже простейшей компьютерной игры.

Пришлось доказать обратное

Аналогово-ламповые штуки? Есть у меня их⁠ ⁠

Вижу тут поток пошел постов с приемниками и часами с ламповыми индикаторами.

Аналоговый регулятор громкости и выбора источника звука из начала 00х

Городился для усилителя Одисей-100У. Вот он на фото. Фото не мое. В усилителе ДУ не было изначально чем сильно напрягало. Делать какое-то электронное управление громкостью не хотелось т.к. везде очень большие искажения.

Аналогово-ламповые штуки? Есть у меня их Arduino, Электроника, Intel, Ламповость, Аналоговый звук, Сделано в СССР, Самоделки, Длиннопост, Микроконтроллеры

Это вам на ардуины с Сями и загрузчиками. Только хардкор. Ассемблер и УФ ПЗУ.

Аналогово-ламповые штуки? Есть у меня их Arduino, Электроника, Intel, Ламповость, Аналоговый звук, Сделано в СССР, Самоделки, Длиннопост, Микроконтроллеры

Шаговый электродвигатель от 3х фазного электросчетчика. Шестерни от него же.

Аналогово-ламповые штуки? Есть у меня их Arduino, Электроника, Intel, Ламповость, Аналоговый звук, Сделано в СССР, Самоделки, Длиннопост, Микроконтроллеры

Аналогово-ламповые штуки? Есть у меня их Arduino, Электроника, Intel, Ламповость, Аналоговый звук, Сделано в СССР, Самоделки, Длиннопост, Микроконтроллеры

Декодирование сигналов ИК управления аппаратное на К1506ХЛ2 с выдачей чистой команды в последовательном коде в процессор. Герконы на соплях временно т.к. программа не умела на тот момент считать до крайних положений.

До готового устройства контроллер не дожил совсем чуть чуть: квартиру обнесли и уперли усилитель и все остальное оставив винил и колонки.

И да, дурная голова рукам покоя не дает

Как GhatGPT умеет общаться с микроконтроллерами⁠ ⁠

И меня не обошло сие новомодное поветрие. Нашел чат в телеграме с доступом к ChatGPT и стал думать: а что бы такое его спросить? Давайте сначала теста ради что-нибудь простенькое:

Как GhatGPT умеет общаться с микроконтроллерами Arduino, Эксперимент, Stm32, Си, Программирование, Микроконтроллеры, ChatGPT, Нейронные сети, Длиннопост

Потрясающе! Но может ли оно объяснить, что там в коде за что отвечает?

Как GhatGPT умеет общаться с микроконтроллерами Arduino, Эксперимент, Stm32, Си, Программирование, Микроконтроллеры, ChatGPT, Нейронные сети, Длиннопост

Обалдеть. Оно почти понимает. А вот интересно, оно умеет только стандартный Си?

Как GhatGPT умеет общаться с микроконтроллерами Arduino, Эксперимент, Stm32, Си, Программирование, Микроконтроллеры, ChatGPT, Нейронные сети, Длиннопост

Однако. Оно умеет под STM32, причем самым пионерским ардуиновским способом — считая такты процессора. Но, тем не менее, под SPL. Умеет ли оно использовать таймер?

Как GhatGPT умеет общаться с микроконтроллерами Arduino, Эксперимент, Stm32, Си, Программирование, Микроконтроллеры, ChatGPT, Нейронные сети, Длиннопост

Как GhatGPT умеет общаться с микроконтроллерами Arduino, Эксперимент, Stm32, Си, Программирование, Микроконтроллеры, ChatGPT, Нейронные сети, Длиннопост

Так, и что мы видим? Мы видим, что инициализировать таймер оно умеет. И с правильными значениями. Но в процедуре прерывания оно не использует! И вместо этого вводит дополнительную процедуру, считающую такты процессора.

Таймер же оно использует, чтобы сделать задержку в 1 секунду в главном цикле! Напоминает известный анекдот: как вскипятить пустой чайник? налить воду и поставить на огонь. а если в чайнике уже есть вода? Вылить и тем самым свести условия задачи к предыдущему 🙂 Возможно, робот неправильно меня понял 🙂

Как GhatGPT умеет общаться с микроконтроллерами Arduino, Эксперимент, Stm32, Си, Программирование, Микроконтроллеры, ChatGPT, Нейронные сети, Длиннопост

Как GhatGPT умеет общаться с микроконтроллерами Arduino, Эксперимент, Stm32, Си, Программирование, Микроконтроллеры, ChatGPT, Нейронные сети, Длиннопост

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

Вердикт — человек пока что пишет программы под STM32 лучше этой штуки. Но эта штука пишет уже лучше ардуиновского пионера. Где-то и такой подход сойдет.

Сам себе игровая консоль: превращаем планшет с нерабочим тачскрином в игровой девайс из 8 кнопок и микроконтроллера⁠ ⁠

Сам себе игровая консоль: превращаем планшет с нерабочим тачскрином в игровой девайс из 8 кнопок и микроконтроллера Смартфон, Телефон, Идея, Своими руками, Arduino, Embedded, Встраиваемые системы, Планшет, Игры, Консоли, Самоделки, Моддинг, Android, Linux, Java, C++, Kernel, Покупка, Raspberry pi, Микроконтроллеры, Видео, Длиннопост

К сожалению, в наше время многие старые, но весьма неплохие по характеристикам гаджеты отправляются напрямую в помойку, и их владельцы не подозревают, что им можно найти применение. Сервер, мультимедийная-станция, да даже просто как TV-приставка — люди в упор не замечают сфер, где старенький планшет мог бы быть полезен. Но как быть, если посвящаешь жизнь портативным гаджетам, кодингу и копанию в железе? Правильно: сделать довольно мощную игровую консоль из старого планшета самому! Сегодня вам расскажу, как я сделал свою портативную приставку из планшета с нерабочим тачскрином, Raspberry Pi Pico и 8 кнопок! За рабочим результатом прячется несколько дней работы: поиск UART на плате, разработка контроллера геймпада на базе RPi Pico, написание приложения-сервиса, которое слушает события и отправляет их в подсистему ввода Linux в обход Android. Интересно? Тогда жду вас под катом!

❯ Мотивация

Прошло уже практически 10 лет с того момента, как у меня появилась моя первая портативная консоль. Несмотря на то, что я был заядлым ПК-игроком, я уже успел посмотреть на PS3 и PSP, но денег на их покупку у меня особо не было, да и к тому времени уже был в наличии Android-планшет. Но к моему 13-летию в 2014 году, когда я ходил и выбирал себе будущий девайс на день рождения, отец и мама решили подарить мне мою первую портативную консоль. Изначально, я уговаривал её купить мне целых два девайса, но бюджет был ограничен 4.000 рублей, а я хотел взять смартфон Fly IQ239 и консоль JXD S601 одновременно:

Сам себе игровая консоль: превращаем планшет с нерабочим тачскрином в игровой девайс из 8 кнопок и микроконтроллера Смартфон, Телефон, Идея, Своими руками, Arduino, Embedded, Встраиваемые системы, Планшет, Игры, Консоли, Самоделки, Моддинг, Android, Linux, Java, C++, Kernel, Покупка, Raspberry pi, Микроконтроллеры, Видео, Длиннопост

Однако, увидев здоровую 7-дюймовую консоль в магазине TREC (думаю, жители южной части РФ помнят такой), мама уговорила меня взять именно её, мотивируя это «ну и чего ты будешь тыкаться в этот мелкий экран? Возьми большую». После покупки гаджета, я был доволен: играл какие-то игрушки с ретро-платформ, устанавливал игры на Android, сидел в ВК через Kate Mobile. Что еще нужно было школяру? Однако, планшет прожил у меня недолго: с очередного лага я психанул и ударил по нему кулачком, унеся на тот свет и дисплей и тачскрин. Так консолька и пролежала в подвале около 8 лет. Впрочем, мне продолжали импонировать подобные устройства и в прошлом году я купил и написал про несколько подобных девайсов.

Сам себе игровая консоль: превращаем планшет с нерабочим тачскрином в игровой девайс из 8 кнопок и микроконтроллера Смартфон, Телефон, Идея, Своими руками, Arduino, Embedded, Встраиваемые системы, Планшет, Игры, Консоли, Самоделки, Моддинг, Android, Linux, Java, C++, Kernel, Покупка, Raspberry pi, Микроконтроллеры, Видео, Длиннопост

Несколько месяцев назад, мой читатель Кирилл Севостьянов с Хабра прислал мне HTC HD2 в качестве донора и планшет Prestigio PMP7170B3G, который был рабочим, но… у него отказал тачскрин. Я всё думал, чего бы с ним сделать и решил реализовать игровую консольку своими руками из подручных средств. Идея крутилась в голове довольно давно, но реализовал я её только сейчас.

❯ Что нам нужно сделать?

Итак, что должно быть у портативной консоли? Чипсет, дисплей, звук, ОС — это всё нам уже предоставляет планшет. Нам остаётся лишь сделать свой геймпад. Давайте подумаем, что нам будет нужно для того, чтобы его сделать и передавать от него события на планшет:

Контроллер для геймпада: тут нам подойдет практически любой микроконтроллер, который работает от 3.3в. Выбор большой: Arduino Pro Mini 3.3v, ESP32, RPi Pico. Я остановился на последнем: недавно я взял себе две штучки «пощупать» их — и они мне очень понравились!

Физический интерфейс: с планшетом нужно как-то общаться. У нас есть три варианта: USB (не факт, что поддержка преобразователей включена в ядре), UART и SPI/I2C на пятачках тачскрина (потребуют написания драйвера т. к. в android-устройствах нет прямого доступа к SPI/I2C из userland’а). Я остановился на UART: его легко найти на большинстве китайских планшетов, а если не получилось — то на помощь может прийти схема платы.

Программная реализация: как это будет работать? Я решил реализовать геймпад в виде сервиса на Android, который слушает состояния кнопок с UART и «инжектит» события напрямую в драйвер ввода. Таким образом, поддержка нашего геймпада появляется даже в самой системе — можно управлять менюшкой или приложениями как с клавиатуры!

С планом определились, пора начать с программной части: сначала нам обязательно понадобится ROOT-доступ. Его получение на разных девайсах отличается — на prestigio уже был порт CWM и я просто поставил SuperSU. Без ROOT доступа мы не сможем использовать UART!

Сам себе игровая консоль: превращаем планшет с нерабочим тачскрином в игровой девайс из 8 кнопок и микроконтроллера Смартфон, Телефон, Идея, Своими руками, Arduino, Embedded, Встраиваемые системы, Планшет, Игры, Консоли, Самоделки, Моддинг, Android, Linux, Java, C++, Kernel, Покупка, Raspberry pi, Микроконтроллеры, Видео, Длиннопост

Теперь нам нужно найти пятачки UART на плате. Разведен он не везде, но в случае устройств на MediaTek — почти всегда, ещё и пятачки подписаны. На моём планшете он нашёлся сразу: был между двух металлических экранов и соответствовал 4-ому каналу UART. Получить к нему доступ можно в /dev/ttyMT3. Я использую ESP32 в качестве UART преобразователя: подпаиваемся к RX/TX, запускаем putty и заходим в adb shell. Определяем бодрейт (скорость) нашего UART порта — на MediaTek он обычно равен 921600, на других чипсетах — 115200. Пытаемся что-то вывести и хоба — мы уже можем «поболтать» с планшетом!

Сам себе игровая консоль: превращаем планшет с нерабочим тачскрином в игровой девайс из 8 кнопок и микроконтроллера Смартфон, Телефон, Идея, Своими руками, Arduino, Embedded, Встраиваемые системы, Планшет, Игры, Консоли, Самоделки, Моддинг, Android, Linux, Java, C++, Kernel, Покупка, Raspberry pi, Микроконтроллеры, Видео, Длиннопост

❯ Приложение-сервис

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

InputManager.injectInputEvent — именно этим методом пользуется команда input, которую вы можете использовать через adb. Но увы, он работает только при наличие разрешения INJECT_EVENTS, который доступен только системным приложениям — находятся они в /system/app и подписаны тем же сертификатом, что и остальная прошивка.

Модуль uinput дает возможность создать виртуальное устройство ввода и посылать события из userland’а — т. е. из прикладного приложения. У моего планшета было устройство /dev/uinput, но lsmod показывал, что сам модуль не загружен. Так что отметаем — он есть не везде.

Прямой инжект событий в character устройство — весьма грязный хак, который позволяет инжектить события, не притворяясь системным приложением, но имеет некоторые ограничения. Именно его я и выбрал и о ограничениях ниже.

Сначала нам нужно узнать, какие кнопки поддерживают загруженные устройства ввода в системе. Для этого используем команду getevent -li. Там есть разные устройства ввода, в том числе и тачскрин (если вам нужно симулировать нажатия на экран), мне же подошёл драйвер физических кнопок mtk-kpd. Он занимается обработкой кнопок громкости, включения и т. п. Тут важно обратить внимание на то, что если попытаться послать кнопку, которое устройство не реализует (например пробел), то ничего не произойдет:

Сам себе игровая консоль: превращаем планшет с нерабочим тачскрином в игровой девайс из 8 кнопок и микроконтроллера Смартфон, Телефон, Идея, Своими руками, Arduino, Embedded, Встраиваемые системы, Планшет, Игры, Консоли, Самоделки, Моддинг, Android, Linux, Java, C++, Kernel, Покупка, Raspberry pi, Микроконтроллеры, Видео, Длиннопост

Инжект событий я писал на C, т. к. это требовало прямой записи input_event, а в Java прокинул его через Jni. Концепция простая: открываем устройство /dev/input/event2 и посылаем в него события ввода и синхронизации (это обязательно!), которые затем Android читает и обрабатывает:

#include <linux/uinput.h>

#include <fcntl.h>

#include <unistd.h>

#include <stdio.h>

#include <stdlib.h>

#include <android/log.h>

#include <jni.h>

int uinput;

extern «C» JNIEXPORT void JNICALL Java_com_monobogdan_inputservicebridge_InputNative_init(JNIEnv *env, jclass clazz) <

uinput = open(«/dev/input/event2», O_WRONLY);

__android_log_print(ANDROID_LOG_DEBUG , «Test», uinput >= 0 ? «Open event OK» : «Failed to open event»); >

void emit(int fd, int type, int code, int val) <

struct input_event ie; ie.type = type;

ie.code = code; ie.value = val;

ie.time.tv _sec = 0;

ie.time.tv _usec = 0;

write(fd, &ie, sizeof(ie)); >

extern «C» JNIEXPORT void JNICALL Java_com_monobogdan_inputservicebridge_InputNative_sendKeyEvent(JNIEnv *env, jclass clazz, jint key_code, jboolean pressed) <

__android_log_print(ANDROID_LOG_DEBUG , «Test», «Send»);

emit(uinput, EV_KEY, key_code, (bool)pressed ? 1 : 0);

emit(uinput, EV_SYN, SYN_REPORT, 0);

>

Основной обработкой занимается сервис, который я реализовал в отдельном потоке: он слушает события с UART и посылает соответствующие изменения состояния через sendKeyEvent. На вход приходят простые сообщения вида:

U L где U/D — нажато, не нажато, а L — однобайтовый идентификатор кнопки. В случае L — это влево, R — вправо и т. п. Вся доступная раскладка хранится в словаре. Причём само чтение из UART реализовано костылем с чтением «чужого» stdout, т. к. android-приложения не умеют сами по себе работать с root правами. В теории, это могло дать неприятный оверхед, но на практике никакого серьезного инпут лага это не создает. Не забываем сделать устройство event записываемым — ставим ему права 777:

package com.monobogdan.inputservicebridge;

public class InputListener extends Service <

private static final int tty = 3;

private InputManager iManager;

private Map<Character, Integer> keyMap;

private Method injectMethod;

private Process runAsRoot(String cmd)

<

try <

return Runtime.getRuntime().exec(new String[] < "su", "-c", cmd >);

>

catch (IOException e)

<

e.printStackTrace();

return null;

>

>

@override

public void onCreate() <

super.onCreate();

// According to linux key map (input-event-codes.h)

keyMap = new HashMap<>();

keyMap.put(‘U’, 103);

keyMap.put(‘D’, 108);

keyMap.put(‘L’, 105);

keyMap.put(‘R’, 106);

keyMap.put(‘E’, 115);

keyMap.put(‘B’, 158);

keyMap.put(‘A’, 232);

keyMap.put(‘C’, 212);

InputNative.init();

try <

runAsRoot(«chmod 777 /dev/input/event2»).waitFor();

> catch (InterruptedException e) <

throw new RuntimeException(e);

>

Executors.newSingleThreadExecutor().execute(new Runnable() <

@override

public void run() <

Process proc = runAsRoot(«cat /dev/ttyMT» + tty);

BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));

while(true)

<

try <

String line = reader.readLine();

if(line != null && line.length() > 0) <

Log.i(«Hi», «run: » + line);

boolean pressing = line.charAt(0) == ‘D’;

int keyCode = keyMap.get(line.charAt(2));

Log.i(«TAG», «run: » + keyCode);

InputNative.sendKeyEvent(keyCode, pressing);

>

>

catch(IOException e)

<

e.printStackTrace();

>

/*try <

Thread.sleep(1000 / 30);

> catch (InterruptedException e) <

e.printStackTrace();

>*/

>

>

>);

>

@override

public IBinder onBind(Intent intent) <

return null;

>

>

Таким образом, если мы отправляем с ПК «D L» — система считает, что мы зажали стрелку влево, а U L — считает что мы отпустили. Но если mtk-kpd поддерживает стрелки и еще некоторые действия без каких либо проблем, то enter в список обрабатываемых кнопок не входит: придется мудрить! И тут нам приходит на помощь механизм трансляции кодов кнопок в действия: они хранятся в специальных файлах .kl в /system/usr/keylayout/. Я назначил DPAD_CENTER на… кнопку регулировки громкости звука! Ну, а почему бы и нет. 🙂 Таким образом можно переназначить уже имеющиеся кнопки громкости на, например, start/select.

Сам себе игровая консоль: превращаем планшет с нерабочим тачскрином в игровой девайс из 8 кнопок и микроконтроллера Смартфон, Телефон, Идея, Своими руками, Arduino, Embedded, Встраиваемые системы, Планшет, Игры, Консоли, Самоделки, Моддинг, Android, Linux, Java, C++, Kernel, Покупка, Raspberry pi, Микроконтроллеры, Видео, Длиннопост

❯ Геймпад

После того, как сервис был готов и отлажен, нужно было реализовать хардварную часть проекта — сам геймпад. В качестве контроллера я, как уже говорил, выбрал Raspberry Pi Pico на базе МК RP2040 — бодреньком контроллере с двумя ARM Cortex-M0 ядрами. Стоит копейки, а в отличии от ESP’шек, его SDK не такое перегруженное и выглядит более приближенным к bare-metal.

Сам себе игровая консоль: превращаем планшет с нерабочим тачскрином в игровой девайс из 8 кнопок и микроконтроллера Смартфон, Телефон, Идея, Своими руками, Arduino, Embedded, Встраиваемые системы, Планшет, Игры, Консоли, Самоделки, Моддинг, Android, Linux, Java, C++, Kernel, Покупка, Raspberry pi, Микроконтроллеры, Видео, Длиннопост

На данный момент, я решил развести все кнопки на бредборде — макетной плате без пайки, т. к. макеток для пайки у меня под рукой не было. Сделал примитивный геймпад:

Сам себе игровая консоль: превращаем планшет с нерабочим тачскрином в игровой девайс из 8 кнопок и микроконтроллера Смартфон, Телефон, Идея, Своими руками, Arduino, Embedded, Встраиваемые системы, Планшет, Игры, Консоли, Самоделки, Моддинг, Android, Linux, Java, C++, Kernel, Покупка, Raspberry pi, Микроконтроллеры, Видео, Длиннопост

Развел на соответствующие GPIO:

Сам себе игровая консоль: превращаем планшет с нерабочим тачскрином в игровой девайс из 8 кнопок и микроконтроллера Смартфон, Телефон, Идея, Своими руками, Arduino, Embedded, Встраиваемые системы, Планшет, Игры, Консоли, Самоделки, Моддинг, Android, Linux, Java, C++, Kernel, Покупка, Raspberry pi, Микроконтроллеры, Видео, Длиннопост

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

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

Сам себе игровая консоль: превращаем планшет с нерабочим тачскрином в игровой девайс из 8 кнопок и микроконтроллера Смартфон, Телефон, Идея, Своими руками, Arduino, Embedded, Встраиваемые системы, Планшет, Игры, Консоли, Самоделки, Моддинг, Android, Linux, Java, C++, Kernel, Покупка, Raspberry pi, Микроконтроллеры, Видео, Длиннопост

А почему бы не попробовать поиграть в какую-нибудь игру? Ну мы же консоль вроде делаем: берём эмулятор NES, биндим кнопки в настройках и наслаждаемся игрой в Марио!

❯ Заключение

Реализация этого проекта заняла у меня не так уж и много времени: всего около 3-х дней работы по вечерам. Вероятно кто-то спросит: «а чего ты просто Bluetooth геймпад не купил?». Так это не прикольно ведь. Гораздо приятнее играть в девайс, к которому ты приложил руку сам. Более того, не у всех старых планшетов есть BT. Обошёлся на данной стадии проект недорого: планшет мне подарили бесплатно (точно также у вас дома может лежать подобный), RPi Pico — 350 рублей, кнопки по 10 рублей/штучка.

В целом, я сам по себе обожаю копаться в различных железках и их софтварной части (вспомнить хотя-бы статью про перекомпиляциюu-boot из вендорских исходников для нонейм консоли), а созидать что-то свое вообще вызывает какие-то нереальные всплески эндорфина — оно и понятно! 🙂

Однако несмотря на то, что мы уже имеем рабочий «прототип», проект далёк от завершения: я намерен довести его до конца и окончательно перевоплотить старый планшет в автономную игровую консоль (и рассказать об этом во второй части статьи). Для этого мне понадобится распечатать корпус и кнопки на 3D-принтере. К сожалению, у меня в городе ни у кого особо нет 3D-принтеров, поэтому начну копить на Ender 3, а от вас, читателей, с удовольствием почитаю мнение в комментариях и советы касательно выбора принтера!

Похожие публикации