Comment by phoehne

7 days ago

Don't look at just the specs. You also need to look at the board design and programming environment. I've used the ESP32 native tools and they are a lot more complex than Arduino. But I'm an embedded firmware developer, so it's kind of what I expect. But I used an Arduino, with 5V tolerant outputs, to light up Halloween costumes for years. I do it in 1 page of code that's I write in their IDE. I don't have to set up an SDK. And the Arudino API hides all the details I don't care about. Especially if I'm really just slinging solder and wiring something up quick.

What's hard about programming an ESP32?

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.

  • It is basically the same thing, don't understand either why it would harder.

    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.

    • As a complete beginner to hardware stuff, I do find the Arduino Cloud thing to be pretty compelling. Being able to push out updates over the cloud is nice! Buuuut.. once I'm mostly done with a project, there's just no need at all for it anymore. The Arduino I'm using for a receipt printer is just sitting there and now the cloud bit doesn't do anything for me.

      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.

      1 reply →

    • agree. when arduino ide first came out it was great (for the times). and to be fair at that time vscode was not a thing. but it's a big ? why arduino did not just go all in on vscode once it was clear where the market leader in IDE was headed

      7 replies →

  • I got introduced to microcontrollers through the original Arduino board. It took me only a year to switch to bare metal atmega/attiny (zero external components!), and to this day, those are my favourite micros despite all their shortcomings. Theyare extremely well documented, and them being 8-bit with a simple instruction set makes it very easy to learn assembly (or even opcodes). At the same time, they are compatible with 5V logic (and can be abused!) which makes them almost perfect for beginners.

    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...

  • Well which board do you select then? ESP32 boardfiles do not come with the Arduino application per default.

    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.

    • I don't quite remember, but I don't think I installed anything extra for ESP32.

      But PlatformIo with VSCode has it and was extremely easy to setup.

      3 replies →

  • (psa: Arduino IDE 1.x works flawlessly for tons of non-Arduino boards, including Pi Pico, ESP32 devkits, etc. Most Arduino users aren't even able to consider processor implementation specifics, never signed an NDA in life, and don't even know where generated binaries go, so those boards are almost "binary compatible" with each others, all in _very_ positive sense)

  • It's not about whether it's hard for you.

    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.

    • Programming an ESP32 using the arduino ide is no harder than programming an arduino using the arduino ide. The only difference is that you can find an ESP32 for much much cheaper.

    • But there really is no difference in difficulty in setting it up?

      Besides I don't get this argument considering you're setting up an arduino/esp32 to program/learn to program a microcontroller...

    • >> Lots of people don't program.

      Cathy Woods says we are all programmers now, so this shouldn't be a problem anymore.

Trouble is, this kind of trivial throwaway application is all that Arduino is really good for. Because the framework is designed to support thousands of chips, it supports none of them well. Any arduino code you write is easily 5x more terse than any of the native libraries, but it's also 10x slower. If you don't care, you don't care. But if you do care, Arduino is the least appropriate way to make a microcontroller go.

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.

  • > 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.

    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.

    • IMO Mbed was just as easy for hobbyists but had a far better designed API that could support professional work as well. Arduino is just badly designed.

      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.

      2 replies →

  • The pin mapping shenanigans are another annoying footgun with Arduino. Even in native development you're dealing with a physical pin number and the logical assignment (PA5, PA6, etc), but now Arduino maps that all again to an Arduino board pin number, and it's all shuffled to ensure the peripherals are in the right place to enable I2C, ADC, and PWM pins to function as expected.

    • Of course they did that. It's a HAL (hardware abstraction library).

      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.

      2 replies →

    • Same deal exactly for the various ESP32 boards. With the added wrinkle that some of them (like T-Display) have had pins swapped in the doc at various stages.

  • And yet there is clearly a market for easy-to-program MCUs for hobby and educational purposes.

    • I would argue the RP2040/2350 fills that niche. Cheap, available, easy to program, flexible peripherals, fast enough for many projects, good documentation, and good community support.

      6 replies →

  • arduino was supposed to be learning opportunity and training grounds for people who wanted to work in the field in the future, there was small arduino boards (similar to pi pico) for integration with actual projects, but still arduino was for hobbyists and students in the first place

On the other hand, their competitors haven't been sleeping either.

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.

  • This is spot on. Arduino occupies a space that everyone else vacated a long time ago.

    • Good on the Arduino folks for getting acquired, then. They still have a niche and a brand with name recognition, even if that niche might be stable at best, collapsing at worst.

Even if you like the Arduino programming environment (and I do), there seems to be little reason to use Arduino hardware unless it’s for compatibility with other hardware you have? For example, there is a very nice unofficial port of Arduino for the Raspberry Pi Pico. There are also many fine Arduino-compatible single-board computers from Adafruit. The Arduino board form factor seems big and clunky in comparison.

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.

  • There's a wealth of easy projects that a person can get started with using an Arduino.

    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.)

    • Blinking an LED is what you do for "hello world" on every microcontroller board I've tried. The Arduino IDE supports boards from many different manufacturers.

You can program the normal ESP32 Devboards with the Arduino IDE.

  • Yup- ESP32 is absolutely compatible with Arduino.

    There's also great support for CircuitPython and MicroPython, which makes it trivial to program the devices.

> I've used the ESP32 native tools and they are a lot more complex than Arduino.

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.

  • It's not just backward compatibility -- USB as a convenient source of +5V is going to be around for a long time.

I'm an amateur with this stuff and honestly find the ESP experience significantly more pleasant than Arduino. I'm sure there are footguns I haven't encountered, but I get so much more bang for the buck out of random ESP builds + the incredible line of various bundled ESP devices that come with touchscreens, sensors, etc. for incredibly low prices.

I know a million people have replied to you, and while I don't want to be jumping on the dog pile, I just want to say that along with PlatformIO (which automates the setup of ESPIDF and/or Arduino for the ESP, (and it also does it for a ton of other micros)) and Expressif having their own Arduino Core for their chips with integrates into Arduino's IDE, Expressif have also released their own extensions for VSCode and Eclipse that greatly aid the end user in getting ESPIDF setup and configured.)

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.

I use arduino ide to build esp projects. I have not found it much different than the arduino as a beginner, except much cheaper and faster. I like not having to do all the shield stuff. But will admit, it was helpful to start on arduino as its built in pins helped me get going as I tried to avoid soldering and breadboarded everything. That only lasted a short time before I realized I had to solder some things if I wanted to grow the project. I still like the idea of breakout boards for specific things but I usually solder them in now.

You can make the argument that esp32 supports Arduino but you can quickly run into “here be dragons” which sends most people for a loop. Arduino has a fantastic reputation for a very good reason.

I had the same opinion several years ago but today it's just as easy PLUS you have a bonus of WiFi and all this for a fraction of the price.

What do you think about the Arduino professional line? They have industrial PLC equipments and other high end boards etc.

  • Not the OP, but have had some experience with the Arduino Opta around this time twelve months ago (Oct 24) through a professional development course I took at my local university on industrial control systems programming.

    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.

  • Doesn't look bad, but the Arduino name is a serious drawback. It's a brand focusing on DIY tinkering, how are you going to sell that to your boss who only finds a bunch of shady hobbyist stuff when he Googles it?

    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.

    • Military drones maybe? The trend is now on local AI features and they are practically throwaway.

  • Deeply unserious. Arduino put little real thought into what features industrial users would actually find useful. I suspect the main market for their "professional" boards is hobbyists with money to burn.