Category: Telit GE865
Success! More or less, anyway.
Using the nxpUSBlib (having made a few modifications – I'll do a post on that soon) I've managed to get USB CDC working and I got the GSM initialization and SMS receiving working.
At the moment, on receiving an SMS, the system will reply to the sender with the current GPS status regardless of the contents of the SMS.
(The GPS has no fix because it is on my workbench with no satellites in view.)
Power supply considerations
But: I need to do some careful design of the power supply. The GSM module is extremely power hungry. Especially when registering on the network or doing any other network related tasks – like sending or receiving SMSes. And the battery I'm currently using can not supply enough power for both the GSM module and (through a linear 3.3 V voltage regulator) the MCU and GPS module.
So I'll have to get a beefier battery (this 2000 mAh one) or this 6000 mAh one) and also add a low ESR capacitor (as recommended in the GSM module datasheet).
And I'll also add P-channel MOSFETs as high-side switches for the GSM and GPS modules in order to be able to switch power on and off to these modules.
At the moment I run the prototype off two separate power supplies: the 3.7 V LiPo battery directly connected to the GSM module and a 9 V battery supplying the MCU and GPS module through a 3.3 V LDO voltage regulator.
It’s about time for a new project and I’ve decided to dust off an old project that I never really got started: a GPS tracker with a GSM/GPRS phone module.
Sure, there are plenty of GSM enabled GPS trackers available – both comercially (like this one) and as hobby projects (this one for example) but that doesn't mean that I can’t 1) learn a lot from making one myself, 2) have fun while doing it and 3) make something better than what is out there…
So the initial high-level requirements (aka “what’s it gonna do”) are:
- Get current position from GPS module.
- Accept commands as SMS messages from a GSM module.
- Send position info back as SMS.
- Continuously send position info to a webserver.
And my initial design considerations (aka “keep this in mind when designing the thing”) are:
Everything must be run off a 3.7 V LiPo battery. So think about power consumption and battery capacity.
The LiPo will be charged with a mini-USB cable.
Think about the size and mounting of GPS and GSM modules as well as antennas for GPS/GSM.
We’ll also need access to a USB socket for charging.
Also, the LiPo battery needs to fit in the enclosure.
The components I have in mind for this project right now is:
- MCU: NXP LPC11U24 ARM processor. I’m thinking that is a good project to start switching from AVR to ARM.
- GPS: SUP500F GPS module since that’s what I already have in my parts box. Otherwise I would probably choose a more modern module.
- GSM: Telit GE865 on breakout board – again the reason is mainly that this is what I already have. But it’s still nice.
- LiPo charging IC: The Microchip MCP73831 looks like it fits my purposes perfectly: it is designed to charge one LiPo cell from a USB port and it has bi-directional status output.
- Status LEDs: a couple of 0805 or 1210 SMD LEDs. The exact model is not critical.
- SIM holder: a generic SMD SIM holder. Something like this.
- Battery: 1000 or 2000 mAh 1s LiPo battery. This one for example.
The next step is, of course, cobbling together a prototype. And in order to do that, I will:
- Get the GSM module working: find a suitable SIM, figure out how to send and receive SMS'es and get HTTP GET and PUT working using GPRS.
- Verify that the GPS module works.
- Create block diagrams for hardware and firmaware (i.e. identifying components and dependencies)
I connected everything – that is: battery, SIM card, push button, LED and transistor and level shifting for 2.8V <-> 5V logic. And considering how much trouble people seem to have had I was surprised how quickly it worked!
The only two things I ran into was:
- The first SIM card I used didn't want to talk to the GE865. Probably because it is for a 3G modem and not a phone. Anyway, the second (normal) SIM card worked perfectly.
- Using the Arduino IDE's serial monitor as terminal interface didn't really work. But using "screen /dev/tty.usbserial-A9007ND2 9600" from the Terminal prompt worked flawlessly.
I had zero problems with the power supply. Even though I'm not using the recommended low ESR capacitor. Maybe because I'm in a densly cell-phone-covered area. Or maybe because the battery is capable of delivering up to 2A by itself.
And everything worked: sending and receiving SMS'es, retrieving a web page using GPRS. Nice! Now I just need to connect it to a DTMF decoder and a Speakjet :-)
Here's a picture of the breadboard setup:
Continuing work on the simple-simple setup, I needed to connect the GE865 to the breadboard. And preferably in a non-permanent way.
I decided to go with 0.1" MOLEX connectors and I chose to use three connectors (only two of which is connected in the simple setup).
– at least to begin with.
- Power supply
The power supply is ciritial. Firstly, the module requires 3.8V (will accept 3.4V - 4.2V). Secondly, the power supply has to be able to supply 2 Amps in peaks. This is way more than most simple power supplies can handle. This seems to be the single most common source of problems people have when the module does not work properly.
I will power the module from a single 3.7V LiPo battery. The hardware guide recommends a battery capacity of 500-1000 mAh in order to handle an output of 2A. Therefore [this] battery looks ideal.
In order to handle the current spikes a capacitor must be fitted. It is crucial that the capacitor is a "low ESR" type. The hardware guide recommends a 100 µF 10V tantalum capacitor.
- Logic levels
The module uses 2.8V CMOS logic levels. That means that logical high is nominally 2.8V (specified as between ~2.2V and 3.0V). This is different from the ATmega168 levels where output high is close to Vcc (required input high when supplied at 3.7V is ok at approx. 2.0V).