Featured post

A reason to exercise.

It's been two years since I started going to the gym and this post is just a summary of my experience. Before going to the gym. Iv...

Monday, 30 November 2015

FRDM KL25Z board-Getting started

The FRDM KL25Z is the board manufactured by "Freescale Semiconductors".FRDM stand for Freedom. KL25Z is "Kinetis L series".The board is powered by ARM Cortex M0+ based processors.

FRDM KL25Z board
                                       
Arduino Uno board

The board is superb!. I've been using this board for almost an year now and trust me..it will not disappoint you.Some of it's best features is it's low cost,outstanding energy effeciency and its processing capability.This board is ideal for anyone wanting to start off with ARM based microcontrollers. Another benefit is that they are Arduino compatible. So any shield that you have for Arduino can be directly plugged into the FRDM KL25Z board and it'll work.

You can purchase this board at a local electronic dealer or you can search for it online at any of the big electronic supplies retailer.The are priced roughly the same as Arduino Uno boards.
The board can be programmed using mbed or Codewarrior IDE.

mbed is an online compiler.So make sure your internet connectivity is decent and if you want to,you can export your program/s to any of the offline compilers as Keil uVision or Eclipse IDEs.
Codewarrior however is offline and is best suited for me.The software is not small to download however.
Recommendation:
1.  PC/Laptop should be ideally with RAM of 4GB,
2.  Hard disk free space: 4GB (after Code warrior IDE installed),
3.  USB data communication permission.

The software download link is
 (NOTE: it is about 1.4GB in size)

http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=CW-SUITE-SPECIAL&nodeId=0152102726E4D3&fpsp=1&tab=Design_Tools_Tab.

There is a Special Edition by FREESCALE: CodeWarrior for Microcontrollers 10.6 (Eclipse, Offline) (REV 10.6).  You can find this at the bottom most selections options.  Click on this offline software to get downloaded.

IMPORTANT: DON'T FORGET TO CHECK THE "kinetis" DURING INSTALLATION.

                                                            

See you soon on my next post where we will get started with programming this board.


Tuesday, 10 November 2015

Building the coolest cell phone charger

A lot of my friends ask me "Dude Hari,from where do you get the money to build your projects?".
Well I get 1000 rupees(around $12 American) a month as pocket money for teaching Math and Chess to my two nephews studying in grade 4 and 5 at Mickleover Primary School, Derby, UK.
I know it's not a lot and given the fact as a college going student, I will not be able to save more than 400 rupees(around 6$ American) a month.
So there is limited budget for my projects.

For this reason all of the projects I design and build,I make sure that it is as efficient as possible; most of the times drawing and redrawing multiple circuits and seeing whether I can reduce parts or complexity or sometimes come up with a better design.
Another area in which I save money is that I don't get necessarily build a PCB layout and get the PCB fabricated after completing each project as they are expensive (to me),instead I manually solder them onto the perf-board.

I live at a place called Chunchugatta, a village 2 km off Kanakapura road, Bangalore,India.
We are prone to very frequent power cuts,and they sometimes extend to 3-4 hours.
If at all they supply power,instead of 3-phase it's lousy 1-phase which can be used for absolutely nothing apart from lights or fan I tell you.
On November 6th,it was a horrible 9 hours;from 11:00 to 20:00. Every time a person from the Electricity Department picks the phone,he replies "the lineman has gone for tea.." or "the lineman has gone for smoking..".

This project is built keeping in mind that if in case of a power cut, we can at least charge our phones,for basic communication establishment.
You might suggest a power bank but in my case,if the power bank runs out of juice, ill have trouble charging it.
So a battery powered charger is the only go.

Here is the list of parts and their price:

1. 9 volt battery(1 nos.) or 1.5 volt AA(6 nos.)   --------  as per MRP(mine was 15 rupees)
2. 7805 voltage regulator(1 nos.)                         --------  5 rupees
3. 10uF electrolytic capacitor (2 nos.)                 --------  5 rupees
4. On/Off switch(1 nos.)                                      --------  2 rupees
5. Resistor (330 ohms, 1nos.)                              --------- 1 rupee (its actually 15 paise)
6. LED(any color,1 nos.)                                     ---------  1 rupee
7. Potentiometer(0-100K, 1nos.)                         ---------  7 rupees
8. USB type A female connector(1 nos.)            ----------  20 rupees
9. 9 volt clip(1 nos.) or alligator clip(2 nos.)      ----------  5 rupee
10. connecting wires                                           ----------  as per MRP
11. solder board(small,1 nos.)                            ----------- 5 rupees
12. soldering equipment                                     -----------  well its your choice

The total amount of all the parts are 66 rupees(exactly 1$!!).

The device's ratings:

If you notice carefully on you charger,it will be mentioned
INPUT: (supply input of your country,mine's 240V)
OUTPUT: 5V DC  550mA

So basically the phone will only charge if minimum 5V is applied across the terminals of its battery,and a minimum of 550mA be supplied for it to charge quick and efficient.
Lesser current=>slower charging
Higher current=>fast charging
Very high current=>phone will blow up soon (be cautious of this case)

Before building.




The circuit is:

Design 1 doesn't work.
Go for design 2.
For safety of phone turn "pot" to minimum resistance but not 0 ohms
                                                                                                                                                                                           
   

                                                                                                                                                                                           




What's the "Pot" used for?

Well the Pot is short for potentiometer.It basically is a variable resistor.The more I turn the knob to the right,the greater is the resistance offered and the more the knob turned to the left,the lesser is the resistance.
Lesser resistance=>higher current flows through
Greater resistance=>lesser current flows through

In this case,
1.) if the pot is resisting low,then more current flows through it=>less current flows to the phone=>slow charging=>device is safe

2.) if the pot is resisting high,then less current flows through it=>more current flows to the phone=>more charging=>device is a little unsafe

Time to build.

Well since I had all the parts it took me 1.5 to 2 hours to build it.
(I'm very slow when it comes to soldering!!).
If you need to source out the parts,then it will probably take half a day..


How its turned out:


                                                       





The device in action:







                                      


                                         

How am I improving it?

Well the 7805 converts any input voltage in the range of 7 to 25 volts to 5 volts.In this case I'm inputting an 9 volts but as power is consumed,voltage drops to less than 6 volts.In this case the 7805 is pretty much useless as it wont work for input voltage less than 6 volts.

How do I know the voltage has dropped to less than 6 volts?

Well you see that I have added a LED along a resistor to the output and gnd.
If this LED doesn't glow with a sufficient intensity or doesn't glow at all,i know that the voltage has dropped.

In turn I'm planning to divert the remaining power to a series of power LED's so that it can also function as a torch..a bright one too!!

Any problems?

Well the one problem is that the 9V battery is not capable of supplying 550mA(=0.5A=half an amp!!) of current.
Yes you might mention that if I turn the Pot to 0 ohms,then infinite current will pass through to the phone,but you are missing the point that the phone too offers a resistance and the current will not be able to reach that high a value.

The Solution.

Instead of the 9V, use 6 AA's in series.
Or better yet,use two 9V batteries in parallel.This way,voltage remains same but current supplied doubles.

You can also search for high voltage and current rated re-chargeable batteries online for making use in this project.

Field testing.

 I found that my phone took a long time to charge.
At first I thought that my battery was not supplying sufficient current.
So I rigged up this circuit(well all I did was change the battery to a more powerful one.)
This new power pack is rated at 7V, 2000mAh.
That's a wonderful amount of power that it's supplying.

Even with this new circuit,the charging time didn't improve considerably.
On closer inspection I found that most power banks provide a 5V,1A or a 5V,2.1A output.
My circuit was giving 5V alright but the current supplied is nowhere close to 550mA.
So here comes the bug.
The phone too offers a resistance and that resistance is greater than 100K ohms.
Effectively majority of the current passed through the pot instead of going to the phone.

Solution.

Try adding more resistances in series to the pot, the greater the resistance added, the better off you are.
You're ultimate goal should be to increase the total resistance to greater than that of you're phone, so that a good amount of current can be supplied to charge the phone.


If you are a daredevil, I would suggest you to remove the pot and instead directly power the device.This ensures that max current is supplied to the phone.
Do this at your own risk though.

 Quick Tip.

1. If you want higher voltage, connect batteries in series.

2. If you want higher current,connect batteries in parallel.

3. If you want higher resistance, connect resistors in series.
    Effective resistance will be greater than the value of the greatest resistor used.

4. If you want lesser resistance, connect resistors in parallel.
    Effective resistance will be lesser than the value of the lowest resistor used.


See you soon on my next post.
Until then, happy building.






Thursday, 29 October 2015

Going back in time....to 8051.

It's been a long time since my last post.College work and tests have been keeping me busy for quite a while now.
In the midst of all this was the phase 1 of my final year project.My final year project is a rubik's cube solver robot.The plan is to make use of the ARM Cortex M0+ based FRDM KL25Z board from Freescale semiconductor.This board was introduced to me when I took part in "THE FREESCALE CUP" competition held by Freescale semiconductors.It's a very neat little board and I have had a lot of fun doing projects with this board.More about this on my following posts.
In the process of my final year project, I have been concentrating a great deal on the ARM and AVR based boards that it's been a long time since I came back to 8051.
I decided to build a tribute to this great architecture(yes, 8051 is an architecture and not an microcontroller.Most people are unaware of this),a clock.
It started off by first testing if I still remembered the architecture and all the details necessary to work with this architecture.
The microcontroller I'm making use of is Atmel's AT89S52.A great little guy!!
Next was to blink an LED followed by an 7 segment display(mine's a common cathode).
There were a few techniques used to "multiplex" the 6 "7 segments".
First two are indicative of "hours",the next two are for "minutes" followed by the last two which indicate "seconds".
The arrangement of the displays too are not in order but are in alternates as seen in the picture below.

4 bit mode

                             

I knew from the start that I had to "multiplex" the 7 segments if pins had to be saved on the UC.

                                     



ugly cross over of wires!!
uglier cross over of wires!!

                                          

                                       

All of the 8 pins of port P0 is used to drive the display(a to g,and dp).
The plan was to connect the "COM" pins of the displays to pins of port 2.
P2^7=COM6;
P2^6=COM5;
P2^5=COM4;
P2^4=COM3;
P2^3=COM2;
P2^2= COM1;
So whenever the COM pin is set to "0", it is "grounded":the circuit to that display is completed and whatever is the value of the pins of P0 is displayed.
Keep in mind that as the displays are all not in order but alternate,two functions have to be written.
One is when the display is upright and the other is when the display is inverted.
An upright "4" is an inverted "h".
An upright "6" is an inverted "9" and vice versa.
an upright "3" is an inverted X-axis mirror image.
The truth table for the two modes is as shown.

truth table

The first circuit has the disadvantage of using an resistor for each of the pins(apart from the ground) of the display.
This means that as the number as display segments increase,more resistors have to be used to drive the 7 segment array.


At first though I had not a clue on how to tackle this situation, and I was running out of resistors!!.
After pondering over the problem for a couple of days..,EUREKA.
The solution was as simple as it could be and I just slapped myself for not having thought of this answer.
Since in my code only one segment is active at a time, why don't I short all the appropriate pins of the display, and just connect the resistors to the first display.
Since only one display is active at a time, it is equivalent to the resistors being part of that display.

The initial plan was to make use of 4 displays,two to display hours and two to display minutes.
The first code written too were concentrated on driving 4 displays.
All this was great but when the clock took life,there wasn't much interesting going on.
As you can see,the device works perfectly alright but it didn't give me the urge to look at it with
the curiosity of a child.
So to spice things up a bit, another two displays were added to act as "seconds",the circuit made a little tidier and the code more refined.
There are two types of code I have written for this project.
The first one does not make use of the timer concept.All of the delays have been tested out by trial and error.
You can make use of this code if you are unaware of using the timers of the 8051.
The second code however makes use of the timer concept.
8051 provides us with two timers T0 and T1.
They are 16 bit each. These timers also act as counters.
The difference is that a timer is like a clock,it just keeps ticking.a counter on the other hand count based on the voltage change on an external pin.
One very important point to note is that the 8051 has a "mod-12" counter inside of it.
What it means is that whatever is the frequency of the crystal you are using is divided by 12 internally before being used by the CPU.
Mine's a 11.0592 Mhz crystal.
Divide by 12 makes it a 921.6Khz signal,the reciprocal of which is 1.085us.
1.085us is the pulse duration of each cycle.
There are two control registers provided for timer control, they are TCON (Timer control) and TMOD (Timer mode).






calculating timing

Several different codes have been written and tested.Take a look and you can adopt any of the techniques suited to your style.


If you are in need of a clock that only displays minutes and hours,use the code below.

                         CODE 0:no timer,all delays found by trial and error.So the 1 second delay may not be                                         accurate
========================================================================

#include<reg52.h>
sbit seven_seg=P0;
sbit com1=P2^7;           //connected to "tens" place of hours
sbit com2=P2^6;           //connected to "ones" place of hours
sbit com3=P2^5;          //connected to "tens" place of minutes
sbit com4=P2^4;          //connected to "ones" place of minutes
int i=0;int hours=100;int minutes=100;int seconds=100;int temp_hours=0;int temp_minutes=0;int temp_seconds=0;int val=0;
void delay_small(void);
void display_straight(int);//the code for the numbers has decimal point as high
void display_inverted(int);//the code for the numbers has decimal point as high
void main()
{
while(1)
{
temp_hours=hours;
temp_minutes=minutes;
temp_seconds=seconds;
for(i=0;i<=100;i++)
{
com4=0;
display_straight(minutes%10);
delay_small();
com4=1;
minutes/=10;
com3=0;
display_inverted(minutes%10);
delay_small();
com3=1;
com2=0;
display_straight(hours%10);
delay_small();
com2=1;
hours/=10;
com1=0;
display_straight(hours%10);
delay_small();
com1=1;
val+=1;
}

  hours=temp_hours;
minutes=temp_minutes;
seconds=temp_seconds;
if(val==35)
{
seconds+=1;
val=0;
}

if(seconds==160)
{
seconds=100;
minutes+=1;
}
if(minutes==160)
{
minutes=100;
hours+=1;
}
if(hours==124)
{
hours=100;
}
}
}

void delay_small(void)
{
for(i=0;i<=800;i++);
}

void display_straight(int a)
{
if(a==0)
{
P0=0XFD;
}
else if(a==1)
{
P0=0X61;
}
else if(a==2)
{
P0=0XDB;
}
else if(a==3)
{
P0=0XF3;
}
else if(a==4)
{
P0=0X67;
}
else if(a==5)
{
P0=0XB7;
}
else if(a==6)
{
P0=0XBF;
}
else if(a==7)
{
P0=0XE1;
}
else if(a==8)
{
P0=0XFF;
}
else if(a==9)
{
P0=0XF7;
}
else
{
}
}

void display_inverted(int a)
{
if(a==0)
{
P0=0XFD;
}
else if(a==1)
{
P0=0X0D;
}
else if(a==2)
{
P0=0XDB;
}
else if(a==3)
{
P0=0X9F;
}
else if(a==4)
{
P0=0X2F;
}
else if(a==5)
{
P0=0XB7;
}
else if(a==6)
{
P0=0XF7;
}
else if(a==7)
{
P0=0X1D;
}
else if(a==8)
{
P0=0XFF;
}
else if(a==9)
{
P0=0XBF;
}
else
{
}
}


========================================================================


However adding the seconds makes the clock much more interesting to look at.

                                             CODE 1:no timer,all delays were found out by trial and                                                                                          error.You could make use of this code if you are                                                                                      just starting up with 8051
========================================================================

#include<reg52.h>
sbit seven_seg=P0;
sbit com1=P2^7;
sbit com2=P2^6;
sbit com3=P2^5;
sbit com4=P2^4;
sbit com5=P2^3;
sbit com6=P2^2;
int i=0;int hours=100;int minutes=100;int seconds=100;int temp_hours=0;int temp_minutes=0;int temp_seconds=0;int val=0;
void delay_small(void);
void display_straight(int);//the code for the numbers has decimal point as high
void display_inverted(int);//the code for the numbers has decimal point as high
void main()
{
while(1)
{
temp_hours=hours;
temp_minutes=minutes;
temp_seconds=seconds;
for(i=0;i<=100;i++)
{
com6=0;
display_straight(seconds%10);
delay_small();
com6=1;
seconds/=10;
com5=0;
display_inverted(seconds%10);
delay_small();
com5=1;
com4=0;
display_straight(minutes%10);
delay_small();
com4=1;
minutes/=10;
com3=0;
display_inverted(minutes%10);
delay_small();
com3=1;
com2=0;
display_straight(hours%10);
delay_small();
com2=1;
hours/=10;
com1=0;
display_straight(hours%10);
delay_small();
com1=1;
val+=1;
}

 hours=temp_hours;
minutes=temp_minutes;
seconds=temp_seconds;
if(val==35)
{
seconds+=1;
val=0;
}

if(seconds==160)
{
seconds=100;
minutes+=1;
}
if(minutes==160)
{
minutes=100;
hours+=1;
}
if(hours==124)
{
hours=100;
}
}
}

void delay_small(void)
{
for(i=0;i<=800;i++);
}

void display_straight(int a)
{
if(a==0)
{
P0=0XFD;
}
else if(a==1)
{
P0=0X61;
}
else if(a==2)
{
P0=0XDB;
}
else if(a==3)
{
P0=0XF3;
}
else if(a==4)
{
P0=0X67;
}
else if(a==5)
{
P0=0XB7;
}
else if(a==6)
{
P0=0XBF;
}
else if(a==7)
{
P0=0XE1;
}
else if(a==8)
{
P0=0XFF;
}
else if(a==9)
{
P0=0XF7;
}
else
{
}
}

void display_inverted(int a)
{
if(a==0)
{
P0=0XFD;
}
else if(a==1)
{
P0=0X0D;
}
else if(a==2)
{
P0=0XDB;
}
else if(a==3)
{
P0=0X9F;
}
else if(a==4)
{
P0=0X2F;
}
else if(a==5)
{
P0=0XB7;
}
else if(a==6)
{
P0=0XF7;
}
else if(a==7)
{
P0=0X1D;
}
else if(a==8)
{
P0=0XFF;
}
else if(a==9)
{
P0=0XBF;
}
else
{
}
}

                                                                        CODE 2:uses timer feature of 8051
========================================================================

#include<reg52.h>
sbit seven_seg=P0;
sbit com1=P2^7;
sbit com2=P2^6;
sbit com3=P2^5;
sbit com4=P2^4;
sbit com5=P2^3;
sbit com6=P2^2;
int hours=100;int minutes=100;int seconds=100;//its better to initialize to 100;initializing to 0 will make it difficult
int temp_hours=0;int temp_minutes=0;int temp_seconds=0;//temp variables
int timer_count=0;//
void display_straight(int);//function for upright 7 segments
void display_inverted(int);//function for inverted 7 segments
void delay_t0(void);//delay function for 2ms;uses T0;
void main()
{
while(1)
{
timer_count=0;

while(timer_count<=77)//this number has been found by trial and error
{
//store values into temp variables
temp_hours=hours;
temp_minutes=minutes;
temp_seconds=seconds;
//the display sequence starts from this point of code
//steps are:
//turn the COM pin "low" i.e, 0
//call the appropriate display action
//wait for some time
//turn the pin "high";1
 com6=0;
 display_straight(seconds%10);
 delay_t0();
 com6=1;
 seconds/=10;
 com5=0;
 display_inverted(seconds%10);
 delay_t0();
 com5=1;
com4=0;
display_straight(minutes%10);
delay_t0();
com4=1;
minutes/=10;
com3=0;
display_inverted(minutes%10);
delay_t0();
com3=1;
com2=0;
display_straight(hours%10);
delay_t0();
com2=1;
hours/=10;
com1=0;
display_straight(hours%10);
delay_t0();
com1=1;
//reload values from temp to main variables
seconds=temp_seconds;
minutes=temp_minutes;
hours=temp_hours;
//increment counter
timer_count+=1;
}

    seconds=seconds+1;

//seconds command was posted here initially
if(seconds==160)
{
seconds=100;
minutes+=1;
}
if(minutes==160)
{
minutes=100;
hours+=1;
}
if(hours==124)
{
hours=100;
}

}
}

//delay is for 2ms
void delay_t0(void)
{
TMOD=0x01;//select timer0;T0
TH0=0xF8;//feed higher byte
TL0=0xCC;//feed lower byte
TF0=0;//initially reset the flag
TR0=1;//run timer
while(TF0==0);//wait for overflow
TF0=0;//reset flag
TR0=0;//stop timer run
}

//this code is written from truth table
void display_straight(int a)
{
if(a==0)
{
P0=0XFD;
}
else if(a==1)
{
P0=0X61;
}
else if(a==2)
{
P0=0XDB;
}
else if(a==3)
{
P0=0XF3;
}
else if(a==4)
{
P0=0X67;
}
else if(a==5)
{
P0=0XB7;
}
else if(a==6)
{
P0=0XBF;
}
else if(a==7)
{
P0=0XE1;
}
else if(a==8)
{
P0=0XFF;
}
else if(a==9)
{
P0=0XF7;
}
else
{
}
}

//this code is written from truth table
void display_inverted(int a)
{
if(a==0)
{
P0=0XFD;
}
else if(a==1)
{
P0=0X0D;
}
else if(a==2)
{
P0=0XDB;
}
else if(a==3)
{
P0=0X9F;
}
else if(a==4)
{
P0=0X2F;
}
else if(a==5)
{
P0=0XB7;
}
else if(a==6)
{
P0=0XF7;
}
else if(a==7)
{
P0=0X1D;
}
else if(a==8)
{
P0=0XFF;
}
else if(a==9)
{
P0=0XBF;
}
else
{
}
}
                                                                             CODE 3:tidied up code 2
========================================================================

#include<reg52.h>
sbit seven_segment=P0;
sbit com1=P2^7;
sbit com2=P2^6;
sbit com3=P2^5;
sbit com4=P2^4;
sbit com5=P2^3;
sbit com6=P2^2;
float i=0;int j=0;
int hours=100;int minutes=100;int seconds=100;int temp_hours=0;int temp_minutes=0;int temp_seconds=0;
void display_straight(int);
void display_inverted(int);

void main()
{
TMOD=0x01;
while(1)
{

TH0=0x00;
TL0=0x00;
TF0=0;
TR0=1;
while(i<=6.5)//reduce this guy aopropriately
{
temp_hours=hours;
temp_minutes=minutes;
temp_seconds=seconds;
com6=0;
display_straight(seconds%10);
for(j=0;j<=500;j++);
com6=1;
seconds/=10;
com5=0;
display_inverted(seconds%10);
for(j=0;j<=500;j++);
com5=1;
com4=0;
display_straight(minutes%10);
for(j=0;j<=500;j++);
com4=1;
minutes/=10;
com3=0;
display_inverted(minutes%10);
for(j=0;j<=500;j++);
com3=1;
com2=0;
display_straight(hours%10);
for(j=0;j<=500;j++);
com2=1;
hours/=10;
com1=0;
display_straight(hours%10);
for(j=0;j<=500;j++);
com1=1;
//once the flag raises,i is incremented and flag reset
if(TF0==1)
{
i+=0.5;
TF0=0;
}
hours=temp_hours;
minutes=temp_minutes;
seconds=temp_seconds;
}
i=0;
TF0=0;
TR0=0;

seconds+=1;
if(seconds==160)
{
seconds=100;
minutes+=1;
}
if(minutes==160)
{
minutes=100;
hours+=1;
}
if(hours==124)
{
hours=100;
}
}
}

void display_straight(int a)
{
if(a==0)
{
P0=0XFD;
}
else if(a==1)
{
P0=0X61;
}
else if(a==2)
{
P0=0XDB;
}
else if(a==3)
{
P0=0XF3;
}
else if(a==4)
{
P0=0X67;
}
else if(a==5)
{
P0=0XB7;
}
else if(a==6)
{
P0=0XBF;
}
else if(a==7)
{
P0=0XE1;
}
else if(a==8)
{
P0=0XFF;
}
else if(a==9)
{
P0=0XF7;
}
else
{
}
}

void display_inverted(int a)
{
if(a==0)
{
P0=0XFD;
}
else if(a==1)
{
P0=0X0D;
}
else if(a==2)
{
P0=0XDB;
}
else if(a==3)
{
P0=0X9F;
}
else if(a==4)
{
P0=0X2F;
}
else if(a==5)
{
P0=0XB7;
}
else if(a==6)
{
P0=0XF7;
}
else if(a==7)
{
P0=0X1D;
}
else if(a==8)
{
P0=0XFF;
}
else if(a==9)
{
P0=0XBF;
}
else
{
}
}


========================================================================























4 bit counter arrangement

clock arrangement for minutes and seconds







clock arrangement



6 7segment display arrangement; hours:minutes:seconds format



refined 4 bit clock mode








































Friday, 25 September 2015

ADCOM 2015 final 25!!

The title of the post might seem confusing at first but it's the shortlisting pattern for the ADCOM 2015 event,conducted by ACCS(Advanced Computing and Communications Society).

One fine exam morning,my professor while walking into his room saw me frantically revising for the days examination.I wished him with a formal"Good Morning Sir".
He acknowledged with a nod and spoke to me saying that there was a contest on "SMART TRANSPORT SYSTEM" and would I be interested.
 I jumped to the opportunity.

When growing up, my locality had a very typical village ambiance.(Though much of it has changed now as everything has become more "modern").I grew up watching people ride on bullock carts and work in the fields.This memory of mine has had a deep impact on me.
For reason which I shall explain shortly, this "image" struck my mind on hearing "SMART TRANSPORT SYSTEM".
When you consider a scenario in which two bullock carts are travelling, you can tell with absolute confidence that they will not collide with each other.
This very clearly indicates that the "vehicle" is well aware of it's surroundings.
Also it is not necessary that the "drivers" of the carts maintain control all the time,the bulls can do it themselves.
The vehicles now turn out to be "smart enough" of taking independent decision without having to ask the "master".
Another beautiful feature in this system is that there is minimum "traffic" as such, and absolutely no emission.
A modern vehicle that is able to adapt to the surrounding traffic and be eco-friendly would be phenomenal.

A proposal had to be prepared and submitted to the ACCS society which I did.
My team and I came up with two proposal features that incorporated the above idea:
we called it as "SMART VEHICLE".
The proposals which were selected were called to IIT Madras,one of the premier engineering college in INDIA, to give a presentation and if possible a demo.
Though the shortlisted 115 teams had been posted well in advance,we got to know only 4 days before.
It was "all hands on deck" from then on.
The template on how the slides should be created and presented were already given on their website.
Even though presentation of the slides would have sufficed, there was something in me that kept telling me we can do it better.
So,with two days to go(two nights actually,as I have college in mornings),I sat down coding.More importantly was the task of finding the parts needed to build my project.I needed three ultrasonic sensors(HC-SR04 's).A few of my classmates had made use of this particular sensor in the "mini-project" that had to built and which would be graded by our college.
Contacting them overnight,ensured that the sensors were with me before noon of the following day.
On the evening of our departure is when I sat down to put together the components on the "PCB" and solder them into place.
I must say that the two nights that I spent working on this project has thought me a lot.
I have learnt how to work quickly,mange my time in the best possible manner ,and how to think on my feet.
Another lesson learnt is that when you truly believe and work towards something,none will stop you.In fact,they will support and encourage you as my friends did in my case.
There will be a few people who will want to, and will try to, pull you down(trust me,I have been through this stage too),but always think that you are a mighty ship sailing in the ocean.
You are bound to face trouble,overcome it.




















There I am along with my team!!




 Looks like a "supercar" with some "badass" exhausts doesn't it?
Cheers!! and see you soon on my next post.

Tuesday, 15 September 2015

Teacher indicator!!

I prefer to take a stroll out of campus during long breaks and stay indoors listening to music on shorter ones.Just the other day, a friend of mine decided to join me for a walk.As we walked, we spoke about the projects we were involved in.He said to me that he wanted to build a "clap detector".It's an easily doable project, (a half day's project infact starting from buying the components to fabricating on pcb).

"what's it used for,apart from the very obvious fact of detecting claps?" I asked.
This question of mine probably put him off, making him hit back with 
"Well,why don't you build one and show me other uses for it.".
Challenges are something that I relish.It helps keep me occupied ,move away from academics and also give me chance to learn.

"Challenge accepted",came the equally quick response.

A clap detector is a very simple device that makes use of an microphone(condenser type),a relay and a few other resistors,capacitors etc. to detect "claps" and turn on the relay.In this way, a light,radio or fan can be turned on by a clap.

While working on the project, my mother told me that she could actually make use of this device if it could record the "whistles" made by a rice cooker and display it in some manner.
GENIUS!
I ran to the nearby electronics store,bought some 7 segment displays which would be indicative of the number of whistles and also a small buzzer.The buzzer buzzes if the whistle count is 4,5 or 6.

USE 1: Now we know one more use for the clap detector and it is in detecting whistles made by rice cooker,a tea kettle or a milk boiler(those of  olden days wherein you will have fill it with water first before pouring in milk) .
Here is how its turned out to be.
It may look fussy,but with a single evening I had to build it, I think it's turned out "OK".

USE 2: Another situation in which I use this guy is at class.
When the teacher is not inside the class, there is constant noise made by chatter of the students, me being involved with my music.
A lot of the time what happens is that the teacher enters the class without me noticing at all, for which I am punished by being the target,the rest of the class.
The solution to this is just replacing the buzzer by a vibrator motor.
So now, whenever the teacher enters the class,everyone falls silent ,my device detects this change and turns on the motor giving me an indication.

USE 3:This could also be used to detect if your baby is awake.Once the baby is awake and cries,the wireless module on the system(this one doesn't,will have to add one) will send out an indication to the parents.

PS:BLURRED PHOTOS AHEAD!!

That's it folks.
Let me know if you found out a use for it.