Difference between revisions of "TinyPS2"

From Land Boards Wiki
Jump to navigation Jump to search
 
(140 intermediate revisions by the same user not shown)
Line 1: Line 1:
[[File:TinyPS2_P899_cropped-720px.jpg]]
+
See [[TinyPS2 Revs 1-3]] for ATTiny85 based build
 +
 
 +
[[File:TinyPS2_Front_Rev4_3D.png]]
 +
 
 +
== Introduction ==
 +
 
 +
It is getting difficult to find ASCII serial keyboards for use in Retro-Computer projects. This card fills that need. The card is a PS/2 keyboard to TTL Level Serial adapter. PS/2 keyboards are still widely available.
 +
 
 +
[[file:Keyboard_PS2_MicrosoftNatural.jpg]]
  
 
== Features ==
 
== Features ==
  
* PS/2 keyboard or mouse to TTL Level Serial converter
+
* [[QT_Py_(RP2040_based)|QT Py (RP2040 based)]]
* ATTiny85
+
** Run at 125 MHz
* 115,200 baud
+
** 2MB of In System Programmable (ISP) flash
 +
** 264KB of SRAM
 +
* 115,200 baud serial
 +
** 57,600-250,000 are build time options
 
* 49x49mm ODAS form factor
 
* 49x49mm ODAS form factor
* 4-40 mounting holes
+
* (4) 4-40 mounting holes
 +
* 3.3V or 5V operation
 +
* Current measurement
 +
** TBD @ 5V (without keyboard)
 +
** TBD @ 5V (including keyboard)
 +
** TBD @ 3.3V (including keyboard)
 +
*** Does not require a keyboard that works at 3.3V
 +
 
 +
=== CPU Connections ===
 +
 
 +
[[file:TinyPS2_CPU_Rev4_Conns.PNG]]
 +
 
 +
<pre>
 +
#define DATAPIN 27
 +
#define IRQPIN  26
 +
</pre>
  
 
== Connectors ==
 
== Connectors ==
Line 13: Line 39:
 
=== J1 - TTL Serial Connector ===
 
=== J1 - TTL Serial Connector ===
  
# 5V
+
[[file:TinyPS2_J1_Rev4_Conns.PNG]]
 +
 
 +
# VCC (pin nearest to J1 silkscreem)
 
# SERTX
 
# SERTX
 
# N/C
 
# N/C
Line 22: Line 50:
 
* Standard PS/2 Mini-DIN-6 connector
 
* Standard PS/2 Mini-DIN-6 connector
  
=== H2 - In-System Programming Header ===
+
[[file:TinyPS2_J2_Rev4_Conns.PNG]]
  
* SPI connector to download ATTiny85
+
== Firmware Build Card Rev 4 ==
* 2x3 header
 
* Program ATTiny85 without PS/2 keyboard attached
 
* Pinout
 
  
# KBCLK
+
[[file:asciifull.png]]
# GND
+
 
# SERTX
+
=== Arduino ===
# KBDAT
+
 
# RST*
+
* Card rev 4 uses a QTPy or XAIO RP2040 CPU
# GND
+
* Arduino Library
 +
** [https://github.com/techpaul/PS2KeyAdvanced PS2KeyAdvanced]
 +
* [https://github.com/land-boards/lb-Arduino-Code/blob/master/LBCards/TinyPS2/TinyPS2_PCB_Rev4_AdvKbd/TinyPS2_PCB_Rev4_AdvKbd.ino TinyPS2_PCB_Rev4_AdvKbd] - code
 +
<pre>
 +
#define DATAPIN 27
 +
#define IRQPIN  26
 +
</pre>
 +
 
 +
* Example code produces warning
 +
 
 +
<pre>
 +
WARNING: library PS2KeyAdvanced claims to run on avr, sam, samd1, stm32, esp32 architecture(s) and may be incompatible with your current board which runs on rp2040 architecture(s).
 +
Sketch uses 82336 bytes (0%) of program storage space. Maximum is 16777216 bytes.
 +
Global variables use 43096 bytes (15%) of dynamic memory, leaving 227240 bytes for local variables. Maximum is 270336 bytes.
 +
</pre>
 +
 
 +
* Code works well!
 +
 
 +
=== C++ ===
 +
 
 +
* [https://github.com/tvlad1234/pico-ps2Driv pico-ps2Driv] - SDK C code
 +
 
 +
=== CircuitPython ===
  
== Firmware ==
+
* CircuitPython support issues
 +
** [https://docs.circuitpython.org/en/latest/shared-bindings/ps2io/index.html PS/2 Library] - Not in Pico core modules
  
* [https://github.com/land-boards/lb-Arduino-Code/tree/master/LBCards/TinyPS2 GitHib Repo for TinyPS2 Firmware]
+
<pre>
 +
>>> import ps2io
 +
Traceback (most recent call last):
 +
  File "<stdin>", line 1, in <module>
 +
ImportError: no module named 'ps2io'
 +
</pre>
  
 
== Schematic ==
 
== Schematic ==
Line 46: Line 99:
 
== Issues ==
 
== Issues ==
  
* Missing pull-up resistors on PS/2
+
* [[TinyPS2_Revs_1-3|Revs 1-3 are documented here]]
** Rev 2 - add pull-up resistors
+
 
* Missing C3 cap in sequence
+
=== Rev 4 ===
** Rev 2 - change C4 => C3
+
 
 +
* Changed CPU
 +
** Was 8 MHz ATTiny85
 +
** Changed to QT PY or XAIO
 +
* Changed pin usage
 +
* Uses Hardware Transmitter in CPU
 +
* Keyboard runs at 5V
 +
* CPU runs at 3.3VV
 +
* 3.3V to 5V level shifter
  
 
== Assembly Sheet ==
 
== Assembly Sheet ==
  
* [[TinyPS2 Assembly Sheet]]
+
* [[TinyPS2 Rev 4 Assembly Sheet]]

Latest revision as of 16:51, 15 August 2022

See TinyPS2 Revs 1-3 for ATTiny85 based build

TinyPS2 Front Rev4 3D.png

Introduction

It is getting difficult to find ASCII serial keyboards for use in Retro-Computer projects. This card fills that need. The card is a PS/2 keyboard to TTL Level Serial adapter. PS/2 keyboards are still widely available.

Keyboard PS2 MicrosoftNatural.jpg

Features

  • QT Py (RP2040 based)
    • Run at 125 MHz
    • 2MB of In System Programmable (ISP) flash
    • 264KB of SRAM
  • 115,200 baud serial
    • 57,600-250,000 are build time options
  • 49x49mm ODAS form factor
  • (4) 4-40 mounting holes
  • 3.3V or 5V operation
  • Current measurement
    • TBD @ 5V (without keyboard)
    • TBD @ 5V (including keyboard)
    • TBD @ 3.3V (including keyboard)
      • Does not require a keyboard that works at 3.3V

CPU Connections

TinyPS2 CPU Rev4 Conns.PNG

#define DATAPIN 27
#define IRQPIN  26

Connectors

J1 - TTL Serial Connector

TinyPS2 J1 Rev4 Conns.PNG

  1. VCC (pin nearest to J1 silkscreem)
  2. SERTX
  3. N/C
  4. GND

J2 - PS/2

  • Standard PS/2 Mini-DIN-6 connector

TinyPS2 J2 Rev4 Conns.PNG

Firmware Build Card Rev 4

Asciifull.png

Arduino

#define DATAPIN 27
#define IRQPIN  26
  • Example code produces warning
WARNING: library PS2KeyAdvanced claims to run on avr, sam, samd1, stm32, esp32 architecture(s) and may be incompatible with your current board which runs on rp2040 architecture(s).
Sketch uses 82336 bytes (0%) of program storage space. Maximum is 16777216 bytes.
Global variables use 43096 bytes (15%) of dynamic memory, leaving 227240 bytes for local variables. Maximum is 270336 bytes.
  • Code works well!

C++

CircuitPython

  • CircuitPython support issues
>>> import ps2io
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: no module named 'ps2io'

Schematic

Issues

Rev 4

  • Changed CPU
    • Was 8 MHz ATTiny85
    • Changed to QT PY or XAIO
  • Changed pin usage
  • Uses Hardware Transmitter in CPU
  • Keyboard runs at 5V
  • CPU runs at 3.3VV
  • 3.3V to 5V level shifter

Assembly Sheet