The BL-328 is a computer with an Arduino at its core. The computer is composed of a few modules that will interconnect to provide a complete computer system.
The original intention was to make a portable, handheld, standalone computer, but that has since changed to be a tabletop system, with the addition of the standard keyboard support. The focus has changed to more closely model the homebrew systems from the 1970s where components were assembled in open-air, and are used as such, like the Apple I
The CPU module consists of an Arduino Pro from SparkFun. It has the ATMega 328 micro on it, so that we have the most space for BASIC programs. It is running TinyBasicPlus which is a port of TinyBasic to Arduino, which I have added some more functionality onto. I have added the SD Card library to let you LOAD, and SAVE programs, and do FILES listings.
Soon, I will be adding support for LCD modules for display (text and graphics) as well as support for serial and PS2 keyboard input for standalone use. Currently, it only operates via serial connection.
This system will support two different displays. The first is a text display, running a standard inexpensive 2x16 display via SPI or I2C.
Second is a graphical display with additional BASIC commands to plot points and such. The one I've gone with is the 1.8" TFT LCD from Adafruit.
These two displays will operate independantly of eachother, allowing for you to be typing in one and see graphical results in the other.
The keyboard can either be a RS232 serial stream, or a PS2 keyboard. I have added PS2 keyboard at the expense of two additional data pains (configurable in the TinyBasic.ino file) because I want this to be easily usable by others.
The keyboard that I have built is using a second Arduino with a custom made shield that connects directly to a Commodore 64/16 keyboard. It scans the keyboard matrix, and then sends serial keys, as though there were a serial terminal, rather than it being just a standard dumb keyboard sending keycodes.
Note: I may change the behavior of this keyboard to send PS2 output.
IO - Files
The system uses a SeeedStudio SD Card shield for storage currently. It lets you use the BASIC commands LOAD, SAVE, CHAIN, FILES to interact with it. Soon TinyBasicPlus may have support for OPEN, PRINT#, CLOSE for doing file IO from a basic program.
I had tried to use the microSD reader on the 1.8" TFT display, but was having problems with it. I may revisit that path later, but for now, it's nice having a fullsize SD card reader, and having it not on the display itself.
IO - Pin Data
The TinyBasic environmnet has support for interacting with the standard Arduino pins, using a syntax very similar to the Arduino IDE.
The pins currently in-use are:
- D13, D12, D11, D10 - SeeedStudio SD Card shield
- D13, D11, D9, D8, D7, D6 - Adafruit 1.8" TFT LCD (D6 is for backlight brightness)
- D0, D1 - Serial input/output
- D2 - Second serial input (external keyboard)
And the pins currently free, or soon to be claimed are:
- D3, D4, D5 - General use digital IO
- A0, A1, A2, A3, A4, A5 - General use analog IO
Note, that some of these pins may get consumed when certain features are enabled:
- D2, D3 - PS2 Keyboard (future?)
- A4, A5 - soon for I2C output? (LCD Panel)
Here's a list of things you'll need to build your own BL-328:
- CPU - Any 328 or newer Arduino (168-based Arduinos will work but have small memory) $20-$25
- PS2 Keyboard - $5-$15
- LCD Text Display Module - $20
- Adafruit 1.8" TFT LCD - $25 (optional)
- SeeedStudio SD Card shield - $14 (optional)
- Battery box - $5 (or usb power brick)
- Additional components (PS2 connector, proto shields, wires, sd card)- $15 - $20