Search
Write a publication
Pull to refresh
196
0.1
Андрей Дмитриев @AndreyDmitriev

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

Send message

STM32 и USB-HID — это просто

Reading time14 min
Views384K
На дворе 2014 год, а для связи микроконтроллеров с ПК самым популярным средством является обычный последовательный порт. С ним легко начать работать, он до примитивности прост в понимании — просто поток байт.
Однако все современные стандарты исключили COM порт из состава ПК и приходится использовать USB-UART переходники, чтобы получить доступ к своему проекту на МК. Не всегда он есть под рукой. Не всегда такой переходник работает стабильно из-за проблем с драйверами. Есть и другие недостатки.
Но каждый раз, когда заходит разговор о том, применять USB или последовательный порт, находится множество поклонников логической простоты UART. И у них есть на то основания. Однако, хорошо ведь иметь альтернативу?

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

У нас есть плата с современным недорогим микроконтроллером STM32F103C8 со встроенной аппаратной поддержкой USB, я рассказывал о ней ранее

Заставим ее работать

Зимние каникулы с пользой

Reading time4 min
Views40K

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

Привет, {{habrauser}}.

Скоро долгожданные новогодние выходные, и ты, наверное, уже спланировал, как их провести. Игры, горы, поездки, телевизор (серьезно?). Для себя решил, что хочу сделать карьерный рывок и просто научиться делать лучше, то чем сейчас занимаюсь — управление интернет-проектами. Надо сказать, учиться в моем (28) возрасте довольно тяжело. Если в школе или ВУЗе знания еще ровно ложились на пустой лист моего опыта, привычек и понимания, то сейчас все иначе. Учеба — это процесс внутреннего изменения, я должен переписать существующие знания новыми. Начать делать что-то иначе. Но и награда велика — новый результат, новый опыт, расширение сознания, да и просто жить так интереснее.

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

Wake On Lan после сбоя питания (или из состояния G3)

Reading time5 min
Views62K
Wake-on-LAN (WOL; в переводе с англ. — «пробуждение по [сигналу из] локальной сети») — технология, позволяющая удалённо включить компьютер посредством отправки через локальную сеть специальной последовательности байтов. wiki

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

Разработчик на распутье: как векторизовать?!

Reading time5 min
Views17K

На тему векторизации написано немало интересного. Вот скажем, отличный пост, который много полезного объясняет по работе автовекторизации, очень рекомендовал бы его к прочтению. Мне интересен другой вопрос. Сейчас в руках у разработчиков большое количество способов, чтобы создать «векторный» код – от чистого ассемблера до того же автовекторизатора. На каком же способе остановиться? Как найти баланс между необходимым и достаточным? Об этом и поговорим.
Читать дальше →

«Задачка-то сошлась с ответом!»

Reading time4 min
Views34K


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

Вы еще не программируете микроконтроллеры? Тогда мы идем к вам!

Reading time9 min
Views387K
Здравствуйте, уважаемые Хабражители!

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

Тема микроконтроллеров меня заинтересовала очень давно, году этак в 2001. Но тогда достать программатор по месту жительства оказалось проблематично, а о покупке через Интернет и речи не было. Пришлось отложить это дело до лучших времен. И вот, в один прекрасный день я обнаружил, что лучшие времена пришли не выходя из дома можно купить все, что мне было нужно. Решил попробовать. Итак, что нам понадобится:
Читать дальше →

DIY-диммер: новогодний предзаказ печатных плат

Reading time3 min
Views64K


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

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

Wireshark — приручение акулы

Reading time10 min
Views1.1M


Wireshark — это достаточно известный инструмент для захвата и анализа сетевого трафика, фактически стандарт как для образования, так и для траблшутинга.
Wireshark работает с подавляющим большинством известных протоколов, имеет понятный и логичный графический интерфейс на основе GTK+ и мощнейшую систему фильтров.
Кроссплатформенный, работает в таких ОС как Linux, Solaris, FreeBSD, NetBSD, OpenBSD, Mac OS X, и, естественно, Windows. Распространяется под лицензией GNU GPL v2. Доступен бесплатно на сайте wireshark.org.
Установка в системе Windows тривиальна — next, next, next.
Самая свежая на момент написания статьи версия – 1.10.3, она и будет участвовать в обзоре.

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

Начинаем плаванье


Для начала захвата достаточно выбрать свой сетевой интерфейс и нажать Start.
Читать дальше →

Змейка на ПЛК? Легко!

Reading time4 min
Views15K
День добрый, хабражители!

Здесь недавно жаловались, что тема “промышленного программирования” раскрыта недостаточно. Попытаюсь это исправить.
Для наглядности разберем как написать классическую змейку для контроллера семейства Siemens s7-300.

image

Если стало интересно – добро пожаловать под кат.
Внимание – картинки и много кода на подобном ассемблеру языке!
Читать дальше →

Управляем светодиодной лентой при помощи Raspberry Pi и Android

Reading time8 min
Views66K
Здравствуй, завсегдатай и гость Хабра.

Давно читаю Хабр, но всё никак не было поводов написать статью, пока меня не накрыло мне очередной раз не напомнили о существовании Raspberry Pi и о такой вещи как WS2801 LED Strip. Тут уже однажды писали о подобной, но для связи с Ардуиной, чтобы получить Эмбилайт, поэтому я решил рискнуть и написать свою статью, с Лего и Котиками.

В статье будет мало картинок, несколько видео, много текста, включая лирические отступления не по сабжу и совсем мало кода, но в самом конце будут ссылки на проект на Гитхабе. А теперь обо всём по-порядку:
Читать дальше →

Беспроводные коммуникации «умного дома». Часть вторая, практическая

Reading time13 min
Views138K
После написания пары больших постов про «радиофицированный» умный дом, было достаточно много желающих получить код, который помог бы разобраться с этой темой более детально.
Свой исходный вариант кода по некоторым причинам выкладывать не хотелось — подготовил «облегченный» вариант, который позволит объяснить мои основные задумки.

Для того, чтобы пост получился наиболее зрелищным и полезным, сегодня реализуем домашнюю мини-систему (часы, календарь, погода, контроль уровня заряда батареек в датчиках и т.п.), состоящую из одного «главного» модуля (с большой светодиодной матрицей в качестве индикатора), двух автономных датчиков (будут измерять температуру) и модуля синхронизации времени через NTP.
Хватит слов, поехали!

Нескучные интегралы

Reading time6 min
Views176K
Некоторые из вас, вероятно, видали на просторах сети эту задачку: какое число продолжает следующий ряд?

Предлагался такой очевидный правильный ответ:

Для тех, кому неочевидно, как он получен, предлагалось объяснение. Пусть (ну и 1 при x = 0, хотя неважно). Тогда каждый член ряда — это значение следующего интеграла в цепочке:

Пока всё идёт хорошо, но тут внезапно:

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

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

Reading time3 min
Views81K
Примерно год назад я начал разрабатывать блок управления автомобильным двигателем с нуля.
Позвольте рассказать, почему эта идея до сих пор кажется мне реалистичной.
Читать дальше →

Знакомство с Go — пишем граббер веб страниц с многопоточностью и блудницами

Reading time11 min
Views71K
Про язык Go от команды Google слышали, наверное, все. А вот пробовали далеко не все, и очень зря — общение с сусликами Go это море удовольствия, в чем я недавно убедился на собственном опыте.
Начинать знакомство с новым языком забавнее всего на жизненном примере, поэтому я, не долго думая, взял первую попавшуюся задачу “из жизни, самой первостепенной важности”:

Есть в интернете сайт http://vpustotu.ru на котором любой желающий может анонимно высказаться о наболевшем. Все высказывания (в дальнейшем буду называть их “цитатами”) сначала попадают в модерацию (аналог “бездны” башорга), где посетители могут оценить полет мысли и проголосовать за цитату в стиле “Ого!” или “Ерунда!”. На странице модерации (http://vpustotu.ru/moderation/) нам показывают случайную цитату, ссылки голосования и ссылку “Еще”, которая ведет на эту же страницу. Пощелкайте, это все очень просто.

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

В разделе модерации нет прямых ссылок на определенную цитату, единственный способ получить новую цитату – обновить страницу (или перейти по ссылке “еще”, что одно и тоже). Причем вполне возможны повторы, что легко обнаруживается после пары минут агрессивного кликинга.

Таким образом нужна программа, которая:

  • Должна последовательно обновлять и парсить (разбирать) страницу, записывая цитату.
  • Должна уметь отбрасывать дубликаты.


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

  • Должна останавливаться не только по команде, но и по достижению определенного числа “повторов”, например 500!
  • Так как это, скорее всего, займет некоторое время: необходимо уметь продолжить “с места на котором остановились” после закрытия.
  • Ну и раз уж все-таки это надолго – пусть делает свое грязное дело в несколько потоков. Хорошо-бы в целых 4 потока (или даже 5!).
  • И отчитывается об успехах в консоль каждые, скажем, 10 секунд.
  • А все эти параметры пускай принимает из аргументов командной строки!


Ну, вроде все понятно. Пусть программа ведет два файла – с цитатами и с некими хешами этих цитат, чтобы не повторяться, и перечитывает файл в начале каждого запуска. Ну а дальше в цикле разбирает страницу, выдергивая все новые и новые откровения, пока не получит ctrl-c по лбу или же не встретит определенное количество повторов. Задача ясна, план есть – поехали!
Читать дальше →

Сенсорная крышка для мусорного ведра своими руками

Reading time4 min
Views130K
image

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

Ведро использовано металлическое блестящее, крышка открывается педалью, такие ведра можно найти во многих магазинах.
Для доработки ведра использованы ИК светодиод, ИК приемник, сервопривод, микроконтроллер.
Управление и контроль перегрузки сервопривода осуществляется c помощью микроконтроллера ATtiny44A фирмы Atmel.

Программа управления написана на C в Atmel Studio 6.1.
Читать дальше →

Lock-free структуры данных. Основы: Атомарность и атомарные примитивы

Reading time15 min
Views112K

Построение lock-free структур данных зиждется на двух китах – атомарных операциях и способах упорядочения доступа к памяти. В этой статье речь пойдет об атомарности и атомарных примитивах.

Анонс. Спасибо за теплый прием Начал! Вижу, что тема lock-free интересна хабрасообществу, это меня радует. Я планировал построить цикл по академическому принципу, плавно переходя от основ к алгоритмам, попутно иллюстрируя текст кодом из libcds. Но часть читателей требует зрелищ не мешкая показать, как пользоваться библиотекой, особо не рассусоливая. Я согласен, в этом есть свой резон. В конечном счете, и мне не так интересно, что там внутри boost, — опишите, как его применять! Поэтому свой эпический цикл я разделю на три части: Основы, Внутри и Извне. Каждая статья эпопеи будет относится к одной из частей. В Основах будет рассказываться о низкоуровневых вещах, вплоть до строения современных процессоров; это часть для почемучек вроде меня. Внутри будет освещать интересные алгоритмы и подходы в мире lock-free, — это скорее теория о том, как реализовать lock-free структуру данных, libcds будет неисчерпаемым источником C++ кода. В Извне будут статьи о практике применения libcds, — программные решения, советы и FAQ. Извне будет питаться вашими вопросами/замечаниями/предложениями, дорогие хабражители.

А пока я судорожно готовлю начало Извне, — первая часть Основ. Статья во многом не о C++ (хотя и о нем тоже) и даже не о lock-free (хотя без atomic lock-free алгоритмы неработоспособны), а о реализации атомарных примитивов в современных процессорах и о базовых проблемах, возникающих при использовании таких примитивов.
Атомарность — это первый круг ада низкий уровень из двух.
Читать дальше →

Фотонаблюдение или timelapse видео на Raspberry Pi

Reading time7 min
Views166K

Недавно у меня возникла необходимость соорудить некое подобие видеонаблюдения. Требования были довольно простые:
  • возможность наблюдать через интернет
  • не обязателен режим реального времени, достаточно вечером просмотреть основные события за день (скажем, узнать, сидит ли кто-нибудь за вашим любимым компом, пока вы на работе)
  • отсутствие необходимости тратить часы на отсмотр результатов
  • максимально возможное качество картинки
  • минимальная стоимость

Исходя из критериев, можно было бы остановиться на готовых решениях в виде IP-камер. Однако, проведенный на скорую руку анализ рынка показал, что в устройствах, стоимостью до $100, размер картинки редко превышает 640x480 точек, и, при этом, они не могут похвастать хорошими возможностями для настройки софта. То есть, вполне возможно, что купив такую камеру, вам придется мириться с кривизной заводской прошивки и невозможностью в полной мере реализовать свои замыслы.

В противовес готовым решениям, самоделка на Raspberry Pi – это достаточно недорого, куда более увлекательно, и гораздо более гибко, благодаря полноценной ОС на борту и терабайтам готового софта на любой вкус.
Читать дальше →

Автоматическая очистка старых драйверов, или выжмем немного места из Windows 7

Reading time6 min
Views233K
В один прекрасный (или печальный, кому как) день мне надоело, что у меня периодически заканчивается место на ноутбуке. Да, я в курсе, что жёсткие диски сейчас дешевы, но это для меня не выход, потому что:
  • У меня SSD, а он всё-таки подороже будет, чем обычные HDD (объём моего текущего SSD — 120 гигов)
  • Ноутбук рабочий, соответственно данные на нём тоже, должны быть шифрованы, всё такое, поэтому самопальный и не утверждённое работодателем носитель втыкать не стоит
  • Я жадный :)

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

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

Reading time3 min
Views64K
Пролог
С появлением дома газового котла с электронным управлением, жить, как бы сказать, становится приятнее. Улучшив этот момент простым термостатом с двумя кнопочками и семисегментником, показалось что совсем все хорошо. Но было решено развить эту идею.


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

Решение
Наше устройство должно уметь:
1) Показывать температуру дома и на улице
2) Включать отопление, когда температура дома упадет ниже заданной
3) Соответственно задавать температуру мы будем графиком(например в 6 утра нам надо 22 градуса, когда все ушли на работу можно и 18 и т.д.)
Из плюшек
4) График температуры на улице за сутки
5) Часы(получились попутно)

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

Пишем свою книгу

Reading time5 min
Views36K
imageВ данной статье я поделюсь информацией о том, как написать свою IT-книгу. Расскажу о подводных камнях, взаимодействии с издательским агентством, налоговой и банками. Процесс может немного варьироваться от издательства (и страны), но основные моменты не должны меняться.
Читать дальше →

Information

Rating
5,746-th
Location
Ahrensburg, Schleswig-Holstein, Германия
Date of birth
Registered
Activity