Wednesday, February 1, 2012

Bootloader solved!

Despite the monitor issues I was having, I've managed to a bootloader running on the adapter. I spent a little bit of time today moving around some traces to make space for a reset button for the bootloader.

Everything is looking really good now, so I'm back on track for releasing all the source, and with that, making the adapter available for purchase!

I've also gotten a few more Canadian PCB manufacturing quotes, but I'm still waiting on a few more. We'll have to see what the final decision is going to be...

PS I got a new monitor, so hopefully no more rage-inducing screen flickering for me!

Tuesday, January 31, 2012

USB to GPIB Adapter, OSHW

I've decided to release my USB to GPIB adapter as open source hardware! I'll be releasing everything under the Creative Commons Attribution-Sharealike 3.0 license in the coming days.

I would probably be done packaging up the files if it weren't for my monitor being on the fritz. It makes it hard to work when half of your screen randomly decides to stop working.

I want to get a bootloader in the system too allow for user upgradeable firmware. Assuming that goes well (and I get a new monitor!), we'll have a nice oshw adapter!

With that out of the way, I also want to let everyone know that I'll be selling this adapter when I release all the source. I haven't completely decided how I'm going to go about that, but I'll be sure to keep everyone posted.

Monday, January 2, 2012

So, you want to learn electronics?

I get asked this question a lot from my friends. "Steven, how did you learn so much about electronics?". Now before we start, I don't know everything about electronics (far from it) and I acknowledge this. I just know much more than many of my friends.

Let's back up to when I first started. This wasn't that long ago. Summer 2010 in fact. I was working during the summer for Prof Cory in his freshly moved lab at the IQC. I remember the one day he was showing myself and another how to use the Network Analyser. He asked me a few basic questions about electronics and I was completely unable to answer. Sure I knew Kirchoff's circuit laws from class, but anything beyond that was out of my knowledge. At that point he looked at me and said that I need to take a formal electronics course starting the next term.

This takes us to Sept 2011, start of my 4A term. Here I took a second year engineering electronics course. It started off as basic as it gets: Kirchoff's laws. My goodness did that course go quickly. We covered the basics of all sorts of things, including non-ideal operational amplifiers, filters, and DACs. This course was 4 hours a week of lectures, more than any other course I've taken (standard is 3).

This is where I'm going to stop and make a point. This course gave me the solid foundation required to continue on and progressively learn more advanced concepts. The reason I'm bringing this up is because I see people going out and deciding that purchasing an Arduino and associated "project book/kit" is the best way to go about learning the basics of electronics. What I feel ends up happening to most (not all!) of these people is that they simply reproduce the projects found in their project box/book/kit. Most of these "project idea" books aren't going to go into any theory detail to actually teach you about what is going on. They are no match for a quality textbook.

The Arduino is a development platform. Of course its for also for learning, but its not going to give you that solid foundation. You're not going to learn what the rolloff of a Nth-order Butterworth filter is. You're not going to learn about opamp input bias currents. What you will learn is how to flash a few LEDs or drive a motor using a microcontroller. Sure, with that you'll probably learn about charlieplexing and H-bridges, but you're not laying that solid foundation.

I see plenty of posts on the Internet of these people asking "where do I go next to further my knowledge?". The majority of the responses that I see go along the lines of "get a generic microcontroller development platform". Although one would gain more skills from broadening their platform experience, one is not furthering their knowledge of electronics. All you are doing is learning the specifics of some different platform.

Let me remind the reader that I have nothing against the Arduino "ecosystem" at all. I think its a great platform for rapid prototyping and for learning about microcontrollers. I just don't think that it is the best starting point as it does not build that solid foundation of electronics knowledge. If you know the basics, the question of "what do I do next?" never comes up because you're continuously reading and learning about new things.

Alright, back to my classes. After that course I moved onto my 4B term. Here I took another analog electronics course, this time a third year course offered by the physics department. Although it was third year, it was still a "introductory level" course (there are no 1st or 2nd year electronics courses from this department). The reason I took this course is because there was a large focus on transistors, something that was not included in my previous course. There was also a project component. If you've read my previous entries, you know that my project was an audio trigger for a DSLR camera.

I learned so much from that project. I learned about designing an entire project from start to finish. I learned about single supply opamps and their limitations. I learned how a device with high current draw can mess up your opamps if not provided with adequate decoupling capacitors.

Most importantly, I read. I would spend my time at home reading blog posts and wikipedia articles on various electronics topics. I started watching the EEVBlog to learn about a wide variety of topics and issues. If I walked into a room with a bunch of textbooks, I'd look to see if there was one on electronics to flip through. This is why I've been able to help my friends on a wide variety of electronics related issues. I've build that starting foundation and just kept reading, even if the topic wasn't of immediate project relevance.

After this course I went on to take other courses. During the summer I took "Intro to Digital Signal Processing" and just this past term I took "Intro to Radio Frequency and Microwave Design". So I went from next to zero knowledge to taking a graduate level microwave engineering course in 1 year. Now I'm not saying everyone go out and enrol at their closest University, but the point is I was able to do it (while taking other courses!) because I built that foundation.

In summary, getting an Arduino is not a starting point for learning about electronics. Its a great way to learn about microcontrollers and rapid prototyping. Instead, get yourself a good textbook on the subject. An oldie but a goodie is "The Art of Electronics" by Horowitz and Hill. Yes, its a textbook. Yes, there is some math. But it contains so many highly educational sections you will benefit from it.

So, you want to learn electronics? Learn the basics, and afterwards get an Arduino.

Saturday, December 31, 2011

State of the App

Hey everyone, there's a few things that I want to write about. For today, we're going to talk about the app for iOS that I've made several posts on.

A few months ago my developer account expired and I decided not to renew it at this time. My reasoning is pretty simple: I don't want to be directly supporting a company like Apple who is trying to poison the personal computing industry. I'm tired of the system lockouts, the constant injunctions against competitors' products. The fact that you must develop for iOS on an Apple computer (or in a VM) also annoys me.

On top of that, it's expensive and time consuming for someone casually working on it to keep up with the entire system. My iPhone 3G is still running iOS 3.1.3 to keep it from getting bogged down. My VM is running an older version of OSX, so I can't install the latest dev tools. If I wanted to do things the "proper" and "right" way (according to Apple) I would need to spend around $1000 just to bring my tools (computer and iphone/ipod) up to date!

Setting aside my stance against the company, the iOS app market is highly competitive. Sure, I was working on something in a less competitive subsection, but is it really worth my time? Maybe yes, maybe no, but what I do know is that I'd rather be spending the time working on my electronics projects than grinding out more PDFs for the app.

So since I'm not renewing my account, it goes hand-in-hand that I won't be finishing this app in the near future. Maybe someday I'll come back to it and finish it off. Apple currently falls in with a small list of companies that I choose not to financially support (Sony and Ubisoft are the others). If they manage to pull their self-righteous head out of the sand, then I'll rethink my position.

Friday, August 19, 2011

Hell, it's about time.

Well everyone, I finally made it. Despite the lack of blog posts in recent months, I somehow survived my final terms as an undergraduate student at the University of Waterloo. Its been a long time coming (4 years now), which is why it deserved the Starcraft 2 trailer quote you see. Of course, my undergrad wasn't as long as the gap between SC1 and 2, but still, it feels fitting.

For my most recent winter term (starting back in Jan 2011), I actually ended up doing pretty well. It was my first term in my university career where I actually managed to get an over-80% average. I know for some people that might not be much of an accomplishment, but for me that was a lot of work. It took a long time to make up for the mistakes I made in first/second year. As an added bonus, I finally was able to bring my academic standing up from satisfactory to good. My overall average was pulled down from my earlier mistakes, which took a long time to pull up.

This spring term, I ended up taking 2 courses. The first I mentioned in my last post, Digital Signal Processing (DSP), and the other was Intro to Computational Math (CM). Now, before I mention how much I disliked CM, let me say that DSP was a great time. I had an amazing professor who was extremely enthusiastic about the subject. It was one of the best courses I've taken during my undergrad. Although the final hasn't been marked yet (it took place on Aug 13, which was also my last exam!!!), I feel that I will do fine. I did after all, get a 94% on the midterm.

Now, CM. What a waste of time that was. Now of course, I picked it because I wanted to hopefully learn a little bit while also not working too hard. I went into the course expecting a programming focused course, where our assignments mostly consist of us applying various computational methods to different problems. It wasn't that in the slightest. Our assignments mostly consisted of theoretical work. Any and all programming problems we had our hand held, told step by step what to do. We spent the first 6 weeks on GEPP. In the end, I learned a few useful things, but overall, it was not what I wanted.

On a positive note, I'll be starting graduate school in Sept! Yeah, that doesn't leave me much time to go on post-undergrad vacation and whatnot, but that's not a problem. I'll be a student in Prof Cory's research group. It should be a good time.

Last thing for now, I plan on changing the URL of this blog. I was never really happy with the current URL, so I'm going to just change it tomorrow or so to . If anyone reads this, update your bookmarks!