Sunday, April 7, 2013

Future Video Plans

With midterms and the semester coming to an end relatively soon, I think it's time to reveal plans for future videos. Hopefully I should have more time between midterms and finals to put up a few more videos. Then come the summer months where my employment shouldn't interfere with my plans too much.

I've published 15 Arduino tutorials thus far, and I feel that there are only going to be a few more as I feel I've covered everything that can be done with the native device. That being said, I do want to do some more videos exploring some of the interesting things that can be done with shields and extra libraries. I'd also like to explore the Arduino Due, given the time to procure one.

I'm still going to continue on with the AVR-C tutorials, along with Electronics 101 and 201. The Minecraft Redstone tutorials may require some rethinking, but that should continue as well. The "On A Breadboard" videos will continue as soon as I can gain access to some better testing equipment, specifically an oscilloscope and a LLA. I have some other video ideas that I want to put up that don't fit in any specific category, that will appear periodically, as well as some project videos.

Finally I have 2 new series to announce. First is moving to a different architecture microcontroller. I'm going to start doing videos using the ARM Cortex-M4 microcontroller built into the STM32F Discovery board. The second series is something a few people have requested. It's a series based around learning assembly with the Z80 processor. This series will have 2 purposes; one being to introduce assembly to interested programmers, and the second is to cover building an entire system around a microprocessor, rather than a microcontroller.

I hope you all enjoy these new series. Remember that I am always willing to take topic suggestions.

Monday, March 25, 2013

The Importance of Assembly

There's a commonly held belief among programmers: if you want to be a great coder, write something new everyday for a few years. While this may be true, I find that it tends to settle a programmer into a particular language. Doing so, almost closes the mind to what one is actually doing, entering in line after line of code. I feel that it makes a coder lazy. Sure laziness can be a good thing; who knows what the world would be like if someone hadn't invented the methods copy and paste. But laziness can make programs inefficient and heavy. I believe that if developers encouraged more efficient means of coding, computers of today wouldn't need to be anywhere as powerful. The problem with higher level languages is that they use higher level commands, copying and pasting snippits of lower level code that have a general use, and a general efficiency. Most programmers will never know the complexities of a command as simply as print.

I am someone who can program in assembly. Not for any big processors, like x86 or x64, but I know my way around ARM, AVR, and Zilog. Writing a small amount of code completely changes how you look at other projects. In assembly, you have to be cognizant of every line of code, because you want to squeeze every ounce of power out of what you're writing. It encourages writing specific bits of code in specific ways, for specific purposes. Every piece of code is purpose specific. Every problem requires a creative solution. If you want to be a great programmer, learn a little bit of assembly. It goes a long way.

Wednesday, March 20, 2013

Learning from Datasheets

As a computer engineer, one of the most important things to learn is how to read a datasheet for every piece of information it can offer. Everything in a datasheet outlines, quite literally, every detail of its subject. By now you've probably gone through quite a few datasheets for various ICs to pull out some quick information like the pin-out or basic circuit configurations. But there's more information there. Take the 555 chip for example. In its datasheet, not only does it have several basic circuit configurations examining different modes of operation, it also has example values, timing formulas and waveform outputs for each of them. There are also notes detailing what you should be cognizant of, and general suggestions.

The real skill of reading a datasheet is being able to sift through something as dense as a controller datasheet. The sort of thing that details the operation of microcontrollers,  processors, LCD devices and sensors. A lot of information about how to get started with, or how to implement is contained within these documents. Microcontrollers and processors will often have example code, or something close to, specific to various components of the device. LCD controllers will have timing information for how to communicate with the device and what output that will result in. Sensor datasheets will often have formulas for calculating real life units from data, and what will produce certain output.

Datasheets are a powerful tool, but it takes patience to realize their true potential.

Saturday, March 16, 2013

The State of Things So Far

I realize that it has been several months since my last post. I fear that what this blog is going to devolve into is just a series of posts apologizing for not having more to write. So here's a general update. With school, lack of equipment, and general laziness, my posts to the YouTube channel have been some what sporadic. I recently past 60 uploads and over 2,000 subscribers! I hope that over the coming week off, I can upload some more videos and begin chipping away at the list of suggestions I have accumulated. 

One of the great things about having this blog and the YouTube channel is the people that I  come into contact with. Recently I've been in contact with a student studying astrophysics, requesting help for an Arduino controlled light spectrum analyzer; here's hoping that his experiment goes well. I have also been in contact with two missionaries, looking to use microcontrollers to aid in their field work. Helping people is one of the biggest reasons I started my channel and this blog, and it's a great feeling to know that I am actually accomplishing that.

Thanks to all of my subscribers and readers.

Friday, November 2, 2012

So, You Want to be an Engineer

     So, you want to be an engineer. You enjoy building with legos, or Arduinos, or just like taking stuff apart to see how it works. Maybe you like technology or large sums of cash. Maybe you just like the large number of [insert desired partner's gender here] that this field attracts. Then I submit to you this article, that covers what you should do to prepare for going into engineering, or at least a college of engineering.

     The first thing that you should do is get your core engineering classes down pat. Math, math, math, math, math. Everything, no matter what kind of engineering you go into, you're going to be doing math. I'm not saying you have to be an A student, but make sure you understand what you're learning. In college there is going to be a major change, especially in the first year of math, from the concrete to more abstract concepts. You should have taken at least a pre-calculus course, if not an actual calculus course. AP is always a plus. Having that level, puts you in a good place when going off to college. If you do take calculus, move on to a level 2 course,  and have the ability to move on to a level 3 class in college, I suggest you go back and retake the level 2. I took level 2 as a senior in high school, and felt more comfortable, taking it again before moving onto a much harder level 3 class. And there are always other math classes besides calculus that pertain to engineering. I also took a statistics class in high school, and found it to be an extremely useful math, certainly more so than calculus. If you have already taken a calculus course, definitely look to other math classes. Don't stop taking math classes. It's good to keep going until the end of high school, to keep those mental circuits fresh for the adjustment to college classes.

    Next of course is the science. This depends more on what sort of engineering you want to go into. The basics is definitely physics. Just like math, make sure you have an excellent grasp on what is being taught, rather than just learning for the test, and then forgetting everything for the next chapter. Anything beyond a level 1 physics class should be looked at by someone interested in mechanical or civil engineering. If those advanced physics classes go into such things as electricity and magnetism, then an electrical or computer engineer should probably be enrolled in such classes. Chemistry is more of a science that is suited towards chemical and biomedical engineers. Again, with science, it depends more on the field you're interested in. However, if you want to go into mechanical but still want to take a chemistry class, don't let that stop you. Take classes that you have an interest in, not only are you more likely to do better in those classes, but you might find yourself a future major.

     Testing applies on two fronts. One, you should strive to be a good student. Yes, you should go for all A's but, don't fall into the mindset of anything short of that is failure. An F, is failure; never forget that. People who fall into that mindset become stressed out beyond belief and are generally unhappy people. Enjoy taking these classes, and actually learn something. Just because you didn't do well on a test, doesn't necessarily mean that you don't understand what is being taught. There is a difference between a good student, and a bright student. I wasn't a good student, I was a bright student. Homework and studying takes time that could be spent working on a project that is infinitely more interesting, and you're applying things that you've learned. Don't let that be an excuse to just stop caring about your classes, and their work. The goal is to gain an understanding, and from that, do well on tests.
     The second front is standardized testing. This was something I absolutely loathed doing, and I had to do it multiples. It's not fun having to get up in the wee hours, on the weekend, to take a test. No matter how much is sucks to do it, it is required by colleges. The SAT is the standard, the test all colleges accept. Studying for the SAT does do a world of good; getting a tutor is even better. The trick to the SAT is learning its tricks and beating the test. I know that doesn't sound like a half-decent measure of what colleges put stock in, and it isn't. Trying to quantify what it is colleges look for is why the SAT was originally made, and while it isn't perfect, it's one of the only ways we have, besides GPA. However, there is another standardized test that is becoming more and more popular. The ACT, the one I recommend, is definitely more suited towards the engineer's mind set. There is an equal balance of math and writing, there's a science section that tests your ability to read data and make conclusions, but most importantly, it's about an hour and a half shorter than the SAT.

     Choosing a college should come down to 3 things. Number 1, can I afford to go here? If you can't afford it don't go. Having to take out numerous loans that are going to pile up is not something you should be contemplating during your next 4-5 years in college. Number 2, does this offer my major, and have decent facilities in which I may learn? When I applied to college, there were only two colleges on my list that offered my major, and both had the facilities I wanted. Determine your major, which we will discuss shortly, then research the needs that are required by such a major, i.e. equipment, space, and professors. I know it might seem like if the college offers the major, then it must therefore have the requirements. And that's true, however, you might be looking for something a little more. I wanted to do electrical and computer engineering. There are facilities that are required by each, but what I also wanted, was a microfabrication lab, a place where integrated circuits are constructed. Professors are another big thing. Yes, they're qualified to teach the field, but have they spent time working in it? How much experience do they have, and can offer to you? The final thing you should look for, number 3, is what exactly, besides an education, do you want from your college? Do you want a close community? What about a place to party? Or are you looking for some great food? College should be a place of education and higher learning, but it is also an experience. You're spending a lot of money to attend, make sure you get all of what your college has to offer.

     Finally, choose your major. I know that when you enter college you have time to figure out what kind of engineering you're interested in, but it's not always easy as a freshman engineer. You're stuck in a lot of very broad classes, that are there to get you ready for your future in engineering. The problem is that it doesn't expose you to what various majors offer. Now, your college may offer classes that do introduce you to the different forms of engineering that it has to offer, but even that can be a little shallow. Thus you have a couple choices. One thing you can do is actively seek out professors of engineering. See if you can sit in on a few classes, talk to the professor and see what work they're currently doing. Another option you have is, while you're still in high school, talk to some of your teachers. They've probably had other jobs outside of teaching, maybe in research or employed in their field of study. Maybe some of your friend's parents are engineers and can talk to you, show you some of what is they do. But, probably the best way to choose is look at what you're doing now. What interests do you have and would like to explore further? Remember that you're going to have to study in your field of choice for several years in college, so make it something you can enjoy;  because, that which you enjoy, is never work.

Friday, October 26, 2012

Need Help with a Project?

     Recently, I've been receiving more requests separate from ideas for future videos. You guys have been asking for input on some the projects that you're working on. I enjoy getting this feedback from you and being able to help; that's why I started doing this. Thus, in order to increase the amount I can help you do, I've set up an email where you can contact me if you want help with something you're working on. I hope that this can be more expedient than posting comments on videos, or sending me YouTube messages, as I, and probably you, check your email more than anything else.

Feel free to now contact me at humanharddrive@gmail.com.

Tuesday, October 16, 2012

Choosing Your Microcontroller (Part 2)

Last time, we talked about two sets of microcontrollers, the Arduino Family, and the .net framework family. Today, let's talk about some more.


     PIC microcontrollers are found quite commonly in end user products. They are also used quite frequently in college level electrical engineering courses. These little devices aren't frequently packaged with a board, so using these chips requires some knowledge of being able to build, program, and test circuits. There are, however, a large variety of chips to choose from, with various sizes and functions to suit any need.
     The community around PIC's is fairly great, not necessarily for the reason one would think. The programming environment for PIC's is your basic C language  However, PIC's have been known for what a pain their coding can actually be. Many very simple things that are done with other devices, are quite complicated to achieve in PIC code. These devices are not well suited to the novice programmer or engineer, so beware.

     MSP microcontrollers are extremely power efficient devices by Texas Instruments. These devices aren't as well known, I've found, as the other controllers I've mentioned. They're quite application specific, if you're looking to build your device using as little power as possible. Still, they're great little devices that offer a lot of potential, even if you're not looking to stretch that battery as far as possible. There are a few platform options you have for MSP's. One of which is the Launch Pad, the cheapest microcontroller test board I have ever found. Another such platform is an MSP based watch, the eZ430 Chronos, which includes a 3-axis accelerometer, barometer, and wireless transceivers, as well as being a watch. Most though, like PIC's, are just single chips with varying numbers of pins and functionality.
     Also like the PIC's, these are programmed in C, but can also be programmed in assembly. These can also be quite difficult to utilize some of the functionality at times, but I maintain they're still easier to use than PIC's. The community around MSP's tends to be a little more professional, as these are used more in measurement and extreme longevity projects. Again, not the sort of device the beginning programmer should necessarily be getting into.

     Basic Stamps, by Parallax, have been in the microcontroller game longer than any other I have mentioned. They're one of the first microcontrollers I was exposed to in high school. They have what is probably the largest community of people working and willing to help others on their projects. The company behind these boards, parallax, also develops large amount of externals like servos, sensors and even some Arduino-like shields. The downside to these boards are that they can be quite expensive for not all that much board. The basic "stamp" is a tiny microcontroller, that doesn't include a breadboard or a programmer, is $30.
     The upside to these boards are that they're extremely easy to get into. The getting started kits that they sell include all sorts of tiny bits, IC's, servos, and LED's with a very well written guide explaining all the steps and why everything works. The boards themselves are programmed in a variant of BASIC, which makes following code fairly...basic. If you're looking to get started with microcontrollers, and you have some extra money around, and you don't want an Arduino, then I recommend the BASIC stamp. But splurge and get the "Getting Started" kit.

     The last microcontroller I'm going to talk about is another one from Parallax, the Propeller chip. These are probably some of the most powerful microcontrollers you can buy, offering 8 cores of processing power each at 20 million instructions per second (MIPS). These are definitely for the more advanced hobbyist requiring more knowledge of wiring and programming than the novice. There are a huge number of peripherals to cater to the processor's capabilities including the ability to: generate video signals, interpret device signals such as mouses and keyboards, and easy interface with other devices.
     When it comes to programming these chips, you've got some choices. There is the "Spin Language" aimed more at beginners to the chip, but there is also the capability to program the devices in assembly. Like the BASIC Stamp, there are also such kits that display the various abilities of the chip, so if you're interested in this area, I'd recommend getting on of those. There are such kits that allow you to build basic computers and game consoles. It's the processor behind the YBox, that wonderful little device. So, the Propeller chip is something a little more experienced programmers and hobbyists would enjoy, with its extra power and capabilities.