GPS + GSM modules on a Microcontroller

Hi all!

I would like to use a GPS + GSM module to send the long/lat coordinates as a text message to a pre-specified mobile phone when a signal is pushed.

So far, this board looks like it might do the trick ( but I have a few questions:

  1. Will this FONA board work on a TI MSP430 (specifically this one? Theoretically it should as it supports UART right, but I can seem to find any implementation of this at all. If is does, will there be a lot of complex porting work required (even if I use Energia?)

  2. As 2G will be shut down in Australia soon, is it better to just get the 3G GSM + GPS board instead ( and interface with that? Is it that much harder?

Thanks so much in advance :slight_smile:

Hi Anwar,

I’ll jump straight to your 2nd point. Yes, the 2G network is about to be turned off, so I would recommend going with the 3G option. It’s no harder to use as the idea is that the module on board takes care of all of the protocol specific layers in its software stack.

They are designed to output data in a specific format via UART. So all you need is a UART capable microcontroller to interface with it. No platform is going to be easier or harder to interface with because it is a standard (that’s the idea of UART). It will just depend on your IDE, compiler and toolchain how you write the code to handle the information coming from the UART port. I’m not sure what you mean by ‘porting’ to Energia because porting usually refers to taking libraries specific from one platform to work with another. So far you haven’t mentioned any libraries, or any other platform besides Energia so there isn’t really anything to ‘port’.

1 Like

Hi Sam, thanks for the response!

Sorry for the confusion. What I meant was porting from the Adafruit_FONA Arduino ( to the TI MSP430. Would it just be a manner of changing pin layouts/definitions?

I was thinking Energia because it uses the same code style as the Arduino IDE and is compatible with the MSP430.

Hi Anwar,

Porting libraries isn’t just as simple as changing pin definitions over. The entire Arduino system (with the exception of ARM Cortex boards such as the Due which require additional abstraction) is based around 8-bitAVR processors, which are relatively simple devices. To turn a pin HIGH/LOW in raw C you would write:

DDRB |= (1<<PORTB0);
PORTB |= (1<<PORTB0);

You do that because as per the AVR datasheet, the 8-bit registers for the GPIO pins are given as such. Now a different chip, say a TI 32-bit microcontroller will operate completely different and would require a whole new level of abstraction to be written to work with an Arduino library which just assumes that you chip knows what digitalWrite(0, HIGH) or is, because that isn’t a standard function of C and won’t work with anything other than an IDE supported by the wiring abstraction.

Now after taking a look into Energia, it may be possible to cobble together some of the Arduino libraries to work with it, however, that will be up to you to explore that. And since reading UART data is a fairly straight forward exercise, wouldn’t it just be simpler to use Energia’s own libraries which are designed to work with TI chips/boards.

So whilst Energia may follow the Wiring abstraction (I used a raw C example for AVR just to show why the Wiring layer is required), depending on how it’s built, it may or may not be a simple job to port an Arduino library over to it. It could be worth looking into, but that’s well and truly beyond the scope of our technical support for our products.