Работа с Arduino
На плате размещен микроконтроллер ATMega 2560 с обвязкой, идентичной плате Arduino Mega. Контроллер поставляется с прошитым бутлоадером Arduino. Таким образом, микроконтроллер полностью готов к запуску скетчей Arduino IDE и работе со стандартными шилдами для Ардуино.
Для работы с МК необходимо скачать и запустить Arduino IDE с сайта arduino.cc. В настройках IDE выбрать плату Arduino Mega 2560.
Библиотека Arduino ros_lib
Для работы с Arduino через ROS необходимо установить библиотеку ros_lib: <ros.h>
.
Скачать библиотеку необходимо с вашего робота. Для этого можно воспользоваться утилитой копирования файлов между компьютерами SCP:
Вам необходимо распаковать архив, зайти в распакованную директорию и внутри нее должна находиться папка с названием ros_lib
. Она должна содержать большое количество файлов, необходимых для компиляции программ содержащих вызовы <ros.h>
.
После этого необходимо скопировать папку ros_lib
в папку libraries
, которая находится внутри той директории, куда Arduino IDE сохраняет новые скетчи. Там же должны находиться и те библиотеки, которые вы загружали стандартным способом - через менеджер библиотек Arduino IDE https://www.arduino.cc/en/guide/libraries
Но если вы используете собственные сообщения или у вас появляются ошибки при сборке скетчей, вам необходимо "пересобрать" библиотеку ros_lib
самостоятельно с помощью команды (выполнив ее на роботе)
Вызванная утилита rosserial_arduino
соберет новую библиотеку на основе настроек ROS вашего робота и положит ее в корневую директорию пользователя /home/pi/
. Дальше вам надо переписать ros_lib с робота на ваш компьютер и поместить его в директорию библиотек Arduino в соответствии с инструкцией по установке библиотек для Arduino IDE.
Взаимодействие с ROS
Arduino Mega подключена к Raspberry через порт Serial1. Со стороны ROS запущен сервис rosserial
который организует взаимодействие МК и ROS.
Для подключения к ROS со стороны Arduino необходимо инициализировать библиотеку ros_lib <ros.h>
отвечающую за коммуникацию между Arduino и ROS, указав параметры Serial1 и скорость 115200, как показано ниже.
Примеры можно посмотреть в официальной документации rosserial http://wiki.ros.org/rosserial_arduino/Tutorials
Дополнительные возможности Arduino
В передней части системной платы робота расположены две кнопки, подключенные к ножкам D24
и D23
МК Arduino и два переключателя, подключенные соответственно к D22
и D25
. При нажатии кнопки или переключателя на пине Arduino будет сигнал HIGH
Для чтения значения необходимо использовать Arduino функцию digitalRead(pin)
С левой стороны системной платы находятся пины D44 D45 D46
, которые можно использовать для подключения сервомашинок.
ВНИМАНИЕ: на сервомашинки подается напряжение 5В от отдельного источника питания! Ни в коем случае нельзя соединять пины питания сервомашинок с пинами питания, выведенными на колодку Ардуино.
Перед лидаром расположены 4 светодиода, подключенные к пинам D26, D27, D28, D29.
Общение с Arduino через Serial
Внимание! Для прямого общения с Arduino необходимо соединить usb-порт Raspberry и microusb порт контроллера кабелем.
В некоторых случаях необходимо получать данные от встроенного микроконтроллера без применения ROS. Для этого можно применять консольные утилиты типа minicom (https://linux.die.net/man/1/minicom). Для чтения данных от Ардуино можно применить следующую команду:
для завершения чтения следует нажать Ctrl-A
и затем X
. Скорость и параметры подключения следует указать такими же, как при инициализации Serial в скетче Arduino.
Еще одна возможность для получения данных от Arduino это применении библиотеки Serial языка Python https://pyserial.readthedocs.io/en/latest/shortintro.html
Пример простого скрипта для чтения данных от Arduino:
Работа со светодиодной лентой
Под платой расположено 24 RGB светодиода модели WS2812
.
https://cdn-shop.adafruit.com/datasheets/WS2812.pdf
WS2812
- это три RGB-светодиода и микросхема-драйвер для управления этими светодиодами, собранные в одном SMD корпусе. Корпус каждого светодиода имеет 4 вывода: два вывода данных и два вывода питания. Выводы данных предыдущих светодиодов соединены со входами следующих, создавая цепочку светодиодов, управляемых через один пин микроконтроллера.
Лента подключена к пину D30
встроенного контроллера Аrduino. Число светодиодов - 24. Для управления светодиодами мы рекомендуем использовать библиотеку FastLed.
https://github.com/FastLED/FastLED
Пример управления светодиодной лентой из Аrduino-скетча: https://randomnerdtutorials.com/guide-for-ws2812b-addressable-rgb-led-strip-with-arduino/ https://github.com/FastLED/FastLED/tree/master/examples
Для тестирования работоспособности светодиодной ленты, можно воспользоваться тестовым скетчем
Удаленная загрузка скетча Arduino
Если есть необходимость удаленно (без доступа к роботу) обновить прошивку 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.
Last updated