Рубрика «программирование микроконтроллеров» - 81

Сегодня делаем настольное приложение с графическим интерфейсом для управления роботом на Ардуине через последовательный порт. На языке JavaScript на платформе Electron с виджетами ReactJS+MaterialUI.

image

Теперь пульт управления для своего станочка с ЧПУ сделать не сложнее, чем написать сайтик.

Читать полностью »

Добрый день! Целью данной работы было расширение возможностей имеющейся платы от NAS WesternDigital MyBook Live.
Читать полностью »

LEGO MINDSTORMS Education EV3 в профориентации - 1
изображение — roboconstructor.ru

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

Робототехника, кибернетика, понимание алгоритмов – тот набор навыков, с которым, скорее всего, человеку не будут грозить настолько туманные перспективы. Конечно, скорее всего параллельно с заменой рабочей силы на роботов будет развиваться и концепция безусловного базового дохода, вот только вряд ли вы хотите для своего ребенка подобного будущего.

Способов быстро показать молодой и заинтересованной аудитории основы программирования и робототехники сейчас существует много. Все они стоят недорого, достаточно просты в освоении, дают уже через несколько часов понимание основ алгоритмов и концепций кибернетических устройств. Но в учебных классах легко столкнуться и с недостатками этих платформ – ограниченной износоустойчивостью (да и чего греха таить – «идиотоустойчивостью» тоже) макетных плат, не очень дружелюбными для детей 11-12 лет интерфейсами ПО, относительно небольшим элементом «игры».
Читать полностью »

В прошлый раз мы рассмотрели, как сделать свой мини-терминал с режимом «вопрос-ответ» на роботе с Ардуиной с библиотекой babbler_h. Сегодня посмотрим, как эту же библиотеку использовать для управления роботом из настольного приложения на JavaScript+Node.js.

Чтобы меняться данными с роботом, в клиентской части на JavaScript+Node.js используем специально написанную по такому случаю библиотеку Babbler.js. Для работы с последовательным портом Babbler.js использует стандартную библиотеку node-serialport, но строит поверх нее некоторые дополнительные удобства.

Читать полностью »

Подключаем «отечественный» LCD 16x2 MT-16S2S по SPI - 1

Тенденция импортозамещения подтолкнула протестировать символьный LCD индикатор от фирмы МЭЛТ. Мы взяли МТ-16S2S на ST7070. В некотором роде это аналог широко известного WH-1602 на 44780. А еще он поддерживает SPI-режим.

МЭЛТ кроме того собирает дисплеи и на отечественном контроллере КБ1013ВГ6 от Интеграла. У него есть отличие в в работе в 4-битном режиме от ставшего уже стандартом 44780.
Читать полностью »

В этом году Texas Instruments запустили в производство новую серию микроконтроллеров MSP432. Пока в серии только один МК MSP432P401R, который уже доступен для заказа в конторах, торгующих электронными компонентами. Также для этой серии имеется отладочная плата MSP432-Launchpad, в которую интегрирован отладчик XDS110. Основные характеристики серии:

  • 32-х разрядное ядро Cortex-M4 с FPU
  • Тактовая частота до 48 МГц
  • Заявлена совместимость по периферии с MSP430
  • Ультранизкое энергропотребление (как для MSP430)
  • Совместимость с GCC для ARM

Об остальных характеристиках можно прочитать на сайте TI. Для меня наиболее важным является заявленная совместимость с MSP430, поэтому я приобрёл MSP432-Launchapd, и решил проверить это на практике. Периферия для MSP430 значительно проще в программировании, чем STM32 и 8-битные МК, поэтому MSP432 выглядит очень заманчиво.

Под катом будет рассказано как собрать и прошить минимальный проект (светодиодоморгалку) для MSP432, используя GCC для ARM на платформе Linux. Никакая IDE не используется.

image

Читать полностью »

Знакомство и старт разработки на ПЛИС iCE40 от Lattice Semiconductor - 1 Здравствуйте! Сегодня мы познакомимся с новым семейством дешевых и малопотребляющих ПЛИС от Lattice Semiconductor семейств iCE40LP/HX/LM, научимся работать с фирменным компилятором iCEcube2 и редактором кода Sublime Text 3, а также программировать чип на отладочной плате Lattice iCEstick с помощью прошивки, написанной на SystemVerilog.

Все будет сопровождаться подробными инструкциями и скриншотами.
Читать полностью »

Постановка задачи

Это вторая, итоговая статья. Напоминаю цель: есть двигатель постоянного тока. Задача — разработать, собрать и протестировать устройство, позволяющиее реализовать контур управления с заданием тока применительно к этому двигателю. Желаемое время переходного процесса на застопоренном двигателе (без противо-ЭДС) — не более 10мс.

Текст разбит на две статьи:

Напоминаю, как выглядит макет управляющего железа:

Делаем контур управления электродвигателем с заданием тока - 1
Читать полностью »

Как мы среду Arduino на 8051 натягивали, или ОС на один процесс - 1

Летом 2016 мы выпустили в широкую продажу нашу новую плату для разработки Z-Wave устройств — Z-Uno. Это абсолютно новаторское устройство, аналогов которому в мире Z-Wave пока нет. Учитывая большое количество программерских фишек, я решил поделиться некоторыми решениями, используемыми в Z-Uno.

Если кратко, то мы сделали упрощенную кооперативную ОС на 1 процесс на микроконтроллере семейства 8051 с API подобным Arduino.
Читать полностью »

Переслать роботу на Ардуине несколько байт через вайфай, блютус, последовательный порт или любой другой канал связи в виде команды, а потом принять несколько байт в качестве ответа труда не составляет: достаточно скачать скетч с примером обмена данными «здравствуй мир» и вставить в него несколько строк своего кода, который будет выполнять желаемые действия.

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

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

Исходная задача: упростить процесс создания прошивки для роботов, которые будут работать в режиме «вопрос-ответ». Главный скетч должен содержать полезный код (что, собственно, должен делать робот) и минимальное количество вспомогательных конструкций. Все вспомогательные транспортно-протокольные блоки окуклить в библиотеку и вынести за пределы внимания инженера.

В качестве побочного эффекта получилась своеобразная командная строка, работающая внутри Ардуины, если подключиться к ней через монитор последовательного порта и отправлять команды вручную:

image
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js