
Программирование микроконтроллеров *
Учимся программировать микроконтроллеры
Самодельный сканирующий лазерный дальномер
В этой статье я расскажу о том, как я делал самодельный лазерный сканирующий дальномер, использующий триангуляционный принцип измерения расстояния, и об опыте его использования на роботе.
Модуль универсального контроллера для интернета вещей. Основы программирования

Открытый проект модуля IoT K66BLEZv1 продолжает развиваться.
Здесь рассмотрим следующие вопросы важные на первом этапе освоения:
— технология быстрого создания приложений для модуля в среде IAR Embedded Workbench без сложных SDK
— время активизации программы от момента подачи питания
— максимальная скорость программного переключения состояния пинов
— пример управления светодиодом по прерываниям на основе автомата состояний
Разжёвываем линейно-квадратичный регулятор для управления перевёрнутым маятником
Преамбула
Продолжаю подробное описание использования линейно-квадратичного регулятора на примере управления перевёрнутым маятником. К слову сказать, термин «ЛКР» очень неточно отражает суть происходящего, как мне уже подсказали в комментариях, в русской школе теории управления этот подход называется «аналитическим конструированием оптимальных регуляторов», что существенно точнее.
Как обычно, я стараюсь разжевать математику по максимуму, чтобы материал был доступен заинтересованному школьнику. Я глубоко убеждён, что использование математики по-хорошему должно бы быть платным: любая формула должна быть использована только тогда, когда она призвана облегчить понимание, а не для того, чтобы выпендриваться.
Итак, это уже четвёртая статья, для лучшего понимания происходящего неплохо бы прочитать предыдущие три:
- 1. Методы наименьших квадратов
- 2. Линейно-квадратичный регулятор, вводная
- 3. Управление двигателем постоянного тока при помощи линейно-квадратичного регулятора
Вот фотография системы (кликабельно):

Контроль качества воздуха (со2 и температуры) в офисе и дома, своими руками
Для контроля качества воздуха в помещении знать температуру недостаточно. Даже с кондиционером часто бывает прохладно, но душно. Спертый воздух. Оказалось, на это больше всего влияет концентрация со2. Когда я узнал стоимость готовых приборов хотел от этой идеи отказаться. Но случайно увидел описание оптического датчика концентрации со2 MH-Z19.

RS232 устройство 3-в-1 для домашнего Linux сервера: Часть 2 (Серверная)
- Часть 1 (Аппаратная)
- Часть 2 (Серверная)
Для устранения некоторых недостатков сервера, собранного из бытовых комплектующих, недавно разработал устройство, которым хочу поделиться. Его подробное описание, со схемой и исходными кодами, находится в первой части.
В этой части статьи будет рассмотрено как взаимодействовать с последовательным портом из пространства ядра (kernel space) и как организовать работу с несколькими подсистемами устройства через RS232 в Linux.
Устройство включает в себя следующие подсистемы:
- Аппаратный сторожевой таймер, работающий с
watchdog
демоном; - Генератор истинно случайных чисел;
- Радиомодуль nRF24L01+ для сбора данных с автономных датчиков.
Intel System Studio for Microcontrollers 2015: подробности о разработке и отладке

Intel Edison в IoT: безопасное подключение сенсорного узла к интернету с помощью MQTT

Создание сенсорного узла для интернета вещей на Intel Edison

Windows 10 IoT Core: GPIO, Lightning и RemoteClient
Существует огромное количество примеров и статей про Windows 10 IoT Core, рассказывающих о том, как легко и удобно делать с его помощью разнообразные устройства. Однако в реальности работа с любым "железом" всегда связана со множеством не самых очевидных нюансов, знание которых приходит только с практикой. Я расскажу о некоторых особенностях работы c GPIO на Raspberry Pi2 и Windows 10 IoT Core и заодно о новой функции Remote Client, доступной в версии Insider Preview.
Intel System Studio for Microcontrollers 2015: первые шаги
Для того, чтобы загрузить на Intel Quark D1000 код (прошить устройство), достаточно mini-USB кабеля. Кроме того, то же самое соединение используется для запуска сеанса отладки GDB с OpenOCD-соединением и обменом командами с UART.

Подключение Intel Quark D1000 к компьютеру
О протоколе Modbus и Intel Edison

Отправляем данные с Arduino в Azure IoT Hub

Не так давно я стал счастливым обладателем Genuino MKR1000. Ресурс Hackster.io совместно с Microsoft проводил конкурс на лучшую идею. Пусть я не успел воплотить свою идею в жизнь и принять участие во второй части конкурса, но я могу поделиться с вами информацией, которая поможет вам осуществить свои задумки. Под катом о том, как отправить данные с Arduino в облако и как их считать, если у вас есть WiFi шилд или MKR1000.
Ближайшие события
Драйверы умного или виртуального железа
Для начала введём определение bus master: устройство, способное быть не только ведомым, но и ведущим на шине компьютера. То есть — не только отвечать на транзакции ввода-вывода, инициированные процессором, но и самостоятельно их инициировать — по собственной инициативе «ходить» в память.
История таких устройств уходит корнями в понятие DMA: ещё во времена прародителя микропроцессоров, микропроцессора 8080 (КР5080ИК80), появилось понимание, что процессор хорошо бы разгрузить от рутинной операции перетаскивания байтиков между устройствами в-в и памятью.
Примеры кода для интернета вещей: умная поливалка

Анонс! Участникам DevCon 2016 будет доступен мастер-класс от Intel

Мастер-класс посвящен практической работе с Intel Edison. Вы узнаете о технических особенностях и возможностях, вариантах использования и тестирования одноплатного компьютера Intel Edison. Будет рассмотрена установка драйверов и подключение к Edison; работа в Linux: запуск SSH и подключение к Wi-Fi. В ходе тренинга будет предложено решение практических задач в мини-группах.
Каждый участник попробует написать собственные программы по включению светодиода и подключению различных датчиков. С помощью платформы Intel Edison участники своими руками смогут собрать такие устройства как интерактивные гаджеты, элементы умного дома, а также попробуют управлять объектами через интернет.
Анатомия драйвера
Я попробую выделить некоторые общие правила и каноны в этой области. Как всегда — на примере Фантома.
Драйвер — функциональная компонента ОС, ответственная за отношения с определённым подмножеством аппаратуры компьютера.
С лёгкой руки того же Юникса драйвера делятся на блочные и байт-ориентированные. В былые времена классическими примерами были драйвер диска (операции — записать и прочитать сектор диска) и драйвер дисплея (прочитать и записать символ).
В современной реальности, конечно, всё сложнее. Драйвер — типичный инстанс-объект класса, и классов этих до фига и больше. В принципе, интерфейс драйверов пытаются как-то ужать в прокрустово ложе модели read/write, но это самообман. У драйвера сетевой карты есть метод «прочитать MAC-адрес карты» (который, конечно, можно реализовать через properties), а у драйвера USB — целая пачка USB-специфичных операций. Ещё веселее у графических драйверов — какой-нибудь bitblt( startx, starty, destx, desty, xsize, ysize, operation ) — обычное дело.
Цикл жизни драйвера, в целом, может быть описан так:
- Инициализация: драйвер получает ресурсы (но не доступ к своей аппаратуре)
- Поиск аппаратуры: драйвер получает от ядра или находит сам свои аппаратные ресурсы
- Активация — драйвер начинает работу
- Появление/пропадание устройств, если это уместно. См. тот же USB.
- Засыпание/просыпание аппаратуры, если это уместно. В контроллерах часто неиспользуемая аппаратура выключается для экономии.
- Деактивация драйвера — обслуживание запросов прекращается
- Выгрузка драйвера — освобождаются все ресурсы ядра, драйвер не существует.
(Вообще я написал в прошлом году черновик открытой спецификации интерфейса драйвера — см. репозиторий и документ.)
Мне известны три модели построения драйвера:
- Поллинг
- Прерывания
- Нити (threads)
Процессоры Intel Xeon оснастили FPGA Altera

Тут уместно упомянуть, что в прошлом году стартовал совместный проект компаний Intel и eASIC по созданию платформы Xeon + ASIC для кастомизации процессоров под конкретные предварительно оговоренные нагрузки. Воистину, больше Xeon'ов, хороших и разных!
Под катом — немного информации о FPGA Altera Arria 10.
Атрибуты устройств, или ioctl must die
В процессе, естественно, появились open/close/r/w/ioctl, и появилось ощущение, что последний неприлично, постыдно устарел. В качестве упражнения для размятия мозга я реализовал (в дополнение к обычному ioctl) некоторый альтернативный API, который бы позволил управлять свойствами устройств более гибким и удобным с точки зрения пользователя способом. Этот API, конечно, имеет свои очевидны минусы, и, в целом, эта статья — RFC, aka request For Comments.
Итак, API на уровне пользователя:
// returns name of property with sequential number nProperty, or error
errno_t listproperties( int fd, int nProperty, char *buf, int buflen );
errno_t getproperty( int fd, const char *pName, char *buf, int buflen );
errno_t setproperty( int fd, const char *pName, const char *pValue );
Правила:
- Никаких дефайнов с номерами, только имена.
- Никаких бинарных данных, только строки
Интернет вещей на реальном примере — система поиска автомобиля

Интернет вещей может быть очень разнообразным. В прошлой статье я рассказал о системе, которая, на первый взгляд, не вяжется с этим понятием: множество датчиков, объединенных проводным сетями с локальным сервером без использования интернета. Но, если вникнуть глубже, она соответствует всем критериям и служит отличным примером разнообразия интернета вещей. Сейчас я расскажу о совершенно противоположной системе. Это сеть устройств с батарейный питанием и связью через сотовые сети.
Вклад авторов
YuriPanchul 2412.9MaFrance351 2034.0smart_alex 1538.4aabzel 1456.2EasyLy 1342.6Indemsys 1288.0iliasam 1090.6vladkorotnev 750.0dlinyj 741.0VBDUnit 696.0