• STM32 и USB-HID — это просто

    • Tutorial
    На дворе 2014 год, а для связи микроконтроллеров с ПК самым популярным средством является обычный последовательный порт. С ним легко начать работать, он до примитивности прост в понимании — просто поток байт.
    Однако все современные стандарты исключили COM порт из состава ПК и приходится использовать USB-UART переходники, чтобы получить доступ к своему проекту на МК. Не всегда он есть под рукой. Не всегда такой переходник работает стабильно из-за проблем с драйверами. Есть и другие недостатки.
    Но каждый раз, когда заходит разговор о том, применять USB или последовательный порт, находится множество поклонников логической простоты UART. И у них есть на то основания. Однако, хорошо ведь иметь альтернативу?

    Меня давно просили рассказать как организовать пакетный обмен данными между ПК и МК на примере STM32F103. Я дам готовый рабочий проект и расскажу как его адаптировать для своих нужд. А уж вы сами решите — нужно оно вам или нет.

    У нас есть плата с современным недорогим микроконтроллером STM32F103C8 со встроенной аппаратной поддержкой USB, я рассказывал о ней ранее

    Заставим ее работать
  • Дорабатываем аппаратуру Turnigy 9x

    • Tutorial
    Всем, кто интересуется радиоуправляемыми моделями, известна аппаратура Turnigy 9x. Это практически народная аппаратура РУ.
    Доступная по цене, существует множество аксессуаров и альтернативных прошивок к ней. Например, вот так выглядит мой экземпляр:

    В нем альтернативная прошивка — er9x, добавлена подсветка экрана, стики заменены на широкие, сзади добавлена откидная подставка, в батарейный отсек выведен кабель для прошивки и редактирования настроек с ПК, питание от 2S LiIon аккумулятора.
    И все бы хорошо в этой аппаратуре, она ведь модульная. Можно поставить любой модуль передатчика JR стандарта. А их существует море — почти на любой кошелек и задачи. Однако, есть два варианта комплектации — с родным радиомодулем Turnigy 9x и вообще без модуля.
    Родной модуль не имеет своей антенны и подключен к верхней антенне на корпусе передатчика неразъемным кабелем так, что отсоединить модуль нельзя и заменить его можно только откусив антенный кабель:

    Вот это мы и исправим
  • Дорабатываем зарядник Turnigy Accucel 6

      Многим знакомо универсальное зарядное устройство iMax B6 и его клона Turnigy Accucel 6.

      Оно умеет заряжать
      • Литий-полимерный LiPo и литий-ионные LiIon аккумуляторы
      • Никель-кадмиевые NiCd, столь любимые производителями электродрелей
      • Никель-металлогидридные Ni-Mh, идущие в комплекте с недорогими радиуправляемыми моделями
      • Свинцовые Pb, которые можно найти в автомобиле, мото, UPS и много где еще.
      Стоит недорого, принимает питание 11-17В от БП или автомобильного аккумулятора, позволяя заряжать прямо в поле.
      Но это еще не все. Зарядник можно подключить к компу и получить наглядные графики зарядки/раздрядки аккумуляторов, наглядно оценив на графике, в каком диапазоне напряжений сосредоточена основная часть заряда, как аккумулятор реагирует на разные зарядные и разрядные токи, насколько проседает напряжение под нагрузкой и много чего еще интересного.
      Вот только с завода эта зарядка уже пару лет идет без такой возможности. Производитель пожадничал и не поставил пару микросхем и копеечных элементов, а производитель iMax B6 вообще шнурок и софт продает отдельно по цене сопоставимой с самой зарядкой.
      Будем исправлять
    • Em::Blocks 1.20

        Вышла Em::Blocks 1.20, в которой довольно много вкусностей:
        • Semihosting as library option for EmBlocks Bare-metal ARM
        • Semihosting checkbox in debug interfaces JLink and STlink
        • Live data implemented on memory watch and debugger variable tooltip.
        • New STlinkGDB server with live data and semihosting support
        • Syntax highlight on GNU linker scripts
        • Yagarto toolchain replaced by Generic GCC (Yagarto project is cancelled)
        • C++ library linker option and C++ compiler options added
        • Make file tool entry is replaced by CPP tool entry.
        • Device list updated for JLinks
        • STmicro project wizard is changed so that the debug interfaces are preconfigured at the beginning.
        • Breakpoint on-the-fly is now working
        • Run to main() is working smoothly
        • Pre-compiled headers is supported
        • File manager plugin added to the installation package
        • EnergyMicro project wizard is using the preinstalled header files from EM instead of copying all the files with the wizard.
        • Project wizard can also use ZIP archive as template storage.
        • Bug fix STmicro project wizard
        • Bug fix EnergyMicro project wizard
        • and a lot of minor fixes.

        В связи с этим я сделал новую сборку с версией 1.20
        Преимущества EmBlocks я описывал ранее.
        Быстрый старт с EmBlocks на примере простого blink.
        Читать дальше →
      • STM32 + EmBlocks — мигаем светодиодами

          Как и просили в комментариях к предыдущей статье о EmBlocks, сегодня я покажу от начала и до конца как создать в EmBlocks простой проект для мигания парой светодиодов.
          В качестве отладочной платы мы будем использовать кроху на STM32F103C8.
          Вот наш стенд:

          Подключаем аноды светодиодов к пинам PB5 и PB6, катоды через резсторы в 390 Ом к земле.
          Заставим их перемигиваться
        • EmBlocks — IDE для STM32

            Я обещал поделиться своей настроенной средой Em::Blocks.
            Выполняю обещание.


            Что такое Em::Blocks?


            Это IDE на основе Code::Blocks — кросс-платформенной быстрой среды разработки со встроенным скриптовым языком и очень гибкой настройкой, ориентированной под С/С++ разработку. В среде есть встроенные шаблоны для кучи различных случаев и возможность подключать любые компиляторы.
            EmBlocks в отличие от CodeBlocks не кросс-платформенная, она существует только под Windows.
            Зато вместе с ней поставляется специальная версия CodeSourcery тулчейна, которая позволяет плотнее интегрировать тулчейн с IDE. Версия в комплекте всегда свежая.

            Достоинства EmBlocks


            • быстрая, т.к. написана в native коде
            • расширяемая и хорошо автоматизируется с помощью скриптов
            • шаблоны проектов можно настроить на свой вкус
            • можно самому изменить диалог мастера создания проекта
            • не требует установки — можно носить с собой на флешке и легко перенести с настройками на другой комп
            • из коробки поддерживает отладку через ST-Link и J-Link
            • бесплатная
            • неплохо поддерживается на собственном форуме

            Пример проекта с использованием EmBlocks — мигание светодиодами.
            Подробности и архив для скачивания
          • STM32 vs Arduino

              Приехала вчера крошечная платка на STM32F103C8.

              STM32F103C8 Front STM32F103C8 Front

              Это 48ногий 32битный микроконтроллер. И это отличный вариант апгрейда для тех, кто использует Arduino.
              Сравним?
            • RThrust — система автоматического тестирования БК моторов

                Я довольно давно увлекаюсь мультикоптерами, и все это время я ищу способы заставить коптеры летать дольше.
                Типичное время полета для недорогого коптера 7-15 минут. Удручающе мало. Мой текущий квадрокоптер летает 19 минут. И на выбор регуляторов и ВМГ для него я потратил немало времени, чаще всего делая предположения в условиях недостаточных данных.
                Ключом к продолжительности полета является энергоэффективная винтомоторная группа. Что это значит? Комбинация мотора и воздушного винта должны максимально эффективно использовать энергию для создания тяги. То есть поднимать как можно больше веса, потребляя как можно меньше энергии. Измеряется эффективность винтомоторной группы в граммах на ватт. На форумах частенько встречаются различные приспособления, состоящие из весов и крепления для мотора плюс какой-нибудь ваттметр. Иногда обходятся чисто весами, чтобы выяснить какую вообще тягу создает ВМГ.
                Однако, погрешность измерений обычно весьма высокая, начиная с того, что мы не можем точно определить одновременно и тягу, которая колеблется (мотор постоянно меняет обороты) и мощность, которая тоже плавает достаточно сильно. В итоге ошибка сравнима с разницей между моторами.
                Меня такая ситуация не устраивает, учитывая, что моторы и пропеллеры различаются по стоимости до десятка раз, нужно понимать, стоит ли платить больше.
                В итоге я построил испытательный стенд, на который крепится ВМГ и замеряются ее параметры:
                RThrustLogo-Тяга с точностью до 1г
                -Напряжение аккумулятора с точностью до 0.01В
                -Ток с точностью до 0.1А-0.2А примерно (зависит от тока)

                Не знал в какой блог разместить информацию, поэтому пока поместил сюда.
                Еще картинки, куча подробностей и видео работы стенда
              • Aerospace и техника безопасности

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

                  Собрали мы гексакоптер на раме S800 с 15" карбоновыми пропеллерами (800мм между осями моторов). Отлично отлетали, приземлил коптер, деактивировал полетный контроллер (disarm), подошел отключить питание и щелкнул выключателем контроллера до того, как отключил батарею. ESC взбесились, дали полный газ, коптер подскочил и ударил прямо в лицо, после первого удара я отвернулся и он еще скакал за спиной несколько секунд.
                  Последствия
                • Малиновый маркетинг

                    Маркетинг сыграл с Raspberry Pi злую шутку.
                    Я изложу свой взгляд на эту плату, потому что неоднократно сталкивался с тем, что люди не понимают ее предназначения, пытаются применить ее не по назначению и разочарованно переключаются на другие ARM платы.
                    А тем временем Raspberry Pi — это очень важный шаг, которого до нее сделать не удавалось никому.

                    И вот почему
                  • USB-IRPC: Апгрейд модуля розеток

                      В прошлый раз в комментариях поступило дельное предложение поставить твердотельные реле вместе обычных электромеханических.
                      Что я, собственно и сделал.
                      Неделю назад приехали сами реле SSR-25 DA:

                      Управляются они напряжением от 3 до 32В. Коммутируют наргузку до 25А от 24В до 380В. То, что нужно.
                      Бесшумные, на корпусе есть крупный красный светодиод, который горит при замыкании цепи.
                      Читать дальше →
                    • ИК пульт для ПК и розеток. Часть 2

                        Часть 1
                        Вчера я рассказал, как собрать USB-IRPC на основе Arduino. Зачем? Чтобы показать, как быстро собрать макет и сложности особой тут нет.
                        Сегодня сделаем все как положено. С самого начала — с принципиальной схемы, PCB, ЛУТ. Кусочек фольгированного стеклотекстолита превратим с помощью кучки деталек в готовое устройство. Разумеется с корпусом, мы же хотим аккуратно, правда?
                        Вот наша цель:
                        USB-IRPC Bare Front
                        «USB-IRPC Bare Front»
                        USB-IRPC Finished
                        «USB-IRPC Finished»
                        делаем USB-IRPC с нуля
                        • +44
                        • 33,4k
                        • 5
                      • ИК пульт для ПК и розеток. Часть 1

                          У меня нет телевизора. Совсем. На антресолях где-то лежит старый маленький пузатик, но кабель антенны давно свернут, а телевизор этот — скорее издевательство, разве что на кухне поставить и то маловат.
                          Поэтому в качестве музыкального центра и телевизора я использую свой ПК. И все бы хорошо, но лень — это не только двигатель прогресса, но и фактор, который портит удовольствие, заставляя встать с дивана, на котором уютно устроился с кружкой чая, чтобы запустить программу или выключить колонки после просмотра фильма перед сном.
                          Существует множество ИК приемников, практически все они могут управлять компьютером и даже могут его выключить, но не могут его включить. И вот в этот момент компьютер перестает быть столь же удобным сколь телевизор или музыкальный центр. Но и проект Igor HID не порадовал своим софтом. Вроде все умеет, а неудобно. И не влезешь в него, исходников нет. Вот поэтому я собрался и сделал свой проект, открытый и доступный всем.
                          Сделал я его с нуля до законченного комплекта. А поскольку мой опыт в разработке и программировании электронных девайсов до него можно сказать был нулевым, то я считаю, что повторить это сможет каждый, кому это интересно.
                          image
                          Называется он USB-IRPC (USB Infrared Remote Personal Computer Control — «Юэсби-ИРПиСи» или ИРПЦ, кому как больше нравится :). Буква R на самом девайсе — просто сокращение от моего ника.
                          Важным преимуществом девайса является то, что он программно совместим с Arduino и в случае отсутствия уверенности в своих силах в ЛУТ может быть сделан на основе Arduino на макетной плате. Это, конечно, не так компактно и аккуратно, не так дешево, но зато доступно практически всем, даже навыки пайки особые не потребуются.
                          Если стремление к комфорту вам не чуждо и идея превратить свой компьютер в медиацентр, а заодно поуправлять электророзетками с пульта вам интересна, тогда вперед.

                          Просьба, если соберетесь делать устройство после прочтения статьи, задавайте вопросы в комментариях. По опыту предыдущих статей: вас довольно много и вопросы вы задаете одинаковые :)
                          Я лучше один раз отвечу всем, добавив в статью или в комментариях. Уведомления о комментариях с вопросами я просматриваю и стараюсь отвечать.
                          поехали, делаем USB-IRPC
                        • Квадрокоптер-R2. Апгрейд

                            Весной я писал как построить дешевый и простой коптер за 1 день и $120
                            Основной его недостаток — довольно примитивный по возможностям контроллер KKmultiсopter — он даже горизонт сам держать не умеет. Что-ж, исправим этот недостаток!
                            Тех, кто уже построил по предыдущему рецепту, спешу успокоить — бюджет апгрейда всего $40-55. Для тех, кто строить будет с нуля, есть возможность улучшить конструкцию.
                            Я построил второй коптер, т.к. комплектующие для него были куплены давно.
                            image
                            Апгрейдим до R2
                          • Квадрокоптер за 1 день и $120

                              Создать квадрокоптер как платформу для летающего робота я планирую уже очень давно. Первые расчеты и заказ деталей я сделал год еще назад. Однако, делать «просто коптер» чтобы полетать, управляя с пультом или даже в FPV режиме конечной задачей не является. Поэтому коптер должен быть максимально гибким и как можно менее дорогим.
                              По отдельности все детали для коптера есть, но их сопряжение — дело простое только в теории. Нужно быть и программистом и инженером и моделистом — вертолетчиком. Поэтому процесс движется довольно небыстро. А летать хочется :) Ничто так не расхолаживает и не демотивирует как отсутствие видимых результатов, особенно когда прогресс-то вроде есть, но не наглядный. Да и экспериментировать сразу на большом квадракоптере дорого и опасно.
                              Поэтому я решил собрать для экспериментов миникоптер. Как всегда — задача сделать недорого, просто и гибко.
                              Мой результат — готовый коптер за 1 день (на сборку и запуск) и $120 (стоимость квадрокоптера включая доставку). А с аппаратурой — $145.
                              MiniQuadroCopter
                              «MiniQuadroCopter»
                              Под катом описание и видео.
                              Buddy-коды для заказа на HobbyKing
                              Строим недорогой квадрокоптер
                            • AVRDudeR — встраиваем avrdude в IDE


                                Arduino — хорошая платформа для самоделкиных вроде меня.
                                Удобная, все в ней уже есть.

                                В чем проблема?

                                Программная часть мне далеко не всем нравится. Особенно ужасна Arduino IDE. Каждый файл открывается в новом окне, оставляя пустое запущенное окно IDE. И прочие мелкие глупости, которые привыкших к удобству Visual Studio, Borland/Embarcadero RAD IDE расстраивают и вызывают неудовольствие.
                                К счастью, мы можем использовать любую IDE какая понравится. Для готовых проектов, которые только скомпилировать и прошить или собственных пробных поделок вполне годится тот огрызок Wiring, который компилируется Arduino IDE.
                                Для удобства работы я использую Visual Micro Arduino — удобство Visual Studio, быстрая компиляция, прошивка стандартными средствами.

                                Arduino без Arduino IDE

                                Ступенькой выше стоит прямая работа с микроконтроллером, тут уж в вольны делать что захотите. Часто это удобнее чем разбираться в начинке библиотек Arduino. Но приходится использовать либо AVR Studio либо стороннюю IDE и компилятор от Atmel (благо, он совершенно бесплатный и входит в AVR Tools).
                                Все бы хорошо, но про Arduino они ничего не знают и прошить ее не могут. И вот тут начинаются неудобства.
                                Вот их то мы и устраним
                              • Smart KM Link A820

                                  Часто приходится работать за ноутом и ПК одновременно — не весь софт есть и там и там, не весь софт на ноуте работает достаточно быстро, часто нужно прервать работу и ехать на встречу.

                                  Работая таким образом, я, как наверное и многие, периодически пытаюсь мышкой компа что-то щелкнуть на ноуте или передвинуть мышу с ноута на соседний монитор. Особенно это знакомо тем, у кого больше одного монитора на столе.
                                  Теперь это возможно!
                                  Такую штуку я ждал давно
                                • Строим гусеничного Bluetooth-робота с камерой. Часть 3

                                    В предыдущих сериях:
                                    Часть 1
                                    Часть 2
                                    Ну что, все уже заказали запчасти и собрали роботов? Пора робота оживить.
                                    Сегодня мы разберем программную начинку.
                                    Вариант, который я предлагаю максимально прост. Не стоит ждать от него уникальных способностей. Его задача — просто ехать работать. Отказоустойчивость, плавность управления и дополнительные функции — это простор для творчества, который я оставляю каждому, чтобы не лишать этого удовольствия. Код весьма простой и оттого далеко не оптимальный и не защищенный и вообще не красивый. Если есть предложения по его улучшению — предлагайте свои варианты, прямо куски кода с пояснением зачем и почему так будет лучше.
                                    Неконструктивная критика того, что сделано плохо — не особо нужна :) Я и так знаю про недостатки. А вот если что-то непонятно- спрашивайте, поясню.
                                    Итак, поехали!

                                    Наша задача - добиться аналогичного результата
                                  • Строим гусеничного Bluetooth-робота с камерой. Часть 2

                                      Часть 1
                                      Часть 3
                                      Продолжаем строить гусеничного робота.
                                      В первой части мы с вами подобрали и, надеюсь, заказали все необходимые детали. Кстати, недавно проверял, все детали Tamiya (гусеницы, площадки, мотор-редукторная коробка) были в наличии в Terraelectronica. Подороже, конечно, чем из Китая, но зато рядом.
                                      Те, кто уже получил детали, наверняка уже собрали шасси.
                                      Теперь займемся бортовой электроникой, видеоподсистемой и питанием.
                                      Читать дальше →
                                    • FTBB программатор для minimalist Arduino

                                        Не так давно я рассказывал, как дешево собрать Arduino-совместимую плату.
                                        Единственное, чего не хватало для полноценного комплекта — это программатора. Денег на полноценный программатор обычно жалко, особенно если он нужен время от времени в основном для прошивки бутлоадера в новый чип.
                                        Большинство схем программаторов не решают проблемы курицы и яица — программатор тоже нужно чем-то прошивать. Свою минимальную Arduino я тоже прошивал имевшейся под рукой другой платой Arduino. Но ведь не у всех же она есть, верно? Значит нужен программатор, не требующий прошивки.
                                        Изобретать велосипед я не стал и изготовил программатор на основе схемы, опубликованной у DIHALT. На самом деле им можно прошить любой AVR микроконтроллер или использовать как USB-UART адаптер. В общем, пригодится.

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