Учимся программировать mBot Ranger учебный конструктор от Makeblock

Учимся программировать mBot Ranger  учебный конструктор от Makeblock


Платформа Makeblock содержит все виды механических частей и электроники для создания роботов. Makeblock продает этих роботов как часть их образовательной платформы STEM. А с помощью языка Scratch дети могут приобрести базовые навыки программирования. Микроконтроллеры, используемые в этих роботах, полностью совместимы с Arduino. Это позволяет легко расширять их всеми компонентами.

Это Учебное пособие посвящено использованию роботов Makeblock в среде программирования Arduino. Это логичный выбор для тех, кто перерос программирование с помощью Scratch.

Урок начинается с разных плат Makeblock: mCore и Auriga. И объясняет связь между номерами портов Makeblock и выводами Arduino.

Следующая часть содержит простые программы для использования датчиков и светодиодов Makeblock. Представлена библиотека Makeblock в сочетании со средой программирования Arduino.

Затем этот инструктивный материал описывает используемые разъемы и кабели RJ25. И объясняет, как подключить компоненты к системным платам Makeblock. В том числе как программировать эти компоненты.

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

Некоторые из этих датчиков также могут использоваться в языке программирования Scratch.




Мы назвали этот учебный курс «Advanced Makeblock Sensors». Речь идет о программировании Arduino в сочетании с внутренними аппаратными компонентами. Первые примеры очень простые (мигающий светодиод), но в примерах есть определенный порядок. Каждый пример идет немного дальше, чем предыдущий.

Кольцо NeoPixel оказалось самым полезным компонентом DIY. Он ведет себя как обычный компонент Makeblock и может использоваться в любой среде программирования. Мы сделали два NeoPixel, которые теперь служат «глазами» робота.






Шаг 1: Запчасти












В этом учебном пособии используются следующие детали Makeblock:



Используются следующие датчики и дисплеи Adruino:


Провод RJ25-Dupont можно использовать для подключения всех видов датчиков и дисплеев Arduino к роботу Makeblock.




Шаг 2: Инструменты программирования








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

Первый способ - приложение на планшете (Android и iOS). Приложение содержит ряд уроков по обучению основам скрэтча. Это делается с помощью графического программирования через игры. Также возможно создавать небольшие программы со скрэтчем.

Следующим шагом является программное обеспечение mBlock (Windows, Mac OS и Chrome OS). Это тот же графический язык программирования, который используется в приложении. Программа Scratch переведена в эскиз Arduino. Который должен быть загружен на материнскую плату с помощью USB-кабеля. На сайте Makeblock есть примеры и уроки, с которых можно начать.

Последний и продвинутый этап - среда программирования Arduino с использованием библиотек Makeblock. Эта среда использует производный язык программирования Arduino C. Требуется скачать библиотеки Makeblock с Github .
Плата Auriga полностью совместима с Arduino Mega, а плата mCore совместима с Arduino Uno. В результате, конструкторы не ограничены частями Makeblock. Также возможно использование частей Adafruit , включая использование их программных библиотек. Этот метод дает полную свободу программирования микроконтроллера.


Основным преимуществом деталей Makeblock по сравнению с деталями Adafruit являются разъемы. Не надо паять, и все работает с такими же проводами. Кроме того, все драйверы Makeblock находятся в одной библиотеке.




Шаг 3: Библиотека Makeblock








Это инструкция о работе с различными частями Makeblock. Имеется много документации, доступной на их сайте.

Использование программатора Arduino с Makeblock требует использования библиотеки программного обеспечения. Эта библиотека содержит все функции для доступа к различным датчикам. Makeblock-библиотеки можно скачать с Github .

Библиотека Makeblock содержит много примеров . Они должны быть адаптированы к типу платы (MeAuriga, MeMCore). После этого они покажут, насколько легко можно использовать оборудование.


Пример класса библиотеки

Следующий список содержит все открытые функции для класса MeBuzzer.




MeBuzzer ()
      MeBuzzer (порт uint8_t)
      MeBuzzer (порт uint8_t, слот uint8_t)
пустое задание (int pin)
Пустой тон (int pin, частота uint16_t, длительность uint32_t)
пустой звук (частота uint16_t, длительность uint32_t = 0)  
void noTone (int pin)
void noTone ()



Класс содержит 4 функции:


MeBuzzer, setpin, tone и noTone.


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


Каждая функция имеет свое значение:


  • MeBuzzer-функция используется для создания объекта зуммера. Он принимает номер порта RJ25 (PORT_n) и, опционально, номер слота (каждый порт RJ25 имеет 2 слота для подключения датчика).
  • Функция setpin может быть использована для подключения датчика к контакту Arduino.
  • Функция тона заставляет зуммер издавать звук. Это требует частоты и продолжительности.
  • Функция noTone останавливает весь звук.



Пример Arduino Sketch


В следующем примере программы показаны почти все части эскиза arduino:




// (1) Выберите библиотеку Makeblock для вашей доски:
#include <MeAuriga.h> // <MeMCore.h>

// (2) Константы и переменные: 
#define BUZZER_PORT 45
Int расстояние;

// (3) Создать объекты для датчиков: 
MeUltrasonicSensor ultra (PORT_6); 
Зуммер MeBuzzer;

// (4) Поместите ваш установочный код здесь, чтобы запустить один раз:
void setup ()
{
  buzzer.setpin (BUZZER_PORT); // Зуммер не имеет разъема RJ25.
  buzzer.noTone ();
}

// (5) Поместите ваш основной код здесь, чтобы запустить повторно:
void loop ()
{
  // Измеряем расстояние в сантиметрах
  расстояние = ultra.distanceCm (); // от 0 до 400 см

  // Воспроизвести 3 тона, длительность зависит от расстояния.
  зуммер.тон (587, расстояние * 2); // D5
  зуммер.тон (659, расстояние * 2); // E5
  тональный сигнал зуммера (523, расстояние * 2); // C5       

  задержки (100);
}






Далее в этом руководстве приведены дополнительные примеры использования библиотеки. Есть также много примеров в библиотеке Makeblock .






Шаг 4: Arduino IDE





Программное обеспечение Arduino можно загрузить с веб-сайта Arduino . Запустите установщик и установите все компоненты.

Загрузите библиотеку Makeblock с Github. Прочитайте раздел «Как использовать» для установки библиотеки. Или просто скопируйте папку makeblock в вашу папку библиотеки по умолчанию для arduino.





Шаг 5: MCore Материнская плата










Плата mCore основана на Arduino Uno. Основными отличиями являются дополнительные бортовые модули:



  • Зуммер
  • Световой датчик
  • кнопка
  • Два светодиода WS2812
  • Два ШИМ-контроллера
  • ИК-приемник
  • ИК-излучатель
  • Синий светодиод
  • Модуль голубого зуба
  • Четыре цветных разъема RJ25

Это обеспечивает простой способ начать обучение программированию. Нет необходимости создавать электрические цепи, все датчики присутствуют или легко подключаются с помощью разъемов RJ25.


Чтобы использовать mCore со средой программирования Arduino, необходимо определить номера портов. Порты определены внутри библиотеки Makeblock. И файл MeCore.h показывает все определения портов:




MePort_Sig mePort [17] =
{
  {NC, NC}, {11, 12}, {9, 10}, {A2, A3}, {A0, A1},
  {NC, NC}, {8, A6}, {A7, 13}, {8, A6}, {6, 7},
  {5, 4}, {NC, NC}, {NC, NC}, {NC, NC}, {NC, NC},
  {NC, NC}, {NC, NC},
};





Порты хранятся в массиве с 17 записями. И каждый порт представляет собой набор из двух выводов Arduino. Этот массив и электронная схема ( mCore.pdf ) дают следующий список:




Порт_1 {11, 12} = порт 1 RJ25
Порт_2 {9, 10} = порт RJ25 2
Порт_3 {A2, A3} = порт 3 RJ25
Порт_4 {A0, A1} = порт 4 RJ25
Port_5 {NC, NC} (не подключен)
Порт_6 {8, A6} = зуммер, датчик освещенности
Port_7 {A7, 13} = кнопка, два светодиода WS2812
Port_8 {8, A6} = зуммер, датчик освещенности
Port_9 {6, 7} = ШИМ-мотор 2, DIR-мотор 2
Port_10 {5, 4} = ШИМ-мотор 1, DIR-мотор 1




Порты mCore 6 и 8 имеют одинаковое определение.

Следующие датчики не имеют номера порта, определенного в библиотеке. Их можно использовать, используя номер булавки Arduino:





2 = ИК-приемник
3 = светодиод ИК-излучателя
5 = датчик освещенности
13 = синий светодиод




Четыре разъема mCore RJ25 имеют разные цвета. Датчики Makeblock также имеют один или несколько цветов. Эти цвета должны совпадать при подключении датчика к порту.

Порты mCore имеют четыре возможных цвета, которые указывают различные типы датчиков, которые могут использоваться:


  1. Черный: один аналоговый порт или два аналоговых порта.
  2. Синий: два цифровых порта.
  3. Желтый: одиночный цифровой порт.
  4. Белый: Порт I2C

Датчики с черной меткой не могут использоваться с портами 1 и 2. Контакты Arduino для этих портов являются только цифровыми (9, 10, 11 и 12). И они не могут обрабатывать аналоговые сигналы от датчиков с черной меткой.



Между портами 1 и 2 есть небольшая разница. Порты 3, 5, 6, 9, 10 и 11 arduino являются шинами PWM, а контакт 12 - нет.







Шаг 6: материнская плата Auriga



















схема электрическая принципиальная Auriga



Auriga доска последняя доска Makeblock. Это обновленная версия платы Orion. И можно сравнить с Arduino Mega / 2560. Как и в mCore, у Auriga есть несколько дополнительных функций:



  • Датчик температуры
  • Звуковой датчик
  • гироскоп
  • Пассивный зуммер
  • Два драйвера мотора энкодера
  • Два световых датчика
  • Синий светодиод
  • WS1282 светодиодное кольцо
  • Разъемы RJ25 с цветовой маркировкой
  • Модуль Bluetooth

Использование программного обеспечения Arduino с Auriga требует определения номеров портов. Они определены внутри библиотеки Makeblock. MeAuriga.h файл содержит массив , который определяет все порты. Каждый порт Makeblock подключен к двум контактам Arduino. Эти контакты обозначены как slot1 и slot2.




MePort_Sig mePort [15] =
 {
Порт 0 {NC, NC} Не подключен
Порт 1 {5, 4} красный
Порт 2 {3, 2} красный
Порт 3 {7, 6} красный
Порт 4 {9, 8} красный
Порт 5 {16, 17} серый
Порт 6 {A10, A15} универсальный
Порт 7 {A9, A14} универсальный 
Порт 8 {A8, A13} универсальный
Порт 9 {A7, A12} универсальный
Порт 10 {A6, A11} универсальный 
Порт 11 {NC, A2} датчик освещенности 1
Порт 12 {NC, A3} датчик освещенности 2
Порт 13 {NC, A0} датчик температуры
Порт 14 {NC, A1} звуковой датчик
 }





Универсальный порт 6 подключен к аналоговому порту 10 и аналоговому порту 15 микроконтроллера.

Не все выводы определены в этом массиве. Эти части доступны с помощью номеров контактов Arduino:




44 = 12 х светодиодов ws12812
45 = зуммер
13 = синий светодиод





Хотя драйверы двигателей доступны через библиотеку, может быть полезно узнать номера портов:




ENA A = контакт 19
ENA B = контакт 42
PWMA = контакт 11
DIR A2 = контакт 49
DIR A1 = контакт 48

ENB A = контакт 18
ENB B = контакт 43
ШИМ = контакт 10
DIR B1 = контакт 47
DIR B2 = контакт 46





Хотя это много информации, это не означает, что программирование компонентов Makeblock затруднено. Особенно важно знать, какая часть подключена к какому порту. Это указывается один раз при определении объекта. После этого эта информация больше не нужна.


На этой плате имеется серво-порт (контакты Arduino D16 / TX2 и D17 / RX2). Но это покрыто платой расширения.








Шаг 7: Эскиз: светодиоды







Первый пример эскиза очень прост. Он управляет двумя светодиодами на плате Auriga. Это маленькие красные и синие светодиоды, расположенные рядом с разъемом USB. Мы не нашли никаких ссылок на эти светодиоды в библиотеке Makeblock. И это требует использования функций порта Arduino по умолчанию для программирования этих светодиодов.

Первое действие - определить, какие порты подключены к этим индикаторам. Это требует электронного расписания . Это графическое представление всех электронных компонентов. Два светодиода перечислены в разделе updates 更新 & 无线 遥控 (обновления программы и беспроводной пульт дистанционного управления). Они подключены к портам D0 / RX0 и D1 / TX0 микроконтроллера MEGA2560. Основное использование этих светодиодов - визуализация последовательной связи через эти порты.Для этого потребуется электрическая принципиальная схема, показанная выше.

Аноды светодиодов подключены на +5 Вольт. И светодиод включается, когда соответствующее значение порта подключается к земле. Это равносильно цифровому значению LOW.

Следующий эскиз заставляет светодиоды мигать .:





// Auriga Board

int BlueLed = 0;
int RedLed = 1;

void setup ()
{
  pinMode (BlueLed, OUTPUT);
  pinMode (RedLed, OUTPUT);
}

void loop ()
{
  digitalWrite (BlueLed, LOW);
  digitalWrite (RedLed, HIGH);
  задержка (1000);
  digitalWrite (BlueLed, HIGH);
  digitalWrite (RedLed, LOW);
  задержка (1000);
}






Каждый эскиз Arduino требует 2 функции типа void: настройка и цикл. Метод настройки запускается один раз после включения Arduino. Здесь вы должны выполнить любые шаги инициализации. Метод цикла запускается непрерывно после этого. Это место для всего кода, который вы хотите запускать снова и снова. Требуемые переменные объявлены выше метода установки.


Порты D0 / RX0 и D1 / TX0 также подключены к модулям BLE (Bluetooth с низким энергопотреблением) и UART (универсальный асинхронный приемник / передатчик). Непосредственное управление светодиодами нарушит использование этих модулей. Причина этому не включение этих светодиодов в библиотеку.





Написать:
19:51
2433
Нет комментариев. Ваш будет первым!