Подключение USB клавиатуры как PS2 устройства

Luckoste
Offline
Зарегистрирован: 27.07.2019

Здравствуйте, уважаемые форумчане.

http://pikabu.ru/story/arduino_programmiruemaya_klaviatura_svoimi_rukami_6726579

Подключаю USB клавиатуру к Arduino. Правильно ли я упростила схему подключения USB клавиатуры для определения ее как PS/2 устройства? В скетче вроде ничего не упустила?

#include <PS2Keyboard.h>
#include "Keyboard.h"

const int MOS = 5;
const int DataPin = 2;
const int IRQpin =  3;

PS2Keyboard keyboard;

void setup() {
  delay(1000);
  keyboard.begin(DataPin, IRQpin);
  pinMode(MOS, OUTPUT);
  digitalWrite(MOS, HIGH); //подаем импульс на транзистор на PIN5
  delay(1000);
  digitalWrite(MOS, LOW); //прерывание и восстановление питания PS/2 разъема через транзистор, т.е перезагрузка подключенной USB клавиатуры,для определения ее как PS/2 устройства
}

Заранее благодарю за помощь.

Luckoste
Offline
Зарегистрирован: 27.07.2019

Иногда клавиатура при подключении ардуино в USB бесконечно моргает зелеными светодиодами и не включается, иногда один раз моргнет и все норм. С чем это может быть связано? Возможно я что-то неправильно в схеме подключила или что-то пропустила в скетче?

NikShel
Offline
Зарегистрирован: 21.01.2018

Cфоткайте своё творение! Мне кажется, что у Вас схемная ошибка!!

Какой используете МК ?

Luckoste
Offline
Зарегистрирован: 27.07.2019

NikShel пишет:

Cфоткайте своё творение! Мне кажется, что у Вас схемная ошибка!!

Какой используете МК ?

 

Здравствуйте, NikShel.

Использую Arduino pro micro с mini разъемом.

NikShel
Offline
Зарегистрирован: 21.01.2018

К сожалению нет у меня такого МК. Не могу сейчас проверить.

Я так понял, что скетч у Вас загружается.

Питание поступает через разъём USB.

Проверьте на пинах: 1(RAW) & 4(VCC) - должно быть 5 вольт. Диод LED1 - cветится красным.

-NMi-
Offline
Зарегистрирован: 20.08.2018

Эмиттер на (+) а коллектор на (-) и как это всё будет работать???

NikShel
Offline
Зарегистрирован: 21.01.2018

-NMi- пишет:

Эмиттер на (+) а коллектор на (-) и как это всё будет работать???

Да, действительно.

И на фото явно не тот транзистор, что заявлен.

Luckoste
Offline
Зарегистрирован: 27.07.2019

Транзистор подбирался аналог КТ361 pnp. Я его неправильно подключила?

Luckoste
Offline
Зарегистрирован: 27.07.2019

У меня коллектор подключен на 5V клавиатуры, эмиттер на 5V ардуино. Транзистор pnp. Их поменять местами нужно?

-NMi-
Offline
Зарегистрирован: 20.08.2018

Luckoste пишет:

Я его неправильно подключила?

Куда-ш вы все лезете то, а? Какие нафик аналоги транзистороф??? Он там в ключе работает, там любой транзюк подойдёт! И памому там PullUP и NPN нужен а не PNP!

PS: иди лучше в кулинарную школу и борщи варить учись.

Luckoste
Offline
Зарегистрирован: 27.07.2019

На картинке в первой схеме автор нарисовал зеленый транзистор KT361 - на нем написано pnp. В продаже KT361 нет, поэтому подбирала аналог pnp. Вы можете сказать какой нужен транзистор pnp или npn?

Green
Offline
Зарегистрирован: 01.10.2015

А по моему всё правильно подключено. При помощи PNP управляем подачей питания на клавиатуру.
Только что то не понятен смысл этого передёргивания питания.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

pnp и нужен. включен он правильно, управляется нулем в базу.  

Но борщи сиравно варить учись.  очень способствует... 

Upd.  Этому многострадальному транзистору очень не хватает резистора килоом на 10 между эмиттером и базой.  Чтоб состояние у него было детерминировано в любой момент времени, особенно при включении 

Luckoste
Offline
Зарегистрирован: 27.07.2019

Luckoste
Offline
Зарегистрирован: 27.07.2019

 

У меня в схеме pnp транзистор A778

Green
Offline
Зарегистрирован: 01.10.2015

150 вольт тут лишние, а вот тока желательно поболее.
Попробуйте коллектор с эмитером замкнуть, и делай убрать из скетча - будет ли работать?

Luckoste
Offline
Зарегистрирован: 27.07.2019

Скажите пожалуйста, что лучше дальше сделать: резистор на 10 кОм между эмиттером и базой поставить или коллектор с эмитером замкнуть?

Green
Offline
Зарегистрирован: 01.10.2015

Резистор там нужен что бы транзистор был закрыт (питание не подавалось на клавиатуру) пока Ардуино будет в загрузчике при включении или сбросе. У меня ведь нет вашего железа. Но если у вас всё работает при замкнутом коллекторе с эмиттером, то транзистор тогда вообще можно убрать. 

Luckoste
Offline
Зарегистрирован: 27.07.2019

Green пишет:

Резистор там нужен что бы транзистор был закрыт (питание не подавалось на клавиатуру) пока Ардуино будет в загрузчике при включении или сбросе. У меня ведь нет вашего железа. Но если у вас всё работает при замкнутом коллекторе с эмиттером, то транзистор тогда вообще можно убрать. 

Отключаю-подключаю arduino к usb клавиатура 30% включается, 70% - светодиоды клавиатуры не моргают, клавиатура не работает.

Это нормально?

Luckoste
Offline
Зарегистрирован: 27.07.2019

Скажите пожалуйста. Если убрать транзистор из схемы, скетч нужно так сократить?

#include <PS2Keyboard.h>
#include "Keyboard.h"


const int DataPin = 2;
const int IRQpin =  3;


Green
Offline
Зарегистрирован: 01.10.2015

Ну нет, если через раз, тогда транзистор нужно оставить. А резистор между базой и эмиттером добавить.)
И наверно так будет красивее.

void setup() { 
  keyboard.begin(DataPin, IRQpin);
  digitalWrite(MOS, HIGH); //подаем импульс на транзистор на PIN5
  pinMode(MOS, OUTPUT);
  delay(500);
  digitalWrite(MOS, LOW);
}

 

Luckoste
Offline
Зарегистрирован: 27.07.2019

А можно ли укорачивать провод usb?

Green
Offline
Зарегистрирован: 01.10.2015

Конечно можно. Это уж вы сами смотрите как вам удобней.

Luckoste
Offline
Зарегистрирован: 27.07.2019

Green, огромное Вам спасибо за помощь!

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Тут Гайвера недолюбливают )))