Arduino WOL

A good friend of mine is an engineer and he purchased an arduino uno unit. He was toying around with it and suggested me to take a look at it, because it can be programmed in C. I never even seen one before, but Intrigued, I downloaded IDE from Arduino website and tried it. It was fun, but I literally had no use for it so I left it alone.

After few days same friend had suggested me to try teleduino library, which enables you monitoring certain elements over their website (you have to register to get personal key, it's free !). I tried it, liked it, but the functions available were very limited. We had some discussion over it, when he mentioned me he would like to use arduino component for WOL (wake-up on LAN), because he's often away, but needs remote access to his home PC and refuses to leave it powered on without reason. He wanted an unique solution, because having more than 1 subnet and router leads to complications regarding wol signal. Having arduino connected to router in same network as pc solves everything as firewalls, different networks pose no problem at all.

Suddenly everything became way more interesting. I decided to copy teleduino concept and modify it. What I did was :

  • program arduino unit to connect to an outside linux based server
  • program server application in C and run it in background on remote linux server
  • arduino web manager (PHP)
  • mysql database
  • android application with POST request to arduino web manager

Idea how it works is best shown in images first :

To wake-up pc user has 2 options - either log on website interface, or simply press a button in android application. Whatever the options, when user decides to do it, mysql table with arduino changes flag. Server application, which is connected with arduino all the time, checks values in DB on certain intervals. Depending on the data found, it decides wether to send wake signal to arudino component or not. Arduino is listening incoming data and checking for commands. When the command is found, it executes it and replies to server that it has been executed.

Quick video to get the general idea:

Version : 1.00

TODO :
  • multi-user/threading support
  • optimize & secure android application (graphics also !)