Управление ардуино с компьютера через usb java

Обновлено: 02.07.2024

Сап, хабр. Возможно, людям, начинающим изучать arduino, будет интересно, как легко и быстро организовать передачу информации между микроконтроллером и Java приложением. Данная связка открывает кучу интересных возможностей по сбору и обработке данных с датчиков, управлению различными свистелками-перделками, а также созданию своих первых IoT проектов.

Недавно на просторах интернета наткнулся на весьма простую библиотеку Java-Arduino Communication Library. Не найдя публикаций на эту тему здесь, решил поделиться с вами опытом использования. Для работы нам понадобятся установленные Arduino IDE, IntelliJ IDEA, Java SE Development Kit и, собственно, сам микроконтроллер (я тестировал на китайской Arduino Nano и Strela на базе Leonardo от Амперки, на обоих все все работало отлично).

Задача проста — создадим консольное приложение, которое при запуске устанавливает Serial-соединение с микроконтроллером и в бесконечном цикле ожидает ввода строки от пользователя. В зависимости от введенной строки возможны следующие варианты:

  • «on» — микроконтроллер включает встроенный светодиод;
  • «off» — микроконтроллер выключает встроенный светодиод;
  • «exit» — микроконтроллер выключает встроенный светодиод, и приложение завершает работу.

Скетч для микроконтроллера

Построение системы начнем с написания и загрузки скетча в Arduino Nano. Ничего сверхсложного. В блоке «setup» конфигурируем пин со светодиодом и Serial-порт, а в блоке «loop» слушаем Serial-порт на предмет пришедших байтов. В зависимости от полученного значения выполняем ту или иную операцию.

Небольшого пояснения и внимательности требует лишь проверка условий (b == 49) и (b == 48). Если не понимаете почему так, то добро пожаловать под спойлер:

Ответ на главный вопрос жизни, вселенной и всего такого Все дело в том, что при отправке на микроконтроллер по Serial-соединению символа (Chr) '1' используется кодировка ASCII, в которой символ '1' кодируется целочисленным десятичным значение (Dec) 49. При считывании символа микроконтроллером, значение символа '1' присваивается целочисленной переменной byte b. То есть фактически значение переменной b равно 49.

Java-приложение

Теперь запустим IntelliJ IDEA и создадимм новый Java-проект. Для работы потребуется подключить две дополнительные библиотеки: jSerialComm-1.3.11.jar и arduino.jar. Как добавить скаченные jar-архивы можно прочитать вот здесь.

Все приложение будет состоять из одного единственного класса:

Для работы с COM портом создается объект класcа Arduino. Конструктор принимает два параметра:

  1. String portDescrition — название COM-порта
  2. int baud_rate — скорость передачи


Далее необходимо установить соединение с помощью метода openConnection(). Метод возвращает true в случае успешного соединения. Выведем это значение в консоль, чтобы убедиться в правильности выполненных действий.

Важно: после открытия соединения необходимо сделать паузу с помощью метода Thread.sleep(), в данном случае 2000 миллисекунд. Arduino Nano оказался настоящим тугодумом по сравнению со Strela, отправлять данные которой можно было сразу же после установки соединения. Вполне возможно, что вашему контроллеру понадобится даже больше времени. Поэтому если соединение установлено, данные отправляются, но не приходят, то первым делом увеличьте величину паузы.

Теперь входим в бесконечный цикл и начинаем ожидать ввода от пользователя:


При введении очередной строки и нажатии «enter» выполняется ее чтение и сохранение в переменную String s. В зависимости от значения этой строки оператор switch отсылает на микроконтроллер символ '1' или '0' с помощью метода serialWrite(char c). Не забывайте, что когда микроконтроллер получит эти символы и сохранит их в целочисленную переменную, то вы получите 49, либо 48).

Вообще для пересылки данных можно использовать следующие перегруженные методы класса Arduino:

  1. public void serialWrite(String s);
  2. public void serialWrite(char c);
  3. public void serialWrite(String s,int noOfChars, int delay);
  4. public void serialWrite(char c, int delay);

При завершении программы желательно закрыть COM-port с помощью метода close.connection(), чтобы при повторном запуске программы не получить ошибку, связанную с тем, что COM-порт прежнему занят, а для выхода из бесконечного цикла, ожидающего ввод строки, используйте оператор break c указанием метки label_1, который позволяет выйти из цикла, перед которым стоит соответствующая метка:


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

Рассмотрим начало работы с Arduino IDE в операционной системе Windows на примере Uno. Для других плат разница минимальна — эти особенности перечислены на страницах описания конкретных плат.

1. Установка Arduino IDE под Windows

Установите на компьютер интегрированную среду разработки Arduino IDE.

Последняя стабильная версия всегда доступна на нашем сайте.

Шаг 1


Выберите версию среды в зависимости от операционной системы.

Шаг 2


Нажмите на кнопку «JUST DOWNLOAD» для бесплатной загрузки программы.

2. Запуск Arduino IDE


Запустите среду программирования.

Arduino IDE не запускается?

Вероятнее всего, на компьютере некорректно установлена JRE — Java Runtime Environment. Для решения проблемы переустановите программу.

3. Подключение платы Arduino к компьютеру

Соедините Arduino с компьютером по USB-кабелю. На плате загорится светодиод «ON» и начнёт мигать светодиод «L». Это значит, что на плату подано питание и микроконтроллер начал выполнять прошитую на заводе программу «Blink».


Для настройки Arduino IDE под конкретную модель узнайте, какой номер COM-порта присвоил компьютер вашей плате. Зайдите в «Диспетчер устройств» Windows и раскройте вкладку «Порты (COM и LPT)».

Операционная система распознала плату Arduino как COM-порт и назначила номер 2 . Если вы подключите к компьютеру другую плату, операционная система назначит ей другой номер. Если у вас несколько платформ, очень важно не запутаться в номерах COM-портов.

Что-то пошло не так?

После подключения Arduino к компьютеру, в диспетчере устройств не появляются новые устройства? Это может быть следствием следующих причин:

4. Настройка Arduino IDE

Для работы среды Arduino IDE с конкретной платформой необходимо выбрать название модели и номер присвоенного плате COM-порта.


Для выбора модели Arduino зайдите в меню: Инструменты Плата и укажите соответствующую плату.


Для выбора номера COM-порта перейдите в меню: Инструменты Порт и укажите нужный порт.

Поздравляем, среда Arduino IDE настроена для прошивки вашей платы.

Что-то пошло не так?

Список последовательных портов пуст? Значит, платформа некорректно подключена к компьютеру или не установлен драйвер. Вернитесь к настройке соединения между платой и ПК. Arduino IDE тормозит при навигации по меню? Отключите в диспетчере устройств все внешние устройства типа «Bluetooth Serial». Например, виртуальное устройство для соединения с мобильным телефоном по Bluetooth может вызвать такое поведение.

5. Загрузка первого скетча

Среда настроена, плата подключена. Пора прошивать платформу.

Arduino IDE содержит большой список готовых примеров, в которых можно быстро подсмотреть решение какой-либо задачи.


Откройте распространенный пример — «Blink»: Файл Примеры 01.Basics Blink .


Откроется окно с демонстрационным примером. Немного модифицируйте код, чтобы увидеть разницу с заводским миганием светодиода. Замените строчки:

Полная версия кода:


Нажмите на иконку «Компиляция» для проверки кода на ошибки.


Нажмите на иконку «Загрузка» для заливки на плату.

ArduinoServo1_bb
ArduinoServo1_схема
ArduinoServo1_foto

Рассмотренный в статье Arduino. Управление сервоприводом, на примере SG90 скетч. По мне не очень интересен, так как не даёт полного представления о том, для чего использовать сервопривод. А серво привод это не просто туда сюда, это точные сильные движения. За одно мы рассмотрим, как взаимодействовать с платой Arduino через USB.

Рассмотрим следующий скетч:

Этот скетч будет выставлять позицию сервопривода на позицию, переданную с компьютера на плату.

Рассмотрим данный скетч:

Нам так же понадобится библиотека Servo.h

Мы объявляем так же переменные:

С объектом Servo myservo. И переменная pos в которую мы будем записывать позицию, на которую надо установить сервопривод.

Так же нам понадобится переменная

Сюда мы будем заносить данные поступающие с порта USB на плату.

Мы так же задаём, что общаться с серво приводом мы будем через 9 ножку (myservo.attach(9);)

Все действия с портом USB проходят через объект Serial. Функция объекта Serial begin() выставляет скорость передачи данных по порту usb. в нашем случае begin(9600) означает, что скорость передачи данных с портом USB будет 9600 бод(бит/c).

Дальше начинается самое интересное, блок loop:

Конструкция if(если выполняется условие). В нашем случае Serial.available() возвращает кол-во байт доступных для чтения. соответственно если их больше нуля, выполняем блок кода внутри if.

соответственно если мы ожидаем только цифры и какое нибудь значение обозначающее окончание ввода, то можно из кода вводимого символа вычесть 48 и у нас будет цифровое значение.

Данное значение мы помещаем в переменную incomingByte.

То есть в переменной incomingByte будет находится либо цифра или число большее 10 или меньшее 0.

if (incomingByte>=0 and incomingByte<=9) else

тоесть если incomingByte больше или равно 0 и меньше или равно 9 то это число. Рассмотрим что мы будем делать если во входящем байте закодирована цифра:

мы умножаем значение позиции pos на 10 и прибавляем знчение цифры. По сути прибавляем новое число с права. например если сейчас pos=1 и мы ввели 2 то pos=12.

.Управляем Arduino через USB. Библиотека Serial.

Набор функций Serial служит для связи устройства Ардуино с ПК или другими устройствами, поддерживающими последовательный интерфейс обмена данными. Все платы Arduino имеют хотя бы один последовательный порт (UART). Для обмена данными Serial используют цифровые порты ввод/вывода 0 (RX) и 1 (TX) , а также USB порт. Важно учитывать, что если вы используете функции Serial, то нельзя одновременно с этим использовать пины 0 и 1 для других целей.

Среда разработки Arduino IDE имеет встроенный монитор порта. Для начала обмена данными необходимо запустить монитор нажатием кнопки « Монитор порта » и выставить ту же скорость связи, с которой вызвана функция begin().

Основные функции Serial
  • begin()
  • end()
  • available()
  • read()
  • flush()
  • print()
  • println()
  • write()
  • peek()

В нашем примере мы рассмотрим только часть функция Serial.

Serial.write() – записывает в порт данные в двоичном виде.

Serial.print() - может иметь много значений, но все они служат для вывода информации в удобной для человека форме. Например, если информация, указанная как параметр для передачи, выделена кавычками – терминальная программа выведет ее без изменения. Если вы хотите вывести какое-либо значение в определенной системе исчисления, то необходимо добавить служебное слово: BIN-двоичная, OCT – восьмеричная, DEC – десятичная, HEX – шестнадцатеричная. Например: Serial.print(25,HEX).

Serial.println() делает то же, что и Serial.print(), но еще переводит строку после вывода информации.

SerialEvent() Автоматически вызывается при поступлении новых данных.

Serial.begin() Инициирует последовательное соединение и задает скорость передачи данных вбит/c (бод). Для обмена данными с компьютером используйте следующие значения: 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600 или 115200.

Первое что мы с вами сделаем это будем управлять встроенным светодиодом на плату Arduino который подключен к 13 пину.

В монитор порта ни какой информации не возвращается. Также можно вывести в монитор порта информацию полученную от Arduino.

В монитор порта ни какой информации не возвращается

При выключении светодиода выведем: «Светодиод выкл.». И также выведем слово «Portal-Pk.ru»

Данный инструмент помогает при отладки программы . В монитор порта модно вывести состояние оборудования, на коком этапе выводит ошибку и пр.

Прошивка плат Arduino

В качестве подключаемой платформы возьмём Arduino Uno. Разница с другими платами у неё минимальна.

Кабель для связи с ПК

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

Arduino Uno, Arduino Mega 2560 соединяются кабелем со штекерами USB тип А. Такой кабель часто применяется для подключения принтера или сканера.

Arduino Leonardo, Arduino Due для подключения имеют гнездо micro USB тип В.

Arduino Nano, Freeduino Nano подключаются через гнездо mini USB тип B.

гнездо mini USB тип B

Для подключения Freeduino MaxSerial потребуется кабель последовательного порта 9M-9F.

9M-9F.

Установка Arduino IDE

Arduino IDE — интегрированная среда разработки софта для Arduino устройств, устанавливаемая на компьютер.

В зависимости от модели платы важно правильно выбрать подходящую версию Arduino IDE:

  • Arduino IDE 1.6.4 — для многих плат, кроме Arduino Leonardo ETH и Arduino M0 (программное обеспечение от Arduino LLC).
  • Arduino IDE 1.7.7 — для всех типов плат (программное обеспечение от Arduino SRL).

Частичная несовместимость ПО стала следствием разногласий между отцами-основателями Arduino итальянцами Массимо Банзи и Джанлука Мартино, которые не смогли договориться о дальнейшем курсе развития компании. Завод, на котором разрабатывают и производят оригинальные платформы Arduino, под управлением Джанлука Мартино откололся от головной компании Arduino LLC и стал самостоятельной компанией Arduino SRL (ранее Smart Projects Srl).

Запуск Arduino IDE

После запуска успешно установленной Arduino IDE, должна открыться графическая консоль, как на картинке внизу.

После запуска

Возникла неполадка: Arduino IDE не запускается.

Способ устранения.

Скорее всего, на компьютере установлена неподходящая виртуальная среда JRE (Java Runtime Environment), необходимая для запуска графических приложений.

Возвратитесь к переустанавке Arduino IDE: на этот раз инсталлятор развернет работу по настройке JRE.

Подключение плат Arduino к компьютеру

После успешного запуска среды разработки Arduino IDE пришло время связать какую-то платформу Arduino с компьютером. Как вы уже знаете, подключение плат Arduino к ПК выполняется через USB-кабель.

Соединив консоль Arduino с ПК, на ней загорится один светодиод «ON», и начнёт мигать другой «L». Это означает, что через кабель подано питание и микроконтроллер начал выполнять предустановленную на заводе программу Blink (мигание).

Остается только узнать, какой номер COM-порта присвоил компьютер нашей плате Arduino, что важно для корректной работы программного обеспечения Arduino IDE с новым устройством.

Номер COM-порта можно узнать в «Диспетчере устройств», вкладка «Порты (COM и LPT)».

На системах Windows скорее всего нашей Arduino Uno с последовательным интерфейсом присвоится один из портов COM1 или COM2. Для Ардуино с USB-контроллером портом ввода будет COM4, COM5, COM6 или выше.

На системах Linux последовательным портом будет USB0 либо USB1.

port

Высветилось новое устройство Arduino в «Диспетчере устройств» — значит, операционная система распознала нашу плату, нашла для неё подходящий USB-драйвер и присвоила номер её интерфейсу. При совместном подключении ещё одной платы Arduino, ей присвоиться уже другой номер порта.

Возникла неполадка: при подключении платы Arduino к компьютеру, в Диспетчере устройств она не появляется.

Способы устранения:

  1. Не всунут до конца или поврежден USB-кабель или порт.
  2. Нет драйвера для этой платы Arduino. Если у вас китайская Arduino или от другого неизвестного производителя, попробуйте переустановить USB-драйвер вручную.
  3. Блокировка со стороны антивирусника.
  4. Неисправна плата Arduino.

Настройка Arduino IDE

В открытой Arduino IDE, заходим: Инструменты > Порт > выбираем номер порта COM — сообщаем программе номер порта, к которому подключена микропроцессорная платформа Arduino.

Настройка Arduino IDE

Чтобы у прошивающей программы Arduino IDE не осталось никаких сомнений, с чем ей предстоит работать, указываем тип нашей подключенной платы. Для этого переходим по меню: Инструменты > Плата > выбираем тип своей платы Arduino.

Настройка Arduino IDE

Возникла неполадка: во вкладке Порт нет ни одного COM-порта.

Способ устранения.

Очевидно, нарушено соединение устройства Arduino с компьютером. Верните устойчивое соединение с ПК.

Как проверить подключение устройства Arduino

Все числовые данные, поступающее через COM-порт, выводятся в Монитор порта во всё той же удобной графической среде Arduino IDE. Следовательно, нажав соответствующую иконку «Монитор порта» в верхнем правом углу консоли или найдя соответствующий пункт в меню Сервис, по изменяющимся числам в открывшимся окошке можно убедиться, что через USB-кабель передаются данные, а значит, и плата Arduino надежно подключена.

Как проверить подключение

Обратите внимание, что в нижней части окошка Монитора порта выводится информация о скорости работы с COM-портом «19200 baud» (19200 бит/сек). Такая скорость задана по умолчанию в предустановленном скетче на плате Arduino. В этом скетче есть строка Serial.begin(19200), в которой можно задать любую требуемую скорость передачи, но это возможно только при работе через USB-кабель. Ежели передача данных идет через радиоканал Bluetooth, то скорость обмена с COM-портом должна быть задана заранее, точно такой же, какую мы выбираем при отладке Bluetooth-модуля.

Возникла неполадка: невероятно тормозит Arduino IDE при навигации по меню.

Способ устранения.

В Диспетчере устройств, во вкладке Bluetooth Serial отключите Bluetooth-соединение с мобильным телефоном. Все внешние подключения через Bluetooth значительно пожирают объем виртуальной памяти.

Загрузка первого скетча

Соединение установлено, среда разработки настроена — теперь в ваших руках отлаженный инструмент для прошивки любых микроконтроллеров AVR серии: ATtiny, ATmega, AT90S, AT90CAN, AT90PWM.

В среде разработки Arduino IDE есть много готовых образцов для различных задач, но для проверки отзывчивости платы на перепрошивку достаточно внести небольшие изменения в предустановленную программу Blink (мигание светодиода «L» на плате).

Достаточно в открытом эскизе Blink внести свои изменения в строчке delay(1000), нажать «Вгрузить» и засечь изменения в работе платы Arduino.

Загрузка первого скетча

Установив delay(500) — светодиод «L» будет мигать в два раза чаще, с задержкой в пол секунды.

Задав delay(100) — светодиод «L» будет загораться и гаснуть в 10 раз быстрее, чем по заводской настройке, то есть каждые 100 миллисекунд.

Возникла неполадка: при загрузке скетча всплыла ошибка вида «not in sync».

Способ устранения.

Значит, подключенная платформа Arduino не была распознана операционной системой. Вернитесь к пунктам установки правильного номера COM-порта и модели платы в меню Инструменты Arduino IDE.

Автор: Виталий Петрович.

Биометрический замок для авто

Содержание1 Принцип работы охранного устройства на Arduino.2 Используемые компоненты.3 Сборка и программирование.4 Примечание. В Благодаря Arduino можно собрать универсальный пульт дистанционного управления (ПДУ). Очень удобно, когда с одного

Часы с LED-индикаторами на Arduino

После создания множества прототипов Arduino на макетной плате, я решил сделать что-то полезное, то,

Мультитестер на Arduino своими руками

За универсальным тестером будущее. Всего лишь при подсоединении щупов, универсальный пробник определяет сопротивление, ёмкость,

Офисный шпион KeySweeper

Содержание1 Возможности2 Железо3 Микроконтроллер Arduino или Teensy4 Микросхема NRF24L01+ 2,4 ГГц5 Зарядное устройство AC

Толщиномер лакокрасочных покрытий на Arduino

Необходимость в толщиномере лакокрасочных покрытий (ЛКП) особо ощутима при покупке автомобиля с пробегом. Только

Западные селебрити демонстрируют отличный внешность
и ни капли избыточного веса.

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

И лишь единицы из списка действительно эффективны
и безопасны. Но универсальное препарат найдено – это капли
для похудения fire fit!

Доказанная результативность капель подтверждают огромные продажи его по
всему странам. Слим Фаер
Фит полностью безвредно и сертифицировано.
В чудесной упаковке таится естественный механизм, оперативно и безопасно истребляющий
избыточных килограммов.
У худеющих с fire fit за считанные дни наблюдается эффект уменьшения веса без усиления физической активности.
Жиросжигающее воздействие начинается сразу.
Не требуется суровое лимитирование по
калорийности принимаемой еды.
В формуле препарата экстракт гуараны, которые содержат богатый набор витаминов и минералов,
и они ускоряют превращение жировых клеток
в энергию, тормозят аппетит,
улучшают иммунитет. Кактус –
естественный антиоксидант, который
дает мощное жиросжигающее
действие, подавляет аппетит и концентрацию
холестерина в крови, устраняет из организма шлаки и излишки воды, безупречно снимая жировую нагрузку на организме.

А экстракт лимона в формуле fire fit стимулирует метаболический процесс, нормализует работу
ЖКТ, защищает сердечно-сосудистую систему, поддерживает
иммунную систему, повышает активность
всего организма.

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

Ни один состав растительного происхождения
не сравнится с Fire Fit! Готовы подвергнуться чудесное действие средства?
Кликните на форму для заявки
на официальном веб-сайте, и в
самое скорое время наш менеджер перезвонит вам.

Читайте также: