Как стать автором
Обновить
7
0
Юрий @MrYuran

Программист (микроконтроллеры)

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

Сканирование шины RS485

Уровень сложностиПростой
Время на прочтение22 мин
Количество просмотров14K

В электронике есть множество проводных полудуплексных асинхронных последовательных интерфейсов типа "общая шина". Это 1-Wire, RS485, 10BASE2(thin Ethernet), LIN, K-Line, CAN, I2C, MIL-STD-1553, ARINC 429.

Во всех этих shared-bus интерфейсах так или иначе возникает задача сканирования шины. То есть надо автоматически определить адреса устройств которые подключены к витой паре проводов.

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

Читать далее
Всего голосов 16: ↑11 и ↓5+12
Комментарии46

О протоколе Modbus и Intel Edison

Время на прочтение4 мин
Количество просмотров13K
Modbus – это широко известный коммуникационный протокол, который нашёл применение и в промышленности, и в любительских проектах. На физическом уровне для организации связи между устройствами по этому протоколу могут использоваться последовательные интерфейсы (RS232 или RS485) или Ethernet (здесь задействованы протоколы TCP или UDP). Сегодня мы поговорим о том, как организовать взаимодействие Intel Edison с другими устройствами с помощью Modbus.

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

Node.js на службе разработчика электроники: создаём библиотеки микросхем

Время на прочтение8 мин
Количество просмотров13K
Всем привет! Сегодня мы поговорим о схемотехнике. А чтобы было интереснее, приплетем сюда Node.js. Внимательный читатель тут же спросит, какая же между ними связь? А такая, что мы попытаемся, используя современные технологии, немного облегчить жизнь тем, кто дружит с паяльником, любит программировать всякие там Arduino/BeagleBoard ну и вообще увлекается электроникой чуть больше, чем на потребительском уровне. Если кратко, то мы попытаемся немного автоматизировать процесс создания библиотеки электронных элементов.

Если стало интересно, то добро пожаловать под кат.
Читать дальше →
Всего голосов 20: ↑19 и ↓1+18
Комментарии6

Обстоятельно о подсчёте единичных битов

Время на прочтение16 мин
Количество просмотров98K
Я хотел бы подарить сообществу Хабра статью, в которой стараюсь дать достаточно полное описание подходов к алгоритмам подсчёта единичных битов в переменных размером от 8 до 64 битов. Эти алгоритмы относятся к разделу так называемой «битовой магии» или «битовой алхимии», которая завораживает своей красотой и неочевидностью многих программистов. Я хочу показать, что в основах этой алхимии нет ничего сложного, и вы даже сможете разработать собственные методы подсчёта единичных битов, познакомившись с фундаментальными приёмами, составляющими подобные алгоритмы.

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

Никогда не «не делай» того, о чем пожалеешь или умный дом с CCU.IO

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

Хочу представить программную платформу автоматизации для дома на базе Node.js, которую можно скачать со всеми исходниками и установить прямо сейчас практически одним кликом (Windows) или одной командой (Linux/Debian).


Подробности
Всего голосов 84: ↑81 и ↓3+78
Комментарии88

Глупые часы

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

В современном мире все чаще встречается приставка «умный» к, казалось бы, обычным вещам. Все что-то замеряют, передают, принимают, обрабатывают, оповещают и подсказывают. Скоро Bluetooth, Wi-Fi и маленький контроллер, а также камера будет в каждом предмете.

Я же хочу рассказать о том, как я сделал часы, к которым были предъявлены жесткие требования – они должны показывать время и… нет, все, они должны показывать время. Хотя все же еще одно требование, цифры должны быть достаточно большими и легко читаться.
Читать дальше →
Всего голосов 106: ↑105 и ↓1+104
Комментарии67

Эффективный счёт в уме или разминка для мозга

Время на прочтение3 мин
Количество просмотров301K
Эта статья навеяна топиком «Как и насколько быстро вы считаете в уме на элементарном уровне?» и призвана распространить приёмы С.А. Рачинского для устного счёта.
Рачинский был замечательным педагогом, преподававшим в сельских школах в XIX веке и показавшим на собственном опыте, что развить навык быстрого устного счёта можно. Для его учеников не было особой проблемой посчитать подобный пример в уме:

image

Далее рассмотрим несколько трюков для ускорения умственного счёта...
Всего голосов 90: ↑82 и ↓8+74
Комментарии37

LLVM для исследователей

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

Что такое LLVM?


LLVM — это по-настоящему удобный для разборки и сборки «ранний» компилятор для таких традиционных языков программирования, как C и C++.

LLVM настолько хорош, что считается «больше, чем просто компилятором» (это динамический компилятор, он работает с языками, не относящимися к семейству C, он представляет собой новый формат доставки для App Store и т. д. и т. п.). Все перечисленное верно, но для нашей статьи важно лишь приведенное выше определение.

LLVM имеет несколько ключевых отличий от других компиляторов:

  • Главное новшество — промежуточное представление (ПП). LLVM работает с ПП, которое действительно можно прочитать (если вы умеете читать ассемблерный код). Возможно, кому-то это не покажется столь уж большим откровением, однако это свойство очень важно. ПП других компиляторов обычно имеют настолько сложную структуру, что их невозможно записать вручную, трудно понять и использовать.
Читать дальше →
Всего голосов 72: ↑68 и ↓4+64
Комментарии6

Bubot — очень легкий фреймворк на Python 3 для программирования роботов и домашней автоматизации

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

Предыстория


Хотелось создать своего робота, а так же автоматизировать управление светом и климатом дома. С этой целью начал изучать имеющиеся возможности. Для себя я разделил все решения на две группы: системы в которых код на контроллере выполняется в одном главном цикле (arduino, lego и т.п.) и системы состоящие из параллельно работающих процессов обменивающихся между собой сообщениями.
Интуитивно выбрал вторую группу, так как хотелось найти максимально простое решение с дружественным пользовательским интерфейсом. Из наиболее популярных представителей этого «семейства» очень понравились Microsoft Robotics Studio и ROS. Но к сожалению, на текущий момент, привязать их к конкретному железу весьма не просто, да и разобраться в них с нуля так же весьма не тривиальная задача. В итоге принял решение писать сам, но «кодить» на C очень не хотелось, Душа просила чего-нибудь попроще и полегче. В итоге выбрал Python. А учитывая, что по мимо робота и «умного дома» в голову начало лезть куча других идей, то решил сразу сделать небольшой фреймворк, в котором основной упор был бы сделан на простоту разработки.

Концепция


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

Bubot - Схема

Сеть процессов строится на базе стандартного Python модуля multiprocessing. Система обмена сообщениями и разделяемая память реализованы при помощи Redis.

Каждый Bubot имеет встроенный веб-сервер веб-сервер Tornado, который позволяет контролировать состояние, управлять роботом, на ходу менять параметры (калибровать) робота, а также закладывается возможность обмена данными между роботами.
Bubot не является системой реального времени, хотя Bubot возможно интегрировать с кодом реального времени.
Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Комментарии10

Авто-регистрация тестов на С средствами языка

Время на прочтение14 мин
Количество просмотров8.6K
Тестирование в CСравнительно недавно была статья «Полуавтоматическая регистрация юнит-тестов на чистом С», в которой автор продемонстрировал решение задачи с использованием счётчиков из Boost. Следуя этому же принципу, была предпринята (успешная) попытка повторить данный опыт уже без использования Boost из соображения нелогичности наличия в проекте на C зависимости от Boost, да ещё и в таком небольшом объёме. При этом в тестах присутствовали вспомогательные директивы препроцессора в большом количестве. И всё бы так и осталось, но практически на завершающей стадии был найден альтернативный способ регистрации, который позволяет полностью избавится от дополнительных действий. Это C89-решение для регистрации тестов и чуть более требовательное к системе сборке решение для регистрации наборов тестов.
Каким образом
Всего голосов 22: ↑21 и ↓1+20
Комментарии19

Конечный автомат (он же машина состояний) на чистом С

Время на прочтение5 мин
Количество просмотров130K
Почти каждый микроконтроллерщик сталкивался с громадными switch-case и мучительно их отлаживал.
И много кто, начиная писать реализацию какого-либо протокола, задумывался как написать её красиво, изящно, так чтобы через месяц было понятно что ты имел в виду, чтобы она не отжирала всю память и вообще какала бабочками.
И вот тут на помощь приходят машины состояний, они же конечные автоматы (те самые которые используются в регулярных выражениях).

Собственно через регулярные выражения я к ним и пришёл.
Читать дальше →
Всего голосов 51: ↑48 и ↓3+45
Комментарии50

Вышла книга «Getting Started with LLVM Core Libraries»

Время на прочтение2 мин
Количество просмотров13K
Думаю, многим, также, как и мне, книга «Getting Started with LLVM Core Libraries» покажется интересной. Это первая книга, посвященная целиком и полностью LLVM. В основном, как следует из названия, ориентирована на новичков, которые только обратили свое внимание на LLVM, но уже имеют опыт программирования на C++.
Небольшое описание содержимого книги
Всего голосов 25: ↑25 и ↓0+25
Комментарии8

Информация

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

Специализация

Специалист
Lead