Hacker News new | ask | show | jobs
by jwr 3378 days ago
I disagree. Everything you listed a) can't be used for products, b) doesn't let you make progress beyond "oh look, I lit up an LED!".

Sure, if you never programmed a small device, by all means, start with an Arduino. But after you do light up that LED, please learn more. Go bare metal, learn about interrupts, state machines, entering sleep states -- without those things you'll stay forever in the toy world. In the real world, if you work with battery-powered devices, you never have the comfort of busy waiting for your UART/I2C transmission to finish, or calling analogRead() and getting immediate results (because ADC takes time and you want to do it asynchronously).

It's my pet peeve: I'm very happy that Arduino has been such a success, but I think too few people progress beyond that, and many believe this is how one programs embedded devices.

As for RPI, it's neither a production device, nor a learning tool for embedded programming. The complexity involved means there is no way a beginner can understand everything that's going on.

6 comments

As the other poster stated, you don't really disagree, just misunderstand.

You can actually do everything you need in the Arduino IDE and then leave the IDE, compile and upload your own program written from scratch to the UNO. All that while staying compatible to the dozens of hardware extensions out there.

The "Arduino" part is not the destination, it's three quarters of the path to the destination and that path is already paved.

No, I do not misunderstand -- I design products, as in things which are produced. Arduino is not for making products.
>I disagree.

You don't seem to actually disagree.

You said: >Sure, if you never programmed a small device, by all means, start with an Arduino.

And the OP said advice "for real beginners", i.e., people who have never programmed a small device. I didn't read anything that hinted that the OP was suggesting people never advance beyond Arduino.

Again your disagreeing with things the OP never said.

You: >As for RPI, it's neither a production device, nor a learning tool for embedded programming.

OP: >you really just want a small computer running Linux but with GPIO-Pins?=> Raspberry PI

>I disagree. Everything you listed a) can't be used for products, b) doesn't let you make progress beyond "oh look, I lit up an LED!".

Nonsense. This device: http://nanthealth.com/vitality/, which was a "big deal" to telemedicine folks (and is still a good product, please somebody reproduce it for cheap), and resulted in a MASSIVE exit for the people who founded it, was built around an atmega328p.

I would be good money that it was prototyped on an arduino.

This: https://www.industrialshields.com/ is based on an arduino. Like an actual, blue, retail arduino.

I've personally built one-offs for advertising installations (products for sure, but probably not exactly what you meant), that are full of arduinos.

>doesn't let you make progress beyond "oh look, I lit up an LED!".

This is wrong enough to make me think that you either don't actually know what a microcontroller is, or are being deliberately misleading.

Arduino was designed as an easy way for non-technical artists to use electronics in their projects. I won't argue that anyone half-serious should go bare metal.

The RPI is a useful production device in some niche applications, thanks to the Compute Module. There are a lot of circumstances where you need a powerful SoC, but you don't have the time or the budget to deal with a dense BGA; the RPI Compute Module replaces a lot of difficult design work with a standard SODIMM slot. Obviously it's no use in a mass-market consumer product, but it makes a ton of sense for a small-volume industrial device.

Arduino is fine if you just need some low level / real-ish-time control. I used one as glue for a test setup (converting a voltage input to drive some DC motors via H-bridges) and it was perfect for the job - simple to set up, straightforward to run, a little underpowered (I couldn't quite get to 20+ kHz PWM on the pins in software, so it's a bit noisy) but adequate.

I absolutely agree that an Arduino shouldn't be the core of a consumer electronics device, but for anyone not familiar enough with the field to know that already, it's probably at about the right level.

Are there any good learning resources to help make that jump?