PiPicoMite01

From Land Boards Wiki
Jump to navigation Jump to search

PiPicoMite01 P18182 720px.jpg

Features

  • Raspberry Pi Pico
    • All Pico pins brought to headers
    • Pin marking on rear
  • VGA
    • 640x480, 320x240 resolutions
    • 1:2:1 - R:G:B - 16 colors
  • PS/2 Keyboard
    • 5V to keyboard with voltage translator
    • Does not require a keyboard that runs at 3.3V
  • SD Card
    • Full size card
    • Up to 32GB
    • FAT32 format
  • Stereo audio
    • 3.5mm jack
  • 16-bit GPIO
    • MCP23017 port expander
    • I2C1
    • 2x10 0.1" pitch header
    • Jumper selectable terminators
  • I2C0 connector (Rev 2 and later)
  • Power options
    • 5V power input via USB Micro on Pico card, USB B, or 0.1" pitch header
    • 3.3V output header
  • 120mmx70mm outline
  • (4) 6-32 Mounting holes

BASIC Interpreter

The PicoMiteVGA boots straight into the MMBasic prompt. At which point you can enter, edit and save the program, test BASIC commands and run the program.

MMBasic is a Microsoft BASIC compatible implementation of the BASIC language. It is full featured with floating point, 64-bit integers and string variables, long variable names, arrays of floats, integers or strings with multiple dimensions, extensive string handling and user defined subroutines and functions. Typically it will execute a program up to 100,000 lines per second. Embedded compiled C programs can be used for even higher performance.

Using MMBasic you can use communications protocols such as I2C or SPI to get data from a variety of sensors. You can save data to an SD card, measure voltages, detect digital inputs and drive output pins to turn on lights, relays, etc.

The emphasis with MMBasic is on ease of use and development. The development cycle is very fast with the ability to instantly switch from edit to run. Errors are listed in plain English and when an error does occur a single keystroke will invoke the built in editor with the cursor positioned on the line that caused the error.

Pinout

PiPico Pins.PNG

Pin Marking on Rear

PiPicoMite01 REAR 3D.png

Schematic

Rev 1 Connectors

Rev 2 Connectors

  • The following are for Rev 2 and later boards

PicoMite01 Rev2 CAD.PNG

J1 - MCP23017 - 16-bit GPIO

  • 2x10 header
  • Includes power, ground

PiPicoMite01 J1 GPIO.PNG

SetPin GP14, GP15, I2C2
I2C2 OPEN 400, 100
I2C2 WRITE &H20, 0, 2, &H00, &H00
I2C2 WRITE &H20, 0, 2, &H01, &H00
I2C2 WRITE &H21, 0, 2, &H00, &H00
I2C2 WRITE &H21, 0, 2, &H01, &H00

J2 - VGA

The VGA output is 640 x 480 pixels in monochrome mode or 320 x 240 pixels in colour mode with 16 colours (1 bit for red, 2 bits for green and 1 bit for blue). The VGA output is generated using the second CPU on the RP2040 processor plus one PIO channel so it does not affect the BASIC interpreter which runs at full speed on the first CPU. A handfull of components (resistors and a couple of diodes) is all that is required to connect the VGA monitor.

From within your BASIC program you can turn pixels on/off and draw lines, boxes and circles in any colour. Text can be positioned anywhere on the screen and displayed in any colour in a variety of fonts.

The built-in editor within MMBasic works perfectly with the VGA monitor and PS2 keyboard to allow programs to be edited (with colour coded text) and saved to an SD card.

PiPicoMite01 J2 VGA.PNG

J3 - 3.3V Power Out

PiPicoMite01 J3 3p3V.PNG

J4 - Audio

OPTION AUDIO GP6, GP7
PLAY WAV "file.wav"
PLAY STOP

PiPicoMite01 J4 Audio.PNG

J5 - USB B Power Connector

  • In parallel with J6

PiPicoMite01 J5 5V-Power.PNG

  • Full size USB B connector
  • No USB signal connections, just used for power

J6 - 5V Input

PiPicoMite01 J6-5V.PNG

  • Useful to power the card from external 5V
  • Use in place of J5

J7 - PS/2 Keyboard

The PS2 keyboard connects to the Raspberry Pi Pico via a level shifter and works as a normal keyboard with the function keys and arrow keys fully operational. It can be configured for the standard US layout used in the USA, Australia and New Zealand or specialised layouts used in the United Kingdom, Germany, France and Spain.

  • 5V keyboard

PiPicoMite01 J7 PS2-Keyboard.PNG

J8 - I2C0, UART0 (RTC, etc.)

PiPicoMite01 J8 I2C.PNG

  1. I2C0SCL. UART0_TX (GP1)
  2. I2C0SDA. UART0_RX (GP0)
  3. VCC
  4. GND

Can use Real Time Clocks using the PCF8563, DS1307, DS3231 or DS3232 chips means that the time is always accurately known.

J9,J10 Pico Connectors

  • Pico pins are brought out to 1x20 pin headers J9, J10

PiPicoMite01 J9-10 PiPico.PNG

Pico Function Mapping

GP FUNCTION PICO PIN GP FUNCTION PICO PIN
GP0 I2C1_INT (MCP23017) 1 GP16 VGA_HSYNC 21
GND AUDIO-GND 8 GP17 VGA_VSYNC 22
GP6 AUDIO-L 9 GP18 VGA_BLU 24
GP7 AUDIO-R 10 GP19 VGA_GRN_LO 25
GP8 PS2_CLK 11 GP20 VGA_GRN_HI 26
GP9 PS2_DATA 12 GP21 VGA_RED 27
GP10 SD_SCK 14 VSYS PS2_5V 39
GP11 SD_MOSI 15 3.3V PS2_3.3V
GP12 SD_MISO 16 3.3V SD_3.3V
GP13 SD_SLVSEL 17
GP14 I2C1_SDA (MCP23017) 19
GP15 I2C1_SCL (MCP23017) 20

SD1 - SD Card

The PicoMiteVGA firmware reserves eight program storage "slots" in the Raspberry Pi Pico flash memory. Programs can be saved and retreived from these without the need for any additional storage.

For more storage SD cards can be connected with full support for these built into MMBasic including the ability to open files for reading, writing or random access and loading and saving programs. SD cards connect directly to the Raspberry Pi Pico and the firmware will work with cards up to 32GB formatted in FAT16 or FAT32. The files created can be read and written on personal computers running Windows, Linux or the Mac operating system.

OPTION SDCARD GP13, GP10, GP11, GP12

PiPicoMite01 J1 SD Card.PNG

H1 - I2C Terminators

PiPicoMite01 H1 I2CTerms.PNG

  • 2.2K terminators
  • Install shunts to terminate SDA, SCL signals that go to the on-board MCP23017 I2C Expander
  • Terminators are normally installed at the end of daisy-chained cards
  • I2C1 on Raspberry Pi Pico pins
  • I2C2 from MM BASIC
  • MM BASIC example commands
SETPIN GP14, GP15, I2C2
I2C2 OPEN 400, 100
I2C2 WRITE &H20, OC, LEN, B0[, B1...]
I2C2 READ &H20, OX, LEN, BUFF()
  • &H20 - I2C Address 0x20
  • OC: 0=terminate after, 1=chain next
  • len - Length of buffer (normally 1 for receive)
  • B0,B1... Bytes to send
  • BUFF() - receive buffer

H2 - MCP23017 - I2C Interrupt

PiPicoMite01 H2 I2C-Interrupt.PNG

  • Install shunt to connect INTA interrupt from MCP23017 to GP2 on Pico
  • MCP23017 interrupts can be set to generate interrupts on INTA pins for both A abd B ports
  • No Pull-up on card

Prototype Build

PicoMite Proto P18159 720px.jpg

Mechanicals

PicoMite01 Rev2 Mechs.PNG

PicoMite Software

PicoMite Source code

MCP23017 I2C Demo Code

SetPin GP14, GP15, I2C2
I2C2 OPEN 400, 100
I2C2 WRITE &H20, 0, 2, &H00, &H00
I2C2 WRITE &H20, 0, 2, &H01, &H00
I2C2 WRITE &H20, 0, 2, &H14, &H55
I2C2 WRITE &H20, 0, 2, &H15, &HAA
Pause 1000
I2C2 WRITE &H20, 0, 2, &H14, &HAA
I2C2 WRITE &H20, 0, 2, &H15, &H55
I2C2 CLOSE

MCP23008 Demo Code

Tetris

> memory
Program:
  13K (10%) Program (485 lines)
  95K (90%) Free

RAM:
   8K ( 5%) 31 Variables
   0K ( 0%) General
 132K (95%) Free

Pico Tetris.jpg

Issues

Rev 2

  • Re-sequenced jacks and capacitors reference designators to left-to-right/top-to-bottom order
    • In sequential order for easier assembly
  • Fixed MCP23017 I2C SDA/SCL pins
  • Added I2C Interface Header
  • Moved Vcc to the end of the GPIO connector

Rev 1

  • Tested and working
    • Pico boots and runs
    • VGA passes Colours.bas test
    • PS/2 can type
    • SD Card loads files
    • Audio plays wav files

Issue with I2C connections to MCP23017 - Rework

  • SDA, SCL swapped to MCP23017
  • Cut etch solder side Pico pin 19 (to U2-12)
  • Cut etch solder side Pico pin 20 (to U2-13)
  • Cuts are done on rear side (CAD)
  • Verify cuts with ohmmeter

PicoMite01 X1 Rework I2C2.PNG

PiMicoMite01 P18202 Cuts Jumpers.jpg

  • Jumpers
  • Add wire Pico pin 19 to U2-13 (GP14)
  • Add wire Pico pin 20 to U2-12 (GP15)

PiMicoMite01 P18202 720px Jumpers.jpg

Assembly Sheet