Pull to refresh
0
0

User

Send message

Открытый проект модуля управления электрическими моторами. Начало

Reading time 4 min
Views 37K


Основное назначение модуля — управление синхронными бесколлекторными двигателями (BLDC, BLAC, PMSM ...) с трапецеидальной или синусоидальной формой напряжения, с сенсорами скорости-положения или без сенсоров. Кроме этого модуль имеет небольшие габариты, достаточно широкий диапазон питающих напряжений, разнообразные каналы отладки, проводную и беспроводную связь.
Читать дальше →
Total votes 52: ↑51 and ↓1 +50
Comments 45

Микроконтроллеры семейства Kinetis от NXP-Freescale для встраиваемой электроники. Открываем для себя

Reading time 7 min
Views 41K

Время от времени меня тоже охватывает потребность что-то поменять. И чаще всего я меняю в своих разработках семейство микроконтроллеров. И я не одинок в этом. Каждый год не менее 50% разработчиков меняют процессор, на котором будут выполнять следующие проекты. На этот раз я решил попробовать семейство Kinetis.
Читать дальше →
Total votes 26: ↑25 and ↓1 +24
Comments 13

Лучшие головоломки, про которые не знает никто*

Reading time 5 min
Views 94K
*почти

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

Огромный недостаток головоломки по сравнения с какими-нибудь ММОРПГ — очень малая реиграбельность. Я всегда думал, что технология стирания памяти в «Вечном сиянии чистого разума» использовалась не по назначению. Вместо того, чтобы изжить из воспоминаний какую-то женщину, не лучше ли забыть своё прохождение любимой игры, а потом пройти её заново? К сожалению, пока что это фантастика. Поэтому всё, что я могу — изнывая от ностальгии, в письменной форме вспоминать все эти прекрасные вещи, вернуться к которым мне, увы, не суждено.

Учитывая «одноразовость» головоломок, тем более странно и в чём-то даже преступно, что о замечательнейших представителях этого жанра узнаёшь практически случайно. Мой пост имеет целью исправление этой несправедливости, и я как раз заканчиваю затянувшееся предисловие и перехожу к сути.
Total votes 78: ↑74 and ↓4 +70
Comments 117

WebRTC: Делаем peer to peer игру на javascript

Reading time 13 min
Views 38K
Недавно мне довелось поработать над прототипом видеочата. Это был отличный повод поближе познакомиться с концепциями WebRTC и опробовать их на практике. Как правило, когда говорят про WebRTC, подразумевают организацию аудио- и видеосвязи, но эта технология может применяться и для других интересных вещей. Я решил попробовать сделать peer-to-peer игру и поделиться опытом ее создания. Видео того что получилось и подробности реализации под катом.


Читать дальше →
Total votes 94: ↑92 and ↓2 +90
Comments 52

Векторное управление электродвигателем «на пальцах»

Reading time 17 min
Views 311K
— Что такое векторное управление?
— Держать ток под 90 градусов.


Термин «векторное управление» электродвигателями знаком всем, кто хоть как-то интересовался вопросом, как с помощью микроконтроллера управлять двигателем переменного тока. Однако обычно в любой книге по электроприводу глава про векторное управление находится где-нибудь ближе к концу, состоит из кучи волосатых формул с отсылками ко всем остальным главам книги. Отчего разбираться в этом вопросе совсем не хочется. И даже самые простые объяснения всё равно держат путь через дифференциальные уравнения равновесия, векторные диаграммы и кучу другой математики. Из-за чего появляются примерно вот такие вот попытки как-то закрутить двигатель без использования мат.части. Но на самом деле векторное управление – это очень просто, если понимать принцип его работы «на пальцах». А там уже и с формулами разбираться в случае надобности будет веселее.
Читать дальше →
Total votes 46: ↑46 and ↓0 +46
Comments 48

STM32F4 USB RNDIS драйвер (управление устройством через Web-интерфейс)

Reading time 12 min
Views 52K
Доброе время суток, дорогие друзья!

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

Ранее в статье была анонсирована разработка RNDIS USB драйвера для контроллеров серии STM32F4. С тех пор библиотека постепенно развивалась и нынче доросла до первой release-версии. Библиотека под названием LRNDIS (LWIP + RNDIS) позволяет нам создавать на базе контроллера STM32F4 как устройства класса USB «модем», так и любые другие устройства с управлением через web-интерфейс. Пример управления платой stm32f4-discovery из web-браузера на Android-планшете представлен на видео:



На странице видеоролика представлена ссылка на исходные коды и HEX-файл прошивки для платы discovery, с которым вы сможете повторить данный эксперимент. В статье рассказано о том, как и когда технология доступа через WEB-интерфейс полезна, а также — как работает библиотека LRNDIS для контроллеров STM32F4. Также присутствует обучающий материал о работе USB и устройстве Ethernet-сетей.
Читать дальше →
Total votes 21: ↑21 and ↓0 +21
Comments 19

Пишем DXE-драйвер для снятия скриншотов с BIOS Setup и других UEFI-приложений

Reading time 18 min
Views 34K
В прошлой статье про SecureBoot мне очень не хватало возможности сделать снимок экрана при настройке UEFI через BIOS Setup, но тогда выручило перенаправление текстовой консоли в последовательный порт. Это отличное решение, но доступно оно на немногих серверных материнских платах, и через него можно получить только псевдографику, а хотелось бы получить настоящую — она и выглядит приятнее, и вырезать ее каждый раз из окна терминала не надо.
Вот именно этим мы и займемся в этой статье, а заодно я расскажу, что такое DXE-драйвер и как написать, собрать и протестировать такой самостоятельно, как работают ввод с клавиатуры и вывод на экран в UEFI, как найти среди подключенных устройств хранения такое, на которое можно записывать файлы, как сохранить что-нибудь в файл из UEFI и как адаптировать какой-то внешний код на С для работы в составе прошивки.
Если вам все еще интересно — жду вас под катом.
Драйверов богу драйверов! Скриншотов к трону скриншотов!
Total votes 30: ↑30 and ↓0 +30
Comments 25

DIY порошок для посудомойки: разбираем промышленные средства и улучшаем рецепт

Reading time 11 min
Views 125K


Внимание! В рецепте с отбеливателем обнаружилась опасность коррозии металла! Не рекомендуется в стандартном применении!

Обзор экспериментов год спустя:
DIY порошок для посудомойки: как не растворить посуду и не повторить моих ошибок. Год экспериментов

В прошлой публикации мы создавали дешевый порошок для посудомойки из желудей и спичек кальцинированной соды и стирального порошка. В этой я расскажу о том, как можно его улучшить с помощью кислородного отбеливателя и где можно купить компоненты для более продвинутой версии. Будем делать упор на эффективности мойки, но даже при этом цена не выйдет за 100 рублей/килограмм. А еще будет рецепт ополаскивателя с себестоимостью в районе 1 рубля за литр. Как справедливо заметил amarao, занятие не для всех и многим проще использовать готовые таблетки. Но в подобных экспериментах с бытовой химией есть что-то от детства, первых опытов по смешиванию соды с уксусом и газировки с мятными конфетами. Так что ощутимая экономия здесь все-таки вторична. Будем развлекаться) Если кому-то лень читать весь текст — в конце поста будут подробные рецепты с рекомендациями.
Читать дальше →
Total votes 123: ↑123 and ↓0 +123
Comments 351

Altera + OpenCL: вскрываем ядро

Reading time 23 min
Views 16K


Всем привет!

В прошлой статье я запустил простой OpenCL пример на FPGA фирмы Altera:
// ACL kernel for adding two input vectors
__kernel void vector_add( __global const uint *restrict x,  
                          __global const uint *restrict y,  
                          __global       uint *restrict z )
{
    // get index of the work item
    int index = get_global_id(0);
 
    // add the vector elements
    z[index] = x[index] + y[index];
}

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

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

В этой статье мы попробуем вскрыть ядро и найти ответы на следующие вопросы:
  • Какая у него архитектура?
  • Как происходит его настройка? Как попадают данные на обработку?
  • На какой частоте он работает? Чем это определяется?
  • Можно ли просимулировать только ядро в RTL-симуляторах?
  • Какие блоки занимают больше всего ресурсов? Можно ли как-то это соптимизировать?

Давайте взглянём на его внутренности! Добро пожаловать под кат!
Читать дальше →
Total votes 29: ↑27 and ↓2 +25
Comments 8

Установка любого программного обеспечения средствами WSUS

Reading time 3 min
Views 92K
В своей предыдущей статье про создание msi-пакетов я описал способ как запаковать любое приложение в msi. MSI-пакеты я использовал для развертывания приложений через GPO, но к сожалению данный метод меня крайне разочаровал по нескольким причинам: установка только при загрузке компьютера, т.е. пользователю приходится дожидаться окончания установки, а иногда требуется побыстрее начать работу. Из этого вытекает, что некоторые не дожидаются и грубо перезагружают компьютер, результатом чего является недоустановленное ПО. Мне все это надоело и я вспомнил, что где-то читал про установку сторонних обновлений через WSUS. Действительно, способ относительно не новый и осуществляется с помощью Local Update Publisher, про установку которого есть достаточно полная статья. Особенностью данного метода развертывания ПО помимо всех преимуществ WSUS является возможность установки из exe и нет необходимости перепаковки в msi. И если с публикацией msi все понятно, то я хочу рассказать про установку через exe, в которой есть особенности.
Читать дальше →
Total votes 9: ↑8 and ↓1 +7
Comments 6

Генераторы непрерывно распределенных случайных величин

Reading time 15 min
Views 115K
Генератор случайных чисел во многом подобен сексу: когда он хорош — это прекрасно, когда он плох, все равно приятно (Джордж Марсалья, 1984)

Популярность стохастических алгоритмов все растет. Многие из них базируются на генерации большого количества различных случайных величин. Далеко не всегда равномерно распределенных. Здесь я попытался собрать информацию о быстрых и точных генераторах случайных величин с известными распределениями. Задачи могут быть разными, разными могут быть и критерии. Кому-то важно время генерации, кому-то — точность, кому-то — криптоустойчивость, кому-то — скорость сходимости. Лично я исходил из предположения, что мы имеем некий базовый генератор, возвращающий псевдослучайное целое число, равномерно распределенное от 0 до некого RAND_MAX

unsigned long long BasicRandGenerator() {
    unsigned long long randomVariable;
    // some magic here
    ...
    return randomVariable;
}

и что этот генератор достаточно быстрый. Я имею ввиду, что дешевле сгенерировать с десяток случайных чисел, нежели чем посчитать логарифм или возвести в степень одно из них. Это могут быть стандартные генераторы: std::rand(), rand в MATLAB, Java.util.Random и т.д. Но имейте ввиду, что подобные генераторы редко подходят для серьезной работы. Зачастую они проваливают разные статистические тесты. А также, помните, что вы полностью зависите от них и лучше использовать свой собственный генератор, чтобы иметь представление о его работе.

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


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

Равномерное распределение





Читать дальше →
Total votes 44: ↑42 and ↓2 +40
Comments 7

NIHUI TOYS U807 — неожиданно честный квадрокоптер с интересной камерой для 45$

Reading time 3 min
Views 18K
Сегодня расскажу про малоизвестный в наших краях, квадрокоптер с интересным производителем, NIHUI TOYS U807. Изначально нас он заинтересовал, так как имеет «Безголовый режим» (Headless Mode), средние размеры, интересный дизайн и камеру c 2 мегапикселями. Когда он пришёл и мы увидели камеру — захотелось сразу её куда-нибудь выкинуть подальше, туда же где лежит стоковая камера от Syma X5C, но всё-таки мы взяли её на тестирование и вот что из этого получилось.


Читать дальше →
Total votes 17: ↑15 and ↓2 +13
Comments 20

Еще одно применение станка ЧПУ

Reading time 7 min
Views 25K
ЧПУ станок — это станок с числовым программным управлением. Позволяет изготавливать детали по заранее подготовленной программе с высокой точностью, повторяемостью и скоростью. В этой статье пойдет речь о созданном мною намоточном станке, которому я дал название Орбитер (Orbiter).

Сфера ЧПУ плотно пересекается со сферой 3D принтинга. Мой станок имеет довольно необычную для станков ЧПУ конструкцию, так как все привыкли видеть фрезерные станки с ЧПУ, ЧПУ выжигатели, 3D принтеры, а станок, описываемый в данной статье, намоточный, а точнее станок для намотки шаров-абажуров из ниток и клея. Принцип работы — намотка на надутый вращающийся шар, который после высыхания клея спускается и вынимается.



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

Читать дальше →
Total votes 38: ↑38 and ↓0 +38
Comments 15

CH341A, USB-UART-конвертер и I2C/SPI-программатор за $5

Reading time 4 min
Views 251K
Когда-то давным-давно я писал пару статей о широко известном в узких кругах чипе FTDI FT232H и различных его применениях. Всем хорош был FT232H для DIY, но и у него нашлось несколько недостатков — относительно неприятный для ручной пайки корпус LQFP48 (для истинных любителей хардкора есть еще вариант в QFN48, паяй — не хочу, DIHALT не даст соврать), цена за оригинальный чип от 250 рублей, вероятность проблем с драйверами на поддельных чипах и некоторая функциональная избыточность, к примеру, поддержка JTAG нужна далеко не всем.

Решение, как обычно, пришло из Поднебесной, в которой после нескольких лет тупого передирания творческой адаптации чужих чипов наконец выпустили свой собственный конвертер USB-TTL — WinChipHead CH341A в корпусе SOP-28 (не DIP, но тоже паяется без проблем).

Производство чипа было начато году приблизительно в 2006, но в поле моего зрения он попал только в 2014, когда I2C/SPI-программаторы на этом чипе наводнили европейский EBAY, причем продавцы предлагали цену от 3,5 евро вместе с доставкой, что при средней стоимости хорошего китайского программатора вроде MiniPro TL866A в 50 евро оказалось настолько заманчивым предложением, что устоять не получилось.

Если вам все еще интересно, что умеет этот китайский чип за 1$ и стоит ли платить больше, если не видно разницы — прошу под кат.
Читать дальше →
Total votes 22: ↑22 and ↓0 +22
Comments 13

Перенос Android на HDD в Mele A100 (и похожих, Allwinner A10)

Reading time 4 min
Views 20K


Досталось мне такое вот устройство, Mele A100 с битой nand памятью, работало после прошивки пару перезагрузок, потом не загружалось (bootloop).

Первое, что пришло в голову — подключить консольку, но ничего информативного туда не было. Второе, что пришло в голову, после непродолжительного гугления, это записать прошивку на sd карту, на 4pda такое есть, но у меня была только карточка на 32G с моего мобильника, покупать я не хотел, да и скорость будет не очень. Третье, что пришло в голову, после продолжительного рассматривания платы в поиске usb внутри (так как андроид детектил больше 3х usb, а наружу есть только 3), взгляд зацепился за sata неприпаяный, жесткий то у меня есть.
Читать дальше →
Total votes 21: ↑18 and ↓3 +15
Comments 4

Семинар в LA и инициативы в России по MIPSfpga и преподаванию электроники

Reading time 5 min
Views 6.2K
Компания Imagination Technologies, известная как разработчик графического процессора PowerVR внутри Apple iPhone, с одобрением от президента Стенфорда Джона Хеннесси приглашает преподавателей и аспирантов электроники и программирования на бесплатный семинар рядом с Лос-Анжелесом, который пройдет 13-14 мая. Другим организатором семинара, помимо Imagination, является Xilinx — компания №1 в ПЛИС-ах / FPGA. Если вы занимаетесь исследованиями или преподаете, особенно рядом с Лос-Анжелесом (UCLA, Caltech, UC San Diego, CalPoly, UC Santa Barbara, UC Irvine, Arizona State, University of Nevada Las Vegas и т.д.) вы можете присоединиться — будет много интересного.
Читать дальше →
Total votes 12: ↑11 and ↓1 +10
Comments 12

Солнечное затмение с воздуха и из космоса

Reading time 5 min
Views 28K

Фото: Павла Алексеева.

В то время, как большинство жителей России разрывало последние дискеты и демонстрировало небу свои флюорографии, я несся над Норвежским морем на высоте 11 км со скоростью 750 км/ч и пытался удержать в руках всю фототехнику, которую опрометчиво набрал в полет. В мордовском поселке Рузаевка радиолюбитель R4uab наводил антенну со своего гаража на спутник Роскосмса "Метеор-М №2". Астронавт Саманта Кристофоретти парила в невесомости Международной космической станции, пытаясь запечатлеть редкое астрономическое явление. И все только для того, чтобы мы могли увидеть затмение иначе чем просто яркий месяц в небе.
Читать дальше →
Total votes 73: ↑69 and ↓4 +65
Comments 34

Как легко расшифровать TLS-трафик от браузера в Wireshark

Reading time 2 min
Views 155K
Многим из вас знаком Wireshark — анализатор трафика, который помогает понять работу сети, диагностировать проблемы, и вообще умеет кучу вещей.

image

Одна из проблем с тем, как работает Wireshark, заключается в невозможности легко проанализировать зашифрованный трафик, вроде TLS. Раньше вы могли указать Wireshark приватные ключи, если они у вас были, и расшифровывать трафик на лету, но это работало только в том случае, если использовался исключительно RSA. Эта функциональность сломалась из-за того, что люди начали продвигать совершенную прямую секретность (Perfect Forward Secrecy), и приватного ключа стало недостаточно, чтобы получить сессионный ключ, который используется для расшифровки данных. Вторая проблема заключается в том, что приватный ключ не должен или не может быть выгружен с клиента, сервера или HSM (Hardware Security Module), в котором находится. Из-за этого, мне приходилось прибегать к сомнительным ухищрениям с расшифровкой трафика через man-in-the-middle (например, через sslstrip).

Логгирование сессионных ключей спешит на помощь!


Что ж, друзья, сегодня я вам расскажу о способе проще! Оказалось, что Firefox и Development-версия Chrome поддерживают логгирование симметричных сессионных ключей, которые используются для зашифровки трафика, в файл. Вы можете указать этот файл в Wireshark, и (вуаля!) трафик расшифровался. Давайте-ка настроим это дело.
Читать дальше →
Total votes 83: ↑82 and ↓1 +81
Comments 22

Если вы решили перейти с PHP на Python, то к чему следует подготовиться

Reading time 14 min
Views 190K
Думали ли вы когда-нибудь о том, что однажды слишком быстро втянулись в веб-программирование на PHP? И вот уже прошло много лет, у вас хороший опыт, и вы не думаете ни о каких других способах „делать“ веб, кроме как на PHP. Может быть, у вас возникают сомнения в правильности выбора, однако непонятно, как найти способ быстро его проверить. А хочется примеров, хочется знать, как изменятся конкретные аспекты деятельности.

Сегодня я попробую ответить на вопрос: «А что если вместо PHP писать на Python?».

Сам я долгое время задавался этим вопросом. Я писал на PHP 11 лет и даже являюсь сертифицированным специалистом. Я научился его «готовить» так, чтобы он работал в точности, как мне надо. И когда я в очередной раз читал на Хабре перевод статьи о том, как всё в PHP плохо, я просто недоумевал. Однако подвернулся случай пересесть на Ruby, а потом и на Python. На последнем я и остановился, и теперь попробую рассказать вам PHP-шникам, как нам питонистам живётся.


Python с точки зрения PHP-программиста...
Total votes 122: ↑116 and ↓6 +110
Comments 205

«Выглядит похоже». Как работает перцептивный хэш

Reading time 6 min
Views 120K
За последние несколько месяцев несколько человек спросили меня, как работает TinEye и как в принципе работает поиск похожих картинок.

По правде говоря, я не знаю, как работает поисковик TinEye. Он не раскрывает деталей используемого алгоритма(-ов). Но глядя на поисковую выдачу, я могу сделать вывод о работе какой-то формы перцептивного хэш-алгоритма.
Читать дальше →
Total votes 149: ↑145 and ↓4 +141
Comments 46

Information

Rating
Does not participate
Registered
Activity