Smart Response XE Re-purposed into Arduboy


#1

A friend sent me one of these Smart Response XE devices to mess with.
They are normally used for classroom voting.

We figured out how to drive the display and keyboard, and I added a speaker onto this one, as the PCB comes with a place for a speaker but isn’t populated. (You can just barely hear the sound on the video as the microphone didn’t pick it up very well).

So I modified the Arduboy library to work with this device.

The display chip is an ST7586S, which drives a 384x160 LCD display.
For the arduboy display I’m writing 3 pixels horizontally, and 2 vertically for every 1 pixel to fill the screen.

The main chip in the device is the Atmel ATmega128RFA1 which includes a 2.4ghz transceiver (might be possible to use this for multiplayer?)

Here’s a video of it running Hopper.

I’ll upload the code at some point if anyone else wishes to have a go.

Mick


Risc V5 processors? // 4-8 colors
Risc V5 processors? // 4-8 colors
(Pharap) #2

The video link isn’t working for me.


#3

The video isn’t working for me either.


#4

Sorry, link now fixed, last character was missing.


(Pharap) #5

An easy mistake to make.


How much RAM does it have?
How easy is it to reprogram?
And do they still sell them?


#6

From the datasheet.

The ATmega128RFA1 provides the following features:
128K Bytes of In-System Programmable (ISP) Flash with read-while-write capabilities,
4K Bytes EEPROM, 16K Bytes SRAM.

Re- programming:
Here is a picture of the main PCB.

I used another arduino to reprogram the bootloader using the ISP pins indicated on the PCB (this only needs to be done once).
I then used a 3.3v USB TTL converter to program it via the pins marked RS232, but you have to link a couple of pins on the unpopulated converter chip on the board so the signals actually make it from the pads to the chip TX / RX lines.

The board also contains a AT25FS010 1M SPI flash, which currently we are not using.

You can find these on ebay, usually in job lots or sometimes individually.
This was more along the lines of finding an alternative use for these things instead of them ending up in a landfill somewhere. Another idea for these might be a zigbee sniffer.


#7

Here’s a picture of my modded device.

The two wires going to the battery terminals are just for power while its apart.
The wire going to the ISP connector is for _RESET for programming.
The rest of the wires are TX,RX,GND. The small purple links are to send the signals to the chip as the onboard ttl converter is not populated.

For sound:
I also fitted a speaker, and just above the speaker I added a 100 ohm resistor to bridge out depopulated Q1, so the I/O line gets to the speaker. Also at the bottom below the speaker was an unpopulated diode (D1) which was just bridged with some wire.

Mick


#8

Just won an auction for a bulk lot of 10 of these… :rofl:

Would only want one or two for myself, but was actually cheaper to buy 10 than just one or two!

Looks like there is also a JTAG header onboard, so you’d be able to program it using something like this, rather than needing to solder to the ICSP pins?

@GameExpress’s word processor doesn’t seem so silly now :grin:


(Simon) #9

Mmmm … I vaguely recall mocking this myself. Sorry @GameExpress !


(Holmes) #10

I am completely in awe over this!! I’m going to purchase two of these right away! I’ve bee looking for a small device with a full keyboard and a screen that could support some kind of homebrew like this and with the ability to drive the hardware with Arduino is a no-brainer. Thank you so much for posting this!

I have been looking for some kind of similar device to do this with, including those ol’ pocket translator like this:

Wireless multiplayer would be so cool.

@is0-mick, is there enough open space inside of the encolsure in order to store the Arduino unit? Also, are you able to use grayscale? I think the pics of this device that I’ve seen shows off grayscale to some degree. Also, why not reprogram the Arduino with USB? Is this a specific Arduino model that doesn’t support that?

EDIT: Ouch… I wish I saw this before buying 2. HAHA. Oh, well. I guess I have 2 for multiplayer. :stuck_out_tongue:


#11

Yes, the display can use grey scale mode with 16 levels. Currently I’m only using it in mono.
Here is the datasheet:
http://threefivedisplays.com/wp-content/uploads/datasheets/lcd_driver_datasheets/ST7586_S_REV_1_6_DS.pdf

is there enough open space inside of the encolsure in order to store the Arduino unit?

I’m not sure what you mean by that? The device already contains at atmega128 processor (which is what some arduino’s aready use.) I think the arduino mega 128 uses the same chip.

Edit: I think you are mistaking the USB converter for an actual arduino? This only needs to be connected for programming, and can be disconnected when not needed.

Also, why not reprogram the Arduino with USB?

Again, not sure quite what you mean. Most arduino boards have a USB > TTL converter built in, such as the mega2560, uno, a lot of the chinese clones use a CH340 chip, Although there are a few atmel chips that support USB natively now too without the need for a converter.

Unfortunately this board / chip does not, as the place where it should be fitted is blank, so we’re using an external one. The signals get changed from USB to TTL level rs232 at 3 volts.

Hope that helps.
Mick


(Pharap) #12

I believe he means the USB board that you’ve attached.
I.e. “Does that red USB board fit in the case?”

Yep. Evidently @crait didn’t realise it’s an external USB board:

I didn’t either because the image you posted is a bit dark.

I’ve brightened it up with GIMP:

(GIMP filters do wonders. Even the detail of the leather is clearer now.)


(Holmes) #13

OOOH!! My apologies! Yes, I thought that was a Arduino you threw in there.

Thank you!

Looking it up online, I found…

This is cool, but at max resolution of 61,440 pixels, that would be 7.68KB’s worth of space needed for a frame buffer, right? The Atmega128 only has 4KB of SRAM, so that wouldn’t work. Or am I doing this math wrong? What is it doing to draw to the screen? Direct draw?


(Pharap) #14

Sorry to interject again.

The size of the image buffer doesn’t have to match the screen.

You can have a buffer smaller than the screen and have 1 bit in that buffer correspond to (for example) a 2x2 group of pixels on the screen, allowing the buffer to be 4 times smaller than would be needed for the whole screen.

(This is how the Pokitto implements its lores screen mode.)


(Holmes) #15

Oh, yes, I am very familiar with the idea of having different sized frame buffers, but I’m wondering about in terms of being able to take advantage of the large screen… Seems impossible, especially with the idea of more than 1-bit graphics… That is, unless I’m calculating things wrong or it’s using some direct draw methods for everything. But, then again, I’m not super good with hardware things, so maybe there’s something I’m overlooking or maybe it has some extra memory stored somewhere.


#16

It’s LCD which has a slow response time. When writing directly to LCD you might not even notice it.


#17

The ATmega128RFA1 provides the following features:
128K Bytes of In-System Programmable (ISP) Flash with read-while-write capabilities,
4K Bytes EEPROM, 16K Bytes SRAM.

As posted in the 6th post, or there abouts…
I guess they must have upped the SRAM for the radio stack perhaps?

Here is the datasheet for completeness.


(Holmes) #18

Today must not be my day… Sorry to miss that!


(Chamekan) #19

What kind of bootloader for ATmega128RFA1 do you use?

I found these:


Or other bootloader?


#20

Here’s an archive I’ve been putting together.

It contains my modified libraries Arduboy and Arduboy2 , modified u8g2 graphics library, bootloader, pictures of the pcb, pinouts of the hardware etc. There is also a modified version of jetpac in the archive as some of the sound effects were being generated in the sketch, and the i/o pin is different for this device.

There is also a sketch which lets you press a key on the qwerty keyboard and it will display it on the screen.
(requires the modified u8g2 library included) and also the keypad library.

The original sparkfun arduino hardware files if you download them from the sparkfun site have some issues compiling due to them being for an older version of the arduino IDE.

There was also a mistake in their pins_arduino.h which stopped some of the I/O pins working.
They have been fixed in the archive supplied here.

I’ve not used this file upload site before, so not sure if the link expires after some time.

http://www.filedropper.com/smartxestuff

Mick