How to move up from Arduino?
#6484
I've got a lot of experience with doing hw things with stuff like Arduinos, but this thing seems like hobby level equipment for me. I am building some "proffesional", embedded stuff like an egg sorter (a machine which sorts eggs by weight class, built for a farmer I know), but making it work on an Arduino feels somewhat.. unproffesional? Arduino is/feels like more of a prototyping platform than a production platform.

I've used mainly ATmega386Ps with Arduino bootloaders and Arduino IDE, I've also used ESP32s and ESP8266, but both via Arduino-like bindings and in Arduino IDE itself, mostly because lazy I was on a strict deadline then and decided not to experiment with stuff like ESP-IDF.
I've also tried to use PlatformIO with VSCode, and while using it was way more comfortable than Arduino IDE, it was problematic, it had issues with not finding libraries, and also messed up the python path in the editor.

I was thinking about trying to use just plain uCs, like ATmegas, STMs (I've ordered one but haven't played with it yet), or ESPs with their respective environments, but I don't know much about their ecosystems. Are there as many libraries as for Arduino-like (Arduino.h) environments? What about IDEs?

Or is using Arduinos a good place to stay in?
#6497
I guess it depends on who the thing your making is for. IMO, arduinos are perfectly fine for most things unless you need more horsepower for like, lots of signal processing or for memory intensive tasks. Tons of great libraries are available so that you don't have to spend valuable time making boilerplate, which is a big plus. Also, using somebody's library means there will, statistically, be fewer bugs because there are much higher chances that it has been tested pretty extensively by a lot of people. Like you mentioned, its also a perfectly good idea to use the same atmega mcu that the arduino uses and embed it into some circuit that you're making. That way, you can just prototype with the same arduino and it keeps the costs down since atmega mcus are only a few cents iirc.

I haven't messed with any arm mcus or esps so I can't really comment on their ecosystems. Microchip PICs are all that I use now. but I wouldn't really recommend it over atmel mcus if you know atmel stuff and have experience with it.

As for libraries, I'd imagine since they're mostly written in C or C++, they're decently portable (with a small amount of work in the worst case). I'd just be worried about the few that use asm or specific interrupts that'd make porting difficult. Most of your regular protocol stuff (like i2c and others) most always has a library available on the vast majority of mcus.

If you don't want to use the arduino IDE, atmel studio exists which iirc supports arduino with a few steps.

I'd imagine that arduino's have the most amount of libraries available out of all other platforms that require no porting or tweaking, so staying close to that ecosystem is perfectly fine.


I'm far from a professional, but making things for people that won't look in the box so long as it works isn't something to make harder for yourself with pcb design and more code than necessary. It's really only necessary to worry about how it appears once you start mass producing it to keep the costs low. IMO, embedded hardware and software is really fun, so if you'd enjoy a design challenge with a custom pcb and embedded mcu, go ahead and make it :)
https://vertesine.com/0x3F/sig.png
Disable ipv6 and become one with the ipv4 singularity
#6508
thanks for your response!

I'm definitely going to play with making PCBs, seems like some fun, also I've been influenced by JLCPCB ads and want to try them out, I'll see how they are lmao

Seems like Atmel Studio is out of reach for me, that software is only for Windows and I use Linux btw. I just noticed the "Use external editor" option in Arduino IDE so I think I might end up using that with VSCode.

Also, I definitely would recommend playing with ESPs, they have built-in WiFi so they are pretty nice for playing with home automation/IoT, or at least for controlling them remotely. You can use raw sockets and build some custom APIs upon that, you can propably use them with IFTTT webhooks, and there is at least a library for using them with Apple IoT stuff, which I have used with a friend for a garage door opener (I don't know about any other ecosystems like Google Home since I haven't used any)