Strela: инструкция, примеры использования и документация
Strela — это Arduino-совместимая платформа, разработанная Амперкой и предназначенная для уменьшения времени на постройку роботов и упрощения работы с ними. Она выполнена на основе микроконтроллера ATMega32u4 и обладает большим количеством цифровых и аналоговых входов/выходов, выведенных на трёхштырьковые контакты. Плата содержит DC-DC-преобразователь, позволяет управлять двумя коллекторными моторами постоянного тока до 2 А на один канал с напряжением до 24 В, подключать модули беспроводной связи и LCD-экран.
Краткое руководство по использованию
Плата программируется в Arduino IDE. Для начала работы с платой достаточно выбрать в меню Инструменты → Плата → Arduino Leonardo и соответствующий COM-порт.
Управление GPIO
Часть контактов на платформе Strela относятся к основному микроконтроллеру, а часть — к I²C-расширителю портов ввода-вывода. На аппаратном уровне доступ к этим портам ввода-вывода очень сильно различается, но вы можете не переживать по этому поводу. Для облегчения работы с платой в среде Arduino IDE была создана библиотека Strela. Все примеры будут с этой библиотекой.
Простой пример управления этими контактами:
- StrelaPinOutput.ino
// Подключим библиотеку для работы с I2C-расширителем портов #include <Wire.h> // Подключим библиотеку Strela #include <Strela.h> void setup() { uPinMode(P9, OUTPUT); // это Arduino GPIO. Мы настроим его на выход uPinMode(P10, OUTPUT); // а это — I²C-GPIO. Его мы тоже настроим на выход } void loop() { uDigitalWrite(P9, HIGH); // подадим на P9 высокий уровень uDigitalWrite(P10, HIGH); // подадим на P10 высокий уровень delay(1000); uDigitalWrite(P9, LOW); // подадим на P9 низкий уровень uDigitalWrite(P10, LOW); // подадим на P10 низкий уровень delay(1000); }
Легко можно обнаружить, что разница в управлении контактами Arduino и контактами I²C-расширителей портов отсутствует, если использовать функции uPinMode
, uDigitalWrite
и uDigitalRead
из библиотеки Strela вместо привычных pinMode
, digitalWrite
и digitalRead
. Конечно, можно использовать и привычные функции управления цифровыми контактами, но они будут работать только с Arduino-контактами. Остальные функции для работы с контактами, такие как analogWrite
или analogRead
остаются без изменения и работают только с предназначенными для них Arduino-контактами.
Обратите внимание на обозначение пинов в коде. Вместо привычных цифр, которые используются в Arduino Leonardo, для обозначения номеров контактов используются значения P9 и P10. Это сделано для унификации доступа к контактам с различным способом управления, а также для упорядочивания пинов.
Давайте теперь считаем уровень с ножек:
- StrelaPinInput.ino
// Подключим библиотеку для работы с I2C-расширителем портов #include <Wire.h> // Подключим библиотеку Strela #include <Strela.h> void setup() { uPinMode(P9, INPUT); // это Arduino GPIO. Мы настроим его на вход uPinMode(P10, INPUT); // а это — I²C-GPIO. Его мы тоже настроим на вход Serial.begin(9600); //Подготовим к работе Serial-порт while (!Serial) { // Так как Strela работает на том же контроллере, что и Arduino Leonardo, ; // необходимо дождаться подключения виртуального Serial-порта } } void loop() { Serial.print("P9 - "); //Считаем значение с P9 // и отправим его в последовательный порт Serial.println(uDigitalRead(P9)); Serial.print("P10 - "); //Считаем значение с P10 // и отправим его в последовательный порт Serial.println(uDigitalRead(P10)); delay(500); }
Если посмотреть в терминал, можно увидеть первое отличие — порт P10 будет возвращать 1, а порт P9 — случайное значение. Это происходит потому, что I²C-расширитель портов на своих входах имеет встроенный подтягивающий резистор на 100 кОм. Обычно это нисколько не мешает.
Встроенные кнопки и светодиоды
Работать со встроенными кнопками и светодиодами можно при помощи тех же функций uDigitalRead
и uDigitalWrite
. Так как заранее известно, что светодиоды должны управляться цифровым выходом, а считывать нажатие кнопки нужно с цифрового входа, функция uPinMode
для этих контактов ни к чему не приводит. Их даже не нужно указывать в секции setup
, так как библиотека Strela инициализирует периферию автоматически.
- StrelaBlink.ino
// Подключим библиотеку для работы с I2C-расширителем портов #include <Wire.h> // Подключим библиотеку Strela #include <Strela.h> void setup() { } void loop() { uDigitalWrite(L1, HIGH); // Зажгём перывый светодиод delay(1000); uDigitalWrite(L1, LOW); // И погасим его delay(1000); }
В следующем примере мы будем считывать значение с кнопок и зажигать светодиоды. Будем зажигать светодиод под тем же номером, что и нажатая кнопка.
- StrelaLedsAndButtons.ino
// Подключим библиотеку для работы с I2C-расширителем портов #include <Wire.h> // Подключим библиотеку Strela #include <Strela.h> void setup() { } void loop() { for (byte i = S1; i <= S4; ++i) // Будем проверять состояние кнопок по очереди { byte buttonNumber = i - S1; //Определим номер текущей кнопки bool buttonState = uDigitalRead(i); //Считаем положение кнопки //Подадим считанное значение с кнопки на светодиод с тем же номером uDigitalWrite(L1 + buttonNumber, buttonState); } }
Пищалка
Добавим к предыдущему скетчу звуковое сопровождение:
- StrelaLedsButtonsAndBuzzer.ino
// Подключим библиотеку для работы с I2C-расширителем портов #include <Wire.h> // Подключим библиотеку Strela #include <Strela.h> void setup() { } void loop() { for (byte i = S1; i <= S4; ++i) // Будем проверять состояние кнопок по очереди { byte buttonNumber = i - S1; //Определим номер текущей кнопки bool buttonState = uDigitalRead(i); //Считаем положение кнопки if (buttonState) //Если она была нажата... tone(BUZZER, 1000, 50); //...пикнем пищалкой с частотой 1000 Гц, 50 мс //Подадим считанное значение с кнопки на светодиод с тем же номером uDigitalWrite(L1 + buttonNumber, buttonState); } }
Управление коллекторными двигателями
Теперь перейдём к работе с двигателями. О характеристиках рекомендуемых двигателей и источников питания можете прочитать в разделе «Силовая часть».
- StrelaMotors.ino
// Подключим библиотеку для работы с I2C-расширителем портов #include <Wire.h> // Подключим библиотеку Strela #include <Strela.h> void setup() { motorConnection(1, 0);// Я неправильно прикрутил один мотор //поэтому, чтобы их не перекручивать //можно воспользоваться этой функцией. //Направление вращения мотора 1 будет изменено. } void loop() { //Моторы управляются функцией drive(int m1, int m2). //m1 (m2) - это скорость вращения мотора 1 (2). //Скорость регулируется в пределах от -255 до 255 //Если это число положительное - мотор будет вращаться вперёд, //если отрицательное - назад. //Фаза 1 uDigitalWrite(L1, HIGH); // Зажгли светодиод 1 drive(127, 127); //Средний ход вперёд delay(2000); // в течении 2 секунд. //Фаза 2 uDigitalWrite(L2, HIGH); // Зажгли светодиод 2 drive(127, 0); //Поворот на право delay(1000); // в течении 1 секунды //Фаза 3 uDigitalWrite(L3, HIGH); // Зажгли светодиод 3 drive(-255, -255); //Полный назад delay(1000); // в течении 1 секунды //Фаза 4 uDigitalWrite(L4, HIGH); // Зажгли светодиод 4 for (int i = 0; i <= 255; ++i) { drive(i, -i); //Разворот на месте с ускорением delay(1); } //Фаза 5 drive(0, 0); //Стоп for (int i = L1; i <= L4; i++) { uDigitalWrite(i, LOW); // Гасим все светодиоды } // Всё, приехали while (true) ; }
Управление шаговым двигателем
- StrelaStepper.ino
// Подключим библиотеку для работы с I2C-расширителем портов #include <Wire.h> // Подключим библиотеку Strela #include <Strela.h> void setup() { } void loop() { // Шаговый двигатель управляется при помощи // функции stepperMotor(int stepsToMove, int stepDelay); // stepsToMove — это количество шагов которые должен // сделать шаговый двигатель. // Если это число положительное — мотор крутится в одну сторону, // если отрицательное - в другую. // stepDelay — это пауза между шагами в миллисекундах. // От этой величины зависит скорость вращения мотора. // Чем больше пауза, тем медленнее вращается мотор // Функция stepperMotor() управляет врщением мотора только в // полушаговом режиме. В этом режиме шаговый двигатель // развивает наибольшую мощность и точность позиционирования. // Быстро шагаем 200 раз вперёд stepperMotor(200, 5); // Медленно шагаем 200 раз назад. // Мотор вернётся в исходное положение stepperMotor(-200, 10); }
Жидкокристаллический дисплей
Подключим к плате LCD-экран MT-08S2A. Управлять мы им будем при помощи библиотеки LiquidCrystal_I2C. Мы уже добавили гарантированно работающую версию этой библиотеки в папку с библиотекой Strela, поэтому отдельно её устанавливать не нужно.
- StrelaLiquidCrystal.ino
// Подключим библиотеку для работы с I2C-расширителем портов #include <Wire.h> // Подключим библиотеку Strela #include <Strela.h> // Подключим библиотеку для работы с LCD-эраном через I2C #include <LiquidCrystal_I2C.h> // Создадим объект lcd, который будет выводить текст на экран LiquidCrystal_I2C lcd(LC_ADDR, LCEN, LCRW, LCRS, LC4, LC5, LC6, LC7); void setup() { //Инициализация экрана. У нашего экрана 8 символов 2 строки lcd.begin(8, 2); //Переместим курсор в начало первой стройки (символ 0, строка 0) lcd.home(); //Печатаем строку lcd.print("Hello"); //Переместим строку в начало второй строки (символ 0, строка 1) lcd.setCursor(0, 1); //Печатаем строку lcd.print("World!"); //Пауза, чтобы успеть насладиться результатом delay(2000); } void loop() { // Далее будем просто выводить время прошедшее со старта скетча //Очищаем экран lcd.clear(); // выставляем курсор в положение 0, 0 lcd.home(); // Пишем первую строку lcd.print("Uptime:"); // переместим курсор в начало второй строки lcd.setCursor(0, 1); // узнаем время прошедшее со старта скетча в миллисекундах unsigned long time = millis(); // и выведем его на экран lcd.print(time); //Пауза, чтобы успеть насладиться результатом delay(500); }
Управление через ИК приемник
Одним из самых простых способов управления роботом, является управление инфракрасный пультом. Подключите ИК приемник в специальный разъем. Для работы С ИК приемником мы изменили библиотеку IRremote, скачать которую можно здесь irremote.zip
- StrelaIRreciver.ino
// бибилиотека для работы со стрелой #include <Strela.h> // бибилиотека для ИК приёмника #include <IRremote.h> // даем имя пину подключения ИК приёмника int RECV_PIN = P12; // даем имя пину на котором расположен встроенный светодиод int LED_PIN = L1; // указываем к какому пину подключен ИК приёмник IRrecv irrecv(RECV_PIN); decode_results results; void setup() { // инициируем открытие сериал порта и указываем его скорость Serial.begin(9600); // запускаем работу ИК приемника irrecv.enableIRIn(); } void loop() { // принимаем данные с ИК пульта if (irrecv.decode(&results)) { // выводим данные в сериал монитор в 16-тиричной системе Serial.println(results.value, HEX); // код нашей кнопки "вкл" "1689D02F" // У вас он будет дугой // проверяем совпадают ли данные с пульта с данными, // которые передает пульт при нажатии нашей кнопки // перед строкой данных соответствующих кнопкам // ставится 0х , что обозначает 16-тиричную систему исчислений if (results.value == 0x1689D02F) { // если совпадают- включаем светодиод uDigitalWrite(LED_PIN, HIGH); } // если ИК приемник получает данные соответствующие // нажатию другой нашей кнопки на пульте- выключаем светодиод if (results.value == 0x1689E01F) { uDigitalWrite(LED_PIN, LOW); } // ждем следующее значение irrecv.resume(); } //делаем задержку delay(100); }
Управление роботом с мобильного телефона через Bluetooth-модуль
Подключим к плате Bluetooth Bee. Будем управлять нашим роботом дистанционно с помощью мобильного телефона на ОС Android.
Для Android существует огромное количество приложений, при помощи которых можно управлять Arduino при помощи Bluetooth. В данном случае для управления Strela мы использовали Arduino Bluetooth RC Car.
- ArduinoBluetoothRCCarOnStrela.ino
//Arduino Bluetooth RC Car in Strela //Original App: //https://play.google.com/store/apps/details?id=braulio.calle.bluetoothRCcontroller #include <Wire.h> // Библиотека для работы с I2C #include <Strela.h> // Библиотека для работы со Стрелой int velocity = 0; //Здесь будет храниться значение скорости int defaultSpeed = 100; // это число мы будем использовать в логике поворотов void setup() { Serial1.begin(9600); //Bluetooth Bee по умолчанию использует эту скорость motorConnection(1, 0); // Я неправильно прикрутил один мотор //поэтому, чтобы их не перекручивать //можно воспользоваться этой функцией. //Направление вращения мотора 1 будет изменено. } void loop() { if (Serial1.available() > 0) //Если появились новые команды { control(); //вызываем функцию управления } //Здесь можно написать ещё много своего кода } void control() // функция управления { char dataIn = Serial1.read(); //Считаем значение пришедшей команды if (dataIn == 'F') //Если пришла команда "F" drive(velocity, velocity); //едем вперёд else if (dataIn == 'B') //или если пришла команда "B" drive(-velocity, -velocity); //едем назад else if (dataIn == 'L') //или если пришла команда "L" drive(-velocity, velocity); //поворачиваем налево на месте else if (dataIn == 'R') //или если пришла команда "R" drive(velocity, -velocity); //поворачиваем направо на месте else if (dataIn == 'I') //или если пришла команда "I", едем вперёд и направо drive(defaultSpeed + velocity, defaultSpeed - velocity); else if (dataIn == 'J') //или если пришла команда "J", едем назад и направо drive(-defaultSpeed - velocity, -defaultSpeed + velocity); else if (dataIn == 'G') //или если пришла команда "I", едем вперёд и налево drive(defaultSpeed - velocity, defaultSpeed + velocity); else if (dataIn == 'H') //или если пришла команда "H", едем назад и налево drive(-defaultSpeed + velocity, -defaultSpeed - velocity); else if (dataIn == 'S') //или если пришла команда "S", стоим drive(0, 0); else if (dataIn == 'U') //или если "U", зажигаем "передние фары" { uDigitalWrite(L2, HIGH); uDigitalWrite(L3, HIGH); } else if (dataIn == 'u') //или если "u", гасим "передние фары" { uDigitalWrite(L2, LOW); uDigitalWrite(L3, LOW); } else if (dataIn == 'W') //или если "W", зажигаем "задние фары" { uDigitalWrite(L1, HIGH); uDigitalWrite(L4, HIGH); } else if (dataIn == 'w') ////или если "w", гасим "задние фары" { uDigitalWrite(L1, LOW); uDigitalWrite(L4, LOW); } // если к нам пришло значение от 0 до 9 else if (((dataIn - '0') >= 0) && ((dataIn - '0') <= 9)) velocity = (dataIn - '0') * 25; //сохраняем новое значение скорости else if (dataIn == 'q') //если "q" - полный газ! velocity = 255; }
Вот что из этого получилось:
Элементы платы
Теперь рассмотрим подробнее все компоненты и разъёмы, которые можно встретить на плате с точки зрения схемотехники.
Микроконтроллер ATmega32u4
В плате использован микроконтроллер ATMega32u4 с прошитым загрузчиком Arduino Leonardo. Микроконтроллер программируется через USB-порт в Arduino IDE. Работая с платой в Arduino IDE, необходимо выбирать плату Arduino Leonardo.
Контакты для управления мощной нагрузкой
Контакты питания пинов P1–P4 соединены короткими и широкими контактными дорожками с DC–DC преобразователем. Это позволяет подключать к этим контактам достаточно мощную нагрузку, например сервоприводы. Так же они подходят для подключения цифровых сенсоров.
Контакты для аналоговых датчиков
Пины P4-P9, а так же P11 и P12 могут быть использованы не только как цифровые входы/выходы. Они так же подходят для подключения сенсоров с аналоговым сигналом.
Соответствие контактов Strela и Arduino Leonardo
Strela | Arduino Leonardo | Доступные функции |
---|---|---|
P1 | 11 | Цифровой вход/выход, ШИМ. |
P2 | 13 | Цифровой вход/выход, ШИМ. |
P3 | 5 | Цифровой вход/выход, ШИМ. |
P4 | 6, A7 | Цифровой вход/выход, ШИМ, аналоговый вход. |
P5 | A3 | Цифровой вход/выход, аналоговый вход. |
P6 | A2 | Цифровой вход/выход, аналоговый вход. |
P7 | A1 | Цифровой вход/выход, аналоговый вход. |
P8 | A0 | Цифровой вход/выход, аналоговый вход. |
P9 | 8, A8 | Цифровой вход/выход, аналоговый вход. |
P11 | A4 | Цифровой вход/выход, аналоговый вход. |
P12 (IR) | A5 | Цифровой вход/выход, аналоговый вход. Strela использует этот же контакт как вход для ИК-приёмника. Управление с бытового ИК-пульта управления возможно с помощью библиотеки IRremote. |
Контакты специального назначения
Некоторые стандартные контакты имеют специальное назначение, поскольку именно они управляют установленным на Strela оборудованием, или отвечают за коммуникацию.
Контакты Arduino Leonardo | Конфигурация | Функция |
---|---|---|
12 | OUTPUT | Пищалка — встроенный пьезодинамик, который воспроизвоидт звук с помощью стандартной функции tone(). |
7 | INPUT | Этот контакт подключён к I2С-расширителям портов, для обнаружения изменения напряжения на их входах. Этот контакт можно использовать для прерывания основной программы по изменению уровня. |
9 | OUTPUT | Подключён к драйверу двигателей. Используется для задания скорости вращения мотора М1 при помощи ШИМ. |
10 | OUTPUT | Подключён к драйверу двигателей. Используется для задания скорости вращения мотора М2 при помощи ШИМ. |
4 | OUTPUT | Подключён к драйверу двигателей. Используется для задания направления вращения мотора М1. |
~ (PE2) | OUTPUT | Подключён к драйверу двигателей. Используется для задания направления вращения мотора М2. |
Коммуникация
Порт связи | Контакты Arduino Leonardo | Функция | Использование |
---|---|---|---|
Serial | 0, 1 | RX, TX | Используется для связи по последовательному протоколу с модулем беспроводной связи, если он подключён, или с другими устройствами. Программно передача происходит с помощью Serial1. Если в вашем проекте не используются устройства с последовательным протоколом, эти контакты могут быть использованы как обычные цифровые пины. |
SPI | 14, 15, 16 | MISO, SCK, MOSI | SPI-порт доступен на колодке ICSP . Используется для связи по протоколу SPI. Передача данных происходит с помощью библиотеки SPI. Если в вашем проекте не используются периферийные устройства с подключением по SPI, эти контакты могут быть использованы как обычные цифровые пины. Контактная колодка ICSP может использоваться для программирования платы с помощью программатора. |
I2С(TWI) | 2, 3 | SDA, SCL | Используются для коммуникации по шине I2С. По этим пинам управляются встроенные I2С-расширители портов, поэтому использовать их в других целях не получится. К ним может быть подключено и другое оборудование, управляемое по I2С. Передача данных происходит с помощью библиотеки Wire. |
USB | USB-разъём тип B | Виртуальный Serial-порт | Используется для прошивки платы из Arduino IDE и связи по последовательному протоколу с компьютером. Программно передача происходит с помощью Serial. |
Площадка для подключения модулей беспроводной связи
На плате присутствует площадка для подключения модулей беспроводной связи формата XBee. Это могут быть модули для связи по протоколу XBee, Bluetooth или Wi-Fi.
На площадке установлен линейный регулятор напряжения на 3,3 В. Ведь именно это напряжение является традиционным для XBee-модулей. Общение между модулем беспроводной связи и платой происходит
через последовательный интерфейс. При написании кода этот последовательный интерфейс доступен через объект Serial1
.
При необходимости модули XBee могут перезагружать микроконтроллер ATmega32u4, выставляя на контакте 12 площадки логическую единицу.
Сброс
На плате присутствует переключатель, который бывает полезен при отладке или при подготовке к старту на соревнованиях. В положении «RESET» контакт Reset микроконтроллера замыкается на землю. В таком положении на микроконтроллер подано напряжение, но он не работает. Чтобы запустить микроконтроллер необходимо перевести рычажок в положение «ON».
Силовая часть
Питание
Клеммники под винт для подключения питания на плате обозначены как PWR. К ним подключается источник питания, который будет использоваться для питания моторов. Напряжение питания должно быть в пределах 7–24 В постоянного тока.
Внимание!
При подключении питания соблюдайте полярность. Неправильное подключение может привести к непредсказуемому поведению или выходу из строя платы или источника питания.
На плате три контура питания.
- Первый — силовой, напряжение на который приходит с клеммника PWR. От этого контура запитана микросхема H-моста L298P, моторы и DC-DC-преобразователь LM2596-5.0.
Важно!
Не все источники питания подходят для работы с моторами.
Для корректной работы DC-DC преобразователя источники питания должны быть способны обеспечить напряжение выше 7 В при резких скачках нагрузки или при включении моторов на полную мощность. Если источник питания не рассчитан на мощность, необходимую двигателям, просадка напряжения при росте нагрузки ниже 7 В может привести к перезагрузке управляющего контроллера, и связанным с этим неадекватным поведением платы. Этому требованию соответствуют только литий-ионные и никель-металлгидридные аккумуляторы, или блоки питания необходимой мощности.
Поэтому питать робота от обычной "Кроны" не стоит.
- Источником напряжения для второго контура питания может быть DC-DC преобразователь или USB. Это контур управления. Напряжение в этом контуре — 5 В. От него запитаны микроконтроллер, I2С-расширители, логика H-моста и преобразователь напряжения на 3,3 В для питания модулей беспроводной связи. Это же напряжение подано на все трёхштырьковые контакты. Напряжение в 5 В может быть подано как с USB, так и с клеммника PWR. При этом при подключении по USB будет работать только контур управления, напряжение на H-мосту будет недостаточным для работы двигателей. При одновременном подключении платы по USB и через колодки PWR питание будет подаваться только от PWR.
- Третий контур питания используется для питания модуля беспроводной связи и его обвязки через площадку для подключения модулей связи. Напряжение питания в этом контуре — 3,3 В.
Клеммники для подключения двигателей
Клеммники под винт для подключения нагрузки на плате обозначены как -М1+ -М2+.
Нагрузка разделена на 2 канала. Первый канал на плате имеет обозначение «М1», второй канал имеет обозначение «М2». Каждый канал управляется независимо.
Обозначения «+» и «-» показывают воображаемые начало и конец обмотки: если подключить два коллекторных двигателя таким образом, чтобы их одноимённые контакты щёточного узла соответствовали одному и тому же обозначению на плате, то, при подаче на H-мост L298P одинаковых управляющих импульсов, моторы будут вращаться в одну и ту же сторону.
Характеристики драйвера двигателей L298p
Параметр | Мин. | Макс. | Ед. изм. |
---|---|---|---|
Напряжение питания двигателей | 7 | 24 | В |
Продолжительный ток на канал * | — | 2 | А |
Пиковый прерывистый ток на канал (80% включение, до 10 мс) | — | 2,5 | А |
Пиковый непрерывный ток на канал (до 100 мкс) | — | 3 | А |
* для достижения максимума необходимо дополнительное охлаждение чипа L298P
Характеристики DC-DC преобразователя LM2596-5.0
Параметр | Мин. | Номинал. | Макс. | Ед. изм. |
---|---|---|---|---|
Напряжение питания силовой части | 7 | — | 24 | В |
Выходное напряжение | 4,75 | 5 | 5,25 | В |
Ток нагрузки | — | — | 3 | А |
Расширители портов ввода-вывода
На плате установлены два I2С-расширителя портов ввода-вывода PCA9554.
Адрес | Функция |
---|---|
0×20 | Управление светодиодами L1-L4, получение информации о нажатии кнопок S1-S4. |
0×21 | Управление контактом P10 и LCD-экраном MT-08S2A при помощи библиотеки LiquidCrystal_I2C. Если LCD-экран не используется, можно использовать свободные контакты как дополнительные порты ввода-вывода. |
Характеристики I²С-расширителей портов ввода-вывода PCA9554
Параметр | Номинал. | Ед. изм. |
---|---|---|
Напряжение питания | 5 | В |
Максимальный входной ток одного контакта | 20 | мА |
Максимальный выходной ток одного контакта | 50 | мА |
Максимальный ток через контакты питания | 85 | мА |
Индикация
Индикация питания платы
При правильном подключении питания через клеммник PWR, загорается светодиод индикации питания. Если полярность питания перепутана, или питание по какой-то причине не подано, светодиод гореть не будет.
Из-за большой ёмкости фильтрующего конденсатора, установленного на плате, светодиод индикации питания в некоторых случаях может кратковременно продолжать гореть и после отключения питания. Этот светодиод может тускло гореть при питании платы от USB.
Индикация питания микроконтроллера
Индикатор питания микроконтроллера горит, если на микроконтроллер ATmega32u4 подано напряжение.
Индикация направления и скорости вращения двигателей
При высоком логическом уровне на пине управления направлением вращения, т.е. вращении вперёд, индикатор светится зелёным светом. При этом полярность напряжения на клеммниках для подключения двигателей соответствует обозначению «+» и «-» на плате. При низком уровне, т.е. при реверсе светодиод светится красным цветом. Яркость свечения светодиодов зависит от скорости вращения соответствующих моторов — чем выше скорость, тем ярче светится светодиод.
Индикатор передачи данных по USB
Светодиоды RX и TX светятся во время передачи данных через виртуальный последовательный интерфейс. При получении данных светится зелёный светодиод RX, при передаче — красный светодиод TX.
Индикаторы передачи данных через беспроводной модуль
- RSSI — индикатор мощности сигнала XBee-модулей. Чем ярче горит индикатор, тем больше мощность сигнала принимаемого XBee-модулем. Этот светодиод выполняет свою функцию только с модулями XBee.
- ASC — индикатор подключения к сети XBee-модулей. Если модуль не подключён, светодиод постоянно горит. Светодиод мигает при подключении к сети. Частота мигания зависит от роли модуля. Подробнее можно узнать из технического описания XBee.
Размеры платы
Ссылки
- Платформа Strela в магазине.