For the past two years I've been using the Samsung Captivate, which is a variant of the Galaxy S, as my phone. It's an Android phone and has served me well. However, when I originally bought it I didn't realize how much I would love it. It was really the only Android phone available on AT&T at the time and since I knew I didn't want an iPhone, it's what I got. Let me just say I got very lucky. As I've recently learned, the Captivate was used as a model for the Nexus S phone by Samsung and since the Nexus line always receives updates straight from Google, it was fairly easy for developers to port the newest Android versions to the Captivate as well. This leads me to why I love the phone. The software that it came with was pretty crappy. Samsung was not considered the nicest manufacturer at the time, and was trying to throw out tons of phones in attempt to battle the iPhone. As such, my phone wasn't slated for many software updates and the skinned version of Android wasn't it top shape. Because of the many crashes I had to endure over the life of my warranty, I decided to root it once it expired.
Using Heimdall and the CyanogenMod website as a guide, I managed to successfully root it and install CyanogenMod 7.0. It was an amazing change of pace to say the least. New options were suddenly open to me. Instead of software created by a huge corporation with little concern for providing all the bells and whistles, I was suddenly using an amazing culmination of the thoughts, ideas, and innovations coded by the developers over at XDA. Features that I didn't even realize I wanted were suddenly open to me. It felt like an entirely new phone. And for someone like myself who always wants to stay on the cutting edge, the amount of ongoing development was wonderful. I could easily reflash new ROMs on my phone and stay up to date with the newest versions of Android. Over the past year I've kept my phone merely weeks behind the latest version of Android, something manufactures can't claim to have accomplished. In fact, via XDA my Captivate is currently running Android 4.2.1, Jelly Bean, which is actually an upgrade ahead of my new phone.
Deciding on a replacement for the second most valuable piece of tech in my life (the first being my laptop of course) proved exceedingly difficult. The Android market has changed drastically in the past two years and as such there are a huge number of options available, and while I try to keep up with the latest and greatest in mobile technology, I still had no clue what I wanted. After some thought on the phones available on my new carrier, Verizon, I narrowed my options down the Samsung Galaxy SIII and recently released HTC Droid DNA.
The SIII was an amazing piece of hardware, with a huge following and massive developer community. It also was, and still is, the most successful Android device. The main drawback, however, was the fact that the phone was around 8 months old, which is an eternity in mobile years. With a dual core processor, it had a hard time competing with newer devices, at least as far as benchmarks are concerned.
The DNA, on the other hand, was barely a month old and had a quad core processor and 1080p display. The only thing that had me worried about this phone was the lack of developer support. Compared to Samsung, HTC is a rather small company and hasn't been able to achieve the same success as the Galaxy series of phones. It can't afford to push a flagship phone to all the carriers or advertise as heavily as Samsung has done for the SIII. As such, the DNA is only available for Verizon, a rather disliked corporation as far as XDA is concerned, and has garnered comparatively little attention when considered with the SIII. So while I realized the DNA had everything I wanted in terms of hardware and specs, I knew it wouldn't be able to match the amazing amount of development I had become accustomed to on my Captivate.
After much deliberating I finally went with the DNA due to the hardware specs and build quality. I decided that while the development may not be as good, it might encourage me to do some developing on my own. And even if I never do get around to it, Android has become very stable in the past few years and as such I won't need to deal with the same amount of crashing and problems the original software for my Captivate provided so at the very least I'll have a working phone. It's been about a week since I got the DNA now and I'm definitely not regretting the decision. It's an amazing phone, feels fantastic, and is a pleasure to use and I look forward to tinkering with it for the next 22 months!
Sunday, January 27, 2013
Wednesday, January 16, 2013
Exciting Stuff on the Horizon
Well, I'm late for my second post of the year, so that certainly bodes well for the future. Anyways, I just wanted to mention that I'm really excited for some of the projects I have on the horizon, specifically the Iron Man/Awesome helmet I want to build. I got the Wild Planet Spy Car in the mail a few days ago and it's awesome! The video is black and white, and a little distorted, but I assume the fuzziness is mostly a result of the wireless connection or the camera and not the display itself. I also ordered a Mind Flex game for $10 which is a steal!
For those of you who aren't familiar with Mindflex, it's a headset with a built in EEG sensor that can determine brain waves. It can differentiate between several frequencies that represent how relaxed or focused you are. I was thinking I could somehow couple this with the video headset to form an augmented reality helmet of some sort. Anyways I'm excited about it and look forward to playing with it at the very least. I'll post more when I get it and when I hack the video headset!
Monday, January 7, 2013
New Years Resolutions
Between school and work I've had a hard time sitting down and getting stuff down for myself. That's why, this year, I've set several New Years Resolutions that pertain to bettering myself and focusing on things that are important to me. The resolutions I have planned are as follows:
- Run 100 miles
- Read 24 Books
- Finish 12 Projects
- Blog once a week
I used to run a lot in high school, and during my sophomore year actually got my mile time down below six minutes. Since during the school year I don't have enough time and will power to wake up early and run every day to form a habit, I've decided to focus on establishing a regular running schedule and work on getting my mile time back down.
Last year I set a goal for myself to read twelve books over the course of the year and managed to do just that plus some, so this year I wanted to up the ante and double the books I wanted to read. I've already finished the book Ready Player One by Ernest Cline (phenomenal book btw) and plan on reading some other recommended sci fi books (e.g. vN by Madeline Ashby, Shadow Puppets by Orson Scott Card, etc.) as well as some classics like Lord of the Flies and 1984.
Since my mind is very disorganized, I tend to get obsessed with one project, work on it for a while, and then get distracted by something else and completely forget about it for a few months. I'd like to work on changing that by setting a goal to finish twelve projects this year, hopefully one a month. I've already thought up some ideas on what I'd like to finish including:
- Some sort of Augmented Reality Game - I've been interested in game design for a while, and I think the augmented reality possibilities provided by smartphones really gives a lot of potential for cool games.
- Augmented Reality Glasses - I've recently ordered a Wild Planet Spy Car. The great thing about this toy is its hackability. The wire leading to the video headset actually uses the component standard which conveniently, can be outputted by the Raspberry Pi. I plan on using a combination of these two to form a fancy augmented reality system akin to Google Glass. I'm not sure what specifically I'd like to do, maybe a face tracking HUD or some sort of targeting system, but I'm pretty excited.
- Iron Man Suit - So I think Iron Man is awesome, and at some point I'd like to create an Iron Man suit replica, possibly integrating the HUD I mentioned above.

Lastly is I'd like to blog more often, so I'd like to set Monday as my official blogging day and set aside a few hours every week to type out and submit a blog post. I'd especially like to include lots of details on my projects so I'll work hard to do just that.
Wednesday, July 25, 2012
Jurassic Singularity
So in my first post one of my interests that I neglected to mention was hardware hacking. In fact, as much as I love high level programming and computer science, I'd have to say my true passion is the low level stuff. Learning about computer architecture, designing logic circuits, and programming microcontrollers provides a lot of challenges and a great sense of accomplishment. The best part is being able to turn lines of code into something tangible by interfacing microcontrollers with real world appliances, sensors, and actuators. This is one of the main reasons why I find robotics so appealing.
And as a result of this passion, I've accumulated a fair amount of old toys with the intention of taking them apart, seeing how they work, and possibly hacking their electronics to make a cool autonomous robot. I have a bunch of RC toys from my childhood such as cars, an RC robot (Rad 2.0: very cool!), and a small hovercraft. In addition I've also managed to snag some cheap used toys off of eBay or from thrift stores. That's how I acquired my most recent project which will be the main focus of this post. More specifically, one day I was frequenting one of the geekier (awesomer) parts of the internet, when I thought to myself, robots are cool, and dinosaurs are cool, I wonder if someone has combined the two before (FYI most of my interests may make me seem like an eight year old, but I'm a legal adult I swear!). So I searched a bit around the linked website as well as the internet but could only find one or two examples of a robotic dinosaur. But then I stumbled upon this beauty.
As you can see from the above table there are multiple signals for each command. On the RoboRaptor controller there is a shift button which can trigger alternate functions of the Demo, Head Right, Tail Left, Tail Right, and Bite commands.
I then proceeded to create an Arduino program to control an IR LED. Using the AVR built in PWM I managed to modulate the frequency to 40KHz. I then set up two NPN transistors in an AND gate format with the two inputs being the 40KHz signal and the bit logic signal which is manually timed using the delayMicroseconds function and some bit logic. I've uploaded the code to Github where it's free to use and distribute. I'll most likely be updating it over the next few weeks as I work more on the RoboRaptor. I'd like to convert the entire sketch into a RoboRaptor class with built in functions for walking, trotting, and running, as well as many of the other commands. That way in the future it'll be easy for other people to simply import the library and use it.
As for my other future plans with the raptor (I haven't come up with a name for him/her yet), I've noticed that the front speaker seems a little quiet which I'd like to try and fix. My dream is also to have a team of three of these, with one command Raptor and two soldiers, and get them to move around and hunt like the Velociraptors in Jurassic Park. The only problem with this is that there is no way to control two of the toys separately since they use the same command protocol (Guess the inventors never thought someone would have more than one of their $200 toys), so I might try and take apart the electronics, probe it to see how the internal microcontroller controls the RoboRaptor's movements, and try to imitate that with my own microcontroller that I can put in instead. That way I can have more control over how the Raptor moves, the noises it makes, how it communicates, etc. So while that's an ambitious endeavor, it's my ultimate goal!
And as a result of this passion, I've accumulated a fair amount of old toys with the intention of taking them apart, seeing how they work, and possibly hacking their electronics to make a cool autonomous robot. I have a bunch of RC toys from my childhood such as cars, an RC robot (Rad 2.0: very cool!), and a small hovercraft. In addition I've also managed to snag some cheap used toys off of eBay or from thrift stores. That's how I acquired my most recent project which will be the main focus of this post. More specifically, one day I was frequenting one of the geekier (awesomer) parts of the internet, when I thought to myself, robots are cool, and dinosaurs are cool, I wonder if someone has combined the two before (FYI most of my interests may make me seem like an eight year old, but I'm a legal adult I swear!). So I searched a bit around the linked website as well as the internet but could only find one or two examples of a robotic dinosaur. But then I stumbled upon this beauty.
This gorgeous thing is a semi-autonomous, remote controlled, robotic toy raptor. Normally retailing for $200, I managed to snag one of these suckers off eBay for a mere $15. The only catch was there was no remote! So I figured this would at the very least look pretty awesome tearing around in autonomous mode but optimistically, I hoped I could build a remote using an Arduino or possibly piggyback the electronics directly and have an Arduino controlling the built in microcontroller. Well let me tell you, it works!
In an attempt to save myself effort and money I started off by looking online to see if anyone else had had a similar idea. Turns out Wowwee robots are notoriously simple to hack and there was a whole online community that focused on hacking the RoboSapien, which is a humanoid robot. After some more research I found that these 'bots use IR wireless communication. This essential makes the robots way more hackable for a number of reasons. First off, most RC toys use radio frequencies between the remote and the toys. These radio frequencies are usually low power, relatively easy to make, and provide very little interference with the outside world. The only problem is there are several commonly used frequencies which all require special chips that are not commonly available in order to transmit data. Wowwee robots, on the other hand, use IR, or infrared, light to transmit data. IR is relatively high power compared to radio frequencies, but usually has a lower range. It is also a lot more susceptible to interference because there many things that produce IR radiation, such as the sun for example. IR controllers also tend to be more directional in nature, meaning you have to be pointing the remote at or around the thing you're trying to control. However IR does tend to be a more popular wireless control method because it's very cheap and readily available. In fact Radioshack sells IR LEDs that can be used to make custom remotes.
But anyways, while I certainly wouldn't have used IR to control a $200 toy, it does mean that the average hacker can easily recreate a remote control. The only caveat is that in order to one to control a commercial device, you need to know what protocol to use or how the controller sends data. So first off I needed to find out what modulation frequency the controller used. For those who don't know what that means, let me explain. As a said before, IR is notoriously susceptible to interference. Infrared is everywhere! Essentially anything that is producing heat is producing infrared light. TV remotes produce it, the sun produces it, we do as well. It's a pretty busy section of the spectrum so it'd be easy to lose signals if you're just blinking an IR LED. A good analogy would be if you're swimming way out in the ocean. You're probably not going to notice if the water level gradually changes by ten feet. You will notice, however, if all of the sudden the water gets really rough and there's a lot of waves constantly lifting and dropping you. This is what frequency modulation is. Rather than an IR LED being simply on or off, the LED is switched on and off thousands of times a second for a specified amount of time. The ones and zeros of a binary message can then be whether the receiver sees a modulated IR burst, how long one lasts, or how long a pause between bursts is seen.
This brings me to the Wowwee protocol. Despite the fact that not many people have hacked the raptor, I still managed to find enough info to understand the protocol since the same command structure is used by all the Wowwee robots. This makes my job of building a controller a breeze because, if the protocol had not already been documented I would have had to buy a controller and built an IR receiver to record the IR bursts that the controller sent. So with this difficulty aside, I could go straight to making the remote.
Using the this website, I found that the IR signal is modulated at 39.2KHz (I rounded to 40KHz which was good enough) with a 1200Hz transmission frequency which means a 833 microsecond bit width (the time taken to send a bit). The transmission starts with an eight bit width IR pulse, a logic high is a pause of four bit widths followed by a one bit width pulse, and a logic low is a one bit width pause followed by a one bit width pulse. There are a total of twelve bits in each message. Here's the command table taken from the above website which is now out of commission. The numbers are in hexadecimal format (base 16).
Normal Operation | ||
Function | Mode | |
Default | Mode 1 | |
Forward |
$186
| |
Backward |
$187
| |
Left |
$180
| |
Right |
$188
| |
Stop |
$18E
| |
Demo |
$1D0
|
$1B1
|
Head Right |
$194
|
$1B4
|
Head Left |
$191
| |
Tail Left |
$192
|
$1B2
|
Tail Right |
$193
|
$1B3
|
Bite |
$1D1
|
$1B0
|
I then proceeded to create an Arduino program to control an IR LED. Using the AVR built in PWM I managed to modulate the frequency to 40KHz. I then set up two NPN transistors in an AND gate format with the two inputs being the 40KHz signal and the bit logic signal which is manually timed using the delayMicroseconds function and some bit logic. I've uploaded the code to Github where it's free to use and distribute. I'll most likely be updating it over the next few weeks as I work more on the RoboRaptor. I'd like to convert the entire sketch into a RoboRaptor class with built in functions for walking, trotting, and running, as well as many of the other commands. That way in the future it'll be easy for other people to simply import the library and use it.
As for my other future plans with the raptor (I haven't come up with a name for him/her yet), I've noticed that the front speaker seems a little quiet which I'd like to try and fix. My dream is also to have a team of three of these, with one command Raptor and two soldiers, and get them to move around and hunt like the Velociraptors in Jurassic Park. The only problem with this is that there is no way to control two of the toys separately since they use the same command protocol (Guess the inventors never thought someone would have more than one of their $200 toys), so I might try and take apart the electronics, probe it to see how the internal microcontroller controls the RoboRaptor's movements, and try to imitate that with my own microcontroller that I can put in instead. That way I can have more control over how the Raptor moves, the noises it makes, how it communicates, etc. So while that's an ambitious endeavor, it's my ultimate goal!
Friday, July 6, 2012
Into the Blogosphere!
Over the past couple of months I've realized that I have many thoughts and opinions that just kind of stew in my head until I forget about them. So I thought it'd be nice to create a neat repository where I can write down my thoughts and opinions once they're fully formed and ready to leave my head. I hope that by doing this I will be able to inform or influence the opinions of others and receive feedback on a lot of my own ideas. In addition, I've been focusing a lot on self improvement lately and hope that this blog leads to me improving as a writer, among other things.
So before I begin I'll write a little about myself. I'm a nerd and engineer at heart and always have been. Growing up in Southern New Jersey I always had a love for space and technology, two topics on which this blog will focus. At the moment I'm about to enter my senior year as a Computer Engineering student at the University of Delaware. I also like to stay up to date as far as technology goes and will probably write a fair amount about that as well. So without further ado, here's my first post!
Subscribe to:
Posts (Atom)