Difference between revisions of "TinyPS2"

From Land Boards Wiki
Jump to navigation Jump to search
Line 70: Line 70:
 
* [https://www.pjrc.com/teensy/td_libs_PS2Keyboard.html PJRC PS/2 library]
 
* [https://www.pjrc.com/teensy/td_libs_PS2Keyboard.html PJRC PS/2 library]
 
* [https://docs.arduino.cc/learn/built-in-libraries/software-serial Software Serial library]
 
* [https://docs.arduino.cc/learn/built-in-libraries/software-serial Software Serial library]
 +
* Code
 +
</pre>
 +
#include <SoftwareSerial.h>
 +
#include <PS2Keyboard.h>
 +
 +
const int DataPin = 0;
 +
const int IRQpin =  1;
 +
 +
#define rxPin 3
 +
#define txPin 2
 +
 +
// Set up SoftwareSerial and PS/2 objects
 +
SoftwareSerial mySerial =  SoftwareSerial(rxPin, txPin);
 +
PS2Keyboard keyboard;
 +
 +
void setup() {
 +
 +
  pinMode(rxPin, INPUT);
 +
  pinMode(txPin, OUTPUT);
 +
  mySerial.begin(9600);
 +
 
 +
  keyboard.begin(DataPin, IRQpin);
 +
}
 +
 +
void loop() {
 +
  if (keyboard.available())
 +
  {
 +
   
 +
    // read the next key
 +
    char c = keyboard.read();
 +
    mySerial.write(c);
 +
  }
 +
}
 +
</pre>
 
* Resources (ATTiny85)
 
* Resources (ATTiny85)
 
<pre>
 
<pre>

Revision as of 10:51, 4 May 2022

TinyPS2 P899 cropped-720px.jpg

Features

  • PS/2 keyboard or mouse to TTL Level Serial converter
  • ATTiny85
    • 8 KB of flash
    • 8-MHz internal RC oscillator that can be used as the default clock
    • 512 bytes of EEPROM
    • 512 bytes of SRAM
  • 115,200 baud
  • 49x49mm ODAS form factor
  • 4-40 mounting holes

TinyPS2

TinyPS2 CPU Pins.PNG

Connectors

J1 - TTL Serial Connector

  1. 5V
  2. SERTX
  3. N/C
  4. GND

J2 - PS/2

  • Standard PS/2 Mini-DIN-6 connector

H2 - In-System Programming Header

  • SPI connector to download ATTiny85
  • 2x3 header
  • Program ATTiny85 without PS/2 keyboard attached
  • Pinout
  1. KBCLK
  2. GND
  3. SERTX
  4. KBDAT
  5. RST*
  6. GND

Firmware

https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json

ATtiny45-85.png

TinyPS2V01

Sketch uses 3334 bytes (10%) of program storage space. Maximum is 32256 bytes.
Global variables use 377 bytes (18%) of dynamic memory, leaving 1671 bytes for local variables. Maximum is 2048 bytes.

TinyPS2V02

  1. include <SoftwareSerial.h>
  2. include <PS2Keyboard.h>

const int DataPin = 0; const int IRQpin = 1;

  1. define rxPin 3
  2. define txPin 2

// Set up SoftwareSerial and PS/2 objects SoftwareSerial mySerial = SoftwareSerial(rxPin, txPin); PS2Keyboard keyboard;

void setup() {

 pinMode(rxPin, INPUT);
 pinMode(txPin, OUTPUT);
 mySerial.begin(9600);
 
 keyboard.begin(DataPin, IRQpin);

}

void loop() {

 if (keyboard.available()) 
 {
   
   // read the next key
   char c = keyboard.read();
   mySerial.write(c);
 }

}

  • Resources (ATTiny85)
Sketch uses 3126 bytes (38%) of program storage space. Maximum is 8192 bytes.
Global variables use 241 bytes (47%) of dynamic memory, leaving 271 bytes for local variables. Maximum is 512 bytes.

Other People's Videos

Schematic

Issues

  • Missing pull-up resistors on PS/2
    • Rev 2 - add pull-up resistors
  • Missing C3 cap in sequence
    • Rev 2 - change C4 => C3

Assembly Sheet