Esp32 'professional' approach

Thread Starter

Joe Stavitsky

Joined Apr 5, 2020
109
I've been looking at some books on esp32, and they all approach from either Arduino IDE or something like MicroPython. Neither of these strike me as very professional. It seems obvious that anything like MicroPython is going to be slower than compiled C/C++, and Arduino seems to be more for 'hobbyists' than professionals. Meaning, it seems like the 'professional' approach would be to use the cli tool chain provided by the manufacturer. Is there any book that uses a 'professional' approach? Or do people actually use Arduino in professional environments?

Many thanks in advance

Joe
 

Ya’akov

Joined Jan 27, 2019
8,164
Could you explain the benefits you are looking to derive from a different toolchain? “Professional” is more poetic than scientific. It could mean a lot of things.

Concerning MicroPython, it certainly has more overhead than a strictly compiled language but that it will be “slower” doesn’t mean much unless you have done some benchmarks that indicate it has a practical effect on whatever projects you might want to do.

For the ESP32, you can use Espressif’s SDK: https://www.espressif.com/en/products/software/esp-sdk/overview

It has libraries, and works with GCC. But of course, then you have to deal with peripherals where you may have to write your own libraries while the Arduino environment has a very large and active community of people writing libraries for new and old hardware.
 

Papabravo

Joined Feb 24, 2006
20,394
A tool is a tool. If it works for a particular purpose you use it. Even though though I'm not a professional carpenter I certainly have access to a wide range of tools that may or may not be used by professional carpenters. You're free to use anything that is available.
 

Thread Starter

Joe Stavitsky

Joined Apr 5, 2020
109
Could you explain the benefits you are looking to derive from a different toolchain? “Professional” is more poetic than scientific. It could mean a lot of things.

My concern is simply, either an overabundance of Arduino experience is going to be viewed negatively in the hiring process, or if I get a job doing these things I won't be able to use Arduino software or transfer my skills to whatever they're working with. If none of these are the case I'm more than happy to keep using Arduino going forward.
 

Papabravo

Joined Feb 24, 2006
20,394
Could you explain the benefits you are looking to derive from a different toolchain? “Professional” is more poetic than scientific. It could mean a lot of things.

My concern is simply, either an overabundance of Arduino experience is going to be viewed negatively in the hiring process, or if I get a job doing these things I won't be able to use Arduino software or transfer my skills to whatever they're working with. If none of these are the case I'm more than happy to keep using Arduino going forward.
I don't know why you would think that. Have you acquired any information to that effect from people who make those decisions?
 

Ya’akov

Joined Jan 27, 2019
8,164
Could you explain the benefits you are looking to derive from a different toolchain? “Professional” is more poetic than scientific. It could mean a lot of things.

My concern is simply, either an overabundance of Arduino experience is going to be viewed negatively in the hiring process, or if I get a job doing these things I won't be able to use Arduino software or transfer my skills to whatever they're working with. If none of these are the case I'm more than happy to keep using Arduino going forward.
I think you can overcome this by using the ”professional” toolchain when it is needed, and focusing on best practices when using the Arduino IDE.

That is, be rigorous with version control, write clean, readable, well commented code. Manage dependencies carefully—don’t use other people’s libraries when a little of your own code that you have complete control of will do as well.

In other words, use the Arduino IDE “professionally”. While you can use the Espressif SDK and its toolchain, unless you need ot do something that is timing critical or to take full advantage of both cores, or something where it is a real benefit, it won’t affect the quality of the final product as much as the proper application of the tools.

Another thing you need to consider is your target employment market. Look into which tools the companies you would most like to work for are using, get experience with those.

You can’t optimize a solution without a well thought out specification of the problem. So you have to specify one or more particular problems you are trying to solve here. Hence, researching the particular market you are targeting, there isn‘t a general case to solve for.

One more thing, beware premature optimization. While it is really good to anticipate possible problems, attempting to eliminate them before you have confirmed their existence generally causes other problems that you haven’t anticipated.
 

Thread Starter

Joe Stavitsky

Joined Apr 5, 2020
109
Look into which tools the companies you would most like to work for are using, get experience with those.

How do people generally go about this? Is it simply by looking at requirements for listed positions?

One more thing, beware premature optimization.

Always good advice. However in this specific case I'd prefer to make best use of my time by combining projects I consider useful with tools that employers consider attractive.

For reference, my father did over 30 years in Financial IT, but he wasn't always the best 'mentor'. So I know quite a bit about coding but not so much about getting paid for it :).
 

Ya’akov

Joined Jan 27, 2019
8,164
Look into which tools the companies you would most like to work for are using, get experience with those.

How do people generally go about this? Is it simply by looking at requirements for listed positions?

One more thing, beware premature optimization.

Always good advice. However in this specific case I'd prefer to make best use of my time by combining projects I consider useful with tools that employers consider attractive.

For reference, my father did over 30 years in Financial IT, but he wasn't always the best 'mentor'. So I know quite a bit about coding but not so much about getting paid for it :).
Were I in your position I would do some "detective work" and actually find people working for those companies and talk to them directly. LinkedIn can be a good resource in some cases. Large company websites often have staff bio information.

Literally email and/or call them and explain you are trying to make sure you are technically prepared and could use some advice. Some people won't be interested in helping, others will be happy to talk and help, some could even become friends or mentors.

In any case, go to the source, which is the people actually doing the work. They know what is really going on and how it is different from things like PDs (Position Descriptions), and what they do that might not be officially done, etc.

It is also important to know what to say and do in an interview, but being prepared to actually do the work is key. It can also help a lot if a company's hiring process includes interviews by potential coworkers.

Through my career I "made" my own jobs by deciding where I wanted to work and finding a way in. This is part of that.
 

Surfer1

Joined Mar 6, 2021
3
Look around, look at what surrounds you,
look at the equipment in your daily life,
your phone that runs on arduino?
esp32 have low cost wifi module with ready-to-use command library,
but your laptop have similar wifi chip with other settings.

if everyone was looking for only selfish interest in the study of microcontrollers, now the technology would have developed much worse.

The basic idea of Arduino can introduce you to the basics of electronics, how bytes move, or how work logical one and zero, comparator or ADC work, but there are many limitations in the platform shell itself, in fact there is no direct work with timers and other things, that are in the same chip ATmega328 with Atmel Studio,

At its core, the basic Arduino shell can work with PIC32, Atmel, STM32, or TI, esp32 chips, but this will not work directly, but through the Arduino shell and libraries.

And this is a very strange approach to learning,
why should I teach how to work with stm32 platform, because I won’t be able to transfer my skills to Texas Instruments platform?
 
Last edited:

Papabravo

Joined Feb 24, 2006
20,394
Look around, look at what surrounds you,
look at the equipment in your daily life,
your phone that runs on arduino?
esp32 have low cost wifi module,
but your laptop have similar wifi chip with other settings.

if everyone was looking for only selfish interest in the study of microcontrollers, now the technology would have developed much worse.

The basic idea of Arduino can introduce you to the basics of electronics, how bytes move, or how work logical one and zero, comparator or ADC work, but there are many limitations in the platform shell itself, in fact there is no direct work with timers and other things, that are in the same chip ATmega328 with Atmel Studio,

At its core, the basic Arduino shell can work with PIC32, Atmel, STM32, or TI, esp32 chips, but this will not work directly, but through the Arduino shell and libraries.

And this is a very strange approach to learning,
why should I teach how to work with stm32 platform, because I won’t be able to transfer my skills to Texas Instruments platform?
You seem to have a distorted view of skill transferability. Over a career that spanned half a century, I transferred my skills from FORTRAN and Assembly Language on "Big Iron" to XPL, PL/1, C, and Python on 8-bit, 16-bit, 24 bit, and 32 bit processors. You would be quite surprised to discover that it is pretty much like riding a bicycle.
 

Ya’akov

Joined Jan 27, 2019
8,164
Look around, look at what surrounds you,
look at the equipment in your daily life,
your phone that runs on arduino?
esp32 have low cost wifi module with ready-to-use command library,
but your laptop have similar wifi chip with other settings.

if everyone was looking for only selfish interest in the study of microcontrollers, now the technology would have developed much worse.

The basic idea of Arduino can introduce you to the basics of electronics, how bytes move, or how work logical one and zero, comparator or ADC work, but there are many limitations in the platform shell itself, in fact there is no direct work with timers and other things, that are in the same chip ATmega328 with Atmel Studio,

At its core, the basic Arduino shell can work with PIC32, Atmel, STM32, or TI, esp32 chips, but this will not work directly, but through the Arduino shell and libraries.

And this is a very strange approach to learning,
why should I teach how to work with stm32 platform, because I won’t be able to transfer my skills to Texas Instruments platform?
There are a huge number of commercial projects that use the modules that are made into the development boards supported by the Arduino IDE. There are also many products using the development boards. Yes, mobile phones and other consumer products use different platforms and tool chains but the jobs and opportunities that involve the hardware and software in the Arduino ecosystem are plentiful.

As @Papabravo points out, success in any area of this technology, actually understanding it, will open up opportunities in other areas. Learning new toolchains isn’t prevented by knowing some already, and the foundational skills of being a good programmer or engineer are the same no matter what toolchain you use.

I mentioned above the using the tools in a professional manner is more important than using professional tools, per se. And all of the techniques learned by properly applying the rules and heuristics of professional development are transferable. If you need to learn a particular technology, you will always be behind the curve.
 

boostbuck

Joined Oct 5, 2017
381
...using the tools in a professional manner is more important than using professional tools...
Probably the most important lesson here!

And interesting to note the original post is an example of poor problem specification - a query centred on the appropriateness of particular hardware was actually about career path training.
 
Top