Friday, February 14, 2014

My Femtoduino Multipurpose Shield

Having too much clutter on one's desk or work table can really be annoying. This is the main reason why I really need to transfer my newly created gadget from breadboard to a pcb. Ok not the near commercial version of it, just a quick solution. So I came up with a really nice mutlipurpose shield just perfect for my current need.

Last week, upon the arrival of my BMP180 sensor, I quickly did some experimenting and since all of the results were just as I expected, I really need to transfer all of my setup to a pcb so that I can concentrate in the creation of the firmware.

This was my previous setup:

And now, this is my shield:

I have become a big fan of my friend who happens to be a cellphone technician because he did an amazing job at assembling my project. He never made any mistake and I only have to leave him all the parts I used, with some instructions from me and I made a totally ugly sketch of the schematic diagram. I am so proud of him for doing such an amazing job. Here is my sketch:
I made this sketch in less than an hour, because I was so very excited.

More about the shield:
The shield can be used in a lot of ways. I designed it to be flexible and all modules I used can be easily removed and replaced with another module. Here is the list of components I used:
  1.  1.8" tft display, I have chosen this over my Nokia 5110 lcd module because this tft display is a lot more functional, offers twice as much resolution at 128x160 pixels as compared to Nokia 5110's 84x48 resolution, small footprint, full color and most importantly power consumption is very low, so a coincell battery can still be used for this project.
  2. Femtoduino, it is the only microcontroller I have at the moment so I have no choice but to use it.
  3. Buzzer, I needed somehow to hear some sounds so this is a good addition.
  4. BMP180, this is the main reason why I came up with this shield, it is a very functional sensor because with it, I can measure altitude, vertical velocity, atmospheric pressure, relative temperature and humidity.
  5. DC-DC Step-down converter, this module converts 5V to 3.3V. This is needed in the shield because the Femtoduino requires 5V while the 1.8" TFT Display and BMP180 requires 3.3V.
I also included a jumper port so that when I need to take a picture of the 1.8" TFT display using my tablet, there wont be any problem because normally, to achieve full brightness of the display, it had to be connected to 3.3V, having it this way, the backlight can not be controlled programatically. At full brightness, my tablet could not take picture of it. So when I connect the backlight of the display to digital pin 9 of my Femtoduino, I can control the brightness but if connected this way, the full brightness of the display will not be achieved.

I still have plans to add more modules like the accelerometer and the digital compass which anytime soon will be arriving.

Finally, I took a video of the shield featuring the digital clock, the ringtone program that I downloaded from the internet, the screen for displaying the temperature, pressure, altitude and the vertical velocity. I am still in the process of finding ways to make the firmware efficient and planning to improve the splash screen. I am also going to add more functionalities like the device must be able to store the readings using the 3kB eeprom that is builtin the Femtoduino and display these reading on a line graph. The 3kB is already good enough to store the following:
  1. 1 minute of readings at 1 sec interval
  2. 1 hour of readings at 1 min interval
  3. 1 day of readings at 15 mins interval
  4. 1 week of readings at 12 hrs interval
  5. 1 month of readings at 5 days interval
The total of these readings will be 2.25kB and I will still have plenty of rooms for storing my other important settings( I will be writing more about the software on my next post). But unfortunately, those readings will be just for the altitude. I may consider to add a new module and that is the I2C eeprom to enable the shield to store more data.

Here's the video: