expr:class='"loading" + data:blog.mobileClass'>

Tuesday, July 29, 2014

Getting started with the FRDM-K64F

I was lucky enough to win a FRDM-K64F platform in the recently concluded #MountainMondays.

The board is mbed enabled. Which translates to access to a free (on line) compiler and lots of great libraries.

Thursday, March 27, 2014

My first experience with the YRDKRX63N

This post is going to be about my first experience with the awesome new "YRDKRX63N" kit that I received recently from the Renesas electronics Singapore. This kit was sent to me as prize for the recently held  "Renesas RX Robot Challenge" on facebook. 

Using FFT to scan for FM channels with RTL_SDR

Recently, my brother got selected for a "Beagle Bone radio challenge" road test by element14. As part of this challenge, the selected individuals had to build a working radio using the components provided by element 14. I've decided to help my brother a little with a feature called "scan". This post is going to be how we got the "scan" feature to work. This feature scans the available FM channels.

Tools used for analysis:
  • Python 2.7
  • matplot
  • scipy
  • dvb t dongle
  • rtl_fm program
The first thing to do is analyze few samples that the rtl_fm program outputs. The rtl_fm is the program that can be used to tune into FM channels. Below is a typical command line that can be invoked to tune into any FM channel.

          rtl_fm -f 91.1e6 -s 200000 -r 48000 - | aplay -r 48k -f S16_LE


-f         Specify the frequency, which is 91.1Mhz in the above line
-s         The sampling rate used
-r         The output sapling rate

Monday, February 25, 2013


This one is still related to the my previous posts. This time around, I have added features that I had promised in my earlier posts. The usage of the software remains mainly unchanged. What has changed is the way in which the firmware is written. The firmware now uses polymorphism to make it easier to adapt the communication frame work to different hardware platforms (The selected hardware platform should support C++ as a programming language to use this approach). The current implementation makes use of polymorphism at two different places
(a) For the implementation of the communication channel (UART/serial protocol in our case)
(b) For  implementing the functions required for accessing the digital and analog peripherals

Sunday, February 24, 2013

EvoPrimer Tutorial: ToolBars

This blog post is the first in series (hopefully, there will be more) of tutorials on the EvoPrimer dev kit from Raisonance. These tutorials will mainly concentrate on usage of the circle OS. This tutorial assumes that you already know how to create a simple Circle OS project. If you are not aware of the procedure to do so, you can follow this tutorial to learn about it.

For this tutorial, we will see how we can create and use a tool bar under Circle OS. Toolbars are the widgets that appear on the top of the LCD.

For this tutorial, we will build a simple game of gears, papers and scissors (I could not find a rock icon in Tango image library :p). The game logic itself is simple, the CPU makes a random selection of an object, either a rock(gears), paper or scissor and compares against the user selection, selected via the tool bar.

Monday, October 29, 2012

Arduino controller - 2

 This blog post is continuation of the previous post. I have made some changes to the software on the host side. Most important among them is that now you can a have a configuration file that describes what ports on the board are available. One more change is that, as opposed to earlier, now you can select the serial port directly from the GUI rather than specifying it within a configuration file.
Here is a sample configuration file (for Arduino Duemilanove):

Tuesday, October 9, 2012

Arduino controller

This project is based on Arduino Platform.
This current project implements a software architecture which eases the Arduino related peripheral operations such as Analog out(pwm), digital read/write and analog read operations. The core of the project is implemented in “trans_layer.cpp”. The central object in this project is “TransLayer” which has following methods:
TransLayer ()(constructor)

Services here I am referring to are actually functions that accomplish certain task such as turning on an LED or reading Analog voltage at a given pin. The list of services are maintained within a linked list. The construct in this project (TransLayer()) initializes the head and tail pointers for the linked list. The linked list is list of data object of type service_list whose deceleration is:

struct service_list /**< Struct for holding service list */
call_back_ptr service_function; /**< call back function pointer */
char service_flag; /**< Packet service flag for which this service responds*/ service_ptr next_service;

call_back_ptr is the function pointer to the call back function. The service_flag is a char which uniquely represents the service. To add a service, AddService() should be used. It accepts a function pointer, to be used as call back function when the character which corresponds to the second argument to this function is received.