Wednesday, March 11, 2009

RFID activated phone system

I feel most hobbyists make things that are useful. I tend to like to make prototypes. To me that's what I like about the iobridge so much. I can prototype things very quickly that in the past would have taken me a long time to create. I was able to make my phone system in the morning before heading off to school. I tend to think about usability more than most engineers, and as a biomedical engineer I like to think about products for physicians, patients, and the elderly. When I was an undergrad I had an idea for a phone system for the elderly. Yes there are phones with large buttons and few features, but they are often very ugly and you still have to remember the phone number. My idea was to create a phone that would dial the desired number based on placing a picture on or near the phone. In essence the device would work like the many iphone apps out there that allow you to call a person by pressing their picture on your phone. My dialer could be this advanced, with a touch screen and the whole nine yards, but I really liked the idea of physically doing something. Here's my prototype:


One note about the video. This has nothing to do with an iphone. The system will connect any two phones.

To create the RFID activated phone dialer I used:

The RFID reader is very simple to use and is easliy connected to an arduino. Code to run the reader can be found on the arduino website. For my purposes this did almost everything I needed it to do. My only change was to put a delay after reading a card. This eliminated multiple reads if you swiped the card by the reader slowly. Since the iobridge JSON object stores the serial data for a period of time, I also added a line of code to change the stored serial data after my javascript had a chance to read the RFID tag. If I didn't do this then the phone dialer javascript would keep making phone calls.

Dialer without cover

The arduino sends the RFID info to the iobridge via a connection between the TX pin on the arduino and the serial smart board. The dialing is done on my home computer/server that is running a bit of javascript. The javascript compares the RFID code and dials the appropriate phone number. This is the heart of the javascript I have running back on my computer.
function testNumber(numtocall) {

if (numtocall == "RFIDTAG1") {
// RFIDTAG1 is the unique tag
window.location="tel:XXXXXXXXXX";
// XXXXXXXXXX is the phone number to call
}
else if (numtocall == "RFIDTAG2") {
// RFIDTAG2 is the unique tag
window.location="tel:XXXXXXXXXX";
// XXXXXXXXXX is the phone number to call

// ... repeat for each tag you have
}

function checkNumber() {
$.getJSON("http://www.iobridge.com/api/feed/key=YYYYYYYYYYYY&callback=?",
// YYYYYYYYYYYY is the key for your iobridge
function (data) {
testNumber(data.module.channels[3].LastSerialInput); // 3 is the 4th channel on the iobridge (0-3)
});
}

$(document).ready(function() {
checkNumber();
setInterval("checkNumber()", 10000);
});

The script checks the feed of my ioBridge every 10 seconds and then parses the JSON object. The LastSerialInput is then compared to the RFID tags I have in the script. If a match is found then the call is placed.

To place the call I used a tel:URL. This works like a mailto:URL, but instead of activating your email program to start and email it activated a phone program to dial a number. The program I use all the time for this is Vocito. It works with Google Voice. I use google voice and Vocito all the time so I didn't think twice before picking this combo as my dialing method. For those of you without google voice, I am sure you could activate a phone call with numerous other programs and systems.

10 comments:

Anonymous said...

Couldn't you send the RFID tag # directly to the computer from the Arduino? (without going through the ioBridge)

Stephen Myers said...

I could, but that would mean I would have to 1) leave the computer on 2) have the device near my computer and 3) it would draw a lot more power. As it is I can just plug the arduino into an outlet for power, and bypass my computer completely. You just need a computer or an iobridge.

Anonymous said...

Nice project to practice your Arduino and ioBridge skills. Wouldn't voice-dialing or speed dial also solve the problem.

Stephen Myers said...

This project was done specifically with the elderly in mind. Have you seen someone over 40 try to use voice dialing? It doesn't work 99% of the time. From watching them, I've noticed they never speak normally into the phone when they are talking to a computer and therefore the voice dialing never works. As far as speed dialing, I wanted something that was easier for them to use but could be added to any phone. I thought holding a picture of who you want to call pretty easy.

Anonymous said...

nice work!

Anonymous said...

Good job man, really appreciate the effort you put into this. I really enjoyed it.

Anonymous said...

Cool article you got here. It would be great to read more about this theme. The only thing it would also be great to see here is some pictures of some devices.
Nickolas Stepman
Cell phone jammer

Anonymous said...

hye stephen..
may i ask 1 question?
you know how to transmit data from RFID reader to hard telephone line through PIC microcontroller?hope you have the solution..thanx

Virtual Switchboard Phone System said...

This is a wonderful post that really interest me into delving to such a unique hobby.

Generic Cialis said...

Hi...

Nice post, I would like to request you to one more post about that ****

Keep it up