Pull to refresh
142
0

Сижу по вечерам с паяльником

Send message

Префиксы is, has, can, should… в нейминге переменных и функций

Level of difficultyEasy
Reading time5 min
Views19K

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

Читать далее
Total votes 68: ↑64 and ↓4+69
Comments56

Все мои детальки: переход на отечественные микроконтроллеры

Level of difficultyMedium
Reading time7 min
Views26K

 Привет, читатель!

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

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

Читать далее
Total votes 68: ↑62 and ↓6+79
Comments96

Как я разработал квадрокоптер на ESP32 с нуля (ушло 4 года)

Level of difficultyMedium
Reading time12 min
Views42K

При сборке квадрокоптеров и других БПЛА обычно используют готовую плату полетного контроллера, содержащую все необходимые датчики и периферию, и готовую полетную прошивку, например, Betaflight, ArduPilot или PX4. Полетный контроллер управляет моторами квадрокоптера и обеспечивает стабильный полет.

Занимаясь БПЛА с 2016 года, я решил разобраться в устройстве полетных контроллеров максимально глубоко и создать квадрокоптер с нуля, не используя готовый полетный контроллер и готовый софт. Спустя долгое время разработки мне удалось это сделать. Я написал прошивку с максимально простым исходным кодом и выложил ее на GitHub. В этой статье я расскажу о теории и практике разработки полетного софта для квадрокоптера и проиллюстрирую это на примере своего дрона на базе микроконтроллера ESP32, который можно увидеть на картинке выше.

Читать далее
Total votes 306: ↑306 and ↓0+365
Comments126

Мобильные экранчики в ваших проектах: большой и понятный о гайд о различных дисплеях

Level of difficultyMedium
Reading time18 min
Views24K
image


Пожалуй, немалая часть моих читателей так или иначе интересуется DIY-тематикой. И в различных самодельных девайсах порой есть необходимость вывести какую-либо информацию на дисплей, будь это текст, графики или даже какая-то анимация! Для разных задач существуют самые разные дисплеи и в сегодняшнем материале я хотел бы систематизировать и собрать подробнейший гайд об использовании дисплеев с нерабочих мобильных телефонов: какие бывают протоколы и шины данных, как читать схемы устройств и определять контроллеры дисплеев, какие дисплеи стандартизированы, а какие придётся реверсить самому и как быть с подсветкой. В практической части статьи мы подключим дисплей по протоколу MIPI DBI к RP2040 с использованием DMA. Интересно? Тогда добро пожаловать под кат!
Читать дальше →
Total votes 88: ↑86 and ↓2+106
Comments116

Пора улучшать согласование

Level of difficultyMedium
Reading time8 min
Views11K


Я работаю в фирме, которая разрабатывает устройства для умных домов на частотах 869, 915 МГц. Это маломощные устройства с антеннами из провода, PCB-антеннами и внешними штыревыми антеннами. Для работы в квартире антенна должна быть всенаправленной. Заранее не известно, где будет расположено устройство и как сориентировано. Некоторые ключевые устройства мы относили к сторонним специалистам для настройки антенны, потом использовали эти согласования в других устройствах. Какое-то время этого хватало. У нас большой парк устройств, плюс одни и те же устройства работают в разных корпусах. Это требует настройки антенны для каждого типа продукта. Обращаться каждый раз к специалистам слишком дорого, поэтому несколько лет пытаемся научиться делать сами. Далее расскажу о процессе настройки антенны для одного из наших устройств с антенной из провода (ground plane).
Читать дальше →
Total votes 55: ↑54 and ↓1+73
Comments14

SDR приемник GPS на микроконтроллере

Level of difficultyMedium
Reading time28 min
Views21K

В этой статье я расскажу о том, как я делал самодельный SDR GPS приемник на микроконтроллере. SDR в данном случае означает, что приемник не содержит готовых GPS-модулей или специализированных микросхем для обработки GPS сигналов - вся обработка "сырых" данных выполняется в реальном времени на микроконтроллере (STM32 или ESP32).
Зачем я это сделал — просто Just for fun, плюс - получение опыта.

Читать далее
Total votes 128: ↑127 and ↓1+160
Comments273

Модельно-ориентированное проектирование. Построение активного выпрямителя (на основе математической модели)

Reading time6 min
Views10K

Продолжение цикла статей про модельно ориентированное проектирование. В предыдущих сериях:


В этой серии, авторы Ю. Н. Калачев и А.Г. Александров, представляют математическую модель активного выпрямителя в среде структурного моделирования.


Читать дальше →
Total votes 7: ↑7 and ↓0+7
Comments8

Как создать простой LoRa мессенджер: обмен зашифрованными текстовыми сообщениями между устройствами без интернета

Level of difficultyMedium
Reading time30 min
Views13K

В современном мире IoT, когда связь в отдаленных районах становится все более актуальной, технология LoRa (Long Range) предоставляет нам возможность создать дальнобойный, надежный, энергоэффективный и зашифрованный канал связи без необходимости иметь какую-либо сетевую инфраструктуру. 

В этой статье мы рассмотрим, как создать простой LoRa мессенджер с использованием своего протокола обмена и готовых модулей, работающих в режиме P2P (peer-to-peer) – не идеального, но интересного решения для обмена текстовыми сообщениями в условиях ограниченной инфраструктуры.

Для упрощения и автоматизации процесса обмена сообщениями мы воспользуемся Node-RED. Этот инструмент, помимо реализации основной логики обмена сообщениями, также предоставит графический интерфейс для мессенджера, что сделает процесс более доступным и интуитивно понятным. 

Выглядеть будет просто, потому что воспользуемся всем готовым :)

Свистать всех наверх!
Total votes 25: ↑23 and ↓2+27
Comments36

Bluetooth Low Energy: подробный гайд для начинающих

Reading time16 min
Views70K

Создание кастомного сервиса и тем более клиента Bluetooth Low Energy – прогулка по граблям с завязанными глазами. По крайне мере так было для меня 4 года назад, когда я только начинал работать с BLE-устройствами. Сейчас почти каждый мой проект предусматривает использование этого протокола, поэтому в свое время пришлось в нем долго и мучительно разбираться. 

Разложить все по полкам помогла книга Мохаммада Афане "Intro to Bluetooth Low Energy" и серия постов на Novel Bits. Лично для меня эта книга стала настоящим открытием. Изначально я делал ее перевод на русский для своих коллег, не имеющим опыт работы с BLE. С согласия автора (огромное ему спасибо) решил опубликовать свою работу здесь. Надеюсь, перевод окажется полезным.

Это первая часть перевода (всего их будет 5), которая рассказывает, что такое BLE, ее возможности и отличия от Bluetooth Classic и описывает архитектуру протокола.

Читать далее
Total votes 29: ↑29 and ↓0+29
Comments19

Заметка про сохранение структур во flash памяти на STM32

Level of difficultyEasy
Reading time5 min
Views7.4K

При разработке проекта для микроконтроллера часто возникает необходимость сохранения данных во Flash-память перед выключением устройства. Глобальные структуры содержат информацию о настройках различной периферии, данные с внешних датчиков и прочее. В этом посте я хочу показать простенький механизм записи структуры во FLASH память микроконтроллера STM32, которым я сам часто пользуюсь в своих проектах.

Читать далее
Total votes 16: ↑14 and ↓2+19
Comments18

Малоизвестные и интересные особенности C и C++

Level of difficultyMedium
Reading time43 min
Views46K

В C и C++ есть особенности, о которых вас вряд ли спросят на собеседовании (вернее, не спросили бы до этого момента). Почему не спросят? Потому что такие аспекты имеют мало практического значения в повседневной работе или попросту малоизвестны.

Целью статьи является не освещение какой-то конкретной особенности языка или подготовка к собеседованиям, и уж тем более нет цели рассказать все потайные смыслы языка, т. к. для этого не хватит одной статьи и даже книги. Напротив, статья нужна для того, чтобы показать малоизвестные и странные решения, принятые в языках C и C++. Своего рода солянка из фактов. Вопрос “что делать с этими знаниями?” я оставляю читателю.

Если вы, как и я, любите и интересуетесь C/C++, и эти языки являются неотъемлемой частью вашей жизни, в том числе и его углубленного изучения, то эта статья для вас. По большей части я надеюсь, что эта статья сможет развлечь и заставить поработать головой. И если получится, рассказать что-то, чего вы, возможно, еще не знали.

Читать далее
Total votes 127: ↑126 and ↓1+159
Comments61

Выполняем сторонние программы на микроконтроллерах с Гарвардской архитектурой: как загружать программы без знания ABI?

Level of difficultyMedium
Reading time10 min
Views15K
image


Зачастую в процессе разработки собственных устройств или моддинга уже существующих, встаёт задача выполнения стороннего кода: будь то ваши собственные программы с SD-флэшек, или программы, написанные другими пользователями с помощью SDK для вашего устройства. Тема компиляторов и кодогенерации достаточно сложная: чтобы просто загрузить ELF или EXE (PE) программу, вам нужно досконально разбираться в особенностях вашей архитектуры: что такое ABI, релокации, GOT, отличие -fPIE от -fPIC, как писать скрипты для ld и т. п. Недавно я копал SDK для первых версий Symbian и основываясь на решениях из этой ОС понял, каким образом можно сделать крайне «дешевую» загрузку любого нативного кода практически на любом микроконтроллере, совершенно не вникая в особенности кодогенерации под неё! Сегодня мы с вами: узнаем, что происходит в процессе загрузки программы ядром Linux, рассмотрим концепцию, предложенную Symbian Foundation и реализуем её на практике для относительно малоизвестной архитектуры — XTensa (хотя она используется в ESP32, детали её реализации «под капотом» для многих остаются загадкой). Интересно? Тогда добро пожаловать под кат!
Читать дальше →
Total votes 47: ↑46 and ↓1+61
Comments37

Настройка многоконтурных систем управления

Level of difficultyMedium
Reading time4 min
Views3.2K
PID регулятор MATLAB может быть настроен функцией pidTuner(). Каждый PID регулятор библиотеки Simulink также содержит механизм настройки параметров. При использовании SISO (Один Вход Один Выход) регуляторов многоконтурное управление рекомендуют выполнять последовательно: переходя от внутреннего контура (местная обратная связь) к внешнему. Но как быть с настройкой многоконтурных систем управления с параллельными или с перекрещивающимися (перекрестными) связями, например, как показано на Рисунок 1 [1], где требуется одновременная настройка блоков?

image

Рисунок 1. Многоконтурная Simulink модель.
Для настройки многоконтурных Simulink моделей в MATLAB имеется приложение “Control System Tuner” image. В этой работе рассматриваются особенности этого настройщика на примере построения двухконтурной системы управления.
Читать дальше →
Total votes 2: ↑2 and ↓0+2
Comments2

Первые шаги с GD32F. Подготовка среды

Level of difficultyEasy
Reading time5 min
Views8.7K

Доброго времени суток! Не так давно я опубликовал небольшую статью на основе своего онлайн-урока для студентов 2020 года, по работе с GD32F103TB. Статья была выложена в ВКонтакте и как оказалось, была многим полезна. По этой причин я решил выложить её здесь с дополнительными комментариями, а так же продолжить цикл статей по данным контроллерам.

Читать далее
Total votes 16: ↑14 and ↓2+17
Comments30

Embedded Linux в двух словах. Первое

Reading time9 min
Views56K

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

Платформой послужит плата BeagleBone Black с процессором производства Техасских Инструментов AM3358 и ядром Arm Cortex-A8, и, чтобы не плодить мигающие светодиодами мануалы, основной задачей устройства будет отправка смайлов в топовый чат, широко известного в узких кругах, сайта,  в соответствии с командами от смайл-пульта. Впрочем, без мигания светодиодами тоже не обошлось.

Читать далее
Total votes 34: ↑32 and ↓2+43
Comments15

CRC — это просто (деление столбиком)

Level of difficultyEasy
Reading time9 min
Views14K

Целостность можно достичь различными способами. Например, чек-суммами. Вот как раз была такая задача - обеспечить целостность с помощью чек-сумм.

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

Но это простой путь слишком просто - так не интересно (да и лишних часов на таску надо тоже поставить). Поэтому решил усложнить себе жизнь разобраться в работе CRC!

Читать далее
Total votes 23: ↑22 and ↓1+25
Comments8

Вычитываем прошивку STM32

Reading time7 min
Views39K

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

Flash Readout Protection (RDP) ключевой компонент в защите, включенный во все линейки микроконтроллеров. Он защищает системную прошивку, сохраненную во внутренней флэш памяти от вычитывания. В зависимости от линейки, могут быть включены дополнительные механизмы, такие как Memory Protection Unit (MPU) и привилегированные / непривилегированные режимы исполнения. Вместе, эти системы призваны повысить защищенность.

Авторы статьи пришли к выводу, что серия мк STM32F0 содержит ряд уязвимостей позволяющих в лаборатории с базовым оборудованием создать установку для вычитывания прошивки. Методы могут комбинироваться для достижения наилучшего результата или позволить работать в RDP level 2.

Узнать подробнее
Total votes 52: ↑52 and ↓0+52
Comments27

Обзор современных протоколов в системах промавтоматики

Reading time10 min
Views68K
image

В прошлой публикации мы рассказали о том, как работают шины и протоколы в промышленной автоматизации. В этот раз сфокусируемся на современных рабочих решениях: посмотрим, какие протоколы используются в системах по всему миру. Рассмотрим технологии немецких компаний Beckhoff и Siemens, австрийской B&R, американской Rockwell Automation и русской Fastwel. А также изучим универсальные решения, которые не привязаны к конкретному производителю, такие как EtherCAT и CAN. 


В конце статьи будет сравнительная таблица с характеристиками протоколов EtherCAT, POWERLINK, PROFINET, EtherNet/IP и ModbusTCP.

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

Инициализация в современном C++

Reading time26 min
Views150K


Общеизвестно, что семантика инициализации — одна из наиболее сложных частей C++. Существует множество видов инициализации, описываемых разным синтаксисом, и все они взаимодействуют сложным и вызывающим вопросы способом. C++11 принес концепцию «универсальной инициализации». К сожалению, она привнесла еще более сложные правила, и в свою очередь, их перекрыли в C++14, C++17 и снова поменяют в C++20.


Под катом — видео и перевод доклада Тимура Домлера (Timur Doumler) с конференции C++ Russia. Тимур вначале подводит исторические итоги эволюции инициализации в С++, дает системный обзор текущего варианта правила инициализации, типичных проблем и сюрпризов, объясняет, как использовать все эти правила эффективно, и, наконец, рассказывает о свежих предложениях в стандарт, которые могут сделать семантику инициализации C++20 немного более удобной. Далее повествование — от его лица.

Total votes 62: ↑61 and ↓1+60
Comments125

STM32. CMSIS. Определение частоты внешнего тактирующего осциллятора

Level of difficultyEasy
Reading time5 min
Views6.4K

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

Читать далее
Total votes 30: ↑30 and ↓0+30
Comments25
1

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity