Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Миникомпьютер из роутера с OpenWRT: разрабатываем USB-видеокарту

Настройка Linux *

Добрый день, уважаемые хабровчане. В этом цикле статей мы с вами пройдем достаточно длинный, но весьма интересный путь по превращению обычного роутера в мини-компьютер с LCD-дисплеем. Для этого мы разработаем сначала USB-видеокарту на базе микроконтроллера STM32F103, потом тестовый драйвер, который позволит нам выводить на него графику, и, наконец – полноценный драйвер фреймбуффера, благодаря которому можно будет запустить настоящие графические приложения, такие как x-сервер. Заодно мы научимся включать наш код в дерево исходников OpenWRT, допиливать его ядро и делать прочие полезные вещи.
Ну а в самом конце мы получим результат, который, я надеюсь, вызовет ностальгическую слезу у многих читателей. Я постараюсь излагать материал таким образом, чтобы в конце каждого этапа мы получали осязаемый результат, не дающий угаснуть энтузиазму. Итак, начнем.
Читать дальше →
Всего голосов 286: ↑279 и ↓7 +272
Просмотры 174K
Комментарии 44

Миникомпьютер из роутера с OpenWRT: пишем USB class-driver под Linux

Настройка Linux *

Добрый день, уважаемые хабровчане. В прошлой статье мы с вами разработали простую USB-видеокарту на базе STM32F103 и китайского дисплейного модуля на контроллере ILI9325.
Проверяли мы его из юзерспейса, при помощи LibUSB. Ну что ж, пришло время нам написать свой собственный драйвер, который позволит делать все то же самое, но из-под Linux и без дополнительных библиотек. Этот драйвер мы внесем в дерево исходников OpenWRT и он поселится там наравне со всеми остальными.
Начнем.
Читать дальше →
Всего голосов 124: ↑121 и ↓3 +118
Просмотры 74K
Комментарии 32

Миникомпьютер из роутера с OpenWRT: пишем драйвер фреймбуфера

Настройка Linux *
Добрый день, уважаемые хабровчане. Вот мы и подошли к самой интересной и важной части моего цикла статей про превращение небольшого роутера в миникомпьютер — сейчас мы с вами будем разрабатывать настоящий драйвер фреймбуфера, который позволит запустить на роутере разные графические приложения. Чтобы энтузиазм не угасал, вот видео одного из таких приложений — думаю, большинство узнают это великолепный старый квест:

На случай, если вы пропустили предыдущие части — вот ссылки:
1 — Миникомпьютер из роутера с OpenWRT: разрабатываем USB-видеокарту
2 — Миникомпьютер из роутера с OpenWRT: пишем USB class-driver под Linux
Итак, приступаем к работе.
Читать дальше →
Всего голосов 139: ↑139 и ↓0 +139
Просмотры 63K
Комментарии 37

STM32 vs Arduino

Разработка под Arduino *
Приехала вчера крошечная платка на STM32F103C8.

STM32F103C8 Front STM32F103C8 Front

Это 48ногий 32битный микроконтроллер. И это отличный вариант апгрейда для тех, кто использует Arduino.
Сравним?
Всего голосов 75: ↑69 и ↓6 +63
Просмотры 119K
Комментарии 259

STM32 и LCD через I2C

DIY или Сделай сам

Для использования в дальнейшем понадобилось связать, используя I2C микроконтроллер STM32 с экраном 2004. Не найдя аналогичного решения в сети, публикую здесь. Данный рецепт подойдёт также для экранов 1602. Далее под катом. (Осторожно, картинки).
Читать дальше →
Всего голосов 31: ↑28 и ↓3 +25
Просмотры 65K
Комментарии 22

Попытка подружиться с STM32

DIY или Сделай сам


В прошлый раз я издевался над микроконтроллерами ATtiny 85, сопрягая бедные восьминогие чипы с Arduino IDE. А потом мне захотелось посмотреть, что же за чудо такое — STM32, поклонники которых смотрят на программистов AVR (не говоря уж об ардуинщиках) с некоторым неодобрением. В процессе беглого гугления выяснилось, что STM32 «для идиотов» существует — есть проект Leaf Maple, в рамках которого — две платы на STM32F103 и среда разработки, являющая собой клон Arduino IDE.

Решающим фактором стала стоимость. Китайская версия Leaf Maple Mini продается за 4$ — это немногим дороже Arduino Nano. Заказав три штуки, я принялся ждать.

Пожалуй, со ставкой на Maple я немного поторопился — проект скорее мертв, чем жив. IDE не развивается, драйверов без бубна под Windows 8 нет, библиотеки в зачаточном состоянии, полное уныние и запустение. Ради интереса я поморгал светодиодом, запустив Maple IDE под OS X (заработало из коробки), а затем стал думать, с какой стороны подходить к плате для дальнейшего изучения.

Неведома зверушка
Всего голосов 33: ↑22 и ↓11 +11
Просмотры 80K
Комментарии 25

Как надо дружиться с STM32

DIY или Сделай сам
Tutorial
Не, не, не, все не так!

Давайте дружиться с STM32 правильно!

Самая главная ошибка, сделанная автором — это неправильно выбранный инструментарий.
Читать дальше →
Всего голосов 38: ↑35 и ↓3 +32
Просмотры 138K
Комментарии 79

Отладчик за копейки: делаем ST-Link из Maple Mini

DIY или Сделай сам
Tutorial


Начав свое знакомство с STM32 с китайских клонов Leaf Maple Mini (потому что самый дешевый вариант, 4$), я столкнулся с неудобством. Поскольку на Maple IDE рассчитывать не стоит, значит, приходится работать с «голым» STM32. А раз ST-Link у меня нет, заливать программу я могу только по UART, что неудобно (и нет возможности отладки).

Но хабраюзер imwode ровно через 9 часов после моей публикации написал ответный материал, из которого я узнал прекрасное: отладчик ST-Link основан на том же микроконтроллере STM. При этом, прошивка отладчика умельцами вытащена и готова к загрузке на неродные устройства. Maple Mini подходит идеально: ничего лишнего, USB распаян, надо только несколько резисторов подключить.

Читать дальше →
Всего голосов 21: ↑20 и ↓1 +19
Просмотры 44K
Комментарии 7

ЧПУ фрезерный станок с автономным контроллером на STM32

Open source *CAD/CAM *
Поскольку я давно собрал для себя ЧПУ станок и давно и регулярно эксплуатирую его для хоббийных целей, то мой опыт, надеюсь, будет полезен, как и исходные коды контроллера.

Постарался написать только те моменты, которые лично мне показались важными.

Ссылка на исходники контроллера и настроенную оболочку Eclipse+gcc и пр. лежат там же, где ролик:


Читать дальше →
Всего голосов 59: ↑57 и ↓2 +55
Просмотры 105K
Комментарии 39

STM32 USB Mass Storage Bootloader

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

Загрузчик — это удобно и полезно, не правда ли? А если загрузчик собственной реализации, то это еще более удобно, полезно и гибко и не стабильно. Ну и конечно же, очень круто!

Так же, это прекрасная возможность углубиться и изучить особенности используемой вычислительной машины — в нашем случае микроконтроллера STM32 с ядром ARM Cortex-M3.

На самом деле, загрузчик — это проще, чем кажется на первый взгляд. В доказательство, под cut'ом соберём свой собственный USB Mass Storage Bootloader!

image
Читать дальше →
Всего голосов 37: ↑36 и ↓1 +35
Просмотры 62K
Комментарии 34

Подключение oled дисплея с контроллером SSD1306 к STM32 по I2C

Программирование микроконтроллеров *
Из песочницы
Многие, наверное, знают о таких маленьких дешёвых (меньше $3) OLED дисплеях, которые можно найти в огромном ассортименте на ebay или aliexpress. В интернете существует множество различных статей о том, как подключать эти дисплеи к Arduino и другим МК, но для STM32f10x затруднительно найти даже библиотеку. Поэтому я решил написать эту статью.

Данный дисплей имеет разрешение 128х64 пиксела и контроллер SSD1306 и подклчается к микроконтроллеру по интерфейсу I2C.
Всего голосов 30: ↑30 и ↓0 +30
Просмотры 106K
Комментарии 14

CDC+MSC USB Composite Device на STM32 HAL

Системное программирование *Программирование микроконтроллеров *
Tutorial
image

Мне хотелось бы верить, что хотя бы половина читателей может расшифровать хотя бы половину названия статьи :) Кто не в курсе — поясню. Мое устройство должно реализовывать сразу две USB функции:

  • Mass Storage Device (он же Mass Storage Class — MSC). Я хочу, чтобы мой девайс прикидывался обычной флешкой и отдавал файлики с данными, которые лежат на SD карте.
  • Другая функция это виртуальный COM порт (он же в терминологии USB называется Communication Device Class — CDC). Через этот канал у меня идет всякий дебажный вывод, который удобно смотреть обычным терминалом.

В большинстве примеров по работе с USB реализуется только один тип устройства — флешка, мышка, кастомное HID устройство или виртуальный COM порт. А вот найти вменяемое объяснение как реализовать хотя бы две функции одновременно оказалось не так просто. В своей статье я хотел бы восполнить этот пробел.

Я буду описывать создание композитного USB устройства на базе микроконтроллера STM32, но сам подход будет также применим и для других микроконтроллеров. В статье я детально разберу каждый из классов по отдельности, так и принцип построения композитных устройств. Но обо все по порядку.

Итак, поехали!
Читать дальше →
Всего голосов 60: ↑59 и ↓1 +58
Просмотры 80K
Комментарии 54

Прокачиваем USB Mass Storage Device на STM32F103 с помощью FreeRTOS и DMA

Системное программирование *Программирование микроконтроллеров *
image
Недавно я ковырялся с подключением своего устройства на микроконтроллере STM32F103 как USB Mass Storage Device, или по русски — как флешку. Вроде бы как все относительно несложно: в графическом конфигураторе STM32CubeMX в пару кликов сгенерировал код, добавил драйвер SD карты, и вуаля — все работает. Только очень медленно — 200кбайт/с при том, что пропускная способность шины USB в режиме Full Speed гораздо выше – 12 мБит/с (грубо 1.2 Мбайт/с). Более того, время старта моей флешки в операционной системе составляет около 50 секунд, что попросту некомфортно в работе. Раз уж я нырнул в эту область, то почему бы и не зачинить скорость передачи.

Вообще-то я уже писал свой драйвер для SD карты (точнее драйвер SPI), который работал через DMA и обеспечивал скорость до 500кб/с. К сожалению в контексте USB этот драйвер не заработал. Причиной всему сама модель общения USB — там все делается на прерываниях, тогда как мой драйвер был заточен под работу в обычном потоке. Да еще и припудрен примитивами синхронизации FreeRTOS.

В этой статье я сделал парочку финтов, которые позволили выжать максимум из связки USB и SD карточки подключенной к микроконтроллеру STM32F103 по SPI. Также тут будет про FreeRTOS, объекты синхронизации и общие подходы к передаче данных через DMA. Так что, думаю, статья будет полезна и тем кто только разбирается в контроллерах STM32, и инструментах вроде DMA, и подходах при работе с FreeRTOS. Код построен на основе библиотек HAL и USB Middleware из пакета STM32Cube, а также SdFat для работы с SD картой.
Читать дальше →
Всего голосов 26: ↑26 и ↓0 +26
Просмотры 39K
Комментарии 28

Программирование stm32 с самых основ

Программирование микроконтроллеров *
Из песочницы
В статье я хотел бы описать шаги на пути к написанию прошивки для микроконтроллеров stm32 без использования специальных сред разработки типа keil, eclipse и тому подобных. Я опишу подготовку прошивки с самых основ, начиная с написания загрузчика на ассемблере, скрипта для линкера и заканчивая основной программы на C. В коде на C буду использовать заголовочные файлы из CMSIS. Редактор кода может быть любым на ваш вкус, vim, emacs, блокнот, все что угодно. Для сборки проекта буду использовать утилиту make. Итак, начнем!
Читать дальше →
Всего голосов 37: ↑36 и ↓1 +35
Просмотры 72K
Комментарии 47

STM32F103C8T6 — делаем осциллограф. Часть 3

DIY или Сделай сам Электроника для начинающих
Третья часть (первая и вторая) про то как я делаю осциллограф из отладочной платы ценой менее $3. Демонстрационное видео работы:

А описание некоторых ключевых особенностей под катом.

Читать дальше →
Всего голосов 13: ↑12 и ↓1 +11
Просмотры 53K
Комментарии 19

Полив растений по расписанию (STM32F103)

Умный дом DIY или Сделай сам
Посмотрев на то, что Geektimes выкладываются описания китайских «поливалок» комнатных растений, я решил поделиться и своим опытом. Пусть и несколько поздновато (работает «поливалка» у меня уже 2.5 года).

Я не отношусь к любителям комнатной флоры, которые тщательно следят за цветами, бережно протирают листья и пр. Но вот против самих растений ничего не имею. Как то, выкидывая очередной сдохшее растение, я задумался, что это уже перебор. А, поскольку это было засохшее алое (!), то перебор в квадрате.

Посмотрев на то, что есть на e-bay и в магазинах, я решил (по разным причинам), что проще сделать самому из завалявшейся платы с LCD сенсорным экраном.


Читать дальше →
Всего голосов 20: ↑19 и ↓1 +18
Просмотры 17K
Комментарии 42

STM32F103C8T6 — первые шаги. Начинаем делать осциллограф

DIY или Сделай сам Электроника для начинающих
О радостях и трудностях первого знакомства с STM32 после AVR. Как я реализовывал простейшую задачу — передачу данных на ПК.

Читать дальше →
Всего голосов 29: ↑29 и ↓0 +29
Просмотры 190K
Комментарии 44

STM32F103C8T6 — первые шаги. Продолжаем делать осциллограф

DIY или Сделай сам Электроника для начинающих
Продолжение статьи. На этот раз попробуем подключить USB без падения частоты измерений и соберём одноканальную аналоговую часть.

Читать дальше →
Всего голосов 18: ↑18 и ↓0 +18
Просмотры 63K
Комментарии 25

FPV гонки на симуляторе (делаем USB джойстик из пульта радиоуправления)

Мультикоптеры DIY или Сделай сам Электроника для начинающих
Зима в северных широтах — время, когда у FPV пилота появляется время, чтобы отдохнуть от гонок и постоянных поломок, взять в руки паяльник, и смастерить что-нибудь полезное для своего хобби.

Раз уж на улице летать холодно, то будем тренировать навыки пилотирования на симуляторах. Для этого нужно подключить свою радиоаппаратуру к компьютеру через специальный адаптер, который преобразует PPM сигнал с пульта в сигналы USB-джойстика, понятные компу. Такие адаптеры, конечно не редкость и стоят копейки в китайских магазинах. Однако доставки заказа ждать долго, да и будет ли он работать так как мы ожидали? Например у меня есть вот такой:

Он по каким-то, еще не постигнутым мною причинам, наотрез отказывается адекватно калиброваться в симуляторе FPV Freerider, хотя прекрасно работает в Phoenix RC и Aerofly RC 7. А FPV Freerider вполне неплохо передает физику акро-полета на гоночном коптере, да к тому же имеет бесплатный демо-режим.
Решено - делаем адаптер сами!
Всего голосов 10: ↑10 и ↓0 +10
Просмотры 14K
Комментарии 1

Дешевая STM32 плата + Arduino IDE UPD 17.08.2017

DIY или Сделай сам Электроника для начинающих
Tutorial
image

Хотите прокачать ваши Arduino проекты? Заставить их работать быстрее, измерения и регулировку сделать точнее, ну и добавить баги(с новыми девайсами они неизбежны). Тогда эта статья для Вас.

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

Хорошие люди это понимают, и потихоньку начинают приобщать STM32 к ардуино теме, ибо восьмибитные AVR микроконтроллеры, на которых основано немало ардуино плат, не всегда могут справиться с поставленными задачами.

Краткое изложение данной статьи в видео формате:


Тыц
Всего голосов 24: ↑22 и ↓2 +20
Просмотры 303K
Комментарии 102
1