Saturday, May 16, 2015

Journey into the World of Hardware

Deciding whether to focus on software development or hardware development has been a very difficult choice for me.  Due to the cost of hardware, I decided to focus on software, but now that I am working full time and have the ability to purchase hardware, I've slowly begun focusing on catching up in the world of hardware.  This is a short brain-dump of what I've learned so far, good starting points, and more, for those interested in getting started with hardware development.


Step 1: Make Anything

This is something I've struggled with a bit, but is very important I've learned when it comes to hardware: Don't be afraid to make something terrible.  A Bluetooth controlled light switch is better than nothing, even if all of the hardware you are using is pre-assembled.  I wish I had learned this sooner, as it would have helped tremendously with getting me into hardware in high school more easily.

Some neat beginner project ideas: Learn how to make a simple light, make a motor move, play with some servos, make a capacitive sensor, etc.  A really good robotics one I would recommend is the Me Arm.  It's a bit expensive at $40-60 for everything, but it really let's you get into some basics with motors, coding, gears, and Arduinos to start.  You find more about it from this LifeHacker article.  Speaking of Arduinos...

Step 2: Buy Some Arduinos

Arduinos might just be the greatest hardware piece ever made.  I know, a lot of people online sing their praise, but I really can't stress enough how fantastic they are.  Ranging in $10 to $50 in price, you can get quite a bit for cheap.  All of your projects can suddenly be controlled through code, which is one of the single greatest things I've ever gotten to work with.  It really allows you to expand the complexity of your projects, with a minimal amount of work added on.  With the addition of Arduino Shields, you can even start play with things like LCD screens, Bluetooth controls, DC motors for robots, and more!  Honestly, the rise of Arudinos makes the hardware barrier incredibly low, and I highly recommend buying several if you are interested in hardware.

Step 3: Be Safe (DON'T SKIP THIS)

This is something that I don't see mentioned a lot, but I consider super important: Be safe.  If your goal is to wire an Arduino to your electrical sockets at home, DO YOUR RESEARCH!  Doing so incorrectly can result in shocking yourself, or worse.  Hardware, while fun, can be much more dangerous than software, so take your time, and make sure that you read what dangers there are with your project.  Some important ones right off the bat: High current projects, exposed wires, robotics, anything with lasers, dealing with batteries (especially lithium batteries).  Again, these are just some quick ones off the top of my head.  I know that this gets said way too often, but the last thing you want is a battery to explode when you are charging it.  Don't skip safety, it is not worth the risk.

Step 4: Learn How Your Project Works

Something that happens a lot is that people build something, but just blindly follow the instructions, rather than learning what exactly is going on.  This can lead to building some neat things, but not being able to use it in a future project.  When you build something, go to Google or Youtube and look for explanations as to how the parts you are using works.  If you are playing with servos, learn how the servo is able to track its current position, rather than just blindly programming it to move.  Read about the chip that runs the Arduino UNO (the ATmega328) and how you could make your own Arduino from scratch in the future.  This can really help you later on, when you may want to take what you've made, and scale down the parts more.

Hardware is a tricky thing to learn.  Finding a good starting project can be tough, and the motivation to do it can be even tougher.  Sometimes you just need to take a leap and dive right in.  When I am done with some current projects, expect write-ups on my blog and videos on my Youtube account.  Any questions or comments?  Feel free to leave them below!