Notifications
Clear all

what ecosytem should I move to now?


Christine86
(@christine86)
Eminent Member
Joined: 1 year ago
Posts: 34
Topic starter  

Hi all,

I've been learning Arduino, for a year or so, & wanted to perhaps move on to something a little more modern & faster.

My problem is to move to what? I had assumed this would be straight forward, to an ESP32. I've even spent money collecting various boards & peripherals, with the intention to beginning to play around with this.

But now, the #Pico has landed, & left me in a quandary; do I ditch that stuff, & go straight to the pico, or does the ESP32 still have some advantage over the newcomer.

REALLY interested in the opinions of those who might have experience with one or both oif these boards. i don't want to spend more of my already minimal spare time making the wrong decision!

Thnx,
Christine


Quote
MadMisha
(@madmisha)
Reputable Member
Joined: 2 years ago
Posts: 319
 

To be honest, I think you'd be happy either way. I am more of a fan of the ESP32 so I am completely biased. But, ESP32 does have a larger Flash memory, faster clock speed, more SPI, more ADC, more GPIO, touch sensor, RTC memory, Bluetooth and wifi. It will also be very familiar to program as the normal Arduinos but with a few extra things(Sometimes you need a version of a particular library that is made for it to work).

 

You can use MicroPython either one if you wanted to.

 

Here is a comparison.

 

Since the price is so cheap, having a pair of both is not unreasonable.

 

I will note that the ESP32 is sometimes a pain to work with on a standard breadboard(I guess this might depend on what version you have). The Pico is slightly thinner so you don't need to sneak a wire underneath to access the pins on one side(Dupont wires are impossible on that side).


ReplyQuote
Larry Manson
(@larry-manson)
Eminent Member
Joined: 3 months ago
Posts: 22
 

 

 

Unless I am mistaken this comparison, https://www.iottrends.tech/blog/raspberry-pi-pico-vs-esp-32/ mistakes clock frequency on both parts as KHz rather than MHz. This makes me wonder what else they missed.

It would be good to see multiple benchmarks where equivalent programs were run on both parts/systems;  the resulting time to execute and memory size used would be more telling than the pure memory size available and clock speeds.

Raw numbers as given hide what inefficiencies might be in time to complete a given instruction and the memory space required for the particular instruction. This is further confused by the efficiency of the compilers for the different processors.

I am currently experimenting with the Arduino Nano RP2040 Connect,  which in many regards is overkill and way too expensive for what I need. As I use Arduino's IDE, I ponder whether there is a microcomputer core sitting in the RP chip that is unused? If so as I suspect will Arduino find a way to unlock this to their development environment. 

 

 


ReplyQuote
MadMisha
(@madmisha)
Reputable Member
Joined: 2 years ago
Posts: 319
 

@larry-manson

All the numbers look correct though except for that simple typo. More importantly, I think the conclusion is something most people interested in these kind of things would agree with. If you are new, Pico is a good choice but if you have the knowledge base and you want to do more complicated things(looking at the projects posted by @christine86 this looks to be the case here), ESP32 is a better choice. IO and ADC is easily verifiable and is correct. Everything listed looks to be correct for ESP32. Pico looks correct but I don't have those burned into my memory yet. Raspberry Pi is not as open about it. I'm a little disappointed in their website for not listing these things.

 

Posted by: @larry-manson

Raw numbers as given hide what inefficiencies might be in time to complete a given instruction and the memory space required for the particular instruction. This is further confused by the efficiency of the compilers for the different processors.

I think the raw numbers is a big enough difference for that not to matter. But I could be wrong.

The ESP has been around for a lot longer and the support base is much larger. I would bet the ESP compiler is about as efficient as it will get. The Pico might take some time to get to that level. We saw the slow rollout they did. I believe their team is much smaller.

 

Posted by: @larry-manson

It would be good to see multiple benchmarks where equivalent programs were run on both parts/systems;  the resulting time to execute and memory size used would be more telling than the pure memory size available and clock speeds.

This is a good point. I have both but what would be the requirements? I could time both to see how long it does a particular process X number of times. I do not have a data logger though.

 

I think clock speeds are fairly straight forward. They both have dual core and one can do more in the same amount of time. But we could test that though.


ReplyQuote
Christine86
(@christine86)
Eminent Member
Joined: 1 year ago
Posts: 34
Topic starter  

@larry-manson &@MadMisha

Thank you both for your replies. I program in C++, have done so since i learned it at university. I like the Arduino IDE, seems a better way to get all the libraries to play together.

I know the ESP32 appears to work with the Arduino iDE, not sure about the Pico though?

I think the Arduino Nano RP2040 Connect is out of my price range for the projects i play around with, so I'm still left thinking my choices binary.

Thanks for the input, seems i have more homework to undertake

Christine


ReplyQuote
byron
(@byron)
Honorable Member
Joined: 2 years ago
Posts: 548
 

@christine86

So many nice microcontroller board these days it is quite hard to choose. Both the boards you mention can be programmed in C++ via the Arduino programming environment (or indeed with the Visual Studio Code environment amount others. Both boards can also be programmed in micropython should you wish. Both boards have dual cores and can also run with FreeRTOS if one wishes.

The main difference between the 2 boards is obviously that the ESP32 has wifi and the rpi pico does not (thought it can easily be added), and the rpi pico has a programmable io separate from the cpu which is a unique feature. As this PIO is programmed in assembler I sort of dismissed it as being of interest, but some nice youtube videos of late have shown its all a lot easier that I thought it would be.

You mention your desire for a more modern and faster microcontroller than the Arduino (uno ?). So faster these boards will certainly be, but modern? Well both boards have dual cores to play with multiprocessing and the pico has Programmable IO.  But, at the end of the day you still have a microprocessor board that is connected to 'things' through gpio pins. Both boards can be connected to a similar range of sensors and peripherals. Your C++ code will not look much different.

I have a few plans as to what I want to play with over the next year or so when I get some other non electronics projects out the way. A couple of days ago I did a little exercise in considering what boards to use for various projects. ESP32 featured a lot for ease of having on board wifi ready to run, the rpi pico featured for some subsidiary boards on various robotics endeavours (along with RPI SBC'c). The Teensy 4 featured where I deemed I might have need to the processing speed and the cricket board (ESP 8266 based) for its really deep sleep capabilities for battery powered projects. The rpi pico also featured because I wanted to have a go at this Programable IO stuff, though to what end I do not know. 🤫 

So I conclude that theres no wrong decision between the two boards, your code logic for either board will be much the same. And if you went for, say the pico, only to find you subsequently wanted to have some wifi, then its only another few $ for an ESP32 board.  A final though is that the ESP32 board can be a bit more expensive for a quality board like the Tiny Pico ESP32 board from the unexpected maker, and some of the cheaper ESP32 boards may be a bit variable in quality (from what I've read though I've not experience any problems myself with some cheapo boards I have, though I have not really stressed them yet 😎). 


ReplyQuote
DaveE
(@davee)
Estimable Member
Joined: 4 months ago
Posts: 137
 

Hi @christine86,

   I sympathise with your question and think you have received some excellent discussion, which I trust will be useful.

  However, a direct answer requires knowledge of the 'problem' you would like to solve. And this 'problem' is not just the 'basic aim' of a project, but also the constraints and other factors that must be taken into consideration. Constraints typically include cost, safety, power consumption and dissipation, etc, as well as 'job to be done' requirements.

In the early days of microprocessors (say 1975-1980, maybe to 1985), there were only a handful of different processors available, so the choices were on fairly simple basis like processing speed, memory addressing range, etc. These microprocessors only ran the program ... they needed a separate peripheral chip to operate an LED or interface to a switch. So the choices of processing 'core' were relatively few, and most 'real' projects concentrating on adding peripheral interfaces, often requiring several cards of chips.

However, the situation now is that microcontrollers incorporate a vast array of peripherals on-chip. And others, such as the ESP 32, sell as small modules with a number of devices already packaged to perform a certain range of functions. If your 'need' or 'application' fits one of these 'prepackaged' devices, then that is obviously the first direction to look for an answer. Whilst, there are a fair number of different 'board' level products like R-Pis, Arduinos, ESP 32s, and so on, that quantity is dwarfed by the number of microcontrollers produced by the usual suspects like Microchip, TI, ST, etc. The number of different products is partly because of competitors designing 'better mousetraps', but mainly because the more specialised products do 'one-thing' very well, but are poor to useless at all of the other countless applications.

So whilst it is laudable to try to become an expert in a particular device or family of devices, there is no single device or family which is universally applicable or universally the 'best'.

However, there is also a brighter side. Whilst, each individual device or family will have a few 'personal quirks' that are unique, the majority will be based on the same principles, and often have a high degree of compatibility, so any skills and experience with one is often highly transferable to a competitive or even almost unrelated device or family. Just be ready to read some very long data sheets, etc. when you transfer!

I recommend you start by thinking of a problem or application you want to address. Then make a list of the requirements, etc. and look for a solution.

You may feel you are not yet ready for that .. then by all means play with the stuff you already have. By all means start by following one of the excellent videos by Bill or others if it helps to break the ice,  but don't just stop there.  Figure out how it works, how to fix it when it doesn't play nicely, and so on. Systems like Arduino enable people to build things very quickly that (sometimes?) actually work, but they also hide 99% of the detail. And you need to understand that detail if you do not want to be constrained to the design environment's smplifications. You will gain experience and confidence that wil put you in a much stronger position for a more adventurous project.

And of course,keep asking questions!

Best wishes and good luck!! 


ReplyQuote