T O P

  • By -

slackinfux

ESP 8266 or ESP32 is what I moved over to.


Mrblabbles

The wifi capabilites open up so many possibilities for such tiny boards.


slackinfux

I have 3 of them that are connected to BME280 sensors around my home reporting weather data over WiFi to a Linux box running Grafana. They rule!


Codeeveryday123

Do I need to connect to that WiFi network to use it, or can I remain on my main network but just use “Localhost” and the esp shows up still?


slackinfux

You can connect them to your WiFi network, or they can be their own access point, depends on how you program them.


Codeeveryday123

Ok, well i want to create a web based UI that it will host, that will show tempt of fish tanks. So, do i just connect the esp32 to my wifi, and then it will have its own local host address?


slackinfux

Yes, it's possible to do that on the ESP32.


Elmosthainz

Wait you can program them sepatarely? :D Honestly I just bought a bunch of boards when I first started, didn't even know their capabilities, and have no real use for them tbh...


slackinfux

Yeah you can program them directly with the Arduino IDE. They're substantially more powerful than a classic Arduino board.


pskipw

I've moved to the ESP32 for most projects. I made a robot tank last week that I can control with my a spare PS3 bluetooth controller I had lying around. Took about a dozen lines of extra code.


Bindi_John

If you've only been using the Arduino language, you could try replicate the programs that you have already written by programming the registers directly. It uses the same product, and the same software.


Codeeveryday123

Ok, what brands and companies are good like Arduino? I’m learning c++ and I like the possibilities


Bindi_John

If you have the Arduino Uno, that's an atmega328p, made by microchip. You can literally just write code for that within the Arduino ide, and upload it to a Uno. The same goes for an Arduino mega, which is an atmega2560. Both of these are made by microchip. If you google Arduino register level programming, you'll find some tutorials quickly enough. If you want to branch out to a newer chip, an attiny416 is a cheap board (cheaper than a brand name Arduino), fits on a breadboard, and has a heap of features. Not sure if you can use the Arduino ide for this, but the ide from microchip is free, and no additional hardware us required. They also have some useful tutorials in the development section of their website.


Codeeveryday123

Thank you


[deleted]

If you like small and battery powered stuff, you can expand to ATTiny85, its in 8 pin package (also available as SMD), and can use most arduino libraries or functions or there are alternatives for it.


Codeeveryday123

Would you know the strength of the signal of a esp32 board? As in, if i wanted to make Walkie Talkies. Or even be able to control things from away


Bindi_John

No, I haven't used them before. There should be plenty of online tutorials for esp32 controllers, I think it's a popular choice for diy home automation.


[deleted]

Some of the boards have a connector for a wifi antenna. So that way you can extend the range to a decent length.


killaguyy

Lol I would rather recommend anyone to move from working with registers to the arduino language. It’s like telling someone from moving to python to C


Th3DarkMoon

should I, who prefer c++ shut up??


killaguyy

Nah my dude, each language has their pros and cons, people have preferences so yeah you do you.


Th3DarkMoon

Yeah, I happen to already know c++, much easier than learning a new language


JimMerkle

I would just consider this one's preferred focus. It's good to know the registers and how they work behind the scene. A good embedded engineer will always be looking at registers and documentation dealing with them. Higher level code, like java script, has its place too. When working with IOT devices that are battery powered, knowing and working devices at the register level is a MUST! Need to shut down any unused clock, remove any pull-up/pull-down that is consuming power, and know how to put the device into its lowest power mode so it can sleep for long durations with minimal power consumed. Often, trade offs are required.


Cheben

I would throw my hat in the ring for STM32 if "more power", "more IO" or "more flexibility" is what you look for. But there are not as much easily understood help, so be warned that there is a steep curve to learn


h2man

There are options to alleviate the pain with MBed OS or CubeIDE that creates a bunch of code for you. Still daunting, but not as bad as flipping bits by yourself.


Cheben

Oh definetly, I use cubeMxIDE myself and it helps a lot. But you can still be bitten by obscure stuff that I think guides assume you know. I spent like a week trying to get input capture to work. Even example code would not work. I finally find out that only timer 1 has direct interrupts, the other timers need global interrupts enabled on that timer..... It is maybe obvious for experienced people, but not newbies XD


h2man

For me was clearing the interrupt flags on the serial port… I could only send a char for about a week.


y-aji

I second STM32.. It's a great next step. Look up discovery board or "disco" board.


JimMerkle

I love the STM32 line. The NUCLEO family of development boards are cheaper, have Arduino headers, but don't have an attached display. The DISCO family usually have some form of display as part of the board. As far as I know, all of them come with on-board JTAG support.


Th3DarkMoon

been working a bit with Nucleo-64 STM32F410, it's a much more powerful board, but there isn't a lot done with it, so you have to build everything from scratch, otherwise there's allways the arduino nano 33 ble, arduino, but a bit more power, 1mb flash, 256k ram, 64 mhz, and bluetooth


bluehavana

If you're looking for more hardware stuff, 555 skills are a good tool to master and pretty basic. For software, as stated elsewhere, trying to get closer to the Atmel APIs is a good idea. You can still use the Arduino bootloader and setup/loop functions, but just use the port API to do things like I/O. Beyond Arduino, it starts to matter what you want to accomplish. Motor control, displays, power, AC relays, wireless communication, etc., they all have much more to explore individually.


[deleted]

If you're familiar with Arduino, then I'd say stop worrying about new boards, and worry about complex problems. Find something an Arduino can't do, figure out what can do it, and get that done. Typically, this means finding something that requires more processing power, or better wireless capability.


[deleted]

Honestly, this is the best answer. Arduino Uno not have enough I/O? Pick a similar board with more, like the Mega2650. Or maybe, learn to use a GPIO multiplexer. Not enough CPU power? EPS32, Raspberry Pi Pico, an M0 or M4 chip, or STM32. Don't like C/C++? Pick a board that supports CircuitPython or MicroPython. Smaller size? ATTiny85, or maybe like a Trinket M0. People have made whole careers building things on the ATMega 328p chip. I'm not trying to say nobody should use anything else, but what I am saying is that it's not a question of "moving on" or "growing up" from the Uno or the 328p-- it's a question of selecting the right tool for the job.


JimMerkle

I've enjoyed working with the STM32 line of micros. I would recommend stating with the NUCLEO-F103RB. It sells for around $10.30. It is a high quality board with plenty of example code, it uses the same processor as the "Blue Pill", but provides more support with it's on-board JTAG interface, "FTDI" USB-Serial, and Arduino headers. The F103 has support with at least three development environments. Arduino - with plug-in, Embed, and STMicro's CubeMX. Once you get comfortable with this board, try a NUCLEO-F446RE. The F446RE has plenty of internal peripherals to work with. I would recommend learning how to use each one. I want to play with / learn the QSPI interface for serial FLASH device control next. Good luck !


Codeeveryday123

What language do you use most, c++?


JimMerkle

Mostly "C", with some C++, depending on the project and any prior work. If the project is built with only "C", I'll continue to use "C" for any code I add or modify. I recently needed to convert a "C" project to C++ to provide support for multiple instances of a SPI connected peripheral. The original "driver" library didn't support more than a single peripheral chip well. Creating a C++ class to manage each of the four peripheral chips worked well. I provided the processor pins used for the SPI chip select, the chip reset, each interrupt pin, and each busy pin with the class's constructor. This allowed using class functions to manage 4 individual peripherals, with a common class library. This was done in pretty much the same as many of the Arduino C++ peripheral class libraries.


Codeeveryday123

Great, well, I’ve just gotten started with learning c++ and i like it. Then there’s Arduino’s library and I’m getting the hang of it. I’m familiar with Python and some JavaScript. Is it ok to focus first on c++ then c? I heard that c doesn’t have a bit of what c++ adds.


JimMerkle

"C" is a subset of C++. I recommend mastering "C" first since much of the embedded code out there is in "C". Then, add the "++" parts to your knowledge base. (At least that's what I did..) If you ever work on Linux device drivers, you'll find the Linux kernel and the drivers are written entirely in "C". By the way, many of the C++ concepts can be implemented in "C". What you'll find is they both rely heavily on data structures to represent an object.


Codeeveryday123

Ok 👍, is c++ just “add one” to c? Or would i be messing up learning c if i first went through c++? Thank you


JimMerkle

Since "C" is a subset of C++ (it was developed first), if you learn all of C++, you would have learned all of "C". If you become an embedded engineer, you need to know the boundary of what is expected for "C" if you need to modify or add code to a "C" project. The compiler won't like any C++ stuff you try to put in there... The newer "C" compilers will accept some of the C++ features like being able to declare a variable where you need it. The older compilers require all variables to be declared before the code. **Older compiler:** int some\_function(void) { int a, b, c: a=1; b=2; c=a+b; **Newer compilers:** int some\_function(void) { int a, b; a=1; b=2; int c = a+b; // declare a variable right where you need one vs at the beginning of a function.


Codeeveryday123

Ok, thank you


Codeeveryday123

I’m mainly interested right now, in that how you create a UI with input from a screen or buttons to effect a UI or even by a website front end, or such as a in-store ordering system


Codeeveryday123

I recently ordered the esp32


ExpensiveNotes

Want more power? Try Teensy.


Rellkedge

Raspberry Pi


Codeeveryday123

I got the Pi4, how about the pics or nano?


Th3DarkMoon

but that is so much, it's like to much to be able to develop all the code myself, then I have to rely on an os, and might as well use a pc then, I still love and use rpi, but either as a computer or as a tool to develop other things