Best way to self-teach Electrical Engineering and Embedded Systems?

AI Thread Summary
Self-teaching Electrical Engineering (EE) and Embedded Systems is a challenging but feasible goal, especially for someone with a background in computers. The discussion emphasizes the importance of balancing theoretical learning with practical projects to solidify understanding. Key areas of focus include mastering programming languages, basic electronics, and relevant math skills, particularly calculus and trigonometry, which are essential for EE concepts. Engaging in personal projects can enhance learning and help develop problem-solving skills relevant to embedded systems. Overall, while pursuing a full EE degree independently is unrealistic, targeted learning and hands-on experience can pave the way for a successful career in embedded systems development.
wyattmarshall
Messages
1
Reaction score
3
Summary: Trying to self-teach Electrical Engineering, Embedded Linux and AVR/ARM to make a career change into embedded systems development and I need suggestions on the best way to do that. I have a plan but I honestly have no idea if its a good one.

I have been into computers my whole life (currently 26y/o) but never actually worked in any IT positions. Other than an AA degree in computer science in 2013, I have been a welder since I was 18, but I am looking to make a career change into embedded systems.

My main goal has always been to make hardware, gadgets and gizmos related to motorsports (cars, motorcycles, etc), so just knowing what kind of things I want the embedded system to do, I have determined a starting place is learning: AVR/ARM, Embedded Linux, and EE (currently learning math/trigonometry to get to EE).

My current reading list is:
"Plane Geometry" by Loney
"The Linux Command Line" by Schotts
"Programming in C" by Kochan (more a refresher, as I used to be halfway decent in C++. and PHP is similar)
"Fundamentals of Electric Circuits" by Alexander + Sadiku
"How Linux Works" by Ward
"The Linux Programming Interface" by Kerrisk
"the Definitive Guide to Cortex-m4/m3" by Yiu
"Linux From Scratch"
"Feynman Lectures" (The parts on electricity for this topic and the rest for other mechanical things I want to do).

AVR wise, I read "Make: Programming AVR", which I found barely useful and ended up just attempting to read the datasheet to figure it out. So far the AVR isn't too bad, I am fairly comfortable with some basic programs but I got stuck at PWM for a servo (mainly because I had no idea if it was working and needed to get an oscilloscope to figure that part out, I got one but haven't continued as I have been busy with math).

For ARM, I got the Microchip SAME54 dev board. I made it about 5 mins into Microtech's education video series on that board and thought I should perfect AVR first because it seems like without a good base understanding all the ARM syntax could be extremely confusing. So i put this on pause until I get a better handle on EE and AVR.

For Embedded Linux, a company I interviewed with used Buildroot, (which I haven't tinkered with at all). I decided to try Linux From Scratch hoping that would help to build a solid foundation before jumping to a tool like Buildroot or Yocto. And getting stuck very quickly in LFS, that prompted this post.

For EE I am reading "Fundamentals of Electric Circuits" by Alexander + Sadiku. But within the first chapter I realized I need Calculus to even begin to understand so I already re-learned Algebra and am now reading "Plane Geometry" by Loney for Trigonometry before moving to calc.

Basically, at this point, I am finding that to learn what I want, I must first figure out all sort of prior information and I just need some guidance to know if I'm even headed in the right direction before reading another 500+ page book that may or may not even be relavent to what I am trying to accomplish. Obviously, there is no such thing as "learning too much" but I would like to balance learning and doing, to apply the skills and chip away at the larger goals at a decent pace and then come back and fill in more detail later. Basically solving problems with large strokes and then go back and rebuilding solutions with more detail and more refinement.
 
  • Like
Likes WWGD, yucheng and Delta2
Physics news on Phys.org
Unfortunately, the only thing I can suggest is to get a copy of the syllabus for an EE degree.

There are probably others here (several current and previous instructors) that can supply better details.

(Now you know why a degree takes 4+ years! :biggrin: )
 
  • Like
Likes CalcNerd and berkeman
While you may find the Feynman Lectures interesting, they have essentially zero value for your career path.
 
  • Like
  • Wow
Likes CalcNerd, berkeman, Vanadium 50 and 1 other person
Cant give you any specific advice for your goal, but seems to me your goal is very very hard, that is to become a totally self taught EE/programmer. It is not impossible, you can make it but its going to be very hard. That's all I can say.
 
  • Like
Likes CalcNerd
Maybe you can look up certification books/sites for EE? Maybe you can email some profs at Community Colleges ( usually not as busy as those in Universities; those on the research and perish track) and politely ask them for refs in this regard.
 
You don't say what country you are in, but in many you can't just hang out a shingle and call yourself an engineer. "But I'm self-taught" will not change much.
 
Vanadium 50 said:
You don't say what country you are in, but in many you can't just hang out a shingle and call yourself an engineer. "But I'm self-taught" will not change much.
Maybe a cert exam may be better than nothing.
 
In the US at least you can't take a "cert exam" and declare yourself an engineer.
 
I think the OP doesn't care much about the professional recognition . All he wants is to learn all the things that an EE/Programmer knows and to be able to make all those tech things.
 
  • #10
Then you can just do the best that's available to you and keep trying. He's 26, so he may find a way. edit: he may intern in IT, cause a good impression and then have his employer agree to pay for his degree. He may then get equivalences for his exams, i.e., be given credit for passing his exams.
 
  • #11
Welcome to PF. :smile:

wyattmarshall said:
Trying to self-teach Electrical Engineering, Embedded Linux and AVR/ARM to make a career change into embedded systems development
Self-learning a programming language is orders of magnitude easier that trying to self-teach an EE degree level of knowledge, IMO. A full EE degree involves in-depth learning about Physics, Math, General Engineering, Circuits, E&M, Solid State Physics, and a bunch more stuff. Plus the labs in Physics and Circuits, and learning to use the instrumentation involved in both.

There are still some challenges to learning programming on your own, since you might skip topics like Data Structures, Compilers, and other important fundamentals that are important for you to be a good programmer. But it is much more practical to learn a new programming platform and microcontroller architecture on your own, IMO, and to do some very interesting and challenging projects that you can show to potential employers to prove that you are a good candidate for their job opening.

wyattmarshall said:
My main goal has always been to make hardware, gadgets and gizmos related to motorsports (cars, motorcycles, etc), so just knowing what kind of things I want the embedded system to do, I have determined a starting place is learning: AVR/ARM, Embedded Linux, and EE (currently learning math/trigonometry to get to EE).
If you are just learning trig now, you are at least a decade of full-time schoolwork away from an equivalent of an EE degree, IMO. I think you should focus your efforts better on what you can accomplish in the next couple of years. You definitely should keep learning math as a priority, since it helps your programming skills and basic electronic technician skills, which sound like they may be your best bet in the near term for getting into an embedded systems development job .

wyattmarshall said:
So far the AVR isn't too bad, I am fairly comfortable with some basic programs but I got stuck at PWM for a servo (mainly because I had no idea if it was working and needed to get an oscilloscope to figure that part out, I got one but haven't continued as I have been busy with math).
So this is a good illustration of a place where you will need some stronger math skills if you want to be designing feedback systems as part of your job description. Designing feedback and control systems involves a fair amount of semi-advanced math (at least to do it well), so I think for now you should leave that part of the design to the EEs. But given specs from the EEs, you should be able to use your programming skills and basic electronics knowledge to implement their designs.

wyattmarshall said:
For EE I am reading "Fundamentals of Electric Circuits" by Alexander + Sadiku. But within the first chapter I realized I need Calculus to even begin to understand so I already re-learned Algebra and am now reading "Plane Geometry" by Loney for Trigonometry before moving to calc.
Yes, you need calculus for most EE subjects. But not necessarily for electronics at the technician level.

wyattmarshall said:
Basically, at this point, I am finding that to learn what I want, I must first figure out all sort of prior information and I just need some guidance to know if I'm even headed in the right direction before reading another 500+ page book that may or may not even be relavent to what I am trying to accomplish. Obviously, there is no such thing as "learning too much"
But there is definitely such a thing as "trying to learn too much". Especially if all of that extra learning is not realistic to complete on your own in any reasonable amount of time.

wyattmarshall said:
I would like to balance learning and doing, to apply the skills and chip away at the larger goals at a decent pace
Yes, it is very important to mix the book learning with labs/experiments/projects, in EE and electronics as well as in general Physics learning, etc. I did many personal projects on my own in my undergrad EE years, and they helped me learn to "ask the right questions" in my classes.

For example, one of my personal projects was to make a 2-axis mechanical mirror driver to tilt a mirror using speaker coil drivers to deflect a HeNe laser to draw figures on a wall. I quickly learned that my knowledge of audio power amplifiers and coil drive circuits and even mechanical construction of low-mass driven structures was not so great. But by building each prototype stage of that project with improvements for each new try, I learned a lot about all of those topics. The final product was more bandwidth limited than I wanted, but it was still fun at parties in the dorm. :smile:

So I guess my advice at this point would be:

** Don't make it a goal to self-learn a full EE degree. That is unrealistic, IMO.

** Do make it a goal to learn the appropriate programming languages and platforms, and build some personal projects to get more familiar with those development environments.

** Do find some resources to help you learn basic electronics at the technician level so you can understand schematics and help with building and reworking circuits. You can look at your local community college for electronics technician type classes to help that along.

** Do start to get practiced and comfortable with using revision control tools like Bitbucket to manage your code iterations and versions. Pretty much any job you get in the industry will use one of the version control systems, so you will stand out as a candidate if you already are using one on your own for your personal projects.

Good luck! Work hard and enjoy the ride. :smile:
 
Last edited:
  • Like
  • Informative
Likes CalcNerd, Vanadium 50, BvU and 3 others

Similar threads

Replies
1
Views
70
Replies
1
Views
1K
Replies
8
Views
6K
Replies
7
Views
3K
Replies
4
Views
1K
Replies
10
Views
2K
Replies
4
Views
2K
Replies
11
Views
2K
Back
Top