+7(924)303-61-26
(Пн-Вс с 10:00 до 20:00)
КОНТАКТЫ
WhatsApp
Telegram
Email
ВВЕРХ
Плата расширения Arduino USB 2.0 Host Shield на MAX3421E белая

Увеличить

33 человек уже посмотрели этот товар

Плата расширения Arduino USB 2.0 Host Shield на MAX3421E белая

Нет на складе

960

ОПИСАНИЕ

Плата расширения USB Host Shield 2.0 позволяет Arduino выступать в роли USB-хоста для USB-периферии: флешек, клавиатур, мышей, MIDI-устройств и прочего. С этой платой открывается масса новых возможностей для создания интересных устройств.

Это модифицированная версия с уже распаянным питанием. Чтобы 5В подавалось на USB-разъём шилда — дополнительно ничего делать не нужно.

Данная плата проверена именно этим скетчем.

  1. Зайдите в Arduino IDE. Перейдите в менеджер библиотек (Скетч → Подключить библиотеку → Управлять библиотеками) и введите в поиске: USB Host Shield. Установите библиотеку: USB Host Shield Library 2.0.

  2. Загрузите код, который указан ниже на этой странице, на Arduino (без вставленного шилда). Это модернизированный код USBHIDBootKbdAndMouse с добавленной проверкой связи с устройством и небольшой задержкой в 5 мс. Без добавленной задержки в коде устройство может работать нестабильно и терять связь.

  3. Вставьте шилд сверху на Arduino — он должен держаться плотно.

  4. Вставьте USB-устройство, например простую клавиатуру, в USB-разъём шилда. Желательно использовать простую, не мультимедийную клавиатуру.

  5. Подключите Arduino к компьютеру с помощью USB-порта. Дополнительное внешнее питание подключать не нужно, если подключаемое USB-устройство нетребовательно к питанию (не слишком мощное).

  6. Откройте монитор порта в Arduino IDE (или закройте и откройте его заново, если он уже был открыт).

  7. В мониторе порта должна отобразиться информация о том, что USB-устройство работает.

  8. Текст "Usb alive" сообщает, что связь с устройством установлена.

  9. Можете понажимать клавиши на клавиатуре, подключённой к USB-шилду. Информация о кодах клавиш должна отобразиться в мониторе порта.

  10. Поздравляем! Если всё прошло успешно — USB Host шилд рабочий!

P.S. Перед отправкой мы проверяем каждый шилд на работоспособность.

 

ПАРАМЕТРЫ

  • Совместимые платы Arduino: Uno, Leonardo, Mega
 


ПРИМЕР КОДА 

#include <hidboot.h>
#include <usbhub.h>

// Satisfy IDE, which only needs to see the include statment in the ino.
#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");
};

class KbdRptParser : public KeyboardReportParser
{
    void PrintKey(uint8_t mod, uint8_t key);

  protected:
    void OnControlKeysChanged(uint8_t before, uint8_t after);
    void OnKeyDown	(uint8_t mod, uint8_t key);
    void OnKeyUp	(uint8_t mod, uint8_t key);
    void OnKeyPressed(uint8_t key);
};

void KbdRptParser::PrintKey(uint8_t m, uint8_t key)
{
  MODIFIERKEYS mod;
  *((uint8_t*)&mod) = m;
  Serial.print((mod.bmLeftCtrl   == 1) ? "C" : " ");
  Serial.print((mod.bmLeftShift  == 1) ? "S" : " ");
  Serial.print((mod.bmLeftAlt    == 1) ? "A" : " ");
  Serial.print((mod.bmLeftGUI    == 1) ? "G" : " ");

  Serial.print(" >");
  PrintHex(key, 0x80);
  Serial.print("< ");

  Serial.print((mod.bmRightCtrl   == 1) ? "C" : " ");
  Serial.print((mod.bmRightShift  == 1) ? "S" : " ");
  Serial.print((mod.bmRightAlt    == 1) ? "A" : " ");
  Serial.println((mod.bmRightGUI    == 1) ? "G" : " ");
};

void KbdRptParser::OnKeyDown(uint8_t mod, uint8_t key)
{
  Serial.print("DN ");
  PrintKey(mod, key);
  uint8_t c = OemToAscii(mod, key);

  if (c)
    OnKeyPressed(c);
}

void KbdRptParser::OnControlKeysChanged(uint8_t before, uint8_t after) {

  MODIFIERKEYS beforeMod;
  *((uint8_t*)&beforeMod) = before;

  MODIFIERKEYS afterMod;
  *((uint8_t*)&afterMod) = after;

  if (beforeMod.bmLeftCtrl != afterMod.bmLeftCtrl) {
    Serial.println("LeftCtrl changed");
  }
  if (beforeMod.bmLeftShift != afterMod.bmLeftShift) {
    Serial.println("LeftShift changed");
  }
  if (beforeMod.bmLeftAlt != afterMod.bmLeftAlt) {
    Serial.println("LeftAlt changed");
  }
  if (beforeMod.bmLeftGUI != afterMod.bmLeftGUI) {
    Serial.println("LeftGUI changed");
  }

  if (beforeMod.bmRightCtrl != afterMod.bmRightCtrl) {
    Serial.println("RightCtrl changed");
  }
  if (beforeMod.bmRightShift != afterMod.bmRightShift) {
    Serial.println("RightShift changed");
  }
  if (beforeMod.bmRightAlt != afterMod.bmRightAlt) {
    Serial.println("RightAlt changed");
  }
  if (beforeMod.bmRightGUI != afterMod.bmRightGUI) {
    Serial.println("RightGUI changed");
  }

}

void KbdRptParser::OnKeyUp(uint8_t mod, uint8_t key)
{
  Serial.print("UP ");
  PrintKey(mod, key);
}

void KbdRptParser::OnKeyPressed(uint8_t key)
{
  Serial.print("ASCII: ");
  Serial.println((char)key);
};

USB     Usb;
USBHub     Hub(&Usb);

HIDBoot < USB_HID_PROTOCOL_KEYBOARD | USB_HID_PROTOCOL_MOUSE > HidComposite(&Usb);
HIDBoot    HidKeyboard(&Usb);
HIDBoot    HidMouse(&Usb);

KbdRptParser KbdPrs;
MouseRptParser MousePrs;

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 );

  HidComposite.SetReportParser(0, &KbdPrs);
  HidComposite.SetReportParser(1, &MousePrs);
  HidKeyboard.SetReportParser(0, &KbdPrs);
  HidMouse.SetReportParser(0, &MousePrs);
}

void loop()
{
  Usb.Task();
delay(5); // маленькая пауза после Usb.Task()
  static uint32_t tmr = 0;
  if (millis() - tmr > 1000) { // раз в секунду
    if (Usb.getUsbTaskState() == USB_STATE_RUNNING) {
      Serial.println("USB is alive!");
    } else {
      Serial.println("USB is NOT ready.");
    }
    tmr = millis();
  }
}
 

КОМПЛЕКТ

  • Arduino USB host шилд х 1

 

Характеристики

Плата расширения Arduino USB 2.0 Host Shield на MAX3421E белая
Модель: usbhost
Производитель:

Отзывы (0)


Написать отзыв

Метки: #arduino, #usbhost