Tomer Yechiel                                                         Moti Tavasi

(tomer DOT yechiel AT gmail DOT com)                             (motit86 AT hotmail DOT com)



The project was created as a final project at the workshop "Advanced Computer Systems: Embedded Systems" 2012, Tel Aviv University under the supervision of Prof. Sivan Toledo.

We used education board from "Embedded Artist" LPC2148 and Ethernet expansion ( to create an alarm clock that remotely controlled from the Internet.

The clock is sync with NTP servers, and also receives its schedules from user choice Google calendar account.

The clock is host less and do not need to be connected to computer, it's connect to internet with embedded DHCP client.





The dispatcher is the program that link between the clock and Google calendar servers.

We used open source project called "libgcal"[2] to communicate with Google calendar servers.

The dispatcher waits for connection from the board, and then the dispatcher keep track for events to be sent to the clock.

The dispatcher samples every few seconds for new events or changes in events that already sent to the board (like deleting event or changing event date) and sync the clock.

The dispatcher also gets the current time from NTP server and sends it to the clock.

The dispatcher supporting multiply boards connections at the same time.



Initialization flow:


Clock state machine:


Peripherals we used:

1.      Ethernet expansion

2.      RTC

3.      Timer0

4.      LCD

5.      Buzzer

6.      Button


How it works:

1.      Connect the board to the network (like router).

2.      The board is running DHCP client and trying to get IP.

3.      The board connect to the Dispatcher (preconfigure IP and port) and send it Google account user and password

4.      The Dispatcher send the board the current time from NTP server and the board shows it on the LCD.

5.      The Dispatcher is syncing between the Google account and the events that are on the board.


Download the sources:

Using git: "git clone"



1.      uip 1.0 -

2.      libgcal -

3.      Toolchain - GNU ARM -

4.      lpc21isp (burning software) -