Ever since I saw how small the Rapsberry Pi Zero W is, I've been toying around with the idea of taking a broken TI-84 Plus (CSE) and replacing the internals with a Raspberry Pi. This isn't a completely original idea, but I think I now have the resources to make it happen!

Processor: I won't be using a Rpi 0 which, at best, can only run CEmu-sdl at 30%. Instead, I've been testing out the Banana Pi M2 0 which has 4 cores instead of just 1, has the exactly same GPIO layout as the Rpi 0, and can even be overclocked to 1GHz! On paper, the specs are about on par with my Rpi 3B which can run CEmu-sdl at 100% consistently.



Unfortunately, specs on paper aren't too reflective of the actual performance. Although the Bpi 0 can emulate the home screen at 100%, it throttles down to 38% when doing anything like running a BASIC program. Curious why the performance is so inconsistent, I ran a benchmark program I found that although the Bpi 0 CPU is only about 30% slower than the Rpi 3B, the RAM is only half the speed! Whether this is the full reason why CEmu runs so slow, I don't know but it definitely doesn't help.

(Fun fact the Bpi 0's CPU is 10x faster than the Rpi 0 and has 8x faster RAM)

Display: I'd really like to make the Bpi 0 work with CEmu somehow. It's a great size, and has a power and reset button built in. Even better, since it has the same GPIO layout as the Rpi 0, I can use accessories such as this 2.8 inch display which is the perfect size to replace the calculator's LCD! (I've already verified the required software is compatible with the Bpi 0) It even has a touch screen which could have advantages if I ever use it for emulating, say an HP Prime.



Emulator: If CEmu doesn't work, I can try installing tilem which would only emulate monochrome calculators, but at least it would run well.

Keypad: Whether or not CEmu will work, I'll still need to work out a few other logistic issues. Most importantly, the keypad. Thanks to NoahK's work on the TI-84 KE, I know it's possible to tap into the calculator's key matrix and use it as a keyboard! There's one big issue I have to work out with the keyboard. The Bpi 0 only has one OTG USB port. If I convert the key matrix into a USB keyboard, then that's my only USB port used up. I can't connect the keyboard to GPIO since the display hogs them all which leaves the only the RX and TX pins along with the RF connector. Neither of which I've ever used before. The Bpi 0 does support Bluetooth keyboards, but I'd prefer if the keypad was hooked up with hardware.

Heat: Having 3 extra cores means the Bpi 0 kicks off a lot of heat. Even with heat sinks, temperatures get up to almost 70°C which I believe is the point it thermal throttles. My initial thoughts are to cut out the two dips on the back of the calculator and insert a small fan there. I may also widen the (now empty) I/O port to allow more airflow.

Battery: One good thing about the CSE, is that there's a LOT of extra space. I think I could easily add a 5,000 mAh battery. The Bpi 0 draws ~400mA peak according to my measurements. That would last about 12 hours on a single charge! Of course, I also need a battery charging circuit, but with all the extra space the CSE provides, I don't expect it to be an issue.

So, that's my brain dump! I won't be completing this anytime soon, but it should be pretty amazing if I can resolve all my issues.
Sounds like a cool project - Regarding the LCD I'd be surprised if it actually used all GPIO? I think it's just made that way for easy connection to the RPi. EDIT - Just read some of the comments because of a lack of datasheet or model number and it does? An SPI LCD might be a better option pin wise too. I wonder if reducing the resolution to 320x240 might help performance?

This would free up GPIO for the keypad, or you could try a GPIO expander IC like the MCP23017? This means you could interface with 16 GPIO over I2C or SPI pins as well.
TheLastMillennial wrote:
I won't be using a Rpi 0 which, at best, can only run CEmu-sdl at 30%. Instead, I've been testing out the Banana Pi M2 0 which has 4 cores instead of just 1, has the exactly same GPIO layout as the Rpi 0, and can even be overclocked to 1GHz!

I've done a lot of research on off-brand RPi's for some projects similar to this with pocket computing, and while you picked an okay knock-off, I'm still extremely skeptical and surprise that you can boot it up and run something intensive on it without a kernel panic; knock-off's are notoriously unreliable cough RockPi cough

Quote:
...Although the Bpi 0 can emulate the home screen at 100%, it throttles down to 38% when doing anything like running a BASIC program...

Case in point, I hope you aren't using a desktop interface in your final build though, that'll kill performance. You could try making a custom build of CEmu, or just boot straight to CEmu and skip the desktop entirely. I'd give that some more research though, I haven't looked into that too much for my little pocket PC ideas.

Quote:
...The Bpi 0 only has one OTG USB port. If I convert the key matrix into a USB keyboard, then that's my only USB port used up. I can't connect the keyboard to GPIO since the display hogs them all which leaves the only the RX and TX pins along with the RF connector...

So either use a few GPIO's and some sort of I2C matrix controller or this little doodad.

Quote:
...Having 3 extra cores means the Bpi 0 kicks off a lot of heat...

Sounds like you've overclocked too high, or maybe have a few too many cores in use.

Quote:
....One good thing about the CSE, is that there's a LOT of extra space.

I don't have one, so I googled a few images for it. "A lot of extra space" is an understatement, you could probably solder off the ethernet and USB ports from a full-sized RPi and stuff it inside with room for a tiny fan and more batteries. with extra stuff too. The performance boost would be huge too, overclocking would double your CPU speed (although then you'll absolutely need cooling).

And yes, I have thought about putting an RPi in a calc before, it's becoming less and less original, but if TI keeps taking our ASM then we'll just have to replace the entire hardware!
I thought about using a 320x240 screen, but Raspian's lowest supported resolution is 640x480 so I can't really use a 320x240 display if I want to do something else with it in the future. Changing the resolution of the Banana Pi manually is next to impossible you have to edit a .FEX file using tools that don't work and I haven't gotten around to fixing them. Expanding the GPIO would be nice to have, but I think King Dub Dub has me covered with that tiny USB hub!

My original plan was to use a Raspberry Pi 3A, but it was too tall and I didn't want to de-solder anything. If you've got something better than a Banana Pi that's the same size, I'd love to try it!

I've only run CEmu through the GUI so far, I haven't worked on running it through CLI yet. I don't really expect a 70% speed boost though. I suspect the bottleneck is mostly hardware related, perhaps due to the slow RAM? Nevertheless, I'll work on launching CEmu at startup and see what speeds I can get. If it's still slow, I've basically emulated a CSE hardware with a CE OS. Laughing

Thanks for all the input! I'll keep testing to see what I can do to improve performance.
I actually managed to do this with a CE a couple years ago, but it died for various reasons. It was also such a jank setup with the keyboard PCB that I didn't even post it.
  
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 1
» All times are UTC - 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