Graphing calculators are nothing less than powerful pocket computers, capable of doing many of the same things as smartphones, desktops, and laptops. Given that they have reasonably fast processors, a display, memory, and ports to interface with the outside world, I set out to making graphing calculators capable of determining their location using standard GPS hardware. I started with the TI-84 Plus / Silver Edition series of graphing calculators, which have a 15MHz processor, a 96x64-pixel monochrome screen, rudimentary timers (as well as one 32KHz crystal timer), and perhaps most importantly, two ports to interface with the outside world. One is a USB OTG port, a mini-USB port capable of acting as either a host or device, and therefore capable of producing 5V for peripherals. The other is a "serial" I/O port with two bidirectional TTL-level data lines. For my project, I chose to use the USB port for power, and the I/O port to communicate with a TTL serial GPS module. I created both the hardware and software necessary to make the project a reality, then suffered through two weeks of trying to get a GPS fix amid the metal canyons of a major US city.

Along the way, the two major technical challenges I faced were building a serial library and powering the module from the calculator. Once I succeeded in building functioning hardware and software, and eventually got a video of the GPS device operating normally, I documented the project in the writeup, video, and pictures linked below. Enjoy, and I challenge you to try building this project as well!

More Information
GPS for graphing calculators documentation
Video of TI-84+SE receiving GPS data
GPS driver for TI-84+/SE

That's pretty awesome. You should add a feature that saves the current coords to a file on a button press. Then they could import the saved coords and trace their walk or whatever it is.
comicIDIOT wrote:
That's pretty awesome. You should add a feature that saves the current coords to a file on a button press. Then they could import the saved coords and trace their walk or whatever it is.
I actually thought about that, a button that would append the current coordinates to a pair of lists, so you could use a StatPlot to plot your movement. I thought that might actually be something TI Education would like to see.
Use the a timer to just do it every second or something (probably make it configurable). Or, better yet, make it and ExecLib call and have a BASIC program that does that!
I second that! I think it would be very cool if you could make things in BASIC that do that. In fact, how suited would this setup be for geocaching with a little modification?
merthsoft wrote:
Use the a timer to just do it every second or something (probably make it configurable). Or, better yet, make it and ExecLib call and have a BASIC program that does that!
The problem with that is that while the GPS module is plugged in, the OS interrupt tends to get sad about quite a number of things, including the fact that there's activity on the link port. In other words, executing TI-BASIC while the GPS is connected would be quite challenging. On the other hand, I was considering adding a bit more to the GPS driver program in terms of interface and functionality, so a manual trigger and/or a timed trigger to save coordinates into a list would be something I'd consider adding indeed.
I'm curious, do you think there is a way to have a data set to pull from, that could pull from areas of longitude and latitude to tell you what state/country a person is in? Might be pointless, just a thought.
tifreak8x wrote:
I'm curious, do you think there is a way to have a data set to pull from, that could pull from areas of longitude and latitude to tell you what state/country a person is in? Might be pointless, just a thought.
Yes, that would be relatively easy to encode; even a list of major cities and states wouldn't take up terribly much memory. Maybe 10 bytes per pair of coordinates plus say 10 bytes maximum for the name of the location, for 20 bytes per item, which means you could fit a few hundred such items at least.

Edit: Featured on Hackaday: http://hackaday.com/2014/02/04/gps-for-a-graphing-calculator/
Good thing...But I look fotward to a TI-89, V200 or nSpire way, for I do not own a TI-84.
jbjjbj wrote:
Good thing...But I look fotward to a TI-89, V200 or nSpire way, for I do not own a TI-84.
I don't have any plans to implement this for the 68k or TI-Nspire calculators, so I'll have to leave that for someone else. It's worth noting that the Nspires have a hardware UART exposed on the docking connector, so this would be much, much easier on an Ndless-ed TI-Nspire than on the z80 or 68k line.
-Send me the code! Scratch that, I'll mod it to use just the USB port and send it to you! Very Happy
Hay, would you mind sharing the code for this? In particular, I'm interested in the serial library. Could be really useful.
unlimitedbacon wrote:
Hay, would you mind sharing the code for this? In particular, I'm interested in the serial library. Could be really useful.
Actually, Ivoah has been asking me about this as well. I discussed some ideas about how I can improve the serial library on our last HCWP session that I attended, and I'd like to try to make those changes before I release this. In addition, I plan to show off this work at World Maker Faire 2015 in NYC, if our application is accepted, so that will give me more motivation to improve this and release the source.
unlimitedbacon wrote:
Hay, would you mind sharing the code for this? In particular, I'm interested in the serial library. Could be really useful.

Kerm is very much opposed to open source code. It is highly doubtful he will.
allynfolksjr wrote:
unlimitedbacon wrote:
Hay, would you mind sharing the code for this? In particular, I'm interested in the serial library. Could be really useful.

Kerm is very much opposed to open source code. It is highly doubtful he will.


I've asked him for this before, and he said that the only thing stopping him was that the code was trash and barely even worked.
Ivoah wrote:
allynfolksjr wrote:
unlimitedbacon wrote:
Hay, would you mind sharing the code for this? In particular, I'm interested in the serial library. Could be really useful.

Kerm is very much opposed to open source code. It is highly doubtful he will.


I've asked him for this before, and he said that the only thing stopping him was that the code was trash and barely even worked.

That's an excuse, not a reason.
I've been working on this a little bit more in preparation for Maker Faire 2015, and I've made improvements both to the serial communication and to how GPS messages are parsed. Since I had a hard time using the faster CPU counter interrupts to reliably sample at 4800baud, I switched to an interrupt that fires on a 32768 Hz crystal timer. Using a 75-element sequence of 6-tick (183.1us) and 7-tick (213.6us), I can extract exactly 4800 baud sampling from the calculator's timers, with a maximum error of about 104us 15us (thanks, Runer112). Although it's not perfect, it's a great deal better than before, requires no manual tuning, and works regardless of a particular calculator's speed quirks. I'll eventually update the GPS program in the Archives with this improvement, and hopefully thereafter extract the serial library for general use.

Cool
  
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