- Arduino qt creator windows
- About
- Шаблон для быстрого старта на Arduino Due в QtCreator
- Написание кода для ардуино среде разработки С++ Qt Creator
- XRay3D/Arduino-UNO-Blink-QtCreator-Project-Example
- Nikanor
- Nikanor
- IamNikolay
- IamNikolay
- ТехнарьКто
- Arduino в Linux: настраиваем Qt Creator в качестве среды разработки
- 1. Подготовка почвы
- 2. Создаем проект в Qt Creator
- Выводы
В связи с тем что намечаю создание собственного робота управляемого через XBee, мозгом которого будет является компьютер, возникла надобность освоить заранее управление Arduino с помощью USB-интерфейса.
В результате будет создана программа управляющая светодиодом имеющая 4 режима — светиться, не светиться, помигать, помигать n раз.
Будет использоваться русская Qt библиотека qserialdevice. Скачать её можно здесь: qserialdevice
Просто введите в консоль git clone gitorious.org/qserialdevice и она появится в текущей папке. Далее следуйте инструкциям в файле Readme_ru.txt.
Сразу стоит сказать что Arduino имеет встроенный преобразователь USB-UART FT232R который обеспечивает виртуальный COM-порт, поэтому управлять платой не сложно. Всю сложную работу по коммутации ПК->Arduino за вас сделает преобразователь и драйвер для него, который обычно уже есть на вашей ОС.
Ещё стоит наверное знать что если вы используете Linux вы можете посылать данные следующим образом: echo _SIGNAL_DATA_ >> /dev/ttyUSB0
Начнём создавать Qt приложение. Сперва нужно создать интерфейс, оболочку и потом реализация посылки данных в Arduino по запросу пользователя.
Заметка для пользователей Linux
Если при компиляции библиотека не будет найдена тогда зайдите в директорию библиотеки qserialdevice через терминал qserialdevice/src/build/release и скопируйте в папку с библиотеками /usr/lib/: sudo cp libqserialdevice.a /usr/lib
2. Файлы заголовков тоже нужно скопировать. Создайте директорию sudo mkdir /usr/include/qserialdevice. Зайдите в /qserialdevice/src/qserialdevice и скопируйте в /usr/include/: sudo cp * /usr/include/qserialdevice
Потом переходите на уровень выше и копируете другой важный файл: cd… && sudo cp qserialdevice_global.h /usr/include/
Теперь можно полноценно использовать библиотеку.
Создаём Qt GUI проект обычным методом без формы. В конструктор MainWindow пишем:
Будем считать GUI готовым. Весь код целиком с комментариями доступен по этой ссылке:
Теперь пора реализовывать работу с USB-интерфейсом. Сначала я хотел сделать для работы свой класс-обёртку, но библиотека qserialdevice и так достаточно абстрагирована поэтому нужды в этом нет.
Начнём с создания функции инициализации initSerial():
Функция инициализирует объект AbstractSerial — указывается устройство dev, скорость baudRate. В случае успеха возвращает — true, иначе — false.
Использование функции в конструкторе MainWindow выглядит так:
Далее создаём функцию для отправки данных.
Очень простая функция. Всего-то навсего отправляет массив байтов QByteArray на порт. Массив данных QByteArray — очень удобный класс. Имеет много удобных методов для работы с байтовыми массивами — clear, resize и т.д.
Теперь осталось только сделать обработчики нажатий на кнопки(слоты) и соединить их с кнопками.
ShowLigth — включить светодиод, HideLigth — выключить, Blink — дать команду помигать(да, эта функция у меня реализована в самом arduino, но это не важно, каждый сам выбирает способ реализации), BlinkN — дать команду на мигание и послать требуемое количество миганий.
Соединение кнопок с обработчиками в конструкторе MainWindow:
Всё, теперь желаемая функциональность программы реализована!
Теперь в качестве бонуса я создам обработчик получения данных и вывода их в терминал.
Создаём слот для получения данных:
Опять же очень просто. Я использовал функцию qDebug(), у неё немного специфический вывод, но для демонстрации подойдёт.
Связываем слот с событием в функции initSerial:
Вот и всё! Теперь вы можете создавать полноценные Qt приложения которые могут иметь возможность связи с вашей Arduino платой либо другим устройством.
Стоит выразить уважение создателю qserialdevice т.к. на самом деле очень удобная и простая библиотека.
Arduino qt creator windows
Qt Creator Arduino configuration
This repository creates a template that allows you to configure Qt Creator as your Arduino’s IDE.
Portuguese spearks / Pessoal de lingua portuguesa: Postei uma série de videos no youtube de como configurar todo seu ambiente de desenvolvimento, confira em https://www.youtube.com/user/cleitonsouza01/playlists
Qt Creator is a cross-platform IDE where you can develope on Windows, Linux or Mac. Qt Creator is advanced IDE that provides a lot of smart things to help you to develop more quickly and easily. Some main features of Qt Creator:
With all these and many more features, Qt Creator can be lightweight, and for me, is one of the best IDE’s available.
This repository provides a template that allows you to configure Qt Creator as your Arduino’s IDE.
What you need to use (pre-requisites):
Boards supported and tested
Theoretically this template can support all boards that Arduino-MakeFile support, it means:
I already tested successfully with:
If you have tested any other boards, please tell me about your experience!
In this repository you will find two folders:
Execute the following commands in Terminal:
You should see something similar to this:
Note:
/Qt then hit [TAB] to get the shell to auto-complete stuff for you.
Click on: File > New File or Project Select Arduino project
I found one Qt template created by Philippe Lucidarme (http://5lair.free.fr) but it is based on an old version of Qt Creator / Arduino-Mk version, and it seems that Philippe no longer updates this template.
About
Template to setup QT Creator as your Arduino IDE
Шаблон для быстрого старта на Arduino Due в QtCreator
Вот уже 3-й год как я нарадоваться не могу на Qt. В нем нахожу только достоинства. Он позволяет почти все. А что не позволяет, но очень надо — можно добавить и пользоваться. Так получилось и в этот раз.
Предыстория
Почему-то у меня к Arduino было отношение как к игрушке. До тех пор, пока не набрел на Arduino Due. Зацепила строчка в описании к модулю, что он построен на контроллере ATSAM3X8E (ядро Cortex M3). Дело в том, что с данным контроллером (вернее, с его младшей версией) я знаком не понаслышке.
Второе — и это заставило его уже купить — это цена. У меня есть опыт разработки железа на похожем контроллере (разрабатывал автомобильный трекер), и этот опыт настойчиво зашептал, что цена за модуль с доставкой в 15$ при стоимости только контроллера на Диджикее в 12$ — это очень выгодно. Бонусом шел интегрированный источник питания c диапазоном входного напряжения от 18В до 7В, 2 USB (Programming и Native).
Постановка задачи
Модуль пришел достаточно быстро. Дальше начались танцы.
Дело в том, что в бытность свою инженером-конструктором основной IDE для меня был IAR, а системой — Windows. Сейчас же основная работа связана с написанием приложений под Linux. То есть, Qt и Ubuntu соответственно. Пойдя по пути наименьшего сопротивления, установил IDE от Arduino. Запустил и сразу понял, что это не для меня. Общее впечатление — блокнот.
Решил разработку как-то вести в Qt Creator’e. Исследовав интернет на тему «может это есть и можно применить у себя», понял: очень много информации касательно Arduino написано для AVR-based модулей. По Arduino Due информации кот наплакал. А нужной и совсем нет. Это одна из причин, по которым я пишу эту статью. Разочаровавшись, стал копать в сторону связки Qt — Cortex-M3/M4. Взяв на вооружение статьи «Программируем микроконтроллеры в QtCreator» и «Программируем микроконтроллеры stm32 при помощи QtCreator». Стал творить. Скажу сразу — статьи задали только направление.
Как и любой программист — я немного ленив. Поэтому решил сделать шаблон для Qt, чтобы всегда под рукой был.
Решение
Подготовка
Для начала установим Qt Creator и Arduino IDE. Как ставить — информации море. Останавливаться не буду.
В Arduino IDE устанавливаем поддержку модулей Arduino Due. В дальнейшем я буду вести повествование для Linux. Sapienti sat, как говорится. Почему-то она (поддержка) устанавливается в скрытую папку [home_path]/.arduino15. Исправляем этот недочет — копируем (или переносим — кому как нравится) папку [home_path]/.arduino15/packages/arduino/hardware/sam/1.6.4 в папку [arduino_path]/hardware/sam,
папку [home_path]/.arduino15/packages/arduino/tools в папку [arduino_path]/hardware/tools
. В папке [arduino_path]/hardware/arduino/sam/cores/arduino удаляем (переименовываем) файл main.cpp. Если необходимо, скачайте порт FreeRTOS и положите в папку [arduino_path]/libraries. Далее, стягиваем с гитхаба шаблоны и копируем в папку [qt_path]/Tools/QtCreator/share/qtcreator/templates/wizards. На этом подготовка закончена.
Присоединяем Arduino Due через Programming Port (через Native Port надо будет вручную стирать и сбрасывать чип). Запускаем QtCreator. Жмем «Новый проект» и наблюдаем слева новый пункт меню «Arduino ARM» (см. верхний скрин). Выбираем необходимый пункт и жмем «Выбрать. »:
Здесь прописываем пути:
Открываем qbs-файл и проверяем пути. В принципе, если все было сделано так, как говорилось на предыдущих этапах — все должно быть в порядке. Но лучше перепроверить:
Далее идем в «Проекты» вкладка «Запуск» текущего комплекта:
На этом подготовка к использованию завершена. Можно жать на «Запустить»:
Написание кода для ардуино среде разработки С++ Qt Creator
XRay3D/Arduino-UNO-Blink-QtCreator-Project-Example
Nikanor
Nikanor
Пы.Сы.
Кто хочет попробовать помогу чем смогу.
IamNikolay
зачем вы усложняете себе жизнь со всеми этими путями и прочими настройками которые в ардуино готовые?!
тонкая настройка требуется только в исключительных проектах.
сравните количество строк и файлов блинка в ардуино иде, платформио, Qt Creator и т.д.
в итоге окажется что «шуруповёрт» это ардуино, а вы пользуетесь «отверткой»
IamNikolay
ТехнарьКто
При целенаправленной доработке Qt Creator-a под работу с Arduino, после компиляции получается сходный размер прошивки, что и в Arduino IDE. Поэтому допиленный до адекватной работы Qt Creator, тот же Arduino IDE, но другого цвета.
PS Если Вы за профессионализм, то почему еще на ассемблер не перешли? У Вас памяти в контроллере лишней много, или задачи сложнее мигания светодиодом отсутствуют? А если просто светодиодом мигать, то Arduino IDE удобнее. А вот если Вы давно программист знающий С++ тогда впервые увидев скетч происходит ступор. Где же любимая функция main() зачем это расширение *.ino, куда стырили расположение точки входа. И побежал программист плюясь устанавливать Qt Creator и возрадовавшись создал в креаторе программу и ради прикола сравнил с Arduino IDE, и опечален результатом был безмерно. И прозвучал выстрел пистолета для бега по граблям. И побежал программист по граблям, долго ли коротко но получил и в лоб и по детородному органу но добежал таки и получил размер файла как и в Arduino IDE, и счастлив стал программист безмерно.
По мотивам давнего разговора со знакомыми программистами об их отношении к обсуждаемому сейчас вопросу.
PPS Нету стандартов C++17 с плюшками. Есть язык C++ и новые версии этого языка программирования. И этот язык программирования будет один и тот же, что для Qt Creatora, что для Arduino IDE но в любом случае ассемблер будет круче.
Arduino в Linux: настраиваем Qt Creator в качестве среды разработки
Платформа Arduino популярна, независимо от того, ругают её или хвалят. Её создателям удалось снизить порог вхождения до уровня несколько кликов мышью + пара строк кода и вуаля — вот вам моргающий светодиодик. И вообще, для быстрого прототипирования поделок на AVR, Arduino вещь крайне удобная. Единственное что им не удалось это IDE, которую и IDE-то назвать сложно. Среди функций IDE она обеспечивает только одну — автоматизацию создания и сборки проекта.
Для пользователей Windows существует альтернатива: MS Visual Studio Community + плагин vMicro который позволяет писать скетчи, но уже со всеми вкусностями, предоставляемыми IDE. Плагин без проблем качается в самой студии через меню «Инструменты» и в триале работает сколько угодно. Платная версия в теории поддерживает пошаговую отладку, но меня, как владельца лицензионной копии vMicro они не очень-то и впечатлили.
Для пользователей Linux всё как всегда: хотим хорошую IDE — выбираем «жертву» и пытаемся прикрутить к ней нужный функционал. Существуют решения на базе Eclipse, но я не люблю эклипс, о чём уже однажды писал. Я мирюсь с ним как с неизбежным злом, когда под рукой нет вообще ничего подходящего. Из всех бесплатных IDE я больше всего уважаю мощный и замечательный Qt Creator, в котором я и моя команда работаем уже больше года. Поэтому и рассказывать буду о том, как превратить его в среду разработки для Arduino.
1. Подготовка почвы
Qt Creator имеется в репозиториях любого более-менее уважающего себя дистрибутива Linux. Например в арче его получают так
Кроме того, нам понадобятся пакеты, касающиеся самой Arduino
В тот день, когда мы наконец забудем Arduino нам понадобятся ещё компилятор, ассемблер, компоновщик и стандартная библиотека C для AVR, поэтому ставим и их
Отладчик и эмулятор мы опробуем уже в этой статье, поэтому установим ещё такие пакеты
2. Создаем проект в Qt Creator
Запускаем Qt Creator и создаем новый проект без Qt на языке C++
Выбираем расположение проекту и даем ему имя
В качестве системы сборки берем штатный qmake
Рабочий комплект оставляем по-умолчанию, поправим это потом
Под контроль версий добавляем проект по желанию
Получаем стандартный C++ проект
В проекте всего два файла: main.cpp и led-blink.pro. Первый удаляем, второй вычищаем от всего что там написано, получая совершенно пустой проект
Теперь ручками начинаем писать текст в *.pro файл, формируя структуру проекта для Arduino
Исключаем из проекта всё что касается Qt и выбираем шаблон проекта
Задаем каталог для собранного бинарника и его имя
Дальше подключим директории поиска заголовочных файлов
Задаем компилятор C и его ключи
и компилятор C++ и его ключи
задаем компоновщик и его ключи
Настраиваем постобработку ELF-файла, с целью перекрутить его в Intel HEX для последующей прошивки в плату
Указываем, какие заголовочные файлы включаются в проект
Задаем файлы исходных текстов Arduino Core
Так, ну а когда мы собственно начнем писать скетч? Сейчас и начнем, но то что мы проделали, благородные доны, это необходимый минимум для того чтобы код скетча заработал.
Теперь добавляем в проект исходник скетча. Правой кнопкой щелкаем по проекту в дереве и выбираем «Добавить новый. » Добавляем файл исходных текстов C++
Чтобы упорядочить исходники внутри проекта, в следующем окне
жмем «Обзор» и создаем папку src для файлов *.cpp
Теперь даем файлу имя
Жмем на следующем окошке «Завершить». Получаем такую картинку
IDE добавит этот файл в скрипт сборки led-blink.pro
но, чтобы не делать длинных списков исходников, я обычно делаю так
Теперь сделаем то, что Arduino IDE нам никогда не обеспечит: добавим к скетчу заголовочный файл, проделав действия аналогичные вышеописанным
В этот файл добавим необходимые проекту заголовки
настроим пути к заголовкам и исходникам
и вот теперь, наконец, напишем скетч
Теперь щелкаем правой кнопкой по дереву проекта и выбираем «Собрать»
Идем в папку проекта. У нас появился каталог bin/, в котором лежат продукты работы компилятора
Всё ок, присутствует ELF, который пригодится при отладке и hex для прошивки в контроллер. Теперь напишем очередную моргалку светодиодом на пине 13
Собираем проект, заходим в bin/. Втыкаем в усб вашу плату. В моем случае это Uno, в моей системе она выставляет для программирования порт с именем /dev/ttyACM0. Выполняем команду
сообщает нам, что процесс прошел нормально. Светодиодик будет моргать с частотой 2 Гц.
В принципе, можно настроить прошивку и в IDE. Для этого делаем настройки запуска такими
и, выбрав запуск проекта (нажав Ctrl + R) мы выполним прошивку и запуск так же точно, как это делает Arduino IDE.
Выводы
Описанный процесс настройки — довольно трудоемкая процедура. Но взамен мы получаем всю мощь одной из самых замечательных IDE, существующих в системах на базе ядра Linux (да и Windows это тоже касается). Автодописывание, рефакторинг, удобная навигация по коду — всё это теперь можно с успехом использовать.
Этот пример сделан, что называется, «в лоб». На деле Arduino IDE компонует Arduino Core в отдельную статическую библиотеку core.a и линкует с исполняемым файлом. В итоге прошивки собранные в стандартной среде выходят меньше по размеру, чем в описанном в статье методе. С этими нюансами мне ещё предстоит разобраться. А заодно в следующей заметке на эту тему мы поговорим о: