Skip to content
September 16, 2010 / Nandha kumar

Posted More than 400 jobs @

Hi to all,

Http:// is the famous site that provides information about several job opportunities on FOSS.

T.Shrinivasan , One of the Founder of this Free and Open Source Job Portal assigned me with the task of posting job posts from several companies in the site on April 28.

From that day I have been posting the new jobposts on the site and Today the posting has crossed the count of 400 .

Thanks to Shrini anna for providing this great task to me.

FOSS Rocks.



September 6, 2010 / Nandha kumar

Joined Internship

Hi to all,

After a long gap I sat on system today. From Yesterday( 4-9-2010) I joined for an Internship program with ChandraShekhar Babu sir.

Already my friend Ramachandran had joined that class last week itself. He insisted me to join asap. So, I joined there and The training has started in a Interesting manner.

Already I have attended Python Training program conducted by Chandrashekhar sir. So, After reaching the venue, I met and spoke to him. He told me about the internship plans and scope of it. Then the class started at 11.30 AM.

The first session was about Javascript. Sir started with the HTTP protocol working .It was really interesting. Then He told about the History of Javascript , its features and advantages as a scripting language.

He , inbetween, said many useful informations. Then He taught about the Basics of Javascript through . At the end of the class we asked him several doubts and got clarified . The day went very happily and usefully.

Today (5-9-10) , It was Linux administration session. The class started by 11.15 AM. Sir first revised few of the commands like date, chmod, chown, dd, df, etc that were taught on last class. Then He started to explain us about a very old but great Line editor known as “ed” . He showed us the editor in terminal.

We were shocked to see such a light weight and extremely good editor. Ed was created by Dennis Ritchie. This editor is a base for many new editors that we use now like “vi”.

Ed editor’s features were also utilised by languages like Awk, Tcl. Sir also told about his experiences with Ed editor.

Then We started exploring the grep command. Also we started using regular expressions in building patterns for the grep command. We also tried with egrep command since some advanced features were available with egrep rather than grep.

Some of the commands that I Learnt today :

$ cp *

This command will copy the files present in the directory within the folder   contained in that directory. For example I have a directory /home/nnk .Within the directory I have 3 text files a.txt, b.txt, c.txt and also a folder sample. When I execute the above cp command , The three files will be copied into the folder sample . This is called as wildcard expansion. The Shell will execute symbols like * before executing the command by itself.

df -h

Command that is used to check Disk usage and Free Disk space in HardDisk


This is a debug message generated by the system. This message will list         all the devices’ information that are connected with the system like CD- ROM, DVD, HDD, etc. we can identify the devicenames and their partition details and these information are useful when our system displays some hardware related errors.

watch to execute a process every two seconds and see the progress. Suppose if             We are copying a huge data in size GBs via Terminal commands , we cannot be able to see how much amount of data is being copied. We can use watch command for these kind of purposes.

example, watch free –  will execute free command to check the RAM and Swap memory usage statistics every 2 seconds.


Separate the input obtained from standard input as fields using a delimiter character [ say : or – ] and process them to output.


To synchronise our system date with the standard clock of Redhat . [ this cmd needs Internet Connection and also needs to be executed several times to adjust time latency in micro seconds ].

grep a filter that is used for search and output processing.

Three types of grep

egrep – a grep command with more features like alternation , grouping, Identifires, Ranges, …

grep – a grep command with normal usage

fgrep – a grep command with fast processing minimal features.

I have listed only few of the commands that were discussed in the class. I will try to prepare more detailed post on the commands later. Finally the day went happier, informative and useful and most of all interesting.



August 5, 2010 / Nandha kumar

Attended an Interview

Hi to all,

on july 14, My friend, Ramachandran suggested me to register for the recruitment at Vernalis Systems, located at porur.

I registered in that site.

on July 17, I was called by that company to attend Aptitude round. So, I went there and attended it. A lot of students attended that day. The aptitude was quite easy.

The company announced the results after two days. I got shortlisted for next round – Written Technical test. It was conducted on July 20. This test was filled with questions to write code in many technologies. But I wrote this test little poorly. The company said they ll announce the results in two days.

But nearly a week passedby. I dint get any call from them. So, I thought I was not selected and started with my routine tasks. Then last week, I got the call from the company saying I was shortlisted for next round – technical HR round on Aug 5, 3 pm.

I was really excited. I prepared a little for it. Today, At around 2.30 I reached the company and waited there. At around, 3.20 I was called in for the Technical HR Round. The session went very interesting.

They asked me about my project “Tran-Duino” and the principle of its working. I explained them. Then they asked me why I have chosen programming field. I told them my interest in it.

They asked me which programming language I prefer most. I immediately said “C”. Then the HR told me to write a pgm and then immediately asked me to tell the procedure for printing the inputted number as words. [ if I give input as 153 , the output will be as “One hundred and fifty three” ] .

I told like We have to assign three array of strings representing the text . Then we need to get the input from user and find the value in the units place, tens place and 1ooth place and call the appropriate array value and print them.

The HR said Ok and asked the next question : “how to sort the values present in the linked list?” . I told him the procedure again. Then He explained about the company norms and If I OK with it, I need to meet another person and for another round of Interview.

Then the interview continued till 4 pm. Then I was told to wait.

Then I was told to meet the next guy in aonther room. I entered the room and wihsed him.

He looked through my profile and asked me “Where is kolathur located?”. He opened googlemaps in his Apple Laptop and asked me to locate my area. I showed him.

  • Then He asked me about my project ?
  • Whose Idea was it?
  • How and from where I bought the components for my project?
  • Why You are interested in Linux?
  • Have you developed any code in Linux?
  • Do you know Linux Administration , etc.

I answered him . Then He said to wait for sometime. I came out and waited.

Atlast, the Guy who interviewed me first called me and told that the guy who just interviewed me just now was the CEO of that company. I left the place by 5 pm

This is the first Interview That I attended till last round . It was a great experience.Hope I get placed there.



July 16, 2010 / Nandha kumar

I completed My MCA Successfully

Hi to all,

Atlast I completed my final year MCA successfully.

The final semester of MCA is to do a project either for a company or inhouse [ that is in College itself ]. I started my project “Tran-Duino” as inhouse project.

For the past six months I worked on the project and the final day came to show what I have done.

The Final viva dates were announced from July 5-7. My class strength was 43. So, Three batches with 15 students each on each day. My viva was on July 6.

I went to college on July 5 to get laptop from Arul so that I can show demo on the next day during my viva. Since its a final year project, different externals for each day. The external who came on the first day was a known staff to our MCA dept. The Viva took place in our MCA Lab Bay 2. I was sitting and was preparing for my demo in the same lab in Bay1.The external was asking several questions to each candidate and the viva went very interestingly and thrillingly.

I enquired my department staffs regarding the externals. They said like the external who is going to come the next two days was a newly joined staff from neighboring college and they told us she was strict too. I got really afraid. Then I got laptop from My friend Arul in the evening after his viva. He was the only one who showed demo that day and got a lot of praises from the external reviewer. I felt very happy and proud of him.

When I started from college to home, there was heavy rain and I waited a long time till it stops in my college Bus stop itself since I had all my devices needed for my project [ mainly GPS ] and also Arul’s Laptop with me. Then I reached home , prepared slides and also started preparing for presenting about my project.

That day I dint sleep and was preparing everything. Till the week before the review, I was testing the code with the LCD display in Breadboard setup only. Since , Inorder to present nicely before external reviewer I gave that to a Electrician Whom Soldered the other components in my project. But, He was quite busy and told to come after a week. I pleaded him that Its really urgent. But no use. Then He himself gave the ideas to solder it myself.

I too thought its a good idea and soldered the display by referring the circuit of LCD 3 Wires. This was the Biggest mistake I made. The circuit was soldered correctly. But The display dint turn up. I really dont know where I went wrong in soldering. So, again I rebuilt the same circuit in Breadboard and powered it. This time The display got powered But I could not see any data scrolling in it. I even adjusted the POT, checked the wiring for several times. but no use. After trying with the display the whole night before review, I was only able to see the blocks scrolling but no data. So, I decided to show the output in Serialmontior of Arduino IDE itself.

July-6 :

I reached college at usual time and was told my guide about the display problem. He said not to get tensed and show the demo with whatever you have. After sometime The External reviewer arrived and To my surprise, She was the one who handled a subject during my UG [ B.C.A ] degree.

But I dint tell her that I am her student. I did my works as usual and prepared for review. I was the third person to present that day. The review for the frist person went for nearly 30 minutes. The external reviewer was asking several questions from code to database. I was really shocked. The next candidate also was questioned for nearly 45 minutes. Then they called me.

I went and connected my pendrive and opened my presentation. I introduced myself to all,and thanked my HOD. then explained why I gave the project title as “Tran-Duino”. Then the concept of my project. The external reviewer was impressed by my project and asked me The process involved. I clearly explained her each step.

She then asked me to show some of the GPS log files and how I am marking the locations. I showed a log file, How I am extracting the latitude and longitude and also told about the GPSvisualizer site. She immediately told that she wants to see my project demo after the viva completes. I said sure mam. Then She asked me Why I have not included these details in the slide and I replied that I thought of explaining them orally . She said OK but also suggested me to include those details in the slide becuase it may increase the clarity of understanding the concept when presenting to a person who is new to these technologies. She also added that This inclusion will help the external reviewer to put a good score to me. I agreed and proceeded with the slide. She dint even listen to my presentation after that and gone through my slides and said next, next.

I completed running slides and thanked mam. She said me to prepare for the demo. The review continued and I prepared the demo in Arul’s Laptop and was ready to show her. But she was busy and told she will see it after the review gets over that day.

I prepared the demo around my College’s circular block. The Idea was to display the department name I am entering into. There were four departments and I prepared the data needed for that by logging around the circular block before one week. I included those data into code, kept it ready. Since external reviewer was busy, I took the device connected with laptop and walked along the varandha of Cricular block. I opened the serial monitor and after sometime the logging started. I was surprised that when I was reaching near MCA department I got the text ” You are nearing MCA Department” on the serialmonitor. When I was in MCA department, the output was “You are in MCA Departement”. Then I walked towards CSE department and got the output as ” You are in CSE Department”.

I immediately returned back to lab and saved the serialmonitor output to a text file and waited to show the output to external reviewer. But It took time for her to finish viva for all. After She completed I went to her. She asked me whether I can come tomorrow to show the demo since she has no time now. I said sorry mam I will not be coming tomorrow. Then she told me to wait. She signed all the project reports and finished all the official works and called me.

She gave a chair to me and I sat next to her and showed the process involved in my project. I then called her to come with me to show her the project demo. But she said she has no time now and has to leave. So, I showed her the serialmonitor output. She said the project is really nice and asked me who gave this Idea. I said about my Guide , Mr. Thyagarajan Shanmugham and told that it was his Idea. She said good and said that I have improved a lot from my Undegraduation. I immediately asked “Mam do you remember me? ” . She said “Yes, I identified you in the morning itself” and told All the Best for me and went away.

I felt really happy. Atlast I successfully completed my review and MCA too. I am really thankful to My guide Mr.Thyagarajan for giving such a good Idea and his great support. I also thank Mr. Shrinivasan , without whom I could not have done the project, since he is the one who struggled a lot and bought the needed components for my project from Abroad. I also thank my Internal guide , Dr.T.Kumaran, for his encouraging words and support. I also thank all my Friends who had great belief in me and for encouraging me. Last but not Least, I thank my friend Arul, without whom I would not been into such a Great Environment – FOSS.

My final review –

My Project –



July 16, 2010 / Nandha kumar

Tran-Duino Proof of Concept

Hi to all,

I have posted about my Final year MCA academic project ” Tran – Duino” in my previous posts.

I have atlast some how managed to prepare the proof of concept for my project. In my previous post, I had done upto extracting latitude and longitude values from the GPS sentences received from EM-406a GPS module and printing it in LCD Display as follows,

Then after completing this part, I started with reading GPS log file stored within SDcard in the form of Textfile. The usual GPS log file will be in the following format.


The code that I followed is from . The file contains GPS sentences that are received from GPS module each second. Each line is a GPS sentence starting from $ symbol and ends with * followed by two digit Hexadecimal checksum value. The Word “GPRMC” defines the datatype of NMEA sentence that is being received. GP defines that the device used is a GPS receiver module.

RMC – Recommended Minimum Type C sentence. There are more than 20 type of NMEA data sentences that is transmitted to GPS units.All of these sentences usually provide the common data that is latitude and longitude, velocity. The RMC sentence has the following fields, namely,

$GPRMC – datatype

131754.000 – Fix taken time (UTC)

A – status [ A – if active or V – if void ]

1307.3412 – latitude in Degrees, minutes and micro minutes.

N – latitude direction [ North ]

08013.3205 – longitude in Degrees, minutes and micro minutes.

E – longitude direction [ East ]

1.13 – Speed over the ground in Knots

307.60 – Track Angle

210510 – Fix taken date

*0F – checksum data

For more information regarding NMEA sentences please visit here .

I started to find a code that can able to read back the data being stored in the SDcard. First I saw through the AF_SDLog library and found functions like sdcard_read() to read the data from SD card. I also tried the card read example provided with that library. It worked successfully. I was able to read the data present in the text file completely and print it in Serial monitor.

In the GPS sentence , the only needed part for my project is the latitude and longitude. So, I started to find the way to read only those data and avoid remaining data from each sentence. But Then I identified that the data being read from card is of uint8_t data type. This datatype is similar to char datatype but not the same.

Hence, I tried all sorts of conversion from uint8_t to float , double . But I couldnot convert it as I required. Then I found a SDCard library – a modified version of AF_SDLog library, to read data from SD card. Using this library I was able to print the latitude and longitude alone from each GPS sentence and print it in serial monitor. But I was not able to process further with it (ie) converting into float or double type. I also had the problem of assigning the exact buffer size of reading the data from SDcard. I had this problem since the length of GPS sentences being logged in the sdcard is of varied length . This happens when sufficient data needed to fill each GPS sentence gets missing due to poor signal. For example, the fields like magnetic variation, date, etc will be mostly missing sometimes.

Then I found a way to type convert the latitude and longitude from uint8_t to float value. I was really happy. But a new problem arised. I was not able to integrate the new SDCard library code with the AF_SDLog library code [ even though both the libraries are almost similar ]. I was sad on how to proceed further.

I asked the help from ladyada forum and stated the problem I faced. They advised me to use the sdfatlib from . I tried with the SdFatRead example provided with the library. It worked fine. Again I had the problem with type conversion from uint8_t to float datatype. I integrated the float conversion from the previous code into this example code and it worked.

Data Read from SDcard

For my project’s proof of concept I need to compare two float values. But When I googled regarding this, I came to know that float comparison is not possible and was not accurate. I had no other way but to use the char datatype to compare the latitude and longitude data. So, I typecasted the uint8_t type as char . It worked fine. But another great problem I faced was that when I was reading data from SD card as char datatype, The data being read became irregular (ie) The latitude and longitude read from each GPS sentence was not exactly read. It sometimes included the next characters after the required data. hence the entire format got collapsed.

I was really fedup. I tried several ways and also seeked help from arduino forums and my friends. But I could not make it. Because of this problem the comparison part was also not working.

Actually the Idea of my project was to read the GPS data like latitude and longitude from SD card, receive GPS data from GPS receiver, compare them and if data matches, print some data in Display. But the problem is that when using char data type, I can only compare character by character since the data processing is done inside the loop. I was really confused on how to proceed further.

I was getting more nervous as my review dates were nearing. I was in great tension to show atleast the proof of concept  in my college. During that time, I thought of a way. Instead of extracting latitude and longitude from the entire 80 character sentence, I just modified the logging code so that only converted latitude and longitude can be logged into SDcard. For achieving this purpose I made use of  the write() function from sdfatlib library. This function writes the data of type character into SDcard.

Latitude and Longitude- not converted

But to my bad luck, When I prepared that code there was heavy rain in my city for 2 days and it was cloudy too. So, the GPS unit was not receiving any data. Then after 2 days, The day was bright and fine. I uploaded the code into Arduino and started logging it. Yes, The code worked fine and the data was getting logged as I required. For now one part of the task was finished.

Latitude and Longitude [ converted

So, The next task was to write the comparison code. Already I had the problem that since the latitude was converted character by character inside a loop, the task was getting difficult. I tried storing the latitude and longitude into a string and compare it. But I was not successful with it. I also searched a lot in net. Also seeked help from my friends. But No use.

Then one fine day, I reached in google as “GPS Tracking Arduino” and found few links. In one of the links, I found a project where a guy has done a project to track his college bus using the bus website and also update its status in Twitter. . It was really an interesting project. But This link only gave me a great idea to solve the second part of the Task. In that blog I found the following link . This link introduced a new data type called Text String that can be used with Arduino. This datatype is similar to String datatype and the library also got many builtin functions that works same as many string functions like concatenation, replacing string, substring, string equality, etc.

Then I Immediately installed that library and started testing the example codes. Then I modified the code and tried with comparison of latitude and longitude with a single string using this TextString datatype. Yes, The comparison worked. Then I created a Array of Strings for storing both latitude and longitude and stored some sample data in it.I also created a array of names that is to be displayed when the latitude and longitude comparison was successful.

I tested the modified code by keeping the GPS near my window. I initially for testing the code, I made the output to be seen in Serialmonitor. After sometime of intialisation the names was getting printed. I was really happy. When I moved the GPS away from the window, some other name from that array got printed. likewise, I checked with the six sample values and all got printed.

So, For now The code works. But I have not checked the same when GPS is in movement. So, Inorder to check that I thought of making use of the sample route that I logged in my area. The sample test route when viewed as output from was as follows

Sample Route

The website has several facilities. We can create .gpx files, generate route map by uploading the GPS log file to the website. There are more facilities. I prefer this site to check the log files using the routemap outputted from this site. I travelled with the GPS device powered by Battery, in the above route in my bike. Then I uploaded the Log file that was generated in the SDcard into this site and got the above output.

But till now, I was not able to read back data from SDcard. So, I planned to store the stopnames and their corresponding latitude and longitude in the code itself and proceed further. Hence, I had to do a lot of manual work to make the markings. I made use of the Log file of the sample route , checked each line of log in googlemaps and identified the needed locations where stopnames are to be displayed. This part took a long time since there were nearly 494 lines of GPS log in that file.

After Identifying the needed locations and their lat lon values, I stored them in the code in the form of Array of Strings. I prepared about 17 locations in the sample route. This time I connected the LCD display with the battery powered GPS unit and travelled along the same route again in my Bike.

Components Integrated into a Unit

Since I was using the exact latitude and longitude of each location, I got the data printed on the display after crossing that location. I was really excited to see the names getting displayed. Around 10 location names got displayed. Some data was not displayed due to cloudiness. I kept the entire unit powered by 9V battery inside a Box and was travelling with it in my bicycle. The funny part was that everyone on the way were gazing at me very strangily thinking like ” what that guy was seeing inside the box?” .

So, Now The proof of concept for my project is working. To show demo to my college during review, I thought of logging data around the circular block of my college and display data about the department name we are currently entering into.

I am studying in Saveetha Engineering College located at Thandalam, Chennai. So, to get the log file of the circular block, I took the unit to my college, then reached the top floor of that block and reached one end of circular block and started with the logging. I slowly walked with the GPS unit to the other end of circular block. Due to some weak signal, The data was logged into four textfiles inside the Sdcard. I merged those files into a single file and uploaded into gpsvisualizer site. I got the following output map.

GPS log over the circular block of my college

I was really shocked to see such a terrible log map. Then I decided to check all the four log files separately and create a new log file with the needed data. I created a new log file named GPS0607.TXT [ combination of two log files GPSLOG06.TXT and GPSLOG07.TXT out of the four log files ] and uploaded it into GPSvisualizer. The output was :

Data Log around the Circular Block

This is the circular(?) block of my college. You can see four joints connecting the inner circle and outer one. Those joints are four departments namely MBA [ leftmost], IT , MCA and CSE [ rightmost] . So, the code will have to say that which department I am entering now when I walk with the device. But with the above irregular data, I cannot generate a data set which can provide information required. I was really confused on how to proceed further. Inbetween I was also in urgency to prepare for my final review. So, I prepared the slides needed for it.

Then I took the logfile that was generated around my college from the sdcard , checked each latitude and longitude set in Googlemaps and created a new file with only few needed data. All these were only my guess work and were approximate only. I also collected the common non-redundant latitude and longitude from this file and made combinations with each latitude and longitude and checked it again in Googlemaps. This process helped in refining the data and locate the needed spots in the circular block of my college.

The output of the new data file is as follows,


Final Data Log Around the circular block

Now, I have got the sufficient data needed. Then I included these set of data into the code and also included the text to be displayed on the LCD display. On the day of review I tested the code for Demo. It worked successfully. I showed the output in the Serial monitor using my friend’s laptop to the External examiner since the LCD display dint work unfortunately at that time.

The Serial monitor output was as follows,

Department being Displayed

Another Department Name Displayed

And Atlast I presented my project to my External Reviewer and successfully showed the demo too. I am really thankful to all the persons who had helped me and encouraged me. I mainly thank my internal guide and external guide for giving their support and encouragement through out the project.

Actually the task I have done is very simpler one and without the GPS logger code from SDfatlib library, I could not achieved it. Moreover its the power of FOSS that drove me to do this project. Thanks a lot for each and everyone.



June 16, 2010 / Nandha kumar

How To Add DVD Repositories in Ubuntu

Hi to all,

I am a user of Ubuntu. It is easy to update Ubuntu package repositories when we have internet connection. But If a Ubuntu user doesnot have Internet connection, He can make use of DVD repositories provided by Ubuntu team.

The DVD repositories for the latest Ubuntu Lucid [ 10.04] is available in . You can get help from your friends who have internet in their home to download these repositories.

Many people who are newbie to ubuntu have doubts in updating their repositories using DVDs and also in installing the packages. I have created a pdf that will provide help to newbies on updating the repositories using DVDs. I also included steps on how to install or uninstall a package or application using the Synaptic Package Manager and also through commands. I hope it helps.

You can view the pdf from the following link :

You can download the pdf from the following link :



May 2, 2010 / Nandha kumar

Tran-Duino Under Progress

Hi to all,

I have posted already about my Final year Acadmeic project , based on Arduino ,

Tran-Duino “. Now after a delay of nearly 2 months due to the purchase of components, I have started with the project.


First of all I Thank my project Guide Mr. Thyagarajan Shanmugham, a FOSS enthusiast. He has given me this idea of Tran-Duino and has extended his great support.

Goal of Tran-Duino :

The main idea of Tran-Duino is

  • To provide the information to a user traveling in a vehicle say a bike or a bus , about the upcoming location using a LCD display with the help of GPS.
  • To include localized advertisements on the display based on the location by which the vehicle currently moves through.
  • To display nearest community landmarks like hospitals, fuel stations, police stations based on locative technology

I am a newbie to the Arduino and also to FOSS world. Initially I had no components to work with and my guide gave his freeduino ATMega8 to work with. I started with interfacing LCD display with Arduino and then did the interfacing of SD card with out using any shield using the help from Arduino Forum . .

But due to some problem in building the schematic, I was not able to interface it successfully. I tried several other possible ways and also seeked help from Forums. But I could not make it.

Then my Guide suggested me to buy the components that will be required to built the project. So , I made arrangements for money and purchased the components.

This Blog is about how to interface Arduino, EM-406a GPS module and a JHD162a 2-line LCD Display.

Components used :

For my Project “Tran-Duino” – An Arduino based project , I have purchased the following components.

USGlobalSat EM-406a GPS module from Adafruit Industries, USA.

EM-406a GPS SiRF III Receiver

Adafruit GPS Shield V1.1 with inbuilt SD card slot from Adafruit Industries, USA.

Adafruit GPS shield V1.1

GPS shield with SD card slot

Freeduino ATMega328 from Bhasha Technologies, Pune.

Freeduino Atmega328

JHD162a LCD display

JHD162a LCD display

I followed the schematic from the following links to interface the LCD display with Arduino .

Usually If we need to interface the LCD display with Arduino we need to atleast 6 digital pins from Arduino. We can make use of LiquidCrystal library that is available inbuilt with the Arduino IDE versions. The LiquidCrystal library makes use of

  • Arduino pin 12 – LCD 4 pin [ RegisterSelect ]
  • Arduino pin 11 – LCD 6 pin [ Enable ]
  • Arduino pin 5 – LCD 11 Data pin [D4]
  • Arduino pin 4 – LCD 12 Data pin [D5]
  • Arduino pin 3 – LCD 13 Data pin [D6]
  • Arduino pin 2 – LCD 14 Data pin [D7]

and also 5V power for LCD pins 2 and 15 , GND for LCD pins 1 and 16. The LCD pins 15 and 16 are used to power the backlight  and LCD pin 3 for controlling the contrast using a 3K POT [ variable resistor ] .

The usual interface is as follows,

But incase if we need to interface LCD and Arduino with less number of pins, we can make use of Shift Register like HEF4094. This interface utilizes only 3 digital pins from Arduino thereby saving pins of Arduino so that we can interface other devices.

The Schematic for the 3-wire interface is as follows.

Pins Availability :

For my project I need to interface LCD display, EM-406a GPS module, SD card with the Arduino.

The Arduino has 14 digital pins. The SD card interface via GPS shield utilizes Digital pins 10-13 of Arduino.

The EM-406a GPS module utilizes

  • Arduino pin 0 – GPS shield Rx pin
  • Arduino pin 1 – GPS shield Tx pin
  • Arduino pin 2 – GPS shield PWR pin [ power to GPS shield ]
  • Arduino pin 3 – GPS shield L2 pin [ Red LED to denote SD card read/write ]
  • Arduino pin 4 – GPS shield L1 pin [ Green LED to denote Location Fix ]

Now, a total of 9 out of 14 pins are used by GPS and SD card. Hence I have made use of 3-wire interface to connect LCD since I have left out with only 5 pins of Arduino.

GPS , LCD , Arduino Interface :

The GPS shield was provided as a Prototype board with individual parts. So, It took time for me to solder it into a unit . I followed the schematic and soldering information from the link

LEDs in the GPS shield

Since the Arduino is made of male pins, I soldered the female headers at the Base of the shield so that it can be mounted on the Arduino. I also soldered the male pins on the top side of the GPS shield inorder to connect other devices to Arduino [ LCD ].

Female headers

Male pins on the shield

Parts soldered over the Shield

GPS connector on the Shield

After soldering , I initially tested whether the GPS module was working by removing the ATMega328 IC from Arduino and interfacing the GPS directly to it as given in the link

The GPS module worked fine and It was logging data on the serial monitor. Then I placed the IC back into Arduino and connected the GPS module onto the Shield.

Backside of GPS module

GPS connector

GPS connected to the Shield

Important part

Please never forget to place the sticker provided along with the GPS module at the base of the GPS , since placing the GPS directly on the GPS shield may cause shorting of the module.

Stick the GPS module on the shield using the sticker onto the Shield only after finalizing the project.

I also soldered few missing pins on the shield and then connected the sheild with Arduino using jumper wires.

Then I mounted the GPS along with the shield on the Arduino as shown in the picture .

The TX JMP jumper pin is a hardware setting that is used to stop the GPS logging into the SD card. If we remove the TXJMP jumper, the GPS stops the logging. Then we can remove the USB power to the unit after the RED LED on the GPS shield is not lit.

Transcend SD card

The SD card was formatted with FAT16 filesystem and is inserted into the SD card slot on the shield before mounting the shield over the Arduino.

Inserting the card

GPS shield and Arduino

Mounting shield over Arduino

SD card inbetween the Interface

Wiring the GPS with Shield

Complete Interface

The Connections were done and I uploaded the GPS-logging code from the link

The code got compiled and I placed the GPS module in open space for sometime and after several minutes the GPS module started logging to SD card and the logging details got displayed on the Serial monitor of the Arduino IDE.

Now, I needed the latitude and longitude that is returned by the GPS alone to be printed on the LCD display connected to the Arduino.

The data being returned by GPS (ie) the NMEA Sentences were in String format. Hence I modified the GPS logger code, extracted the latitude and longitude alone and printed it on the Serial monitor at first trial.

Serial monitor

It got printed since I dint convert anything to float or double values. Then I connected the LCD display to Arduino via GPS shield. I once again modified the GPS code , included the LiquidCrystal library and tried to print the extracted latitude and longitude values.

But, the LCD display was printing only junk characters and I was confused on what went wrong. Then I identified the problem. Since the GPS Shield is mounted over the Arduino, I have soldered all the digital and power pins on the Shield so that when shield is mounted over Arduino, I can interface other devices using those pins.

The Arduino has only 14 digital pins, 6 Analog pins and power pins. The Shield makes use of digital pins 10-13 of Arduino , the GPS module makes use of 0-5 pins of Arduino . Hence I was left with only 5 pins from pin number 5-9.

But to Interface an LCD , minimum It needs 6 digital pins which was not available now. So, I made use of the LCD 3-wire Library and built the 3-wire schematic.

LCD 3-wire Circuit


I made use of HEF4094 shift register and LCD3WireLibrary in the Arduino IDE. Intially It dint work due to some loose wiring in the circuit. I also tried out other complicated schematic using shift registers like 74HC164, 74LS164N, 74HC595. But even these circuits did not work for me. I got only Black blocks getting displayed on the first line of my Display unit.


I once again re-built the schematic using HEF4094 and this time It worked by POT adjustments, proper wiring. I tried the LCD3Wireexample sketch and the text was getting printed on the LCD display.

LCD interface with Arduino via 3 wires

Arduino pins from HEF4094

Now, I remodified the same GPS logger code and included the LCD3Wire library , tried to print the converted [ String to character array] latitude and longitude value that are received from GPS module.

LCD powered up

I connected the LCD with the left-out pins of Arduino and uplaoded the code. It was working fine . But both the latitude and longitude was getting printed on the same line of the Display unit.

I Set the cursor position correctly in the code and uplaoded it again. This time the latitude was getting printed dynamically on first line of the Display and longitude on the second line.

Latitude , Longitude on the LCD

I also modified the code to extract the lat lon values from the GPS string, convert it to float values and printed it on the Serial monitor.

GPS log in the serial monitor

Latitude Longitude as strings

Latitude Longitude in Float

Hence the possible way to interface an LCD display when Arduino is interfaced with several other devices is by using a Shift Register or we can also buy a Serial LCD which consumes only three pins – digital pin, 5V power pin, and a GND pin.