Pull to refresh
55
0
Сергей Труш @HWman

Techn0man1ac(техноманьяк)

Send message

Zip-файлы: история, объяснение и реализация

Reading time76 min
Views92K


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

В статье очень подробно объясняется, как работают Zip-файлы и схема сжатия: LZ77-сжатие, алгоритм Хаффмана, алгоритм Deflate и прочее. Вы узнаете историю развития технологии и посмотрите довольно эффективные примеры реализации, написанные с нуля на С. Исходный код лежит тут: hwzip-1.0.zip.
Читать дальше →
Total votes 176: ↑175 and ↓1+174
Comments45

10 советов по использованию микроконтроллеров AVR в системах с двигателями

Reading time6 min
Views66K
Среди людей, увлекающихся электроникой, одним из самых популярных этюдов является изготовление гусеничного робота. Этой теме посвящена масса статей, в том числе и на Хабре. Обилие руководств, схем и статей привело меня к мысли, что это будет не так уж трудно, и мне тоже захотелось самому изготовить такую прекрасную самоделку. Можно сказать, что мне не повезло — в процессе работы я столкнулся с массой проблем, связанных с наличием двигателей. В конце концов все эти проблемы мне удалось решить, но это заняло очень много времени. В данной статье я предлагаю несколько советов по проектированию схем, содержащих двигатели, на базе микроконтроллеров AVR. В практической полезности всех этих советов мне пришлось убедиться на собственном опыте. Многие советы, как мне кажется, подойдут и для других микроконтроллеров.

Читать дальше →
Total votes 68: ↑63 and ↓5+58
Comments23

Программное обеспечение для тестирования и наладки устройств и сетей на базе MODBUS

Reading time10 min
Views256K

image


Протокол Modbus довольно распространен как в промышленных системах автоматизации, так и сетях систем типа "Умный дом", автоматизации малых объектов (теплицы и т.п.) и стыковки различного оборудования с домашним компьютером. Появление таких проектов как Arduino и Raspberry Pi значительно повысило интерес к задачам, связанным с робототехникой, автоматикой и автоматизацией. Все это обеспечивает рост популярности Modbus среди любителей и профессионалов. В статье рассмотрен вопрос тестирования и наладки, как отдельных устройств, так и сетей на базе протокола Modbus с позиции требований к программному обеспечению для решения таких задач и обзора существующих инструментов.

Читать дальше →
Total votes 16: ↑14 and ↓2+12
Comments63

Одноплатный компьютер для embedded программиста

Reading time8 min
Views13K

Данный туториал будет полезен программистам, которые перешли с avr или stm32 на одноплатные компьютеры под управлением Ubuntu.

Читать далее
Total votes 22: ↑12 and ↓10+2
Comments17

Заводим трактор: QMake -> CMake

Reading time14 min
Views22K

Заводим трактор: переезжаем с QMake на CMake🚜

По дороге заглянем на улицу "Кросс компиляторщиков", в сквер "Систем сборки" и посидим в баре "Управления зависимостями". Заодно увидим тех, кто использует Qt в embedded linux.

Поехали
Total votes 10: ↑8 and ↓2+6
Comments19

Статическая линковка Qt 5.x.x с MinGW32 в Windows (сборка в один exe'шник)

Reading time3 min
Views18K
Доброго времени суток, хабравчане!

Я уверен, что все заметили, когда делали деплой своей программы через windeployqt.exe, программа зависит от разных динамических и qt'шных библиотек. Вследствие чего, развертка на других компьютерах становится неудобной. Почему? Приходится держать сам exe'шник в папке с нужными библиотеками. Разумеется, можно умудриться и без статической линковки решить эту проблему. Согласитесь, неудобно, да и каждый раз нужно лишние телодвижения делать. Проще один раз запариться и потом не делать лишних движений. Еще один плюс статической линковки — размер файла. При динамической линковке сам exe'шник весит примерно от 1 МБ до 7-8 МБ, а с окружением до 70 МБ может спокойно дойти, даже если проект небольшой. При статической линковке есть только exe'шник, который весит примерно в 2 раза меньше, чем окружение при динамической линковке.
Читать дальше →
Total votes 6: ↑4 and ↓2+2
Comments28

Qwt и Qt Creator. Быстро и просто. Часть 1: визуализатор данных

Reading time6 min
Views90K


Для понимания этой статьи читатель должен иметь начальный опыт разработки windows-приложений в среде Qt Creator.
В примерах используются Qt Creator 3.0.0 (MinGW) и Qwt-6.1.0.


Qwt – графическая библиотека, позволяющая значительно упростить процесс визуализации данных в программе. Упрощение заключается в следующем: нет необходимости вручную прописывать элементы отображения, такие как шкалы координат, сетки, кривые данных и проч. Следует лишь задавать параметры этих элементов.
Аналогия: для того, чтобы построить график в Excel Вы выбираете данные и настраиваете параметры их отображения: минимум и максимум шкал, цвет кривых, подписи данных и др. За визуализацию отвечает Excel – сами элементы Вы не программируете.
Особо отмечу, что Qwt позволяет работать с достаточно большими объемами данных (я работал с 200 000 точек) без возникновения раздражающих «тормозов».
В данной статье мы будем отображать кривую на графике, масштабировать ее, перемещаться по графику, смотреть координаты курсора. Таким образом, мы реализуем минимальный функционал, необходимый для вывода и просмотра графиков. В последующих статьях наш графический редактор будет оснащен дополнительными возможностями.

Читать дальше →
Total votes 20: ↑16 and ↓4+12
Comments7

Kincony KC868-A4: ультимативный гайд. Часть 1. Обзор и железо

Reading time9 min
Views18K


Как-то длинным зимним вечером я сидел перед монитором и просматривал интернет на предмет чего-нибудь интересного вообще и чего-нибудь интересного микроконтроллерного в частности. К сожалению, интернет ничем особенным не радовал и на глаза попадались либо уже набившие оскомину стандартные отладочные платы, либо вариации на тему «коробочка с ESP8266/ESP32 c 1–4 реле».

ESP32 c 4-я реле это, конечно, хорошо, но хотелось чего-то большего и тут мне на глаза попалась плата Kincony KC868-A4. Неплохо! подумал я и надел очки, чтобы получше её рассмотреть…
Читать дальше →
Total votes 61: ↑61 and ↓0+61
Comments55

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

Reading time15 min
Views22K

Попытаемся сделать зарядник 300 Вт с КПД 99% из тех деталей которые еще остались в стоках интернет-продавцов. Продумаем архитектуру. Cоздадим схему. Проведем симуляцию в LTSpice и Microcap. Научимся технологии оптимизации в симуляторе. Найдем применение методу Monte Carlo. Посмотрим на трассировку. Попробуем сравнительно новую фишку Altium Designer - PDN Analyzer.

Читать далее
Total votes 98: ↑97 and ↓1+96
Comments69

Начать заниматься роботами должно быть просто

Level of difficultyEasy
Reading time9 min
Views13K

Введение


Это руководство в первую очередь предназначено для тех, кто хочет начать заниматься программированием и созданием роботов, но не знает куда идти дальше после мигания светодиодами на Arduino.

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

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



Интересно? Тогда начнём.
Читать дальше →
Total votes 16: ↑15 and ↓1+14
Comments15

На столбе висят три глаза, или сказ о том, что пяти ног ATtiny13 вполне достаточно

Reading time46 min
Views39K


КДПВ «Ой, всё».


Мало шансов, что сей лонгрид станет живительным источником мудрости интеллектуалам, искушенным в тайнах гадания на картах Карно и познавшим потаенный смысл Третьей Нормальной Формы. Но если вы зачем-то трогали руками arduino, в кладовке пылится паяльник, понимаете, почему у батарейки один плюс, а у С++ два, то вас не смогут оставить равнодушными поистине волшебные и удивительные чудеса. Итак, имею удовольствие рекомендовать вам номера сегодняшнего представления бродячего цирка «Саман с Самшитом»:


  • Добавление RAM и ROM в ATtiny13!
  • Искусственный интеллект в микропроцессор — про и контра, или спящая красавица — ну она не дура ли?
  • Или все таки dura lex sed lex?
  • Как добавить ножек в ATtiny13?
  • Пару слов о пятом измерении: как впихнуть невпихуемое?
  • Распиливание напополам не-девствениц с перемешиванием содержимых половин (с гарантией восстановления).
  • Номер «Кормление страждущих» (см. более ранний случай насыщения пяти тысяч человек пятью ячменными хлебами и двумя рыбами).

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

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

Делаем из смартфона websocket-пульт управления радиоуправляемой машинкой

Reading time8 min
Views16K

Одной из самых увлекательных сторон работы с микроконтроллерами, лично для меня, является то, что вы можете создать свой собственный аппарат, управляемый по радиоканалу. Есть большое количество разных возможностей для удалённого управления устройствами. В этой же статье мы поговорим о том, как организовать такое управление с помощью микроконтроллера esp32.
Читать дальше →
Total votes 51: ↑49 and ↓2+47
Comments12

Обзор алгоритмов SLAM для камер глубины в ROS

Reading time6 min
Views18K
Добрый день уважаемые читатели! В последней статье я уже писал об алгоритме rtabmap SLAM в контексте методов визуальной одометрии. В этой статье я расскажу об этом алгоритме SLAM более подробно, а также представлю обзор другого известного алгоритма SLAM, предназначенного для камер глубины — RGBDSLAM. Кого заинтересовало, прошу под кат.
Total votes 12: ↑12 and ↓0+12
Comments3

Знакомство с Node-RED и потоковое программирование в Yandex IoT Core

Reading time8 min
Views62K


В этой статье я хочу разобрать один из самых популярных опенсорс-инструментов, Node-RED, с точки зрения создания простых прототипов приложений с минимумом программирования. Проверим гипотезу о простоте и удобстве таких средств, а также рассмотрим взаимодействие Node-RED с облачной платформой на примере Yandex.Cloud.

Читать дальше →
Total votes 23: ↑21 and ↓2+19
Comments10

25 твитов об SSL-сертификатах

Reading time5 min
Views12K

SSL сертификаты. Для чего они нужны, какие бывают, от чего защищают, кто использует, как долго действуют, есть ли гарантия? Разберем основные вопросы – кратко, в режиме твиттера – не более 280 символов на ответ.

Читать далее
Total votes 20: ↑14 and ↓6+8
Comments32

Реверс-инжиниринг лазерного сканера Leuze RS4

Reading time24 min
Views29K

Ранее я уже рассказывал о реверс-инжиниринге лазерного датчика расстояния. В этот раз речь пойдет о более сложном устройстве — лазерном сканере Leuze RS4. Как и датчик, этот сканер попал ко мне в сломанном состоянии, так что пришлось заняться восстановлением его работы, и в процессе улучшить некоторые его характеристики, и, фактически, переделать его в другое устройство.
Читать дальше →
Total votes 67: ↑67 and ↓0+67
Comments24

Тахометр или спидометр: Поток мыслей про измерение частоты в Arduino

Reading time10 min
Views43K

Предистория


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


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


Картинка для привлечения внимания

Читать дальше →
Total votes 16: ↑15 and ↓1+14
Comments27

Начинающим на Arduino: Упаковываем конечный автомат в отдельный класс и библиотеку

Reading time9 min
Views33K

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


Папки с библиотеками

Читать дальше →
Total votes 15: ↑9 and ↓6+3
Comments59

Обработка нажатий кнопок для Arduino. Скрестить ООП и МКА. Часть 1

Reading time5 min
Views30K
Пару месяцев назад я купил не сильно новый мотоцикл KTM 250EXC, открутил ручку газа в горку, моту пульнул в небо, а сам сел на задницу и что-то там сломал в спине. В результате, на мотоцикл не сесть два месяца как минимум. К чему я это? Да. У немного подуставшего мопеда оказалась неисправная приборная панель и я собрался, пока лежу дома, сделать самодельную новую свою.

image

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

Сегодня с расскажу про кнопочки, потом про датчик зажигания, а уже потом про саму приборку, Ладно?

Рисовать на китайском экране 16х2 через i2c просто, датчики скорости и оборотов мотора сели на внешние прерывания, температура читается с аналогового порта, инфа хранится в FRAM, ну и часики тоже китайские воткнуты. Всё это крутится асинхронно примерно как SmartDelay, про который писал недавно здесь.
Читать дальше →
Total votes 14: ↑13 and ↓1+12
Comments24

Первое знакомство с Home Assistant

Reading time14 min
Views207K

Home Assistant – популярное приложение с открытым исходным кодом для организации умного дома. Первый опыт автора в работе с Home Assistant основывается на попытке интеграции в него ‘умной рисоварки‘. Автор постарается описать основные компоненты и возможности данного приложения, с которыми ему привелось пошагово познакомиться. Статья является в чем-то обзором, в чем-то руководством для желающих начать свое знакомство с Home Assistant.
Читать дальше →
Total votes 14: ↑12 and ↓2+10
Comments24
1
23 ...

Information

Rating
Does not participate
Date of birth
Registered
Activity