Цена:
Модуль расширения USB Host Shield 2.0
Модуль расширения Host Shield 2.0 способен помочь контроллерным платам семейства xDuino, изначально не располагающими собственной возможностью подключать дополнительные периферийные устройства через разъём USB, в организации полнофункционального USB-хост контроллера стандарта USB 2.0. Несомненно, сейчас уже разработаны и выпущены платы с аналогичными интегрированными возможностями, просто подключай USB-устройство и пользуйся. Что же касается таких ранних моделей Arduino, как UNO, MEGA, Teensy, NANO или даже PRO MINI, не оснащенных столь удобным аппаратным функционалом, то их абсолютно точно не стоит списывать со счетов. Воспользовавшись платой расширения USB Host Shield 2.0, вы сможет привнеси в ваши проекты значительно бóльшие возможности и интересные функции, позволив разрабатываемым конструкциям взаимодействовать с популярными на сегодняшний день USB-устройствами: проводными и беспроводными клавиатурами, мышками, джойстиками, а также: флешками, жёсткими дисками и многими другими. В добавок ко всему, реализована возможность "общаться" с Android-устройствами (смартфоны с версией Android 2.3.4+ и планшеты с версией Android 3.1+).
Модуль собран на микросхеме MAX3421E, содержащую в себе цифровую логику и аналоговые схемы, способную работать в режиме "хост", позволяя вашей Arduino принимать информацию через USB-порт от другого устройства. Хост полностью совместим с высокоскоростными (12 Мб/с) и с низкоскоростными (1,5 Мб/с) периферийными USB-устройствами. Размер платы в точности повторяет мегапопулярную UNO - родоначальницу всего семейства Arduino. Тем не менее, модуль довольно просто устанавливается на все версии MEGA, Leonardo и другие полноразмерные платы с идентичными расположениями коммутационных выводов. Для плат с меньшими размеры потребуется несложное проводное соединение.
Обзор платы
- Выбор питания - две перемычки под пайку, обозначенные на плате "5V" и "3.3V". Предназначены для различных конфигурация питания. Для Arduino-плат UNO, Duemilanove, Mega и Mega 2560, обе перемычки должны быть закрыты. Подробную информацию о питании для каждой из плат можно найти в соответствующем разделе "Параметры электропитания".
- Силовые выводы - соединяются с силовыми контактами платы Arduino. Модуль использует не все выводы, а только RESET, 3.3V, 5V и GND.
- Аналоговые выводы - не задействованы в модуле. Они предназначены для упрощения монтажа (с сохранением электрической проводимости контактов) для плат расширения, установленных поверх модуля USB Host Shield 2.0
- GPIN выводы - восемь 3.3-вольтóвых универсальных цифровых контактов MAX3421E, принимающие данные. К ним можно подключать кнопки, поворотные энкодеры и т.д. Выводы GPIN могут быть запрограммированы как исходящие прерывания MAX3421E. Пример их использования можно увидеть в проекте "Контроллер на основе Arduino для цифровых камер Canon EOS".
- Разъём ICSP - необходим модулю для приёма/передачи данных по шине SPI. Задействованы контакты SCK, MOSI, MISO и RESET.
- GPOUT выводы - восемь 3.3-вольтóвых универсальных многоцелевых цифровых контактов MAX3421E для вывода информации. Например, можно управлять HD44780-совместимым символьным ЖК-дисплеем, как в проекте с камерами Canon или в проекте с клавиатурой. Библиотека MAX-LCD, входящая в стандартный пакет программного обеспечения USB Host, использует некоторые выводы GPOUT.
- Цифровые I/O выводы 0-7 - точно также, как и аналоговые выводы, не задействованы в модуле, и оставлены для удобства.
- Цифровые I/O выводы 8-13 - изначально, в этой группе задействованы только контакты 9 и 10 для интерфейсных сигналов INT и SS. Остальные выводы сохраняют электро-проводимость. Важно знать и помнить, что на некоторых платах стандартного размера, таких как Duemilanove или UNO, шина SPI расположена в ICSP-разъёме (используемом в этом модуле) и продублирована на выводы 11-13! Поэтому платы расширения, установленные поверх USB Host, и использующие вывод 11-13, будут создавать помехи в шине SPI, способные привести к нестабильной работе модуля USB Host Shield. Контакты SS и INT могут быть переназначены (раздел "Модификация интерфейса"), шина SPI - нет.
- MAX3421E интерфейсные площадки - предназначены для облегчения вносимых в модуль изменений. На контакт GPX, не задействованный модулем, можно назначить прерывание MAX3421E.
- VBUS интерфейсная площадка - предназначена для дополнительных конфигураций питания USB-порта.
Принципиальная схема USB Host Shield v2.0
Техническая документация MAX3421E
Совместимость
#include <spi4teensy3.h>
в ваш .ino файл.Для следующих плат необходима ручная активация в файле settings.h:
Просто установите соответствующее значение 1 вместо 0.
Модификация интерфейса
При стандартном подключении выводов USB Host Shield, могут возникнуть ситуации, приводящие к конфликту с другими платами. Для решения подобных ситуаций в модуле предусмотрена возможность перенаправления некоторых проблемных контактов на любые свободные.
Связь между микроконтроллерными Arduino-платами и модулем хост-контроллера MAX3421E устанавливается через шину SPI, расположенную в группе из шести контактов - разъёме ICSP. Такое подключение подразумевает использование выводов SCK, MISO и MOSI.
В качества примера можно привести Arduino-плату UNO, у которой шина SPI располагается на выводах 13, 12 и 11, а также продублирована на разъём ICSP. При совмещении обеих плат, соответствующие выводы не могут быть назначены для других целей, кроме связи SPI.
Вместе с тем, модуль USB Host Shield задействует по одному контакту SS и INT (для платы UNO - это выводы 10 и 9 соответственно). Эти выводы могут быть легко перенастроены на другие задачи путём размыкания перемычек на плате USB Host Shield. После чего, к имеющимся рядом отверстиям припаиваются провода для соединения с новыми контактами.
Затем нужно изменить следующую строку в библиотечном файле "UsbCore.h". (Верно для библиотеки USB Host Shield 2.0):
typedef MAX3421e<P10, P9> MAX3421E;
Если вы, например, перенаправляете SS на вывод 7, строка должна выглядеть следующим образом (первый параметр для SS, второй - для INT):
typedef MAX3421e<P7, P9> MAX3421E;
Примерно также меняется параметр для устаревшей библиотеки USB Host Shield версий 1.0 или других на её основе:
Открываем файл библиотеки Max3421e_constants.h, находим строку:
#define MAX_SS 10
и изменяем "10" на "7"
#define MAX_SS 7
Программирование
Приведённый пример отображает в окне "Монитор порта" редактора Arduino IDE перемещение и нажатие кнопок на манипуляторе "мышь", подключенного к порту USB Host Shield. Скетч использует библиотеку "USB Host Shield 2.0".
Вам понадобятся:
Подготовка:
Скетч (исходный файл скетча)
#include <hidboot.h>
#include <usbhub.h>
// Satisfy the IDE, which needs to see the include statment in the ino too.
#ifdef dobogusinclude
#include <spi4teensy3.h>
#endif
#include <SPI.h>
class MouseRptParser : public MouseReportParser
{
protected:
void OnMouseMove (MOUSEINFO *mi);
void OnLeftButtonUp (MOUSEINFO *mi);
void OnLeftButtonDown (MOUSEINFO *mi);
void OnRightButtonUp (MOUSEINFO *mi);
void OnRightButtonDown (MOUSEINFO *mi);
void OnMiddleButtonUp (MOUSEINFO *mi);
void OnMiddleButtonDown (MOUSEINFO *mi);
};
void MouseRptParser::OnMouseMove(MOUSEINFO *mi)
{
Serial.print("dx=");
Serial.print(mi->dX, DEC);
Serial.print(" dy=");
Serial.println(mi->dY, DEC);
};
void MouseRptParser::OnLeftButtonUp (MOUSEINFO *mi)
{
Serial.println("L Butt Up");
};
void MouseRptParser::OnLeftButtonDown (MOUSEINFO *mi)
{
Serial.println("L Butt Dn");
};
void MouseRptParser::OnRightButtonUp (MOUSEINFO *mi)
{
Serial.println("R Butt Up");
};
void MouseRptParser::OnRightButtonDown (MOUSEINFO *mi)
{
Serial.println("R Butt Dn");
};
void MouseRptParser::OnMiddleButtonUp (MOUSEINFO *mi)
{
Serial.println("M Butt Up");
};
void MouseRptParser::OnMiddleButtonDown (MOUSEINFO *mi)
{
Serial.println("M Butt Dn");
};
USB Usb;
USBHub Hub(&Usb);
HIDBoot<USB_HID_PROTOCOL_MOUSE> HidMouse(&Usb);
MouseRptParser Prs;
void setup()
{
Serial.begin( 115200 );
#if !defined(__MIPSEL__)
while (!Serial); // Wait for serial port to connect - used on Leonardo, Teensy and other boards with built-in USB CDC serial connection
#endif
Serial.println("Start");
if (Usb.Init() == -1)
Serial.println("OSC did not start.");
delay( 200 );
HidMouse.SetReportParser(0, &Prs);
}
void loop()
{
Usb.Task();
}
Результат
Библиотеки
г. Москва, Пятницкое ш. д. 18, пав. 566
zakaz@compacttool.ru
8-495-752-55-22
Информация представленная на данном информационном ресурсе преследует исключительно рекламные цели и не является договором-офертой !
© Все права защищены 2015 - 2024г https://compacttool.ru