Anyways cutting to the chase I am pretty good at C++ as I have been doing it for over 6 months pretty much 1-2 hours each day and I am looking for cool things to use my knowledge on ,I have heard of the Arduino's but the problem is I don't know my arse from my elbow when it comes to electrical engineering and all that so I have a couple of questions. 1. Do I need to have a background in engineering to use an Arduino. 2. Is there any cheap alternatives to the quite costly starter kit.
-
There are clones available but the drivers for the USB<->Serial chips may be suspect.– Spehro PefhanyMay 25, 2015 at 21:25
-
I don't understand why you would need a starter kit when you want to program an Arduino. Why not just buy an Arduino (or clone)?– Wouter van OoijenMay 25, 2015 at 21:26
-
Or if you're willing to learn, the MCU and a programmer.– Ignacio Vazquez-AbramsMay 25, 2015 at 21:27
-
@Spehro actually the realy cheap ones ones that use an SP230x seem to be ok. It is the ones that claim to use an FT232 that might turn out to contain a knock-off chip.– Wouter van OoijenMay 25, 2015 at 21:27
-
@WoutervanOoijen I had some issues getting the Mac driver to work, but admittedly didn't try all that hard. The FTDI clones have a well known issue as you imply.– Spehro PefhanyMay 25, 2015 at 21:29
5 Answers
I don't know my arse from my elbow when it comes to electrical engineering and all that so I have a couple of questions. 1. Do I need to have a background in engineering to use an Arduino.
The answer to your first question: it depends on what you want to achieve, and how much time you are willing to spend stuck.
A bit of electrical/electronic background can help you a lot. Basics such as Ohm's, Kirchhoff's. Semiconductor devices (diodes, transistors, OpAmps). It's very useful to understand what kinds of test&measurement equipment exists and how it can be used.
You can pursue C++ for 6 months 1-2 hours a day. You can pursue electrical knowledge in the same way as well. A solid book like "The Art of Electronics" will help you a lot (doesn't have to be the latest edition).
Then you can pursue more exciting things: sensors (for example).
If you are the "hacker" type (i.e. you are good at self-learning and you like to explore things) even if you are an absolute newbie I advice against those starter kits. They usually contain lots of overpriced parts, which you can get much more cheaply ordering directly to digikey, mouser or the like for your country (or maybe at your local shop).
On the other hand I strongly recommend buying an original Arduino board (for beginners an Arduino UNO is optimal, IMO, and comes at a reasonable price around 20-25EUR). This because the quality is guaranteed and you risk less problems. There are really good clones out there, but also tons of crappy ones, so I'll leave them to when you get more experience. Nothing is more frustrating while learning that wasting hours to debug a supposedly idiotproof project only to discover that it was not your fault, but the board's!!!
Note: if you go for an Arduino UNO choose the version with a socketed plastic DIP package MCU (that big, long chip with two parallel rows of pins), instead of the SMT version, using an MCU packaged as a tiny plastic square. The version with the socket may come handy if you accidentally fry the MCU: a new one will cost you less than 4EUR and it's easily replaceable (it is not soldered on the board). The SMT, on the other hand, is a PITA to replace and you'd need special hardware to do that. Moreover, the socketed version can be used as a "poor man's" programmer for ATMega328 MCUs. You program it on the board and then place it on an external circuit.
If you are an absolute beginner at EE, you can find lots of beginner tutorials on the Internet. Concentrate on key basic aspects. Most electronic projects can be handled with less math than you expect. You absolutely need to know Kirchhoff's laws and Ohm's law and a couple of related formulas if you want to begin learning electronics, but nothing more fancy. The rest can be learned on the way. Keep in mind that there are people out there that know much less than that and that are able to put together an electronics project successfully only by following "instructables" found on the Internet (really hardcore tinkerers! :-)
BTW, one thing you may find interesting, given your C++ background, is that what they call the "Arduino language" is really true C++! The Arduino environment "enhances" the source program (the "sketch", as they call it) and inserts all the boilerplate code needed to configure the MCU and other low-level stuff a beginner would have hard time digesting. Then the source program so enhanced is fed to AVR-GCC, in its G++ incarnation, which is nothing more that GNU GCC configured as cross-compiler for AVR MCUs. You can even use templates and derived classes, if you dare :-) Of course they don't tell you, otherwise the poor Arduino beginner would be scared away :-D
Very advanced Arduino users can bypass the Arduino environment completely and write directly C++ code and use the board as a simple prototyping board for the MCU it is based upon (ATMega328P for the Arduino UNO), exploiting all the features of the MCU without all the abstraction layers which comprises the Arduino environment.
A note of caution: when I talk about C++ I mean what is technically known as a freestanding C++ implementation, as opposed to a hosted implementation like on PC's. This means that the implementation doesn't need an OS to work, but also that it doesn't have all the standard libraries that you expect to find on a hosted implementation (sorry, no std::vector or std::cout !!!). A freestanding implementation must only provide a very limited subset of the usual standard libraries (those that handle lower level stuff, like memory allocation), and normally relies on implementation-specific libraries to do other stuff. In particular with the Arduino environment and the underlying AVR-GCC comes the AVR-LIBC library. But this is needed only when you do advanced stuff. The basic Arduino library will keep you busy for a nice amount of time until you reach such a level of expertise.
1) You do not have to have engineering background. You only need to know basics such as what a resistor is, what a transistor is, how an led works etc. (Of course the answer depends on what you want to do. For instance, if you want to work on a robotic project then yes, you need a little knowledge.)
2) Shopping questions are not answered here, but since you are asking something about "cost" then I have two answers. You can find cheaper solutions, but I, personally, always support original products for two reasons. First, you need to support the people who serves your work. Second is that original products are generally more reliable.
First question, no. Tons of tutorials for a from scratch beginner online. Second question, Google Arduino clones.
I am having loads of fun with Arduino from a background of programming with no electronics experience. From simple "flash some LEDs" in the early days (back in Feb) through to making my own "games console" using a 32x32 LED matrix, FRAM memory chip, piezo buzzer and a home made controller for input. I found that once I got started and browed various relevant sites, ideas started to flow.
I would suggest using straight C rather than C++, especially if you are working on one of the particularly low memory devices (such as the Uno). I ran out of working RAM more times than I care to remember.
As for starter kits, if you search, you should be able to find cheap kits. I got a pretty decent starter kit for around £20 but there were cheaper ones with a few less components. Mine included (amongst other things) 30 LEDs, various IR and flame sensors, photo resistors, a 7 segment LED, a 4 digit 7 segment LED, an 8x8 LED matrix, a servo, a stepper motor, a stepper motor control board, a couple of breadboards and an Arduino Uno.