Как стать автором
Обновить
0
0

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

Отправить сообщение

История создания Ethernet-CAN конвертера

Время на прочтение6 мин
Количество просмотров15K
Одним ясным солнечным днем по работе понадобился недорогой преобразователь интерфейсов CAN в Ethernet. Естественно поиски начались с готовых решений, но, как нередко это бывает, в итоге было принято решение о разработке собственного образца. Естественно, энтузиазм автора не смог устоять и ограничиться столь «урезанным» функционалом. Что из этого вышло, каким образом и почему — под катом.

image
Читать дальше →
Всего голосов 47: ↑43 и ↓4+39
Комментарии36

ESP32-CAM Video Streaming Server Подключение I2C и SPI дисплеев

Время на прочтение8 мин
Количество просмотров68K
ESP-32 CAM модуль с камерой от Diymore

ESP32-CAM Video Streaming Server


Пример использования находится тут.

Предварительно надо установить библиотеки: Esp32 board in Arduino Ide Windows / Esp32 board in Arduino Ide Linux and Mac

Подробные настройки есть в статье.

В моем случае я использовал модуль AI-THINKER поэтому раскомментировал
#define CAMERA_MODEL_AI_THINKER

У меня не заработала функиональность распознования лиц. Коментарий в статье был полезен.
Читать дальше →
Всего голосов 34: ↑33 и ↓1+32
Комментарии0

Управляем фокусом или щепотка C# и STM32 для веб-камеры

Время на прочтение3 мин
Количество просмотров7.3K

Все началось весьма забавно. У меня к компьютеру были подключены две веб-камеры от производителя Logitech (модель C525). Вполне неплохие камеры, но, как оказалось позже, с драйверами весьма сомнительного качества. На самом деле это проблема не только данного производителя. Их утилита настройки подменяет собой системную, но при этом даже и не подозревает, что у компьютера может быть более одной камеры этой модели. В результате, при вызове окна настроек для разных камер из OBS Studio фокус менялся всегда у одной. Непорядок.

Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Комментарии7

Читать между нот: система передачи данных внутри музыки

Время на прочтение8 мин
Количество просмотров7.1K


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

Однако музыка, а точнее музыкальные произведения могут послужить не только для эстетического удовольствия, но и для передачи закодированной в них информации, предназначенной для какого-либо устройства и незаметной для слушателя. Сегодня мы с вами познакомимся с весьма необычным исследованием, в котором аспиранты из швейцарской высшей технической школы Цюриха смогли незаметно для человеческого уха внедрить определенные данные в музыкальные произведения, за счет чего сама музыка становится каналом передачи данных. Как именно они реализовали свою технологию, сильно ли отличаются мелодии с и без внедренных данных, и что показали практические испытания? Об этом мы узнаем из доклада исследователей. Поехали.
Всего голосов 17: ↑16 и ↓1+15
Комментарии8

Linux-разработка в Windows с WSL и Visual Studio Code Remote

Время на прочтение2 мин
Количество просмотров32K
Работа с VS Code Remote и Windows Subsystem for Linux (WSL) дает возможность использовать полнофункциональную среду разработки Linux на ноутбуке или десктопе с предустановленной Windows. В этом материале рассмотрим то, как использовать эти инструменты для разработки приложений на Python в Linux.

image
Всего голосов 19: ↑16 и ↓3+13
Комментарии12

Разработка программ для центрального процессора Redd на примере доступа к ПЛИС

Время на прочтение14 мин
Количество просмотров3.5K
В прошлой статье я сказал, что нам пора переходить к потоковым протоколам. Но начав подготовку рассказа о них, я понял, что сам плаваю в одной очень важной теме. Как уже отмечалось, у меня с Линуксом достаточно своеобразные отношения. В общем, я понял, что сам не могу создать с нуля приложение на С++, которое удовлетворяло бы всем принципам программирования для Redd. Можно было бы попросить кого-то сделать это, а затем просто воспользоваться готовым шаблоном, но цикл статей призван научить всех вести разработку под Redd с нуля. Поэтому я попросил своего начальника (большого специалиста по Линуксу), и он разъяснил мне, что за чем нажимать. Затем я чуть переосмыслил его слова и теперь считаю нужным зафиксировать все знания письменно. Это избавит таких, как я, от мучительных раздумий: «Так… Что он сделал – понятно, но как мне это повторить?». В общем, кто работает под Линуксом, можете пробежать следующие два раздела по диагонали. Вряд ли вы найдёте там что-то новое (дальше – найдёте). А остальным я предлагаю на выбор две методики разработки, которые соответствуют декларируемым принципам работы под Redd: низкие трудозатраты на разработку и удалённая отладка.


Читать дальше →
Всего голосов 16: ↑13 и ↓3+10
Комментарии0

Мотивация. Сделай сам

Время на прочтение8 мин
Количество просмотров13K
Есть такая полезная задача — разработка систем мотивации. Я долго наблюдал за несчастными HR, которые создавали системы KPI, материальную и нематериальную мотивацию, силились поднять корпоративный дух. Мои наблюдения всегда показывали одно и то же — HR в этой работе чего-то не хватает. Вроде слова правильные говорят, и философия под их расчетами правильная лежит, но созданные ими системы мотивации не выдерживают никакой критики.

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

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

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

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

В итоге я пришел к выводу, что разработка систем мотивации — больше инженерная задача, чем гуманитарная (да простят меня милые и добрые HR). Как ни крути, система мотивации — это система показателей. Показатели — это измерение, управление границами, согласованность целей и возможностей, четкая взаимосвязь с бизнес-процессом, правильная автоматизация. Все перечисленное — инженерные задачи.
Читать дальше →
Всего голосов 43: ↑30 и ↓13+17
Комментарии17

Как общаются машины — протокол MQTT

Время на прочтение10 мин
Количество просмотров54K

В предыдущей статье мы разбирали протокол Modbus, являющийся стандартом де-факто в промышленности для M2M-взаимодействия. Разработанный в далеком 1979 году, он имеет ряд существенных недостатков, которые решает MQTT.

Протокол MQTT достаточно молод (стандартизирован только в 2016 году), но уже успел получить широкое распространение в промышленности и IoT. Он был специально разработан максимально компактным, для нестабильных интернет-каналов и маломощных устройств, и позволяет гарантированно доставлять сообщения в случае потери пакетов и обрывов связи.

Главные особенности протокола MQTT:

  • Компактный и легковесный — минимальные накладные расходы на пересылку данных, для экономии трафика.
  • Устойчивость к потерям — гарантированная доставка в условиях нестабильных сетевых подключений.
  • Асинхронный — позволяет обслуживать большое количество устройств, и не зависит от сетевых задержек.
  • Поддержка QoS — возможность управлять приоритетом сообщений и гарантировать доставку сообщения адресату.
  • Динамическая конфигурация — не требует предварительно согласования полей и форматов данных, может конфигурироваться «на лету».
  • Работает за NAT — клиенты могут находиться за NAT, только сервер (брокер) должен иметь реальный IP. Позволяет обойтись без VPN и пробрасывания портов.
  • Удобная адресация — поля данных имеют текстовые названия, понятные для человека. Не нужно запоминать цифровые адреса и битовые смещения.
Читать дальше →
Всего голосов 30: ↑30 и ↓0+30
Комментарии33

Разработка простейшей «прошивки» для ПЛИС, установленной в Redd, и отладка на примере теста памяти

Время на прочтение13 мин
Количество просмотров12K
Как-то у меня не получается выражать свою мысль коротко. Прошлой осенью возникло желание рассказать поподробнее про освоенную мною архитектуру PSoC, что вылилось в цикл статей про неё. Сейчас я участвую в подготовке аппаратной части для нашего комплекса удалённой отладки Redd, о котором рассказывалось здесь, и хочется выплеснуть накопившийся опыт в текстовом виде. Пока не уверен, но мне кажется, что снова получится не одна статья, а цикл. Во-первых, так я задокументирую выработавшиеся приёмы разработки, которые могут быть кому-то полезны как при работе с комплексом, так и в целом, а во-вторых, концепция ещё новая, не совсем устоявшаяся. Возможно, в процессе обсуждения статей появятся какие-то комментарии, из которых можно будет что-то почерпнуть, чтобы расширить (или даже изменить) её. Поэтому приступаем.

Читать дальше →
Всего голосов 14: ↑13 и ↓1+12
Комментарии0

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

Время на прочтение5 мин
Количество просмотров7.5K
image

В классическом понимании дуговая защита в России – это быстродействующая защита от коротких замыканий, основанная на регистрации спектра света открытой электрической дуги в КРУ, наиболее распространён метод регистрации спектра света посредством волоконно-оптических датчиков, применяется в основном в промышленном секторе, но с появлением новых продуктов в области дуговой защиты в жилом секторе, а именно модульных AFDD, работающих по токовому сигналу, позволяющих установить дуговую защиту на отходящих линиях, включая распределительные коробки, кабели, соединения, розетки и т.д., интерес к этой теме возрастает.
Читать дальше →
Всего голосов 34: ↑24 и ↓10+14
Комментарии72

Что слышно в радиоэфире? Принимаем и декодируем наиболее интересные сигналы

Время на прочтение6 мин
Количество просмотров92K
Привет, Хабр.

На дворе уже 21й век, и казалось бы, передать данные можно в HD-качестве даже на Марс. Однако, до сих пор в радиоэфире работает немало интересных устройств и можно услышать немало интересных сигналов.


Все из них рассмотреть разумеется, нереально, попробуем выбрать самые интересные, те которые можно принять и декодировать самостоятельно с помощью компьютера. Для приема сигналов мы воспользуемся голландским онлайн-приемником WebSDR, декодером MultiPSK и программой Virtual Audio Cable.
Читать дальше →
Всего голосов 113: ↑111 и ↓2+109
Комментарии114

Настраиваем удобную сборку проектов в Visual Studio

Время на прочтение43 мин
Количество просмотров85K
Эта статья является руководством по настройке сборки C++ проектов Visual Studio. Частично она сводилась из материалов разрозненных статей на эту тему, частично является результатом реверс-инжениринга стандартных конфигурационных файлов Студии. Я написал ее в основном потому что полезность документации от самой Microsoft на эту тему стремится к нулю и мне хотелось иметь под рукой удобный референс к которому в дальнейшем можно будет обращаться и отсылать других разработчиков. Visual Studio имеет удобные и широкие возможности для настройки по-настоящему удобной работы со сложными проектами и мне досадно видеть что из-за отвратительной документации эти возможности очень редко сейчас используются.

В качестве примера попробуем сделать так чтобы в Студию можно было добавлять flatbuffer schema, а Студия автоматически вызывала flatc в тех случаях когда это нужно (и не вызывала — когда изменений не было) и позволяла задавать настройки напрямую через File Properties



Укрощаем MSBuild
Всего голосов 42: ↑39 и ↓3+36
Комментарии37

Хакаем CAN шину авто. Виртуальная панель приборов

Время на прочтение14 мин
Количество просмотров219K


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

В этой статье я расскажу как собрать свою уникальную виртуальную или цифровую панель приборов и получить данные с любых датчиков в автомобилях группы VAG (Volkswagen, Audi, Seat, Skoda).

Мною был собран новый CAN сниффер и CAN шилд для Raspberry Pi на базе модуля MCP2515 TJA1050 Niren, полученные с их помощью данные я применил в разработке цифровой панели приборов с использованием 7″ дисплея для Raspberry Pi. Помимо простого отображения информации цифровая панель реагирует на кнопки подрулевого переключателя и другие события в машине.

В качестве фреймворка для рисования приборов отлично подошел Kivy для Python. Работает без Иксов и для вывода графики использует GL.

  1. CAN сниффер из Arduino Uno
  2. Подслушиваем запросы с помощью диагностической системы VAG-COM (VCDS)
  3. Разработка панели приборов на основе Raspberry Pi и 7″ дисплея
  4. Софт панели приборов на Python и Kivy (UI framework)
  5. Видео работы цифровой панели приборов на базе Raspberry Pi

Под катом полная реализация проекта, будет интересно!
Всего голосов 195: ↑192 и ↓3+189
Комментарии224

Представление произвольных полиномов в виде конечных разностей с произвольным шагом

Время на прочтение3 мин
Количество просмотров5.5K

Введение


В данной статье рассматривается возможность представление произвольного полинома произвольной целой степени n в виде конечных разностей. Подход в данной статье отличается от уже имеющихся тем, что все формулы выводятся для произвольного полинома с произвольными коэффициентами, а также тем, что в качестве интервала между точками используется произвольный, а не единичный интервал. Полученные формулы универсальны, и могут без изменения использоваться как для вычисления «будущих», так и «прошлых» значений полинома. То есть, например, для любой кривой, выраженной квадратичным уравнением с произвольными коэффициентами, можно вычислить все значения имея лишь 3 заранее известных значения y, взятые через произвольный равный интервал φ. Как следствие, вводится утверждение, что через (n+1) равноотстоящих точек может быть проведена одна и только одна кривая, выраженная полиномом степени n.
Читать дальше →
Всего голосов 20: ↑18 и ↓2+16
Комментарии49

Micropython на GSM+GPS модуле A9G

Время на прочтение13 мин
Количество просмотров26K

В этот раз я задумался о том, чтобы спрятать в велосипед GPS-трэкер в качестве меры предосторожности. На рынке есть масса автономных устройств для слежения за автомобилями, грузом, велосипедами, багажом, детьми и животными. Подавляющее большинство из них взаимодействуют с пользователем с помощью СМС. Более дорогие варианты предоставляют функциональность Find my phone, но привязаны к конкретному онлайн-сервису.
В идеале хотелось бы иметь полный контроль над трекером: использовать его в удобном режиме без СМС и регистрации. Поверхностное гугление вывело меня на пару модулей из поднебесной, один из которых, A9G pudding board, я и заказал (~15$).


Модуль


Эта статья о том, как я заставил работать python на этом модуле.

Читать дальше →
Всего голосов 33: ↑32 и ↓1+31
Комментарии3

CSTroN — самодельный монитор на винтажной CSTN-матрице с VGA-входом и платой управления на ПЛИС

Время на прочтение7 мин
Количество просмотров16K


Что если бы TFT никогда не изобрели? ЖК-монитор с CSTN-матрицей

Вступление


Когда ЭЛТ-мониторы преобладали, в их пользу выдвигали следующий аргумент: несмотря на все усовершенствования, ЖК-дисплеи никогда не превзойдут по качеству изображения трубочные. Они, как и прежде, будут находить применение лишь там, где требуются энергоэффективность и малая толщина [1]. Прошли десятилетия, и теперь мы знаем, правы ли были сторонники этого аргумента. Но сегодня интересно взглянуть на ЖКИ того времени: действительно ли они настолько некачественные? Каково это — смотреть на CSTN-матрицу в 2019 году?
Читать дальше →
Всего голосов 28: ↑26 и ↓2+24
Комментарии23

Об оценке и управлении разработкой программных продуктов

Время на прочтение13 мин
Количество просмотров15K
image

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

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

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

В статье я расскажу о том, как менялось мое отношение к оценке задач и как сейчас оцениваются проекты в нашей компании. А начну я с того, как оценивать не надо. Если про то как «не надо» вы уже знаете, переходите сразу ко второй части статьи.
Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии3

Унифицированная обработка ошибок (C++ вариант для микроконтроллеров)

Время на прочтение12 мин
Количество просмотров9.6K
При разработке ПО для микроконтроллеров на С++ очень часто можно столкнуться с тем, что использование стандартной библиотеки может привести к нежелательным дополнительным расходам ресурсов, как ОЗУ, так и ПЗУ. Поэтому зачастую классы и методы из библиотеки std не совсем подходят для реализации в микроконтроллере. Существуют также некоторые ограничения в использовании динамически выделяемой памяти, RTTI, исключений и так далее. В общем случае, чтобы писать компактный и быстрый код нельзя просто так взять библиотеку std и начать пользоваться, скажем операторами типа typeid, потому что необходима поддержка RTTI, а это уже накладные расходы, хоть и не очень большие.

Поэтому иногда приходится изобретать велосипеды, чтобы выполнить все эти условия. Таких задач немного, но они есть. В данном посте, хотелось бы рассказать про вроде бы как простую задачку — расширить коды возврата существующих подсистем в ПО для микроконтроллера.
Читать дальше →
Всего голосов 26: ↑26 и ↓0+26
Комментарии21

Google Drive как хранилище для веб-приложения

Время на прочтение9 мин
Количество просмотров42K

Предисловие


Мое веб-приложение хранит данные в localStorage. Это было удобно, пока не захотелось, чтобы пользователь, заходя на сайт с разных устройств, видел одно и то же. То есть, понадобилось удаленное хранилище.

Но приложение «хостится» на GitHub Pages и не имеет серверной части. Я решил не делать сервер, а данные хранить у третьей стороны. Это дает существенные преимущества:

  1. Не нужно платить за сервер, не болит голова о его стабильности и доступности.
  2. Меньше кода, меньше ошибок.
  3. Пользователю не нужно регистрироваться в моем приложении (это многих раздражает).
  4. Приватность выше, и пользователь знает, что его данные хранятся в месте, которому он, скорее всего, доверяет больше, чем мне.

Сначала выбор пал на remoteStorage.js. Они предлагают открытый протокол обмена данными, достаточно приятное API, возможность интеграции с Google Drive и Dropbox, а также свои сервера. Но этот путь оказался тупиковым (почему — отдельная история).

В итоге решил использовать Google Drive напрямую, и Google API Client Library (далее GAPI) как библиотеку для доступа к нему.

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

Надеюсь, данная статья сэкономит вам время, если вы решите использовать Google Drive в вашем приложении.
Читать дальше →
Всего голосов 34: ↑33 и ↓1+32
Комментарии19

SmartCard I2C Protocol. Обмен APDU командами через I2C интерфейс

Время на прочтение13 мин
Количество просмотров6.3K

Введение


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

К сожалению, тогда подобное решение не подошло по некоторым причинам, хотя если бы удалось использовать уже готовую российскую аппаратную криптографию, то это должно было значительно ускорить разработку и последующую сертификацию конечного изделия. А причины невозможности использования USB токенов или смарткарты были весьма банальны: устройство должно было быть довольно компактным (небольшой модуль для M2M или IoT устройств), эксплуатироваться преимущественно в необслуживаемом режиме и работать в широком температурном диапазоне.

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


Читать дальше →
Всего голосов 18: ↑17 и ↓1+16
Комментарии5

Информация

В рейтинге
Не участвует
Откуда
Иваново, Ивановская обл., Россия
Зарегистрирован
Активность