Обновить
224.84

Программирование микроконтроллеров *

Учимся программировать микроконтроллеры

Сначала показывать
Период
Уровень сложности

SCADA на Raspberry: миф или реальность?

Время на прочтение6 мин
Охват и читатели29K
image

Winter Is Coming. На смену программируемых логических контроллеров (ПЛК) постепенно приходят встраиваемые персональные компьютеры. Это связано с тем, что мощности компьютеров позволяют одному устройству вобрать в себя функционал программируемого контроллера, сервера, и (при наличии у устройства выхода HDMI) еще и автоматизированного рабочего места оператора. Итого: Web-сервер, OPC-часть, база данных и АРМ в едином корпусе, и всё это по стоимости одного ПЛК.

В статье рассмотрим возможность применения таких встраиваемых компьютеров в промышленности. Возьмем за основу устройство на базе Raspberry Pi, поэтапно распишем процесс установки на него открытой бесплатной Open Source SCADA-системы российской разработки — Rapid SCADA, а также разработаем в ней проект абстрактной компрессорной станции, в задачи которой будет входить удаленное управление компрессором и тремя вентилями, а также визуализация технологического процесса производства сжатого воздуха.
Читать дальше →

Управление ESP32 через BLE

Время на прочтение4 мин
Охват и читатели29K

Интро


Уже сравнительно давно микроконтроллер ESP32 стал неким стандартом для множества DIY проектов. И действительно, возможность работы с Wi-Fi, Bluetooth, встроенная энергонезависимая память, а так же большое число выводов позволяют сделать массу интересных проектов.

В этой статье, мы поговорим про управление конроллером с помощью BLE используя доступные в AppStore приложения. А в следующей, если она будет, про создание собственного приложения для iOS.
Читать дальше →

Вся правда об ОСРВ. Статья #31. Диагностика и проверка ошибок ОСРВ

Время на прочтение11 мин
Охват и читатели1.8K


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

В Nucleus SE, в целом, существуют три типа проверки ошибок:
  • средства для проверки работоспособности выбранной конфигурации, чтобы убедиться, что выбранные параметры не приводят к возникновению ошибок;
  • опционально включаемый код для проверки поведения времени выполнения;
  • определенные функции API, способствующие разработке более надежного кода.

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

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

Время на прочтение5 мин
Охват и читатели8.5K

В одной из предыдущих заметок автор пытался рассуждать о том, что при программировании микроконтроллера простой переключатель задач будет полезен в ситуациях, когда использование операционной системы реального времени — это слишком много, а всеобъемлющая петля (super loop) для всех требуемых действий — это слишком мало (Сказал, прямо как граф де Ла Фер). Точнее говоря, не слишком мало, а слишком запутано.


В последующей заметке планировалось упорядочить доступ к общим для нескольких задач ресурсам с помощью очередей на основе кольцевых буферов (FIFO) и специально отведенной для этого отдельной задачи. Разбросав по разным задачам те действия, которые не связаны друг с другом, мы вправе ожидать более обозримый код. А если при этом мы получим некоторое удобство и простоту, то почему бы и не попробовать?


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

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

Часы на ATtiny13

Время на прочтение3 мин
Охват и читатели20K
Я люблю светящиеся часы и, когда мне понадобились очередные, то быстро собрал их на макетке из ATtiny85, семи-сегментного индикатора TM1637 и часов реального времени DS1307. Однако при сборке меня не покидало ощущение, что можно обойтись более простым контроллером. И это оказалось действительно так.
Читать дальше →

Вся правда об ОСРВ. Статья #23. Очереди: введение и базовые службы

Время на прочтение13 мин
Охват и читатели1.8K


Очереди были упомянуты в одной из предыдущих статей (#5). Они предоставляют более гибкий способ передачи простых сообщений между задачами по сравнению с почтовыми ящиками.
Читать дальше →

Вся правда об ОСРВ. Статья #7. Nucleus SE: введение

Время на прочтение6 мин
Охват и читатели4.1K


В оставшейся части серии статей «Вся правда об ОСРВ» мы подробно рассмотрим, как внедряется и развертывается ОСРВ. Для этого мы рассмотрим конкретную ОСРВ: Nucleus SE. Даже если вы не собираетесь использовать конкретно это ядро или другие, связанные с ним, ядра, понимание того, как оно работает, даст хороший фундамент для работы с любыми ОСРВ.
Читать дальше →

USB3Vision и GenICam. Взгляд изнутри. I

Время на прочтение4 мин
Охват и читатели6.6K

Введение


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

Автоматный практикум — 1. Пример «Дисплей», разработка ОА и УА

Время на прочтение28 мин
Охват и читатели6.9K
Тесты в предыдущей статье убедительно показали высокую эффективность «автоматной» реализации примера «Дисплей» по сравнению с условно названной «неавтоматной» версией. Вкратце итог: обе реализации автоматные, но разница в эффективности многократна и глубинная причина видится в том, что вариант А1 («автоматный») изначально проектировался как автомат, а вариант А2 («неавтоматный») нет. Не столько автоматная реализация, сколько автоматное проектирование является основой высокой эффективности. Для простых алгоритмов автоматные реализации получаются сами собой. Есть смысл говорить о том, что автоматное программирование, это не столько реализация программы в виде конечного автомата, сколько автоматное проектирование, фундаментом которого является конструктивная декомпозиция. Я несколько раз касался темы автоматного проектирования и конструктивной декомпозиции, но чтобы раскрыть эту тему нужны практические примеры. В этой и следующих нескольких статьях я проведу практикум, покажу процесс автоматного проектирования, пытаясь по возможности приводить ход рассуждений присущих автоматному проектированию.
Читать дальше →

Обзор одной российской RTOS, часть 7. Средства обмена данными между задачами

Время на прочтение13 мин
Охват и читатели4.8K
Кроме взаимодействия на уровне взаимной блокировки, задачи должны взаимодействовать между собой и на уровне данных. При этом отличительная особенность ОСРВ МАКС — возможность обмена данными не только в пределах одного контроллера,


Рис. 1. Пример взаимодействия задач в пределах одного контроллера

но и между контроллерами, полностью скрывая транспортный уровень.


Рис. 2. Пример взаимодействия задач между контроллерами

При этом разные контроллеры эквивалентны разным процессам, так как их память полностью изолирована. В версии ОС, опубликованной на нашем сайте, физическим каналом между контроллерами могут быть проводные интерфейсы SPI или UART, а также — беспроводной интерфейс через радиомодули RF24.
Читать дальше →

Первые шаги с STM32 и компилятором mikroC для ARM архитектуры — Часть 2, начало…

Время на прочтение8 мин
Охват и читатели13K

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


В прошлой части я рассказывал как реализовать опрос состояния порта МК, например для опроса подключенной к ней кнопки. Вообще порт в STM32 МК устроен весьма сложно. Вот схема GPIO порта из мануала:
image

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

О выравнивании памяти на ARM процессорах на простом примере

Время на прочтение1 мин
Охват и читатели14K
Допустим у нас есть функция, которая принимает в себя указатель. Мы знаем, что в указателе лежит нуль-терминальная строка, а за ней 4-байтное целое. Задача — вывести в консоль строку и целое. Решить можно вот так:

void foo(void* data_ptr)
{
  //Ставим указатель на строку на начало данных
  char* str = (char*)data_ptr;
  //А указатель на целое смещаем на длину строки и еще один байт
  int* value = (int*)(str+strlen(str)+1);
  //и выводим содержимое указателей
  printf("%s %d", str, *value);
}

Довольно тривиальная задача, не так ли? Проверяем на компе (x86), все ОК. Загружаем на борду с ARM. И, не успев выстрелить себе в ногу, наступаем на грабли. В зависимости от содержания строки, целое значение выводится то нормальным, то кривым. Поверяем указатели, проверяем память, на которые они указывают. Все в норме.
Читать дальше →

DLMS/COSEM – открытый протокол для обмена данными с приборами учета. Часть 2: интерфейсные классы, модель прибора учета

Время на прочтение8 мин
Охват и читатели32K

В этой части серии публикаций, посвящённых протоколу DLMS/COSEM, дается определение интерфейсным классам и их экземплярам, рассматриваются способы обращения к объектам COSEM, приводится структура описания интерфейсных классов и диаграмма классов COSEM. Описывается модель прибора учета, рассказывается о роли логического устройства управления, а также приводится краткое описания системы идентификации объектов (OBIS).
Читать дальше →

Ближайшие события

Модуль универсального контроллера для интернета вещей. Тестирование FatFs

Время на прочтение4 мин
Охват и читатели11K


В этой статье я продемонстрирую проекты тестирования библиотеки FatFs портированой на модуль K66BLEZ1. Библиотека с открытым исходным кодом FatFs хорошо известна программистам микроконтроллеров и реализует поддержку файловой системы FAT32 на SD и MMC картах. Незаменимая вещь при разработке логгеров, программируемых логических контроллеров, звукозаписывающих устройств, треккеров и проч. Но иногда она может стать узким местом в системах реального времени.

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

Управление офисным освещением по Wi-Fi. Часть 2: Сенсорная технология Q-touch

Время на прочтение12 мин
Охват и читатели7.6K
Продолжаем наш амбициозный «Hello, World!» на отладочной плате Atmel SAMD21 Xplained, затеянный в первой части, в которой была описана работа с Wi-Fi модулем WINC1500.
Сегодня будет продемонстрирован пример обработки сенсорных кнопок и слайдера при помощи библиотеки Q-touch.

В третьей части цикла, как и было обещано, данные с этих сенсоров будут «запаковываться» в посылку ModBus TCP и передаваться по Wi-Fi в систему управления освещением в нашем офисе.
Читать дальше →

Использование ASF и Atmel Start в IAR

Время на прочтение3 мин
Охват и читатели6.9K


ASF и IAR


Библиотека для продуктов Atmel ASF имеет две версии: встроенную в Atmel Studio и так называемую stand-alone. Stand-alone версия может использоваться, например, в IAR. Так как сам по себе IAR несколько аскетичен с точки зрения различных фишек типа автозаполнения, то использование ASF как внешней библиотекой, не так интерактивно и удобно, как в Atmel Studio, но тем не менее, можно один раз все настроить и использовать новинку Atmel Start — WEB конфигуратор кода для удобства и ускорения разработки.
Читать дальше →

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

Время на прочтение2 мин
Охват и читатели21K
Ни для кого не секрет что одним из основных интересов вывода информации у приборов является дисплей. В основном на МК подключат символьные дисплеи на основе hd44780. Редким исключением составляется графические дисплеи графические дисплеи WG12864A разрешением 128*64. Но что делать если нужно больше.


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

Свой task switch logging за один день

Время на прочтение3 мин
Охват и читатели2.1K
Еще на заре своей карьеры мне довелось поработать с RTOS VxWorks и средой разработки Tornado. Впечатления остались крайне положительные (тем более что сейчас есть с чем сравнивать), но пост не об этом. Составной частью системы тогда была система сбора и визуализации информации о переключении задач в реальном времени. Сразу скажу, что вещь крайне полезная, не зря ведь говорят, что лучше один раз увидеть. Скажем, если у вас в системе есть хотя бы два десятка задач, то с уверенностью в 99% можно сказать, что вы сильно удивитесь, когда увидите визуализацию переключения задач — она будет совсем не такой, какой вы ее себе представляли.

О пользе же, например, того, что в случае неожиданного сбоя, зависания или перезагрузки вы сможете увидеть последние мгновения жизни системы, даже и говорить не приходится!

Но что же делать, если приходится работать с RTOS и окружением, где такого удобного механизма нет? Конечно же, сделать его самому!

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

Практическая реализация энкодера с использованием датчика HOA0902 и STM32

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели8.9K

Привет, Хабр!

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

В данной статье будут рассмотрены:

— Принципы работы HOA092-11;
— Схема электрическая принципиальная энкодера;
— Программная реализация (расчет пройденного пути, скорости и направления движения, а также вывод информации на дисплей);
— Тестирование системы, будет рассмотрено (пройденный путь, скорость, направление движения).

Читать далее

VCP STlink-v3minie быстро и просто

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели3.1K

Про настройку отладку ваших stm микроконтроллеров с помощью программатора-отладчика STLINK-V3MINIE через встроенную функцию VCP.

В статье описана настройка инструментов на ОС Windows и ОС Linux, также приведен пример кода для вывода данных себе в терминал на ПК.

Читать в продолжение

Вклад авторов