Sunday, July 14, 2013

hack micro SD card adaptor to low profile for raspberry pi

It has been kind of an eye sore on my raspberry pi, where the SD card adaptor is sticking out of my 3D printed box. Since I am using micro SD card, it should be small enough to fit the SD card slot. The Low-Profile SD to Micro-SD Card Adaptor for Raspberry Pi on amazon cost about 8 quid. I am dead sure I am not going to spend a day's worth of meal allowance on a measly piece of PCB.

So i am going to hack a micro SD card adaptor to low profile, since I have a one lying around with a broken lock (I can't write to my micro sd card with this adapter because of the lock is broken). Warning: this process is irreversible, the modified micro sd card adaptor cannot be returned to its original form. proceed at own cost.

recipe for success: nimble fingers, lots of patience and a stroke of luck.























Carefully fold the pins on the RHS to contact the micro SD card.
Secure both the SD card connectors and micro SD card connectors as necessary.




Conclusion: This hack requires a lot of carefull bending of pins. Theoretically, this hack should work; but it doesn't work on me. I guess I have to secure the microsd to the adaptor one way or the other. 

update: i try another method of folding the pins and also slipping a tiny piece of paper to ensure the contacts are properly connected. it worked intermittenly, pi crumbling at the slightest touch.














For convenience sake, I am buying one of these at 2quid inclusive of shipping. Modify the usb part would yield a long term and stable solution.

Friday, July 12, 2013

Fun with Engduino 2















As mentioned at an earlier post , I am toying on the idea of a signalling bike helmet that uses the the 16 RGB leds with the accelerometer. This idea is dead simple. Tilt the head to the left, light up the LEDs on the LHS, and vice versa for the tilting to the right.

First thing first. Open the Example->Engduino Examples->Acclerometer Example, just to see how the APIs (Application Programming Interface) are used. From my previous experience with 3DOF, 5DOF, ardu pilot IMUs' (Inertial Measurement Unit, usually made up of an accelerometer and a gyroscope), Enduino's is the easiest to use to date. I can write code straight away without worrying too much. The reason, there is no risk of "frying" the IMUs because of a mal-wiring, loose wiring, bad solder joints etc. If the hardware is reliable, troubleshooting the software is much much less daunting.

From the accelerometer example, compile and upload to engduino. open the serial monitor to observe the output. The keything to do here is to stick to one orientation while observing the outputs. I prefer it to hold it "crown side up" . that is looking straight into engduino, the circumference of the board resembles a crown. Now, move the the board on the "x -axis", that is moving the crown horizontally to the plane and observe the output. repeat for "y-axis", that is moving the crown vertically to the plane and finallymoving the crown closer and further to you relatively to the same x and y axis on the plane. The next actions to try out is the roll, pitch and yaw. You cant help but notice that the values of all 3 axis change accordingly.











One thing you will notice that the X Y Z axis values do not correlate to the orientation of crown side up. Here come the interesting bit. As a programmer, if you have decided on the orientation, wrote the code for this orientation but when it comes to mounting but it has to be the other way round, you cant help but notice that your code start to behave erratically. Moral of the story: understand how is the acclerometer is going to be placed before writing code. Of course some may argue to stick to the "original" x y z axis of the board irregardless of the application and write code that corresponds to this. Both methods are do-able, there are more than one way to skin a cat.


The code/theory to track the changes of the x y z axis values as close as possible can be a little bit to over stretched in this post. Each of the topics such as smoothing technique, PID, 3D kalman filter and etc deserves at the minimum a chapter each in the classic control theory book. Nonetheless, it is just a google away to learn more!

My toy that is held with crown side up, the value of the "y-axis" changes in the range of +- 0.1 when I tilt it left<->right. So I am going to exploit this "behaviour" and tailor my code surrounding it.

Check out the video below to see it in action!


here comes the code



Just in case you wonder what an arduino + IMU + control theory can do, check out my previous toy

Thursday, July 11, 2013

FUN with Engduino


Engduino is an arduino with loads of bells and whistles (16 RGB LED with corresponding LED drivers, accelerometer, thermistor, IR receiver, LiPO battery) assembled together for some really serious fun with programming. Engduino was developed with a philosophy in mind. It is meant as a teaching tool for school children visiting UCL, to embrace programming.












IMHO, most new adopters of arduino that want to jump straight to code development often found them self in a situation where hardware components are hard to come by; either it is too time consuming or simply too expensive to acquire the necessary I/O parts. If I am getting a barebone arduino and stackable sensor shields that are the equivalent to engduino's sensors, I think I would have to survive on free coffee and leftovers from conferences held in campus for the rest of the month. Courtesy of Prof.Hailes, now I am a proud owner of Engduino #073.

Engduino comes with a clear cut instructions on installing for windows, mac or linux and also well documented API to leverage on the available hardware. Existing arduino users might want to download the entire engduino libraries packaged with arduino IDE from ehre. Just download it and unrar the content to a folder (other than the existing arduino folder if you already have one), install the corresponding drivers for lilypadUSB, and click on arduino.exe in the folder you have just unrar to get started. I strongly recommend to take a look at the existing examples->Engduino to understand how to use the API.

The only thing I like about programming on a computer is, I can experiment with code and not fearing the computer will explode. I have seen enough segfaults and core dumps but nobody was hurt. Having said that, programming without understanding the underlying "computer parts" can result in devastating effect and cost lives. With great ability comes great responsibility.

So...... with your newly acquired programming skills and also ownership of an engduino, what can be done?

For starter, check out my re-mod version of the persistence of vision (POV) toy I had some years back. my original POV toy calls for 8LEDs in a column, but the engduino have a maximum of 5. So, I have done some cheat mod in code by limiting the characters to 5LEDs in the same column. Hopefully, the output will turn out well in testng.





























When I was about to test my new toy, I only came to realized that I do not have a USB extension cable long enough for me demo and also record a video of the POV in action. I will upload a video of engduino in action once i get my paws on the usb cable.

So whats next fun thing to do with Engduino??? I am toying on the idea of a signalling bike helmet that uses the the 16 RGB leds with the accelerometer.

POV code below



 As promised, here comes the video. I have to admit it is kind of difficult trying to video this POV ala selfie.

vmware ubuntu kernel panic

I got a shocked this afternoon when the machine where most of my work is residing decides to kernel panic.

As usual, I turn on my ubuntu vm in vmware to do some code development and only to be greeted by a flashing or blinking caps lock led on my laptop. my keyboard and mouse input froze the moment i click within the vm. Flashing LEDs on a keyboard of a linux machine is an indicator of kernel panic. it is so weird, because I was still using it yesterday.

Pressure and suspense start to build as time pass. If this machine failed me, my setup for development work will be gone and I need to spend time to rebuild it. After spending several hours online desperately looking for a solution to my ubuntu machine's kernel panic, but none works.

I made several speculations about why it kernel panic, but none of my assertions were correct. Assertions such as I need to recompile the kernel, some important sys files are deleted accidentally, HDD saturated with junk, etc. Only when I want to expand the hdd space manually via gparted, than i saw the error message the vmdk is corrupted. Suddenly I recalled that in the morning, my windows7 host machine booted into a chkdsk screen scanning and fixing the hdd for errors.

jackpot. it is easy if you know what you are solving for.

I present to you the command that saves the day (and also my blood, sweat and tears for the last couple of weeks). after this command is entered, I can defrag the vm hdd which means the fix is successful.


Monday, July 1, 2013

New toys in town! Makebot replicator 2X

look at the bad boys, now with ABS!!


some 3D printing fun