Author Topic: Is Arduino "crap"?  (Read 4341 times)

0 Members and 1 Guest are viewing this topic.

Offline tooki

  • Super Contributor
  • ***
  • Posts: 12781
  • Country: ch
Re: Is Arduino "crap"?
« Reply #75 on: September 03, 2024, 05:44:32 pm »
Arduino's time should be passing, but nobody is stepping up to offer the next great alternative.

How about the Pi Pico?

Mind you, I would not want to program in Python - running an interpreted language on a microcontroller feels wrong, but I don't know how easy it would be to program the Pico in C or C++.
Easy: you can do it with Arduino (which on the Pico is a lightweight wrapper over the mbed RTOS). (Yes, I know that mbed is being discontinued. I have no idea what the future holds for the Rpi Pico in this regard.)

There is also the Pico's own C/C++ SDK.
 
The following users thanked this post: SteveThackery

Offline paulca

  • Super Contributor
  • ***
  • Posts: 4285
  • Country: gb
Re: Is Arduino "crap"?
« Reply #76 on: September 03, 2024, 05:48:01 pm »
In context of my personal issue, spawning the referenced OP...

Arduino is a "one size fits all" eco-system specifically created to "make stuff easy, approachable".  Arduino did not create the micro-controller, nor did they create firmware, nor did they invent C++ coding.  What they did was provide an "eco-system" where they "stipulated and provided" a more "End to end" solution.  "Turn Key".  They hide all the fiddly details in framework code, wrap even more into a very hand-holding build process, so beginners (and practicalists alike) didn't need to think about them to "get their stuff done".

I think if you argue in favour of that as "a" learning eco-system, I personally wouldn't side against you.

Where the problem comes is when you exist outside that eco-system.  When you look 'directly' into bare-metal MCUs, 32bit MCUs, MCUs with teeth and MCUs with balls that you start to speak in a different language to them.  You are no longer working in the subset of functionality or the nomelcature of the eco-system, you are working with the vast expanse of all possibilities without any artificial framework limitations.

"I'm having an issue with bidirectional UART interrupts, I can't work out if its.... X or its... Y.  Datasheet is confusing, help."

"Why not just call Serial.Write()"?
"Yea, yea, everyone just calls Serial.Write() dude.  Why you slagging?"
"Yea, get 'em.  He's slagging Serial.Write(), obviously doesn't know what he'd talking about.  Who needs bidirectional anyway, nobody uses that because Arduino never supported it so it can't be done."

At least on forums like this Arduino fan boys that extreme will be put in their place.

It seems as though the "home automation" sector has, unfortunately fallen to the HomeAssistant fanboys.  Discussions on "Home Automation without Home Assistant" are just not possible frankly.  It's like MCU discussions ceased and everyone moved to arduino and anyone who didn't was called a hieratic and stoned.  (I exagerate).
« Last Edit: September 03, 2024, 05:55:33 pm by paulca »
"What could possibly go wrong?"
Current Open Projects:  STM32F411RE+ESP32+TFT for home IoT (NoT) projects.  Child's advent xmas countdown toy.  Digital audio routing board.
 

Offline nctnico

  • Super Contributor
  • ***
  • Posts: 28102
  • Country: nl
    • NCT Developments
Re: Is Arduino "crap"?
« Reply #77 on: September 03, 2024, 06:19:54 pm »
It seems as though the "home automation" sector has, unfortunately fallen to the HomeAssistant fanboys.  Discussions on "Home Automation without Home Assistant" are just not possible frankly.  It's like MCU discussions ceased and everyone moved to arduino and anyone who didn't was called a hieratic and stoned.  (I exagerate).
Not so long ago there where very heated discussions on whether microcontrollers should be programmed in assembly instead of C. Purists would program in assembly!  :box: Nowadays you can see similar discussions emerging where it comes to C versus C++ and Python.
There are small lies, big lies and then there is what is on the screen of your oscilloscope.
 

Offline Kjelt

  • Super Contributor
  • ***
  • Posts: 6576
  • Country: nl
Re: Is Arduino "crap"?
« Reply #78 on: September 03, 2024, 06:34:17 pm »
Arduino brings embedded microcontroller projects to laymen and starters and those who want to test something quick and dirty.
But that is and was valuable for many people who otherwise never started.
Think about artists and juniors who once touched by the arduino world go on and perhaps start studying EE, robotics, informatics, mechatronics and the likes.
When I was young you had Fisher Technic a plastick version of Mecano did anyone say that is not professional you can not make a product with that flimsy stuff ?

While I always thought Arduino was toys for kids, I was surprised that on another cnc milling forum someone without programming skills made a very well designed lubrication device in a matter of days. It works great based on Arduino.

So I think differently now, it has its purpose and its target audience. I even got some new form of Arduino myself, ESP32 with ESPHome and although I designed the hardware surrounding it and made it robust, the core is an Olimex ESP Ethernet board. And it works 24/7 for over a year now, the software took 1 day copy paste and test.
Had I made it myself from scratch with an Arm STM32, my best guess it would have taken me weeks to do the interfacing and still use prewritten LWIP or something similar and not sure if it woukd have been better.

So new mantra, grab the hardware and infrastructure that fits your need and although it might be more fun and satisfaction, doing everything yourself from scratch will not guarantee better results. Or is anyone of you still making their own pcbs ?
 
The following users thanked this post: tooki

Offline janoc

  • Super Contributor
  • ***
  • Posts: 3893
  • Country: de
Re: Is Arduino "crap"?
« Reply #79 on: September 03, 2024, 06:42:23 pm »
Like a lot of people I don't use Arduino for production, as quite often there are limitations in the how it abstracts. For example on ESP32 it's all well and good until there's an ESPIDF feature that's not implemented , or some bug that's fixed by a later version of the framework (beyond whatever Arduino is currently on). I assume other frameworks are similar.

The other thing that would make me hesitant to use it on production is the commercial terms https://support.arduino.cc/hc/en-us/articles/4415094490770-Licensing-for-products-based-on-Arduino
I've nothing against these terms, it just could have commercial implications in the future if the project is successful.

Pretty much the same terms and obligations as when using any other libraries. You need to review licenses and comply with them. It is not like anyone has sneaked that up on you.

And most people don't use Arduino boards for production (that would be very expensive) - which is where you need to deal with trademarks, etc.
 

Offline paulca

  • Super Contributor
  • ***
  • Posts: 4285
  • Country: gb
Re: Is Arduino "crap"?
« Reply #80 on: September 03, 2024, 06:42:42 pm »
It seems as though the "home automation" sector has, unfortunately fallen to the HomeAssistant fanboys.  Discussions on "Home Automation without Home Assistant" are just not possible frankly.  It's like MCU discussions ceased and everyone moved to arduino and anyone who didn't was called a hieratic and stoned.  (I exagerate).
Not so long ago there where very heated discussions on whether microcontrollers should be programmed in assembly instead of C. Purists would program in assembly!  :box: Nowadays you can see similar discussions emerging where it comes to C versus C++ and Python.

Interesting opposition argument.  But I think it just highlights the difficulty with analogies being stretched.

I feel a better dichotomy would be in terms of "Product" vs. "DIY".  "Ready meal" versus, "Home made".  "Made to a budget" versus "No expense capped".

Home Assistant is a product.  People configure and use the product to automate things.  I am fine with it being "a defacto standard", just like Lotus was once the defactor standard for Spreadsheets.  However I am working with Spreadsheets and wether it's Lotus, Microsoft or SunMicros product, it's still a spreadsheet.  Stretching the analogy a bit still, if you want to avoid "tool orientated design", your best bet is to use a "generic" model of a spreadsheet, decided your requirements and then gap analysis it against each of those products to find the one which meets the most of your needs.  It's just that right now, everyone and their dog is using Home Assistant (Lotus). 

Another idiom?  It's like in the UK people refer, to this day, to a vacuum cleaner as "The hoover".  Hoover is a brand.

It feels like nobody is doing "Home automation", they are all doing "Home assistanting".

A lot of this is tongue in cheek and we are way off topic.

On stretching analogies still...

It's like young people who never learnt to drive.  They take public transport everywhere and if that won't work they phone a friend.  However they will insist that you should take the bus.  When you ask for directions or how to get from A to B in your car, all discussions end up in a flame war about why you need to drive to get there.  It's hard for those who didn't learn to drive and don't own a car to understand you.
« Last Edit: September 03, 2024, 06:46:56 pm by paulca »
"What could possibly go wrong?"
Current Open Projects:  STM32F411RE+ESP32+TFT for home IoT (NoT) projects.  Child's advent xmas countdown toy.  Digital audio routing board.
 

Offline tooki

  • Super Contributor
  • ***
  • Posts: 12781
  • Country: ch
Re: Is Arduino "crap"?
« Reply #81 on: September 03, 2024, 07:05:45 pm »
Where the problem comes is when you exist outside that eco-system.  When you look 'directly' into bare-metal MCUs, 32bit MCUs, MCUs with teeth and MCUs with balls that you start to speak in a different language to them.  You are no longer working in the subset of functionality or the nomelcature of the eco-system, you are working with the vast expanse of all possibilities without any artificial framework limitations.
"Artificial framework limitations" sounds like a pejorative, making it sound like the framework deliberately stops you from doing things you could do otherwise. It doesn't. Nothing stops you from writing lower-level code into your Arduino sketches. (The consequence is that you lose easy portability to another MCU.)

The limitations of the Arduino frameworks aren't there as artificial roadblocks, they are consequences of a) designing a product originally intended for artists*, not electronics nerds, and b) portability across MCU families, so a "lowest common denominator" base functionality.

But for all the complaints people have about the "limitations" of the Arduino framework, they either don't know, or deliberately ignore, that is is for all intents and purposes a set of lightweight libraries on top of ordinary C/C++, and that ordinary C/C++ code works, including directly reading and writing MCU registers if you want to (on most of the MCUs at least, including Atmel and STM32; others, like ESP32 and Rpi Pico, instead implement the Arduino framework as a lightweight layer over a RTOS, but you can call their specific calls to do all the stuff the Arduino framework won't).


I say this as someone who isn't a particularly gifted programmer: Working my way through the Arduino framework, starting with the classic "Blink", all the way to writing my own peripheral support libraries for external doodads, for Arduino on ESP32 in PlatformIO, was a great way to "graduate" to then programming in manufacturer IDEs like MPLAB X (for a PIC16 in a piece of measurement gear I built that has been in operation for well over a year now, where it is used to keep track of well over a million $ worth of liquid xenon; that project required me to manage special timers to capture the period-modulated output of the front-end measurement ICs) and STM32CubeIDE. For me, learning bit by bit was better than being thrown in the deep end. (Like in class, where we did STM32 in Keil, where I remember a bunch of us running into trouble programming the MCUs due to some checkbox whose function is as opaque to me now as it was back then. The teacher knew STM32 enough to understand it, but it's one of those things that can completely ruin a novice's day because there's not a snowball's chance in hell you'd ever be able to solve the issue on your own, you'd eventually just quit in frustration and throw the dev board in the trash.) By being able to solve problems that are at the edge of my understanding (as opposed to problems so far beyond my level of knowledge that there is no chance of identifying the solution), I was able to learn on my own, since the problems were not insurmountable. I learn more that way than by having someone else spoon-feed me a solution I don't actually understand.


*The Arduino people didn't actually invent the Arduino "language" (i.e. the framework), they forked an existing OSS project called Wiring, which in turn was a fork and extension of a platform called Processing, which was expressly developed for artists.
« Last Edit: September 03, 2024, 07:14:45 pm by tooki »
 
The following users thanked this post: tom66, Kjelt

Offline paulca

  • Super Contributor
  • ***
  • Posts: 4285
  • Country: gb
Re: Is Arduino "crap"?
« Reply #82 on: September 03, 2024, 07:31:11 pm »
The limitations of the Arduino frameworks aren't there as artificial roadblocks, they are consequences of a) designing a product originally intended for artists*, not electronics nerds, and b) portability across MCU families, so a "lowest common denominator" base functionality.

Agreed.  Remove the "artificial".  There are limitations within the eco-system.  Editing/patching/working around and writing low level code outside the framework, would not, in my simple mind be "within the eco system"

That goes, across the board for frameworks.  Frameworks are usecase specific.  They are intended to facilitate, accelerate and regulate development.  They are about reusing tested code rather than writing some new bugs.  No framework works for all use cases.  If you want a framework that is broad and wide and featured enough to cover every single use case you would basically just have written the C language.

It doesn't stop people trying though.  I personally have seen a dozen database ingestion frameworks fall flat on their face everytime they "succeed".  By succeeding they have created a framework/automation, that is actually MORE complex and MORE time consuming to use than doing it yourself manually with low level tools.

To make them useful frameworks MUST be opinionated.  They must be limiting.  Or they will just end up as complicated as teh problem they were trying to simplify.

"Framework" comes from the construction and architecture industry.  It almost literally refers to the core structure of the building.  In a sky scraper it's the steal beam structure.  Once it's in place, it's job is to facilitate the rest of the construction it is there to support.  In such a building it might be a specific framework, based on a prior, based on a prior etc.  It might only get used once, in one project.  A framework for a house, the basic structure for a 2 story domestic house with a dozen options, could be used to build 1000 houses rapidly.

While these frameworks have flexibility in them, just like building frameworks once they are decided it's pretty much fixed and everything else that comes after it has to comply.

Getting in under, around, or over the framework to avoid it's limitations are always "At your own project risk."  They happen in construction, they happen in software.  I have never once used a framework that didn't limit me or get in the way some of the time.

You makes your choices, you lie in the bed you made.
« Last Edit: September 03, 2024, 07:38:04 pm by paulca »
"What could possibly go wrong?"
Current Open Projects:  STM32F411RE+ESP32+TFT for home IoT (NoT) projects.  Child's advent xmas countdown toy.  Digital audio routing board.
 
The following users thanked this post: tooki

Offline farrisee1

  • Newbie
  • Posts: 1
  • Country: us
Re: Is Arduino "crap"?
« Reply #83 on: September 03, 2024, 07:54:42 pm »
Arduino are for people who don't care or need to know about the underlying technical details.  It's pretty much rapid prototyping or proof of concept use.  For real products, it cannot be used.  You can't place an Arduino board into a product and sell it.  The Arduino IDE lacks advanced features which are not needed for the non-technical user.
 

Offline SteveThackeryTopic starter

  • Frequent Contributor
  • **
  • Posts: 603
  • Country: gb
Re: Is Arduino "crap"?
« Reply #84 on: September 03, 2024, 08:17:45 pm »
Arduino are for people who don't care or need to know about the underlying technical details.  It's pretty much rapid prototyping or proof of concept use.  For real products, it cannot be used.  You can't place an Arduino board into a product and sell it.  The Arduino IDE lacks advanced features which are not needed for the non-technical user.

That seems like a sweeping statement. There is nothing fundamentally stopping you from using Arduino as the heart of a commercial product. OK, it might be rather expensive, but that's a commercial obstacle, not a fundamental one.

You can still make pretty impressive products, despite lacking the advanced features you mentioned. After all, people made sophisticated products without any microcontroller at all, if you go back far enough. I used to do repairs on a dot matrix printer by Trend that was implemented entirely in 4000- and 7400-series logic (plus the power electronics for the printhead itself).
 
The following users thanked this post: tom66, janoc, Kjelt, tooki

Offline Kjelt

  • Super Contributor
  • ***
  • Posts: 6576
  • Country: nl
Re: Is Arduino "crap"?
« Reply #85 on: September 03, 2024, 09:00:27 pm »
For real products, it cannot be used.  You can't place an Arduino board into a product and sell it. 
Almost twenty years ago I had to program 4 bit uCs with 1024 bytes of ROM and 32 bytes of RAM from a chinese toymanufacturer to be put in a european high tech companies mass product because the BOM for the whole pcb was $0.36
I wish I had an Atmel uC then  ;) BTW they sold millions and the company made millions.
 

Offline nctnico

  • Super Contributor
  • ***
  • Posts: 28102
  • Country: nl
    • NCT Developments
Re: Is Arduino "crap"?
« Reply #86 on: September 03, 2024, 09:08:55 pm »
For real products, it cannot be used.  You can't place an Arduino board into a product and sell it. 
Almost twenty years ago I had to program 4 bit uCs with 1024 bytes of ROM and 32 bytes of RAM from a chinese toymanufacturer to be put in a european high tech companies mass product because the BOM for the whole pcb was $0.36
I wish I had an Atmel uC then  ;) BTW they sold millions and the company made millions.
But you likely put those on a properly designed PCB made to pass EMC testing and to have some protection against nastiness from the outside. An Arduino in the form of a board (aka processor module) lacks all that.
There are small lies, big lies and then there is what is on the screen of your oscilloscope.
 

Offline Kjelt

  • Super Contributor
  • ***
  • Posts: 6576
  • Country: nl
Re: Is Arduino "crap"?
« Reply #87 on: September 04, 2024, 07:27:03 am »
But you likely put those on a properly designed PCB made to pass EMC testing and to have some protection against nastiness from the outside. An Arduino in the form of a board (aka processor module) lacks all that.
Agreed, I see/saw the scope of the discussion as "Arduino programming environment" rather than some chinese low $ pcbs.
In that sense the STM nucleo boards are also too big and probably due to a lack of decent groundplanes and non multilayer not very EMC compliant to put in any product.
But if you redesign an Arduino board from scratch would you agree it could pass EMC testing?
 

Offline Rerouter

  • Super Contributor
  • ***
  • Posts: 4700
  • Country: au
  • Question Everything... Except This Statement
Re: Is Arduino "crap"?
« Reply #88 on: September 04, 2024, 08:49:44 am »
Arduino are for people who don't care or need to know about the underlying technical details.  It's pretty much rapid prototyping or proof of concept use.  For real products, it cannot be used.  You can't place an Arduino board into a product and sell it.  The Arduino IDE lacks advanced features which are not needed for the non-technical user.

The Emotimo TB3 actually was an ATMega2560 + a motor driver board, so they have happened, though they are not that common in the raw form
 

Online brucehoult

  • Super Contributor
  • ***
  • Posts: 4538
  • Country: nz
Re: Is Arduino "crap"?
« Reply #89 on: September 04, 2024, 09:03:01 am »
Arduino are for people who don't care or need to know about the underlying technical details.  It's pretty much rapid prototyping or proof of concept use.  For real products, it cannot be used.  You can't place an Arduino board into a product and sell it.  The Arduino IDE lacks advanced features which are not needed for the non-technical user.

The Emotimo TB3 actually was an ATMega2560 + a motor driver board, so they have happened, though they are not that common in the raw form

A dozen years ago, pretty much all home made or kit 3D printers used an Arduino Mega. Certainly mine did. 16 MHz 8 bit 8 KB RAM and plenty of CPU power to interpret G-code and fling 4 or 5 stepper motors around and run PWM PIDs for the print bed and hot end, and a status display too.
 
The following users thanked this post: tooki

Offline tom66

  • Super Contributor
  • ***
  • Posts: 7054
  • Country: gb
  • Electronics Hobbyist & FPGA/Embedded Systems EE
Re: Is Arduino "crap"?
« Reply #90 on: September 04, 2024, 09:39:19 am »
Arduino are for people who don't care or need to know about the underlying technical details.  It's pretty much rapid prototyping or proof of concept use.  For real products, it cannot be used.  You can't place an Arduino board into a product and sell it.  The Arduino IDE lacks advanced features which are not needed for the non-technical user.

This is obviously wrong.    Many early-generation 3D printers which were sold commercially were based on off-the-shelf Arduino boards.  They often used the same pinout when they moved to dedicated PCBs.

edit: brucehoult beat me to it.
 
The following users thanked this post: tooki

Offline paulca

  • Super Contributor
  • ***
  • Posts: 4285
  • Country: gb
Re: Is Arduino "crap"?
« Reply #91 on: September 04, 2024, 10:33:30 am »
"What could possibly go wrong?"
Current Open Projects:  STM32F411RE+ESP32+TFT for home IoT (NoT) projects.  Child's advent xmas countdown toy.  Digital audio routing board.
 

Offline ledtester

  • Super Contributor
  • ***
  • Posts: 3248
  • Country: us
Re: Is Arduino "crap"?
« Reply #92 on: September 04, 2024, 11:27:40 am »
Eric Bogatin has a talk somewhere where he mentions the original Arduino PCB was so bad from a grounding/EMI standpoint that he uses it as an example of a measurably terrible PCB layout in his classes and has his pcb-design students re-lay it out with actual good design guidelines as an exercise.

Here it is at the 46:45 mark:

Eric Bogatin on Breaking Bad Habits in PCB Design - AltiumLive Keynote
https://youtu.be/DIMIzKRmync?t=46m45s
 

Offline coppice

  • Super Contributor
  • ***
  • Posts: 9564
  • Country: gb
Re: Is Arduino "crap"?
« Reply #93 on: September 04, 2024, 11:31:38 am »
Eric Bogatin has a talk somewhere where he mentions the original Arduino PCB was so bad from a grounding/EMI standpoint that he uses it as an example of a measurably terrible PCB layout in his classes and has his pcb-design students re-lay it out with actual good design guidelines as an exercise.
This is normal. In the low speed MCU world very few PCBs are laid out well until the designer faces the discipline of getting their project through a suite of EMI/EMC tests.
 
The following users thanked this post: tom66, Kjelt, tooki, rstofer

Offline nctnico

  • Super Contributor
  • ***
  • Posts: 28102
  • Country: nl
    • NCT Developments
Re: Is Arduino "crap"?
« Reply #94 on: September 04, 2024, 11:32:12 am »
But you likely put those on a properly designed PCB made to pass EMC testing and to have some protection against nastiness from the outside. An Arduino in the form of a board (aka processor module) lacks all that.
Agreed, I see/saw the scope of the discussion as "Arduino programming environment" rather than some chinese low $ pcbs.
In that sense the STM nucleo boards are also too big and probably due to a lack of decent groundplanes and non multilayer not very EMC compliant to put in any product.
But if you redesign an Arduino board from scratch would you agree it could pass EMC testing?
Ofcourse. As I wrote earlier: software is least of the problem of the Arduino ecosystem  ;D
There are small lies, big lies and then there is what is on the screen of your oscilloscope.
 

Offline Nominal Animal

  • Super Contributor
  • ***
  • Posts: 6976
  • Country: fi
    • My home page and email address
Re: Is Arduino "crap"?
« Reply #95 on: September 04, 2024, 12:53:42 pm »
Eric Bogatin has a talk somewhere where he mentions the original Arduino PCB was so bad from a grounding/EMI standpoint that he uses it as an example of a measurably terrible PCB layout in his classes and has his pcb-design students re-lay it out with actual good design guidelines as an exercise.
This is normal. In the low speed MCU world very few PCBs are laid out well until the designer faces the discipline of getting their project through a suite of EMI/EMC tests.
As a non-EE hobbyist, having designed some simple PCBs myself, I can confirm.  The sheer joy of having something that works outshadows any concerns about design failures or inefficiencies.  It is pretty obvious many Arduino-related PCBs weren't designed by a professional.

Many Arduino hardware designs are and will be made by non-EE hobbyists, so identifying their downsides and better designs (to us hobbyists) is very important and useful.
 

Offline tooki

  • Super Contributor
  • ***
  • Posts: 12781
  • Country: ch
Re: Is Arduino "crap"?
« Reply #96 on: September 04, 2024, 01:29:39 pm »
Arduino are for people who don't care or need to know about the underlying technical details.
Or, as I have explained already, as a great way for beginners to get started and work their way towards "adult" solutions.

It's pretty much rapid prototyping or proof of concept use.  For real products, it cannot be used.  You can't place an Arduino board into a product and sell it. 
Well, clearly you can do that, even if it's a fairly expensive way to do things.

On the other hand, we have no idea how many commercial products have a microcontroller on a custom PCB that is running Arduino code.


The Arduino IDE lacks advanced features which are not needed for the non-technical user.
This is the only part of your statement that is absolutely true.

But as we've pointed out, you don't have to use the Arduino IDE. PlatformIO is an extremely common alternative, and there are others, like Visual Micro. And indeed, graduating from the Arduino IDE to a more powerful one is a step that tons of people make, as they outgrow the Arduino IDE. (I know that the more complex Arduino projects I did would have been a lot more work if I'd done them in Arduino IDE instead of PlatformIO.)
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf