Thursday, February 21, 2013

What's going on Gadget Officer today?

Hello everyone! Gadget Officer is back again..and its been a while since my last post about the Nokia phone hack..its not that I have stopped all my Arduino project and all..just a lot of commitment to my day job and most importantly, to my family :-) ...

So..what's going on Gadget Officer (GO) today?

Not much to write in this post except to update my on-going project I've been working on for a couple of month now. But before that, let's take a look the picture below:



Yep. 

A digital clock with solah prayer time display.


I believe many of you who live in Malaysia used to see this in the mosque or the one this one selling in frame shop at Tesco or Giant etc. The price tag is actually not very expensive nowdays. You can get one like this for only around RM 3xx (small size).


And then...I kept thinking...and think...and think...

..why not I just build one of this clock (all with the prayer time and date) using those cool red 7-segment led display and for sure, will be controlled by my-super-awesome Arduino chip...

Hmmm...a good idea...but...

I know its gonna be challenging project to make and lots of work involved..but thats what I love doing electronics...the challenge :-) thats what keep me doing what I love to do.


So...the next whole week,this is the project that keep playing in my head. I have the whole idea on how to build it and how the electronics would work but I know that I need to keep it simple. I don't want to do 'rocket-science' just for a digital clock (many of them on the net) so I've done some research through the internet and looking for parts from ebay.

To visualized my idea into real form, I use Solidworks to draw the clock design based on actual parts that I already have in stock and dimension references from the internet. It took me about 2 weeks to complete the cad drawing. So...this is it.. The initial design:





The wood frame actually was taken from my old picture frame and since the size is quiet big, I could place in all the display that I need..which is the clock (big one at the top), date and all the prayer time..



This is another image that shows the display board arrangement from the controller board at the top to the prayer time at the bottom..

By drawing this 3D CAD design, it will be my good reference for the PCB dimensions and the display placement. It also helps me to look for better solution for the problem and to imagine how the final work would be.


Alright guys, thats all I can share with you for this moment. This is still on-going project and still lots of work need to be done. Currently I'm really busy working on the PCB design and fabricating the boards.

I will update my progress for this project in a while after this. So keep posted!


Until next time..happy gadgeting to all Arduino-nian! :-)

Wednesday, February 15, 2012

Hacking the Nokia 3310 as a cheap Arduino SMS Shield

Back to my home in Shah Alam, I have a problem with the main power supply (the 240VAC that is). Still not knowing the cause, it used to trip (breaker cut-off) occasionally without any reasonable reason, especially during heavy rain and thunderstorms. It bothers me a lot since I have a PC and fridge that need to be turned ON 24hrs a day. This become real problem when I'm out from home during the long holiday, the power trip without me knowing it, and when going back from the holiday, everything in the fridge was lost and bad smell conquering my whole house. I never like the smell.. darn! x:(

So I am thinking myself, wouldn't be great if my home could inform me (at least by sms) that the main power supply was down and then I could reply back to the home to switch on the main circuit breaker back again so that the fridge can continue to run. Since I already have my Arduino Diecimilia lying around (and not attach to any other project) then all I need is a GSM module shield where I can program it to send sms or to receive sms to do any specific job (e.g turn on the main breaker).

After some time looking through the net (from eBay to be exact) for any cheap GSM module, my search was a disappointment. I could not get any of the module for less than USD40 plus the shipping, which is way over my budget. And also it could take me some time to learn on how to program my Arduino to communicate with those module (its been a while I'm not doing programming after quitting my job as an engineer :-P )..

Then I'm looking for other simple solution other than using the GSM module. An idea came across my mind after looking at my old-but-still-working Nokia 3310 in my storage box (i still kept the phone for a nostalgic reason). Why not just hack the phone (i'm not using that phone anyway) with some relays to duplicate the 'button-pressing' action and tell it to send sms to any number saved in the phone book. It just a simple yet cheap solution to my problem. All I need to buy is new battery and charger since the original battery was fully depleted and cannot be charge anymore. Luckily for me, there are still peoples selling the OEM battery. Fuh!

The Phone Hack

After charging the battery and switching on the phone, I'm confirmed that the phone is still working as expected. So I started to open up the covers (front and rear - just use small screwdriver to pry the left/right side). The keypad will follow the front cover easily when I open it. Then there are six small screw around the lcd panel (red-marked in picture). It is not the normal philips-type screw and I need to use the Torx T5 screw driver instead. Need to pry a little bit more on both side of the lcd screen in order to open up the panel.


Finally, I have found what I'm looking for. The PCB board! (sorry..picture taken after I soldered the wire. duh!)


Here is the close-up of the soldered wire. I just need 2 button (OK and DOWN) to control the sending sms sequence since the message and phone number are already saved in the phone itself.


Need to put some black pvc tape to prevent it from shorting and I don't want any unnecessary button press to happen. (*please note that doing this will make both buttons is unavailable to be pressed anymore. you'll need some other button on the shield to by-pass)


Done with the wires, now its time to put back the phone all together again. Start with the lcd panel, screws and finally the phone cover. Pictures below shows how I route the wires through the battery and the rear cover. This is why we need to use the thinnest wire available. Its very tight space there.




As you can see in the picture, I need to cut some small hole to taken out the wires. Or else the rear cover won't fit. Finally, I soldered 2x 2-pin connector at the end of the wires that will go to the shield board.

Now I've finished with the phone, its time to build the shield board.


The Shield Hack

Arduino is widely known for its 'shield'. Its a very versatile way to interfacing the Arduino with the outside world. Same goes to my SMS project here. I'm gonna need a shield to interface the Arduino with the phone and also to place the relays and necessary circuit to drive the relay. It is very easy to control a relay using the Arduino with help of a minimum number of component. I will not put the schematic here in my blog since I just follow what is already available from the Arduino Playground website. See here

The easiest way to build your own custom-made shield is to buy the ready-made proto-shield (or prototype shield as the full name) where you just need to solder the components on the prototype area, rather than messing with the stack-able pins and headers. Since that we cannot simply use our own protoboard (donut or perf) to make shield which is compatible to the Arduino due to its non-standard 0.16 space between the header (read here)..

Therefore I've done a few hacks on the Arduino in order to fit with my standard 0.1 donut board shield. Here are the photos:



On the shield board :

Since we already have a nice fit custom-made proto shield, now its time to place and solder other component such as relays etc.


This is how the wiring look like under the board. Messy but it works for me :-)

This is the connector and wires to the phone. I put some hot glue to prevent the wires from moving and loosen. (this is the 1st version of the board. on the 2nd version, i've put a small tactile switch just beside the connector in order to by-pass the button press)

So, this is the overall view of the finish SMS shield. I have left some spaces on the shield for future upgrade which is to add another relay to detect power trip and trigger the SMS sequence.


The Arduino program used in this project is simple and just using the favorite DigitalWrite( ) and Delay( ) function to turn the relay On and Off. Here is the code. You can copy, use and modify it as you pleased.

#include <Button.h>

/*
 Trip Detection SMS System version 1.0 (powered by Arduino Diecimila)
 Designed and Debugged by melawis501@HAFIZ, Nov 2011

 Version 1.0 Rev .'A'-  November 2011
*/


Button button = Button (10,PULLDOWN);

const int relayOK = 11;   // set pin 11 for phone button OK
const int relayDown = 12; // set pin 12 for phone button DOWN

const int onTime = 300;  //Relay On and Off timing. Adjust accordingly to suits your needs
const int offTime = 800;

void SMS_sendMsg();    // function to send the 'TRIP' message to 1st recepient

void setup() {

  pinMode(relayOK, OUTPUT);      // set pin 11 as OUTPUT (relay no.1)
  pinMode(relayDown, OUTPUT);    // set pin 12 as OUTPUT (relay no.2)

  digitalWrite(relayOK,LOW);     // set the state of both relays as LOW during system bootup
  digitalWrite(relayDown, LOW);
}

void loop() {

  if(button.isPressed()) {
      SMS_sendMsg();
  }
  else {
      digitalWrite(relayOK,LOW);
      digitalWrite(relayDown,LOW);
  }
}


void SMS_sendMsg(){
//Function for sending sms sequence 

  delay (1000);
  digitalWrite(relayOK,HIGH);//relay on -- to Page 2
  delay(onTime);
  digitalWrite(relayOK,LOW);//relay off
  delay(offTime);
  
  digitalWrite(relayOK,HIGH); // -- to Page 3
  delay(onTime);
  digitalWrite(relayOK,LOW);
  delay(offTime);
  
  digitalWrite(relayOK,HIGH); // -- to Page 4 (select phone number page)
  delay(onTime);
  digitalWrite(relayOK,LOW);
  delay(offTime);
  
  digitalWrite(relayDown,HIGH); // -- selecting phone number
  delay(onTime);
  digitalWrite(relayDown,LOW);
  delay(offTime);
  
  digitalWrite(relayOK,HIGH); // -- to Page 6
  delay(onTime);
  digitalWrite(relayOK,LOW);
  delay(offTime);
  
  digitalWrite(relayOK,HIGH); // -- to Page 7 - Confirm sending SMS
  delay(onTime);
  digitalWrite(relayOK,LOW);
  delay(offTime);
  
  delay(1000);




Last but not least, here's the video showing me testing the SMS shield. Enjoy!


Feel free to ask me anything about the project or suggesting new ideas to share. Hope this project would benefit others, especially the Arduino communities. See again until my next project!

Arduino rocks!!