Skip to content

A collection of Firmwares and App notes for SIMCOM Modems

SIMCOM– Firmwares

Here I am trying to make a collection of firmwares and release notes for Simcom Sim900 and other Simcom GSM/GPRS modules

0×3700001000000115.rar (1.4 MB)

1137B01SIM900M64_ST_DTMF_JD_MMS_FOTA.rar (6.42 MB) Read more

“The IC Time Machine”

What is it?

“A highly stable controller capable of producing accurate time delays, or oscillation.”
-Philips Components and Semiconductors

The 555 is a 8-pin intergrated circuit with 2 modes of opperation. The time delay (stable) mode is controlled by one capacitor and one resistor. The oscillation (astable) mode is controlled by a capacitor and two resistors. There is also a third mode Bistable mode or Schmitt trigger  : the 555 can operate as a flip-flop, if the DIS pin is not connected and no capacitor is used. This post will focus on some of the basics of 555 ic.


1. 555 ic introduction

2. Pin configuration

3. Operation modes

4. Component  selection

5. Specifications for NE555

6. Derivatives

7. Resources

Read more

Keeping track of time in embedded applications: millis();

Its very handy to keep track of time in embedded programs. In this post I will implement a function called millis() which can be used to track time.  Arduino users will be familiar with this one. I would be doing it for AVR MCUs you can easily port it for others. this function returns the number of milliseconds since the MCU began running the current program. This number will overflow (go back to zero), after approximately 50 days.
It uses a hardware timer , in this post i will use timer0 . The first step is to initialize timer0 and interupts. lets start.

In the code shown above we have initialized timer/counter 0 to make an interrupt after every millisecond. Next we have to update our millisecond count.

That’s it. Lets see how to use it! First we copy the current value in milis() to a variable.

and later we compare the new values with the start value. Here’s an example of a 25 second.

Note that the parameter for millis() is an unsigned long, errors may be generated if a programmer tries to do math with other datatypes such as ints.

There are a number of ways you can use this. Hope this post will help you

Disable CLK Pre-scaler in AVR to use 8MHz Internal Oscilator

Just wanted to share this small piece of information that can help many . If you want to Run your AVR at 8MHz from the internal oscillator you need to disable the CLK/8 Fuse. You can do this by burning new fuse values. This can also be done in you main function as well. Below is a piece of code that will change the pre-scaler to zero.

Hope this will help!

Add Voice /Audio to projects using WTV020SD

Adding sound to your projects is great, there can be several methods to do it. In this post i will show how we can use wtv020-sd module to get this task done. I wont go in detailed description of the module and will keep the post short and to the point. The module can be operated in a number of modes including pushbutton modes but the one we are going for is the 3 wire serial mode. its actually SDA,SCL and reset wires that we use. The module would play back the ad4 files stored on uSD Card. and spk+ and spk- pins can be connected directly to a speaker. More details about the module can be found in the datasheet and the webpage link.

The interface is simple. you only need to connect Supply , DI ,CLK and reset Pins to get it working although you may also connect some other pins also but this is what is really needed to get the module working.

connections Read more

function to return binary equivalent of an int in a string format

On request of Shamas Akhtar Awan :
This is the function to return a string of binary equivalent of an int. The function takes in an integer value and returns a string of 0′s and 1′s of binary equavalet of that integer.

You can use this in your code as needed. One example is to write to uart the string

Show State if Sim900 originated call is recieved

By default when you make a voice call Sim900 doesn’t send any response if the called party picks the call. Sometime its important to know if the other side is getting ring or has picked the call. In order to show the state we have to configure the module using the following AT Command

After sending the is command if a number is dialed, a URC string “MO RING” will be received if the other mobile is alerted and “MO CONNECTED” will be received if the call is answered.