The ATmega microcontroller on the Arduino uses 5V serial signalling while the Telit module uses 2.8V.
I gather that this means that when Libelium designed the breakout board for the Telit module they put in a resistor on the RX pin to knock the 5V down to ~2.8V (either that or I'm slowly destroying the module, I think I need an oscilloscope to measure such things and I don't have one) but didn't see fit to include a MOSFET on the TX pin. This is doubly annoying since the breakout board takes 5V and converts it down to the 3.4-4.2V required by the Telit module so it would have been relatively easy (I'd imagine, I could be wrong).
So now I need to figure out what a MOSFET is, how to use one and what kind I need to turn 2.8V into 5V.
1 - He suggested that one of the devices was using 3.3V signalling... I should be so lucky!, the ATmega would have been able to deal with that as it registers anything >3V as a 1 :(
- Mood:
relieved
I have a breakout board for the telit GSM module, it's made by Libelium and it was a limited run, it comes with absolutely no documentation apart from the circuit schematics.
Hooking power up to the board proved to be today's first hurdle as, under USB power, the GSM module would turn itself off while establishing a connection to the network. Luckily I noticed that it didn't do this when the antenna was unplugged and sussed that it was trying to draw too much power. problem solved by hooking up an external power supply instead of using USB.
I was able to hook up the GSM module to an Arduino with it's ATMega processor removed. In this state the TX & RX pins on the Arduino are bridged to the FTDI USB serial controller and anything connected to it via USB. A side effect of this is that the TX & RX pins are swapped. The Libelium breakout board has two (unlabelled, undocumented) jumpers to compensate for this.
With the GSM module hooked up the my laptop I was able to send AT commands to it to send and receive SMS and make / receive calls (albeit without a mic or speaker hooked up).
Using the knowledge gained from connecting directly to the GSM module I was able to quickly knock together a simple Arduino sketch (program) to boot up the Telit module, send me an SMS and power-down the module. Which was nice. I had a hardware device that, without being connected to a computer, could send SMS. It felt like I'd made some progress!
This code blindly sent the AT commands for sending the SMS, for the phone to be stable I'd need to do things like check for signal strength etc, not to mention pick up alerts for incoming calls.
Reading from the GSM module is currently proving to be troublesome.
It works when I'm using the FTDI serial controller but I receive NOTHING on the Arduino's RX pin when reading from the GSM module's TX pin. NOTHING.
I can use the previously mentioned software serial method to read the GSM's TX pin using a normal digital pin on the Arduino but that doesn't have a UART, which I gather I'd need in order to avoid losing bits when my code is doing something other than checking to see if the GSM module is transmitting data.
I reckon there is some incompatibility between the Arduino's UART and the GSM module and/or the breakout board... but I'll be buggered if I can find out what it is.
So I'm kind of stuck at the moment, not really sure how to progress. Very, very frustrating!
Hooking power up to the board proved to be today's first hurdle as, under USB power, the GSM module would turn itself off while establishing a connection to the network. Luckily I noticed that it didn't do this when the antenna was unplugged and sussed that it was trying to draw too much power. problem solved by hooking up an external power supply instead of using USB.
I was able to hook up the GSM module to an Arduino with it's ATMega processor removed. In this state the TX & RX pins on the Arduino are bridged to the FTDI USB serial controller and anything connected to it via USB. A side effect of this is that the TX & RX pins are swapped. The Libelium breakout board has two (unlabelled, undocumented) jumpers to compensate for this.
With the GSM module hooked up the my laptop I was able to send AT commands to it to send and receive SMS and make / receive calls (albeit without a mic or speaker hooked up).
Using the knowledge gained from connecting directly to the GSM module I was able to quickly knock together a simple Arduino sketch (program) to boot up the Telit module, send me an SMS and power-down the module. Which was nice. I had a hardware device that, without being connected to a computer, could send SMS. It felt like I'd made some progress!
This code blindly sent the AT commands for sending the SMS, for the phone to be stable I'd need to do things like check for signal strength etc, not to mention pick up alerts for incoming calls.
Reading from the GSM module is currently proving to be troublesome.
It works when I'm using the FTDI serial controller but I receive NOTHING on the Arduino's RX pin when reading from the GSM module's TX pin. NOTHING.
I can use the previously mentioned software serial method to read the GSM's TX pin using a normal digital pin on the Arduino but that doesn't have a UART, which I gather I'd need in order to avoid losing bits when my code is doing something other than checking to see if the GSM module is transmitting data.
I reckon there is some incompatibility between the Arduino's UART and the GSM module and/or the breakout board... but I'll be buggered if I can find out what it is.
So I'm kind of stuck at the moment, not really sure how to progress. Very, very frustrating!
- Mood:
frustrated
[previously]
So I've decided to take the low-hanging fruit for the first version of my homebrew phone. Some of you reading this really know your stuff when it comes to electronics and will be disgusted by this approach but as I said in my first post about this: I know ever so slightly more than nothing about electronics, but I'm going to learn as I go :)
So, the parts strewn across my desk currently consist of several variations of Arduino boards and a Telit GM862 module.

The Arduino is heavily documented here and is a very nifty bit of kit if, like me, you know nothing about electronics but can write a bit of C.

The Telit module is amazing on paper, the model I have is a single module that handles GSM, GPRS and GPS. It's controlled by AT commands over a simple serial connection and also has an onboard python interpreter. It also has far more memory on-board than the Arduino so that could be handy.
I intend to hook the Telit module, a keypad and a 2-line LCD display to the Arduino while the Telit module has pin-outs for a mic and speaker. Sounds simple no?
The first hurdle would appear to be "how to hook the Telit up to the Arduino"... but no, that seems a relatively straight forward case of connecting power, tx and rx... of course it probably won't be that simple but I have a more pressing issue to solve first.
The Arduino only has one method of serial communication. I can either use it via the on-board FTDI USB adaptor or via the TX/RX pins... but not both.
At first glance this makes debugging the Telit board via the Arduino quite troublesome.
Behold the solution:

Two Arduinos (in this case an Arduino Diecimila and a Freeduino) talking to each other over serial (sort of) over two of the digital inputs, leaving the main serial channel open for communication with a computer or the Telit module... and there is even a bit of example code here that made it easy to build what I wanted in about 15 minutes :)
I'll be adding photos to the "Homebrew Phone" set on my Flickr Feed as I make further progress.
On another note, a few of you have offered to help with this but while I greatly appreciate the offers this really is something I'd like to do by myself :)
So I've decided to take the low-hanging fruit for the first version of my homebrew phone. Some of you reading this really know your stuff when it comes to electronics and will be disgusted by this approach but as I said in my first post about this: I know ever so slightly more than nothing about electronics, but I'm going to learn as I go :)
So, the parts strewn across my desk currently consist of several variations of Arduino boards and a Telit GM862 module.

The Arduino is heavily documented here and is a very nifty bit of kit if, like me, you know nothing about electronics but can write a bit of C.

The Telit module is amazing on paper, the model I have is a single module that handles GSM, GPRS and GPS. It's controlled by AT commands over a simple serial connection and also has an onboard python interpreter. It also has far more memory on-board than the Arduino so that could be handy.
I intend to hook the Telit module, a keypad and a 2-line LCD display to the Arduino while the Telit module has pin-outs for a mic and speaker. Sounds simple no?
The first hurdle would appear to be "how to hook the Telit up to the Arduino"... but no, that seems a relatively straight forward case of connecting power, tx and rx... of course it probably won't be that simple but I have a more pressing issue to solve first.
The Arduino only has one method of serial communication. I can either use it via the on-board FTDI USB adaptor or via the TX/RX pins... but not both.
At first glance this makes debugging the Telit board via the Arduino quite troublesome.
Behold the solution:

Two Arduinos (in this case an Arduino Diecimila and a Freeduino) talking to each other over serial (sort of) over two of the digital inputs, leaving the main serial channel open for communication with a computer or the Telit module... and there is even a bit of example code here that made it easy to build what I wanted in about 15 minutes :)
I'll be adding photos to the "Homebrew Phone" set on my Flickr Feed as I make further progress.
On another note, a few of you have offered to help with this but while I greatly appreciate the offers this really is something I'd like to do by myself :)
- Mood:
tired
I'm going to build my own mobile phone in my spare time, y'know, by buying components, soldering them together and writing some code to make them all work together.
I've already ordered the basic building blocks and parts should start arriving from around the world any day now.
Why would I take on such a task days after the announcement of the Nokia E71 and weeks before the release of the Apple iPhone 3G (both phones I'm very excited about, and both phones I'll be owning shortly after their release)?. It's partly because it's the sort of thing I enjoy doing, but it's also partly down to critisicm. As in my criticism of other people.
I'm a critic, but I just don't feel it's right to be critical unless you have some kind of experience of what you're criticising or at least a very strong belief that you can do better. Nobody wants to be a hypocrite, after all!
So when I publicly chastise Orange on the SMSTextNews.com podcast for an outage they had, I do so knowing that if I were responsible for it, I'd have done a better job. Sometimes, in the case of the new JawBone bluetooth headset the better job would have been not releasing the product in the first place as it blatantly didn't do what it said it did on the box (in my experience).
As both mobile geeks and professionals we often find ourselves critiquing handsets when they are announced or released. Something like:
"Oh Nokia, this is almost a perfect handset but WHY does it only have a QVGA screen?"
"The N95 is great but the GPS drains the battery"
"The iPhone would be better if it had a better camera, 3G and GPS... and a proper keyboard."
But, presumably, somewhere in the early stages of the design of the handset someone chose those components because they were the right fit for that handset. Either that or they weren't doing their job properly!.
So by building my own cellphone I hope to gain a slightly better understanding of the hurdles experienced by the people who design the handsets we use every day. I won't have the bureaucracy of working inside a large company but neither will I have their experience or budget.
This isn't going to be a commercial venture and should a handset actually come out of this it won't be aesthetically pleasing (although it might have a certain cyberpunk appeal).
Some important milestones are as follows:
Don't expect anything to happen quickly... it's a spare time project so I might only get a few hours a week to work on it.
It's also worth noting that I only know a tiny bit more than nothing about physical electronics and will be learning as I go. But really, how hard can it be? ;)
I've already ordered the basic building blocks and parts should start arriving from around the world any day now.
Why would I take on such a task days after the announcement of the Nokia E71 and weeks before the release of the Apple iPhone 3G (both phones I'm very excited about, and both phones I'll be owning shortly after their release)?. It's partly because it's the sort of thing I enjoy doing, but it's also partly down to critisicm. As in my criticism of other people.
I'm a critic, but I just don't feel it's right to be critical unless you have some kind of experience of what you're criticising or at least a very strong belief that you can do better. Nobody wants to be a hypocrite, after all!
So when I publicly chastise Orange on the SMSTextNews.com podcast for an outage they had, I do so knowing that if I were responsible for it, I'd have done a better job. Sometimes, in the case of the new JawBone bluetooth headset the better job would have been not releasing the product in the first place as it blatantly didn't do what it said it did on the box (in my experience).
As both mobile geeks and professionals we often find ourselves critiquing handsets when they are announced or released. Something like:
"Oh Nokia, this is almost a perfect handset but WHY does it only have a QVGA screen?"
"The N95 is great but the GPS drains the battery"
"The iPhone would be better if it had a better camera, 3G and GPS... and a proper keyboard."
But, presumably, somewhere in the early stages of the design of the handset someone chose those components because they were the right fit for that handset. Either that or they weren't doing their job properly!.
So by building my own cellphone I hope to gain a slightly better understanding of the hurdles experienced by the people who design the handsets we use every day. I won't have the bureaucracy of working inside a large company but neither will I have their experience or budget.
This isn't going to be a commercial venture and should a handset actually come out of this it won't be aesthetically pleasing (although it might have a certain cyberpunk appeal).
Some important milestones are as follows:
Don't expect anything to happen quickly... it's a spare time project so I might only get a few hours a week to work on it.
It's also worth noting that I only know a tiny bit more than nothing about physical electronics and will be learning as I go. But really, how hard can it be? ;)
- Mood:
optimistic
