The idea of placing a Raspberry Pi Zero W and LCD Touch screen into a TI Graphing Calculator case came to me back in December of 2017 when I saw somebody had basically put a Gameboy in a TI Calculator and I thought it would be nice to actually have something that had a lot more functionality, could run a Calculator Emulator, Games, Browse the internet, etc. The idea originally was more to see if it could be done. However, I didn't actually start working on the project until July of 2018 due to moving around a bunch.
By that time, I had acquired a couple of cheap TI calculators that I purchased off eBay that were non-functioning. Unfortunately the first one (A TI-86) wasn't functioning because the batteries had leaked and corroded the circuit board beyond usability. The other was a TI-83.
I started by using a heat gun to remove all of the existing components because I needed the room and just wanted the raw circuit board traces. Next I used some solder wick dipped in flux to to clean any remaining solder and finally used some acetone to clean off any flux and adhesive from the board. I took a digital photo of the board and used photoshop to meticulously trace down all of the button pads in order to figure out the logical layout and plugged the information into a spreadsheet. It turns out they are arranged in roughly a 7x8 matrix with 6 missing potential buttons for a total of 50 buttons. After that, I soldered some thin wires that I took from an old printer cable to the vias on the circuit board so that I could access them later. Finally, I took a sheet of Kapton tape that I had for my 3D printer and covered the board to insulate it from the rest of the circuitry.
To get the screen and it's circuit board to fit, I ended up using the LCD from an Adafruit PiTFT 2.8" together with the circuit board from an Adafruit PiTFT 2.4" hat that I desoldered the connector from and cut down with a Dremel tool after looking at the board drawing in Eagle to make sure it would still work. I do recall it used a split ground plane, so I had to make sure to connect the ground of the Raspberry Pi on both halves of the plane. One of the issues I ran into while attempting to get the screen working is that there seems to be an inherent incompatibility between the Raspberry Pi Zero and the Adafruit displays. I was able to trace it down to SPI not starting up soon enough and adding spi_bcm2835 to /etc/modules fixed the problem. I was able to help Adafruit resolve this issue with that fix.
I used an Adafruit PowerBoost 1000c for maintaining the Lithium Ion battery that I got from Amazon. Since this was intended to run off battery, I put together a voltage monitoring circuit based around the MCP3008. However, for the final circuit, I opted to go with an MCP3002 since it was smaller and had fewer pins. I also used a 74HC595 8-bit shift register for reading the keys on the keyboard since I was running out of GPIOs. I had a custom circuitboard made by OSH Park that had both the shift register and voltage monitoring circuit on it. It worked out well since I needed the board to be small and the smaller I made it, the cheaper it was. I think it was $3.65 for 3 of them, but I paid a little extra for expedited service on top of that to shave a week off.
Originally I was planning on adding an audio jack circuit, but I realized the Pi Zero W has bluetooth and since I have bluetooth headphones, that just made everything easier. That gave me a little room to add a mini HDMI jack to the top of the calculator.
While developing it, I did a lot of testing on a Raspberry Pi 3 B+ and breadboard. Once I got the circuitry back, I soldered everything together and it worked pretty good. There was a small issue in that the code for the voltage monitoring circuit was not working properly because the MCP3002 has a slightly different instruction set than the MCP3008, but after comparing data sheets, I was able to modify the code to return the correct values.
Over the...Read more »