Работа с Arduino
Last updated
Last updated
На плате размещен микроконтроллер ATMega 2560 с обвязкой, идентичной плате Arduino Mega. Контроллер поставляется с прошитым бутлоадером Arduino. Таким образом, микроконтроллер полностью готов к запуску скетчей Arduino IDE и работе со стандартными шилдами для Ардуино.
Для работы с МК необходимо и запустить Arduino IDE с сайта. В настройках IDE выбрать плату Arduino Mega 2560.
Для работы с Arduino через ROS необходимо установить библиотеку ros_lib: <ros.h>
.
Скачать библиотеку необходимо с вашего робота. Для этого можно воспользоваться утилитой копирования файлов между компьютерами SCP:
Вам необходимо распаковать архив, зайти в распакованную директорию и внутри нее должна находиться папка с названием ros_lib
. Она должна содержать большое количество файлов, необходимых для компиляции программ содержащих вызовы <ros.h>
.
После этого необходимо скопировать папку ros_lib
в папку libraries
, которая находится внутри той директории, куда Arduino IDE сохраняет новые скетчи. Там же должны находиться и те библиотеки, которые вы загружали стандартным способом - через менеджер библиотек Arduino IDE
Но если вы используете собственные сообщения или у вас появляются ошибки при сборке скетчей, вам необходимо "пересобрать" библиотеку ros_lib
самостоятельно с помощью команды (выполнив ее на роботе)
Вызванная утилита rosserial_arduino
соберет новую библиотеку на основе настроек ROS вашего робота и положит ее в корневую директорию пользователя /home/pi/
. Дальше вам надо переписать ros_lib с робота на ваш компьютер и поместить его в директорию библиотек Arduino в соответствии с инструкцией по установке библиотек для Arduino IDE.
Arduino Mega подключена к Raspberry через порт Serial1. Со стороны ROS запущен сервис rosserial
который организует взаимодействие МК и ROS.
Для подключения к ROS со стороны Arduino необходимо инициализировать библиотеку ros_lib <ros.h>
отвечающую за коммуникацию между Arduino и ROS, указав параметры Serial1 и скорость 115200, как показано ниже.
В передней части системной платы робота расположены две кнопки, подключенные к ножкам D24
и D23
МК Arduino и два переключателя, подключенные соответственно к D22
и D25
. При нажатии кнопки или переключателя на пине Arduino будет сигнал HIGH
Для чтения значения необходимо использовать Arduino функцию digitalRead(pin)
С левой стороны системной платы находятся пины D44 D45 D46
, которые можно использовать для подключения сервомашинок.
ВНИМАНИЕ: на сервомашинки подается напряжение 5В от отдельного источника питания! Ни в коем случае нельзя соединять пины питания сервомашинок с пинами питания, выведенными на колодку Ардуино.
Перед лидаром расположены 4 светодиода, подключенные к пинам D26, D27, D28, D29.
для завершения чтения следует нажать Ctrl-A
и затем X
. Скорость и параметры подключения следует указать такими же, как при инициализации Serial в скетче Arduino.
Пример простого скрипта для чтения данных от Arduino:
WS2812
- это три RGB-светодиода и микросхема-драйвер для управления этими светодиодами, собранные в одном SMD корпусе. Корпус каждого светодиода имеет 4 вывода: два вывода данных и два вывода питания. Выводы данных предыдущих светодиодов соединены со входами следующих, создавая цепочку светодиодов, управляемых через один пин микроконтроллера.
Для тестирования работоспособности светодиодной ленты, можно воспользоваться тестовым скетчем
Если есть необходимость удаленно (без доступа к роботу) обновить прошивку Arduino, то это возможно сделать имея только удаленный доступ.
Подготовить скетч к загрузке
В Arduino IDE выбрать МК Arduino/Genuino Mega or Mega 2560
Скомпилировать программу (кнопка Проверить)
В меню выбрать Скетч→Экспорт Бинарного файла
В директории где находиться файл скетча, будут созданы два файла с бинарными данными вида (sketch_mar24a.ino.mega.hex sketch_mar24a.ino.with_bootloader.mega.hex)
Мы должны использовать файл sketch_mar24a.ino.mega.hex
Загрузить бинарный файл на Arduino:
Скопировать файлы .hex
на робота, например командой linux scp
На роботе выполнить команду "прошивки" платы Arduino
Где sketch_mar24a.ino.mega.hex
имя файла с прошивкой.
Для возможности удаленной прошивки платы, необходимо чтобы Arduino разъем на плате Turtlebro был подключен к RaspberryPi через Micro-USB.
Примеры можно посмотреть в официальной документации rosserial
В некоторых случаях необходимо получать данные от встроенного микроконтроллера без применения ROS. Для этого можно применять консольные утилиты типа minicom (). Для чтения данных от Ардуино можно применить следующую команду:
Еще одна возможность для получения данных от Arduino это применении библиотеки Serial языка Python
Под платой расположено 24 RGB светодиода модели WS2812
.
Лента подключена к пину D30
встроенного контроллера Аrduino. Число светодиодов - 24. Для управления светодиодами мы рекомендуем использовать библиотеку FastLed.
Пример управления светодиодной лентой из Аrduino-скетча: