There's also great support for CircuitPython and MicroPython, which makes it trivial to program the devices.
I don’t even use the Ardiuino IDE anymore; I've switched to VS Code using PlatformIO.
It’s great that all these microcontroller boards and peripheral breakout boards can be programmed using the same basic API’s, but I don’t think it helps Arduino the company very much.
Without any opportunities for getting bogged down in anything extra at all, they can follow a simple recipe and quickly begin to blink an LED at the rate of their choosing.
The Arduino was developed to be a teaching tool, and it allows for a person to take little baby steps.
(Whether this placement is good or bad for Arduino as a business entity isn't something that I find particularly important.)
While it's nice to have exposure to PLC programming at an Arduino price point, the IDE, and PLC firmware was VERY rough around the edges. It took lots of resets and fiddling to even get the units connected over their USB serial, and you'd come back the next day and you'd have to repeat the process. Lots of "hold your tongue the right way while pressing this button". The IDE was also very buggy (though it may have improved in the last 12 months), but once you got things going, it did the job.
Besides, what's the market? The non-pro hardware is fine for prototypes, but you don't want a bowl of spaghetti in production, so porting it to the pro is pointless. If you want a generic compute board, why not a Raspberry Pi? If you want a PLC, why not go for a proper PLC?
There's perhaps a market for the shadow IT equivalent of electronics projects where an Arduino sketch is suddenly a load-bearing part of the company, but that's about it.
Besides that, IMO hiding hardware details from the developer is the worst thing about Arduino. The hardware details matter and it's far too easy to get footgunned by some implementation detail hidden from you.
But really, esp-IDF isn't that much more complex, nor are most of the other native frameworks. It's a bit more verbose, but esp-IDF provides helper libraries that replace almost everything Arduino provides, but in a way that is actually designed for the hardware and doesn't have to do things like lookup pin numbers in a giant table for each and every gpio call.
That also means that simple projects are abstracted from the hardware. Means I can go across a dozen different CPU arch and board/pin layouts, and I change nothing in my source. I only change my target and it just works.
I did that when I went from a board operating at 16MHz/atmel to a STmicro running 50MHz. No change in my source. And that's really valuable in rapid prototyping.
Once I settled in on a board and everything, I could do it the "right way" aka the old waterfall-gile embedded approach and get things tweaked and optimized.
But yeah there's also CircuitPython where you literally drag and drop a firmware blob onto the volume that shows up when plugging in an RP2040 board, and then you're just editing a Python-esque script to do stuff. Not sure what could be easier when it comes to starting with embedded stuff. You can even use the Arduino IDE with RP2040 boards if you like.
https://learn.adafruit.com/getting-started-with-raspberry-pi...
But for people getting started, the ability to just plug in an Uno R3 and stack a motor controller shield on it, is pretty attractive. I like the Cytron break out boards for the Picos, but I still think the path from opening the box to working thing is still easiest with Arduino.
Once you know what you're doing, (and maybe that's when you realize you need a debugger), you move on to something else. And with the Pico I can spend the $800 on an O-scope instead of the Segger.
Wasn't Arduino not for developers, but for hobbyists? People who aren't super technical but want to do something neat with basic microcontroller functionality?
You're complaint kinda seems like saying "BASIC isn't great language, it's got a lot of problems when used for enterprise applications." It's not really meant for that.
Unfortunately the Mbed guys stuck to their crap web-based IDE for waaaay too long, and when they finally realised it couldn't cut it, they pivoted to Yotto, which was a terrible Python based build too. When that failed they finally made Mbed Studio which was based on Theia (same as Arduino is now) but by then it was too late.
I think they also lacked an obvious "start with this" board like the Arduino Duo.
I think if they have blessed one of the Neutrino boards (which were incredibly cheap and powerful compared to Arduino) with their branding, and switched to Theia like 5 years earlier they might have had a chance.
Real shame because it really was a far superior software system.
Companies like Adafruit and Sparkfun sell dozens of tailor-made dev board variants, and their I2C module system allows you to mix & match a whole bunch of peripherals.
The code? A handful of lines of Python, which you can drag&drop onto it like it's a flash drive. Or use a browser-based IDE if you want one-click library install and serial logging.
Arduino's IDE was groundbreaking in 2010, but these days there are easier (and cheaper!) alternatives for beginning hobbyists, and better alternatives for power users.
I plug the USB in and its the same as an Arudino, can even use Arduino IDE, but I prefer VS Code with the PlatformIo extension. You can even use the Arduino Library (#import <Arduino.h>
And a ESP32C board with wifi/bluetooth is like $8 https://www.amazon.com/Seeed-Studio-XIAO-ESP32C3-Microcontro... (and thats from amazon, on alibaba its like couple bucks if that)
As a side note, you can power this with your IPhone's USB C which was surprisingly cool.
The only thing is to add the ESP32 module on the addons since it doesn't come enabled by default. Arduino isn't good for projects with more than 5 source code files, it is an awful IDE beyond the basic things you can pack on a single source code file.
Always had so many difficulties handling the IDE defects, basically it can crash when starting and every now and then will just refuse to upload the firmware. The other part are libraries, really difficult to setup all the needed libraries for larger code bases.
On that sense, Visual Code with PlatformIO went far beyond. Just open the project there and the libraries are taken care. The connection to boards is more robust. I'm not so sure how to feel with this sale to Qualcomm, it just feels that it is going there to die.
Quite the difference from the early days where Arduino had such energy and the tools would bring almost anyone into microntrollers with such ease.
And, worst case, they could take it all to IntelliJ or other IDE vendors and quickly spin out an Arduino-branded IDE that isn't raw sewage.
For me, VS code always felt like a "jack of all trades and master of none". C/C++ are strongly typed languages, they aren't different from Java in that regard and yet it is so time consuming to navigate code, see if the syntax is correct and so forth. Really annoying to only know if the code is compiling correctly after pressing the compile button and wait about 30 seconds.
These are things that in the Java world nobody really thinks about because the IDE does a lot of the heavy effort in the background, yet in VS code or C++ it really feels like going back to 2005. For Javascript gets even worse on VS code whenever one is not using NPM. Needs reload the browser to check the console and see if things are working as expected. Good luck trying to find functions somewhere in the codebase without manual text search.
It is not my intention to shade any of those languages nor IDE, I just honestly wish that the IDE for those languages was as powerful as the ones in Java and C#. Arduino had the opportunity to do that since they are tightly committed to C/C++ and control everything on the build process but their goal was always more focused on education level than a more professional development. Let's see if with Qualcomm this is now changing into a tighter IDE+language integration.
And the problem I have is that ESP32s aren't much more difficult to set up nowadays, are wildly cheaper, and I'm soso excited to start messing around with ESP-NOW which I don't think Arduino has? But having like 10 ESP32s for messing around freely is more valuable than the cloud thing for me. And there are some super fun projects for ESP32 also like the Cheap Yellow Display thing. I ordered what I thought was one display, except it was 3, and I thought I would have to provide my own ESP32s but nope, they come with them. And these three CYDs were cheaper than a single Arduino it's actually crazy.
That yellow display is pretty good. I've built a tiny operating system for it, it is an unbelievable hardware for the cost of the material.
Sure, to you and me this may seem trivial, you paste the URL into the prefs, but there are people who will get stumped by this and with an Arduino there is one less step you can forget, not know about or do wrong.
As someone who teaches those things at an University level I can assure you that does make a difference for at least 50% of my students if I let them try to do this unguided.
But PlatformIo with VSCode has it and was extremely easy to setup.
And that's like, I think installing VSCode itself can be more scary, so...
Would I have been able to learn assembly with ESP32? Probably not. You couldn't even find proper manuals for ESP8266 back in the day because they either didn't exist, weren't in English or weren't released to the general public...
Lots of people don't program.
More people don't know how to program than do know how to program.
In that way, just because I can't imagine it being hard, doesn't mean I understand everything there is to understand.
This creates a gap and opportunity for products to make technology more approachable for the majority, instead of the minority (programmers).
Making things accessible to more people instead of less people seems to increasingly be the way.
Cathy Woods says we are all programmers now, so this shouldn't be a problem anymore.
Besides I don't get this argument considering you're setting up an arduino/esp32 to program/learn to program a microcontroller...
How so? All of that is abstracted away from the users just like it is for Arduinos. In fact you can use the Arduino IDE to develop for most ESP32 chips.
If anything Arduino is holding back everyone with their horrible IDE. Their Board and Library managers are painfully slow and having no way to store configuration with your sketch means that you're taking a screenshot of a drop down menu if you have to make any changes.
Eventually people want to write their own libraries to make their code more manageable and the Arduino IDE makes it difficult for someone who knows what they're doing.
> But I used an Arduino, with 5V tolerant outputs, to light up Halloween costumes for years.
I have yet to encounter a piece of hardware that doesn't respect 3.3v as signal high. All of the neopixel variant's data pins work off 3.3v and most people have moved on to 12v and even 24v for larger projects while still raw dogging 3.3v on the data pin without issue.
Arduino's insistence on 5v logic levels is for maintaining backward compatibility which is honestly unnecessary.
You no longer have to break your back going from zero to blinking an LED. I remember when I first got into espressif chips and it was a right pita back then. But no more!
Personally I'm a fan of PlatformIO because its not just because of the wide selection of platforms it supports and that it uses VSCode which is my IDE of choice.
The Arduino IDE is awesome for an extremely quick setup time. You can very easily download libraries and add them to your project, you don't have to create a blank source file, you just have to fill in setup() and loop(). The Arduino IDE makes it very easy to set up a new board and download code to it.
Much of this also applies to the Arduino IDE with and ESP32, but what I really appreciate about the whole Arduino ecosystem is if you want to do something really simple, like say, activate a servo when some sensor reaches a certain value, you literally only have to type 5-6 lines of code. You're not messing around with SDKs and Makefiles and git cloning repositories etc etc etc. You can get kits for $70 that have an Arduino clone, and a bunch of different sensors, servos, steppers, etc. It's absolutely fantastic for teaching basic programming and electronics.
Arduino is just a familiar name with a long (~20 year!) history. There's a plethora of pre-existing projects that a person with no prior programming or electronics experience can implement easily to get their feet wet.
Some manner of ESP32 (or STM or MSP or RP2...) may be a good choice for a project for someone with some experience, but if you put a reasonably-motivated person in a room with a computer and an Arduino starter kit then they'll successfully be building simple things in no time.
It remains a friendly place to start doing stuff, and that was always the primary intent.
Another other way is a ~$100 Arduino starter kit. It includes a printed instruction book and enough useful parts to sit down and begin doing stuff immediately. Anyone with a sufficiently-large pocketbook can buy it for themselves (or for someone else).
One of these things is like buying individual Lego bricks, or maybe lumber and fasteners from the hardware store, with a specific goal in mind. It's creative by necessity, and for those who know how to get where they're going then it's really quite lovely to have marketplaces like AliExpress and Ace Hardware available to satisfy our whims.
The other is more like a buying a packaged Lego kit or Meccano or an erector set that includes instructions for building several different things using the included parts. If a person (including a child) doesn't yet have any idea how to get started, then this can help them get the clues they need to go further with building other things.
---
I could buy a Chinese D1 mini dev board and a bag of assorted resistors, LEDs, transistors, and a breadboard and put it all in a nice box and give it to a kid, but I expect that they'll have a hard time figuring out what comes next. ["Now just draw the rest of the owl."]
Or, I could buy an packaged Arduino starter kit for a kid and have a reasonable expectation that they'll soon be telling me all about the neat -- if simple -- stuff they've done with it. They might not even realize the things they've learned along the way, but it'll stick with them well-enough if they want it to. And then they can move on to using VS Code with PlatformIO and start hammering out RP2040 PIO assembler when that time comes. If that's something they choose to be interested in, then they'll have a good foundation for the independent projects that may come later.
The whole is sometimes greater than the sum of its parts.
Arduino has so little presence in production devices and is largely an enthusiast and hobbyist product. To be clear, this is good! Having well-supported high-quality enthusiast products is awesome.
But it just doesn't... seem to overlap with the bulk of Qualcomm's business, which is large-scale silicon sales to consumer and industrial clients.
Is it going to happen? I don't know. But ollama on an SBC is a sandbox I'd play in.
1. Lack of 5V tolerant pins. Beginners may or may not be aware of the possibility of destroying the device or the need to level-shift signals.
2. Tooling may not work out of the box. As of today the tooling step boils down to pasting a URL into a field in the preferences, but that is something you need to know. You need to select the right uploading options which are much more complex than with arduino type devices.
3. IMO less clear naming of different dev boards, thus also harder to find docs.
4. Examples may not work out of the box, simple Arduino examples may fail with hard to debug issues (for beginners) where they don't know whether it is a hardware issue, wrong board/uploader setup or a pinout issue (e.g. if the onboard LED pin differs).
These are all examples of issues students had when they used the ESP32 boards without my guidance, so not just my opinion or a theory. And as I said none of these are dealbreakers, but depending on the patience, stress levels, perceived skill etc. of the student this might make me recommend an Arduino over an ESP32.
The lack of features (notably Wifi on our boards) and somewhat larger size are benefits for us.
My hope and wish is Arduino sincerely remains accessible as it's always been and not solely drift into B2B or enterprise spaces.
There is a lot of chip building and delivery capacity being aligned this year.
It's like saying AMD Cpu is so much better, why do you need Linux.