Как стать автором
Поиск
Написать публикацию
Обновить
157.4

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

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

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

Intel Edison + веб-камера = сканер штрих-кодов

Время на прочтение2 мин
Количество просмотров10K
Все уже привыкли к тому, что любой мобильник умеет сканировать штрих-коды. А как насчёт Intel Edison? На самом деле, всё довольно просто: достаточно раздобыть веб-камеру и подходящий софт.

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

Самодельный сканирующий лазерный дальномер

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

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

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

Модуль универсального контроллера для интернета вещей. Основы программирования

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


Открытый проект модуля IoT K66BLEZv1 продолжает развиваться.
Здесь рассмотрим следующие вопросы важные на первом этапе освоения:
— технология быстрого создания приложений для модуля в среде IAR Embedded Workbench без сложных SDK
— время активизации программы от момента подачи питания
— максимальная скорость программного переключения состояния пинов
— пример управления светодиодом по прерываниям на основе автомата состояний

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

Разжёвываем линейно-квадратичный регулятор для управления перевёрнутым маятником

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

Преамбула


Продолжаю подробное описание использования линейно-квадратичного регулятора на примере управления перевёрнутым маятником. К слову сказать, термин «ЛКР» очень неточно отражает суть происходящего, как мне уже подсказали в комментариях, в русской школе теории управления этот подход называется «аналитическим конструированием оптимальных регуляторов», что существенно точнее.

Как обычно, я стараюсь разжевать математику по максимуму, чтобы материал был доступен заинтересованному школьнику. Я глубоко убеждён, что использование математики по-хорошему должно бы быть платным: любая формула должна быть использована только тогда, когда она призвана облегчить понимание, а не для того, чтобы выпендриваться.

Итак, это уже четвёртая статья, для лучшего понимания происходящего неплохо бы прочитать предыдущие три:


Вот фотография системы (кликабельно):


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

Контроль качества воздуха (со2 и температуры) в офисе и дома, своими руками

Время на прочтение3 мин
Количество просмотров45K
Все началось с того что я работаю в офисе, где как водится нет нормальной вентиляции. Зато есть много народу, кому-то все время жарко, другим постоянно дует.

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

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

RS232 устройство 3-в-1 для домашнего Linux сервера: Часть 2 (Серверная)

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

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


В этой части статьи будет рассмотрено как взаимодействовать с последовательным портом из пространства ядра (kernel space) и как организовать работу с несколькими подсистемами устройства через RS232 в Linux.


Устройство включает в себя следующие подсистемы:


  • Аппаратный сторожевой таймер, работающий с watchdog демоном;
  • Генератор истинно случайных чисел;
  • Радиомодуль nRF24L01+ для сбора данных с автономных датчиков.

WRN устройство

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

Intel System Studio for Microcontrollers 2015: подробности о разработке и отладке

Время на прочтение7 мин
Количество просмотров6.6K
Мы уже рассказывали о том, как начать работу в Intel System Studio for Microcontrollers 2015 (ISSM) и создавать программы для Intel Quark D1000. Сегодня поговорим о том, как модифицировать в IDE Eclipse простую прошивку из примеров к ISSM. Так же рассмотрим работу с эталонной платой для проведения технических испытаний D1000 (Customer Reference Board, CRB). А именно, пользуясь JTAG-подключением, задействуем OpenOCD для того, чтобы прошить созданный нами образ в микроконтроллер и отладить код.

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

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

Время на прочтение21 мин
Количество просмотров10K
Мы уже писали о MQTT-брокере и о том, как собрать сенсорный узел на базе Intel Edison. Устройство содержит кнопку, датчики движения, температуры и освещённости. Сегодня подключим всё это к Mosquitto MQTT-серверу, наладим двустороннюю связь, сделаем нашу конструкцию полноценной частью интернета вещей.


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

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

Время на прочтение8 мин
Количество просмотров7.6K
В этом материале мы расскажем о том, как сконструировать сенсорный узел на базе Intel Edison. Займёмся сборкой компонентов, программированием и тестированием. Правда, автономное устройство в век интернета вещей – это не так уж и интересно. Поэтому после того, как все датчики и алгоритмы заработают, мы подключим то, что у нас получится, к Сети. Этому, кстати, будет посвящён наш следующий материал. А сейчас предлагаем заняться железом и кодом.


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

Windows 10 IoT Core: GPIO, Lightning и RemoteClient

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

enter image description here


Существует огромное количество примеров и статей про Windows 10 IoT Core, рассказывающих о том, как легко и удобно делать с его помощью разнообразные устройства. Однако в реальности работа с любым "железом" всегда связана со множеством не самых очевидных нюансов, знание которых приходит только с практикой. Я расскажу о некоторых особенностях работы c GPIO на Raspberry Pi2 и Windows 10 IoT Core и заодно о новой функции Remote Client, доступной в версии Insider Preview.

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

Intel System Studio for Microcontrollers 2015: первые шаги

Время на прочтение4 мин
Количество просмотров13K
Представляем вашему вниманию общий обзор Intel System Studio for Microcontrollers 2015. Мы поговорим о том, как использовать этот пакет приложений в деле разработки и отладки приложений для микроконтроллера Intel Quark D1000 на платформе Linux. В частности, рассмотрим организацию взаимодействия компьютера разработчика и микроконтроллера.
Для того, чтобы загрузить на Intel Quark D1000 код (прошить устройство), достаточно mini-USB кабеля. Кроме того, то же самое соединение используется для запуска сеанса отладки GDB с OpenOCD-соединением и обменом командами с UART.


Подключение Intel Quark D1000 к компьютеру
Читать дальше →

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

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

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

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

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


Не так давно я стал счастливым обладателем Genuino MKR1000. Ресурс Hackster.io совместно с Microsoft проводил конкурс на лучшую идею. Пусть я не успел воплотить свою идею в жизнь и принять участие во второй части конкурса, но я могу поделиться с вами информацией, которая поможет вам осуществить свои задумки. Под катом о том, как отправить данные с Arduino в облако и как их считать, если у вас есть WiFi шилд или MKR1000.
Читать дальше →

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

Драйверы умного или виртуального железа

Время на прочтение5 мин
Количество просмотров11K
Первая статья про драйверы была уж совсем вводной, и мне подумалось, что её нельзя не дополнить рассказом про то, как устроены драйверы более современных устройств.

Для начала введём определение bus master: устройство, способное быть не только ведомым, но и ведущим на шине компьютера. То есть — не только отвечать на транзакции ввода-вывода, инициированные процессором, но и самостоятельно их инициировать — по собственной инициативе «ходить» в память.

История таких устройств уходит корнями в понятие DMA: ещё во времена прародителя микропроцессоров, микропроцессора 8080 (КР5080ИК80), появилось понимание, что процессор хорошо бы разгрузить от рутинной операции перетаскивания байтиков между устройствами в-в и памятью.
Читать дальше →

Примеры кода для интернета вещей: умная поливалка

Время на прочтение7 мин
Количество просмотров22K
Недавно мы опубликовали учебные примеры кода для различных проектов, которые формируют интернет вещей. Сегодня расскажем об автоматической системе полива. Построена она с использованием Intel IoT Developer Kit, Intel Edison, в её работе применяются облачные платформы, различные API и другие технологии.


Вот, что вы узнаете, освоив это руководство:

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

Время на прочтение3 мин
Количество просмотров4.2K
Уважаемые читатели, нам приятно сообщить, что участники DevCon 2016 смогут приять участие в особенном мастер-классе компании Intel на тему Интернета Вещей с платами Intel Edison.

Мастер-класс посвящен практической работе с Intel Edison. Вы узнаете о технических особенностях и возможностях, вариантах использования и тестирования одноплатного компьютера Intel Edison. Будет рассмотрена установка драйверов и подключение к Edison; работа в Linux: запуск SSH и подключение к Wi-Fi. В ходе тренинга будет предложено решение практических задач в мини-группах.

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

Анатомия драйвера

Время на прочтение5 мин
Количество просмотров26K
Опять вернёмся в традиционную область разработки операционных систем (и приложений для микроконтроллеров) — написание драйверов.

Я попробую выделить некоторые общие правила и каноны в этой области. Как всегда — на примере Фантома.

Драйвер — функциональная компонента ОС, ответственная за отношения с определённым подмножеством аппаратуры компьютера.

С лёгкой руки того же Юникса драйвера делятся на блочные и байт-ориентированные. В былые времена классическими примерами были драйвер диска (операции — записать и прочитать сектор диска) и драйвер дисплея (прочитать и записать символ).

В современной реальности, конечно, всё сложнее. Драйвер — типичный инстанс-объект класса, и классов этих до фига и больше. В принципе, интерфейс драйверов пытаются как-то ужать в прокрустово ложе модели read/write, но это самообман. У драйвера сетевой карты есть метод «прочитать MAC-адрес карты» (который, конечно, можно реализовать через properties), а у драйвера USB — целая пачка USB-специфичных операций. Ещё веселее у графических драйверов — какой-нибудь bitblt( startx, starty, destx, desty, xsize, ysize, operation ) — обычное дело.

Цикл жизни драйвера, в целом, может быть описан так:

  • Инициализация: драйвер получает ресурсы (но не доступ к своей аппаратуре)
  • Поиск аппаратуры: драйвер получает от ядра или находит сам свои аппаратные ресурсы
  • Активация — драйвер начинает работу
  • Появление/пропадание устройств, если это уместно. См. тот же USB.
  • Засыпание/просыпание аппаратуры, если это уместно. В контроллерах часто неиспользуемая аппаратура выключается для экономии.
  • Деактивация драйвера — обслуживание запросов прекращается
  • Выгрузка драйвера — освобождаются все ресурсы ядра, драйвер не существует.


(Вообще я написал в прошлом году черновик открытой спецификации интерфейса драйвера — см. репозиторий и документ.)

Мне известны три модели построения драйвера:

  • Поллинг
  • Прерывания
  • Нити (threads)

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

Процессоры Intel Xeon оснастили FPGA Altera

Время на прочтение2 мин
Количество просмотров26K
Intel начинает поставки двухчиповой платформы для разработки, состоящей из процессора Xeon E5-2600 v4 (Broadwell) и FPGA Altera Arria 10 — такую информацию озвучила вице-президент Intel Diane Bryant в своей речи на конференции IDF 2016 в Китае. Предполагается, что с помощью подобного гибрида удастся получить 70% прирост производительности при том же энергопотреблении и частоте. Плоды сотрудничества Intel и Altera, которое продолжается далеко не первый год, мы уже видели в лице прототипа платформы 5G — там скрещивались FPGA и Intel Core. И вот теперь — новый дуэт. В планах на будущее — полная интеграция обоих компонентов на одном кристалле. Первыми потребителями гибрида станут крупнейшие облачные сервисы и дата-центры. По прогнозам Intel, к 2020 году до 30% серверов в дата-центрах будут иметь процессоры с FPGA.

Тут уместно упомянуть, что в прошлом году стартовал совместный проект компаний Intel и eASIC по созданию платформы Xeon + ASIC для кастомизации процессоров под конкретные предварительно оговоренные нагрузки. Воистину, больше Xeon'ов, хороших и разных!

Под катом — немного информации о FPGA Altera Arria 10.
Читать дальше →

Атрибуты устройств, или ioctl must die

Время на прочтение3 мин
Количество просмотров14K
В процессе работы над ОС Фантом, которая вообще не Юникс никаким местом, мне, тем не менее, захотелось сделать в нём Unix-compatible подсистему. Не то, чтобы прямо POSIX, но что-то достаточно близкое. Отчасти из любопытства, отчасти для удобства, отчасти как ещё один migration path. (Ну и вообще было интересно, насколько трудно написать простенький Юникс «из головы».) В качестве цели номер 1 была поставлена задача запустить quake 1 for Unix, которая и была достигнута.

В процессе, естественно, появились 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 );


Правила:

  1. Никаких дефайнов с номерами, только имена.
  2. Никаких бинарных данных, только строки

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

Интернет вещей на реальном примере — система поиска автомобиля

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


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

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

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