Arduino SMS device

I'm working on an SMS device that is programmed in the Arduino IDE and uses a tiny chorded keyboard for input, a SIM900 GSM module to accept standard AT commands, and a Nokia5110 LCD to display output. I stopped by earlier this evening and Paul (thanks Paul!) helped me debug. I've posted a thread on the Arduino.cc forum http://forum.arduino.cc/index.php?topic=206415 but basically I'm having trouble getting my sketch to run in the tiny 2K of RAM available on the ATmega328.

I'm hoping somebody can help me reduce the memory footprint of the GKOS keyboard library found here http://playground.arduino.cc/Main/GkosMain. I've updated that page to reflect the minor tweaks I had to do to get it to work with Arduino 1.0+ since it hasn't been updated in years. If you have other suggestions I'd be happy to hear them.

AttachmentSize
firstsms.png784.95 KB

Comments

Captain's log

Update, I just added a photo of the first successful transmission.

I trimmed down the keyboard library I describe above by removing (two of the five) large static char arrays leaving only those that I need and reducing memory footprint to less than 2K. I also changed one from type int to uint8_t which saved 64 bytes. Other tweaks to libraries of note: SoftwareSerial is given a larger buffer (256 vs 64) so that a whole SMS can be read without overflowing the serial buffer, and the Adafruit logo array is removed from the graphics library.

The current sketch demonstrates basic functionality of the GMS module accepting AT commands typed from the chorded keyboard, displaying them as they are typed, and displaying the output as well.

My next steps are to develop a modal input interface with AT command macros so doing anything takes less key presses, and to upgrade the display from this 84 x 48 to a 128 x 64 which is enough to display an entire SMS without scrolling - a feature I also need to implement.

That's great, can't wait to

That's great, can't wait to see this working!  I've always been interesting in trying chorded keyboards.