Login [Register]
Don't have an account? Register now to chat, post, use our tools, and much more.
I've long wanted to create a mashup of an embedded development board (think Raspberry Pi or Beaglebone) and a TI calculator case and keyboard, with the goal of creating a TI calculator that can emulate all of the calculators from the TI-73 to the TI-84+CSE (or even including the TI-85 and TI-86). I envision, besides the dev board, a Li-Po battery, a USB port for charging, a 320x240 color LCD, and the calculator's original I/O port and keyboard connected. To this end, I have finally purchased the extremely cool Odroid-W development board, a tiny Raspberry Pi-compatible board, loaded Raspbian onto a microSD card, and was able to boot it up. I don't have the proper LCD or even a 3.3V UART-to-USB device to be able to see what it's doing, but the blue activity LED does what it's supposed to.

Anyway, now I have a lot of decisions to make, and I'd love you guys' help in figuring out what I should do:
  • What LCD should I use? Will a ~2.2" 320x240-pixel SPI color LCD be too slow for calculator emulation? I have a parallel LCD that I use with my Beaglebone Black, but the Pi (and thus the Odroid-W) don't really have enough GPIO pins to deal with that.
  • What battery should I get? The Odroid-W is really cool in that it has on-board power management and charging circuitry, so all I need is a Li-Po battery with a Molex 51021-0200 connector. Odroid's creator, Hardkernel, sells a $6 750mAh battery, but with the amount of space available in the TI-83+/TI-84+ battery case, I'd love to go for something a little beefier. Any recommendations? I can obviously also buy the connector and splice it onto another battery.
  • I'll have to interface the keyboard matrix (well, I want to). This should be pretty trivial, considering I already have plenty of documentation from my previous explorations into reverse-engineering the keyboard for the Ultimate Calculator.
  • What calculator should I use for the base? I have plenty available, from the TI-83+ to the TI-84+ to the TI-89Ti. I'd love to use a TI-83+SE, because it looks so spiffy, but I'm always loath to lose yet another TI-83+SE from my collection. I have a couple that I haven't been able to fix no matter how hard I try, so I will probably go that route. Bonus points for the fact that the TI-83+ case leaves lots of space behind the LCD for the Odroid-W to fit in.


I'll keep updating this topic as I make progress on this project, regardless of what people post here. I'll also review projects like this GBA+Odroid-W mockup.

Sounds cool, the ultimate calculator indeed.

Im not sure about the SPI LCD, I suppose some tests are required?!
From reading the ODROID documentation, I see three possible options for driving a display.

In approximate descending order of feasibility:
  • Software compositing, perhaps with kernel-side DMA support for pushing frames to the display. Would work with SPI.
  • HDMI. You have an HDMI output that's driven by the hardware GPU so you'll get very good performance, but it might be tricky to get a display that speaks HDMI while still being appropriate for an application like this.
  • Hack MIPI-DSI onto the MIPI-CSI camera interface. Probably not possible, though they're not entirely dissimilar buses.
I see the official expansion board uses a SPI LCD, driven with the fbtft driver. No hardware support and DMA is experimental, but you don't need to write any code.

As far as the keyboard goes, I'd probably just slap a low-power micro onboard to feed keypresses to the main processor. An MSP430 or such would probably have a negligible effect on system power if you took advantage of the power-saving capabilities.
Well, if you position the board to have the USB port on a side, the micro HDMI would be there as well. From what it looks on the board, you'd need to desolder that port to use the HDMI. An SPI or a DSI-based display for internal use and the HDMI operated for external display equipment seems like a better use of the hardware.

Do you plan on adding a USB host port for things like USB MSDs, HIDs, wireless adapters, unit-to-unit, etc.?

For the keyboard, if you are reusing an existing case, will you attempt to use the same PCB for the keys? Or make a custom PCB? Or...?
I use this screen with my pi, and it works great! https://www.adafruit.com/products/1480
I have even run a calc emu on it Very Happy
Tari wrote:
From reading the ODROID documentation, I see three possible options for driving a display.[...]
Thanks for that summary. I've purchased an SPI LCD, so I'll give it a try and see how sufficient or insufficient the redraw rate is in practice.

Quote:
As far as the keyboard goes, I'd probably just slap a low-power micro onboard to feed keypresses to the main processor. An MSP430 or such would probably have a negligible effect on system power if you took advantage of the power-saving capabilities.
Why not use the GPIO pins directly for the keyboard and write a driver? Would there be a downside to it, other than having to write a driver?

AHelper wrote:
Well, if you position the board to have the USB port on a side, the micro HDMI would be there as well. From what it looks on the board, you'd need to desolder that port to use the HDMI. An SPI or a DSI-based display for internal use and the HDMI operated for external display equipment seems like a better use of the hardware.
I agree, and that is indeed my plan. It would be pretty cool to be able to plug an external monitor into my graphing calculator, though. Very Happy I feel like I should demonstrate that as a ViewScreen equivalent if I get that far in this project.

Quote:
Do you plan on adding a USB host port for things like USB MSDs, HIDs, wireless adapters, unit-to-unit, etc.?
I do indeed, although I'll have to actually get the port.

Quote:
For the keyboard, if you are reusing an existing case, will you attempt to use the same PCB for the keys? Or make a custom PCB? Or...?
I plan to re-use the keys, a la Ultimate Calculator 3 (although I'll probably remove the ASIC this time before I try to solder on the wires).

Ivoah wrote:
I use this screen with my pi, and it works great! https://www.adafruit.com/products/1480
I have even run a calc emu on it Very Happy
I bought an ILI9341-based SPI display; the ILI3941 appears to be the direct successor to the ILI9340 that that display uses, so hooray!
What display did you get?
Ivoah wrote:
What display did you get?
I bought this one from eBay for $7.92 with shipping. For the final project, I may need to fab a PCB and transplant the socket for this LCD's cable on, or I may find a way to fit this one in as-is.
KermMartian wrote:
Quote:
As far as the keyboard goes, I'd probably just slap a low-power micro onboard to feed keypresses to the main processor. An MSP430 or such would probably have a negligible effect on system power if you took advantage of the power-saving capabilities.
Why not use the GPIO pins directly for the keyboard and write a driver? Would there be a downside to it, other than having to write a driver?
Power consumption. If you're scanning the matrix with your entire SoC powered up, it's a huge power hog compared to somehow interrupting the main CPU when there's something interesting.
I think I still have a TI-83+SE case from a broken calculator I could send you. I may even still have the PCB. Oh, but part of the case is cracked :/
Tari wrote:
KermMartian wrote:
Quote:
As far as the keyboard goes, I'd probably just slap a low-power micro onboard to feed keypresses to the main processor. An MSP430 or such would probably have a negligible effect on system power if you took advantage of the power-saving capabilities.
Why not use the GPIO pins directly for the keyboard and write a driver? Would there be a downside to it, other than having to write a driver?
Power consumption. If you're scanning the matrix with your entire SoC powered up, it's a huge power hog compared to somehow interrupting the main CPU when there's something interesting.
Hmm, you make a good point there. I shall definitely explore that option.
DrDnar wrote:
I think I still have a TI-83+SE case from a broken calculator I could send you. I may even still have the PCB. Oh, but part of the case is cracked :/
I would certainly appreciate that, but it's up to you. Smile If the case is cracked, I needless to say have proportionally less use for it.

This evening my CP2102-based UART-USB adapter arrived, and I was able to get a console on my now Raspbian-powered ODroid-W. My serial LCD should be coming soon, at which point I'll start to figure out how to pack everything into a TI-83+SE case, and whether I'll need an extra board for it.
*bump* I careful excavated the support grid on the back half of a TI-83+SE case to fit my Odroid-W into the case, drilled an (imprecise) hole in the left side for the micro-USB socket, and experimented with supergluing a pair of metal nuts to the back of the case to screw into to retain the board. Unfortunately, Superglue (cyanoacrylate) and metal aren't the best of friends, so I'll try to find some nylon nuts in my collection somewhere. I also ripped the ASIC off of an old broken TI-83+ (non-SE) motherboard, one which has a discrete z80 for nostalgia's sake. I plan to solder on wires for the keyboard connection, but I can't decide whether I'll be going the MSP 430ish route that Tari suggested (it looks like making it a sane USB HID would be pretty easy), which would reduce the number of connections I need to pass between the two halves of the case. I'll soon be modifying the battery compartment to hold a Li-Poly battery as well, and once my LCD arrives, I'll have to figure out the right way to attach it.

http://www.homedepot.com/p/Gorilla-7-8-fl-oz-General-Purpose-Epoxy-42001/100670610 might be good to fix your gluing of nuts to plastic Smile We used this (in conjunction with liquid metal, strange substance) to fix our log splitting mallet, and it worked very well. It bonded metal to plastic very well.
Thanks for the suggestion, tifreak8x. Smile I'm actually starting to think about using my 3D printer to custom-print some kind of framework to attach the board and the LCD to the front rather than the back of the case. If I did that, I wouldn't have to worry about constructing a reliable, repluggable connector between the front and back halves of the case for the LCD, power, and the keyboard. I'll try to mock this up more once my LCD arrives and I figure out how big of a custom PCB, if any, I need for the keyboard microcontroller and the LCD interface.
Seems like a good idea. Smile And for as cheap as the epoxy is, it might still be worth having around anyways, just in case you ever have need of it. :p

Eager to see what you come up with when things arrive!
Oh wow, another amazing project. Looks good and I like the framework removal work in the 83+SE case.
They make screw inserts like this: http://www.mscdirect.com/product/details/85595197?CS_010=85595197&item=85595197&CS_003=7867724&src=pla&cid=PLA-Google-PLA+-+Test which would work well if there's space to inset one into a small hole in the case at all. I wish I had some myself.
Okay, so this is well and dandy that the hardware will work. how will you emulate all the different models, though? is there a working emu for this board already out there?
Luxen wrote:
Okay, so this is well and dandy that the hardware will work. how will you emulate all the different models, though? is there a working emu for this board already out there?
It's a Raspberry Pi clone, so even without a screen, I have already installed, booted, and configured Raspbian (a Debian fork) over the serial console. As soon as my LCD arrives, I'll be able to investigate whether jsTIfied is fast enough, or if I should use TILEm instead.
*TILem2, I hope. Any plans for including a debugging interface for the emulated calcs?
AHelper wrote:
*TILem2, I hope. Any plans for including a debugging interface for the emulated calcs?
What kind of interface did you have in mind? If I'm using something like TILEm2, I'm hoping to at least be able to pause the emulation somehow. I'll need to find some special key combination to pause the emulation or at least make some of the keys issue F1-F12 combinations.

My 2.4" ILI9341-based 320x240 LCD from China finally arrived, and I spent a few hours this evening during laundry, HCWP, and early in the morning getting the LCD to work with my ODroid-W. I first soldered all of the necessary wires for communicating with the LCD and providing power, then eventually also pulled out an old front panel USB PCB from a junked computer and soldered on a USB port as well. I needed internet access on my ODroid-W to be able to install the fbtft drivers, and the USB port enabled me to connect a USB-Ethernet adapter I found skulking in one of my parts bins. Some debugging (and accidentally feeding 5V into the 3.3V bus, to no apparent damage) later, I got a console on the LCD:



A few small tweaks later, I was also able to get an X session running as well. My next order of business is to connect and configure the SPI touchscreen interface that this LCD provides. I also need to get to the bottom of why the board reboots itself every few minutes. I suspect either a noise or power consumption issue, and I expect I'll discover more once I power it off a legitimate battery rather than USB.

Edit: Note to self: TI has a document on making a USB keyboard with the MSP430, which is exactly what I need: MSP430 USB keyboard

  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 5
» All times are GMT - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement