Maslow Home Maslow Community Garden Newsletter

Porting to faster hardware

I ran across this board that packages a ESP-32 in an arduino compatible board

https://www.banggood.com/Arduino-IDE-For-ESP32-Module-WiFiBluetooth-Development-Board-Ethernet-Internet-Wireless-Transceiver-p-1187432.html?p=SR14217383019201611D

I’d like to see a port of the firmware to a board like this (much faster, and in the long run cheaper as we can think of packaging the esp32 on the motor controller board)

If anyone is interested in doing this work, I’ll donate one of these boards to you. Bar and Kirk will get one for free to tinker with.

anyone else want to jump in?

I agree that porting to the ESP32 is a good idea.
This particular board misses some of the crucial signals, though, because it uses the Uno layout instead of the Mega. The pins on the Motor board for Ground, 5V, AUX1-4, INCA1 and INCA2 as well as the pins used for version identity are outside the Uno footprint.
A carrier board that uses the Mega layout and includes a socket for one of the many ESP32 boards might make more sense, and is something I’d like to work on. Which ESP32 board to choose? Anyone?

I found some references that said the ESP32 floating point was much slower than expected. Hard to follow up on the phone but it’s worth checking out.

Fwiw I think a better approach is to avoid the dual MCU board, skip the AVR, and use a single high clock rate MCU. These days that means arm - the cheap stuff is all mobile phone fallout. Lots of choices from the pills, numerous development boards, up to (and past) smoothie parts and clones

i’m not familiar with the ESP but have a look at thisone:
https://learn.sparkfun.com/tutorials/esp32-thing-hookup-guide

This means moving away from the arduino footprint, but allows for more elegant electronics.

A Maslow mainboard with a less bulky brain unit. Not sure if this board also has a shenzen edition. That would make it more affordable for non-US based customers. Nothing can beat China shipping fees.

I’m still undecided if ESP is a good option or not.

EDIT:
PINOUT overview of this thing

I found some references that said the ESP32 floating point was much slower
than expected. Hard to follow up on the phone but it’s worth checking out.

even if it’s much slower than expected, two cores @240MHz are going to be a
single core @16MHz on just about every test :slight_smile:

Fwiw I think a better approach is to avoid the dual MCU board, skip the AVR,
and use a single high clock rate MCU. These days that means arm - the cheap
stuff is all mobile phone fallout. Lots of choices from the pills, numerous
development boards, up to (and past) smoothie parts and clones

the ESP32 is far cheaper than any ARM board, it’s <$10 (and the ESP8266 @160MHz
is <$2)

From the big rock candy mountain, $2.13

@mooselake, do you know whether the STM32 Arduino boards implement the EEPROM library, or something like that. The firmware relies on EEPROM pretty heavily, and it needs to persist through firmware changes as well.
The ESP32 would bring a 4K EEPROM store as well as a separate partition with the SPIFFS file system (couldn’t find the size, around 1M I think). There was discussion about uploading a file to cut from, this might make that possible without additional circuitry.

ahh, I was thinking ARM as in Raspberry Pi and similar ARM boards

If you’re hoping to use wifi to attach to the board rather than USB, then my experience this morning might upset that. Whenever my router is on (on load or not), then it completely kills wifi in my workshop. So a cabled option is a must for me. I’m not even going to try to sort the problem, my wifi to the workshop is from my phone in the house through two wifi extenders to the PC. The router is obviously chucking out much more noise than the extender can handle.
This arrangement is also why I’m very much opposed to cloud based tools. It’s fine if they have an offline mode, but cloud only is killed when my wifi dies. As it did this morning when I wanted to update using Kiri:Moto. I had to cut the old file simply because I couldn’t get to the internet. Local copies also don’t suffer from updates that break everything.

2 Likes

I found a reference that they fake it with one block of the flash, will look further and update. WX predicts some serious rain this weekend, maybe I can pry loose a couple hours and give it a try now the ST-link module’s arrived.

Here’s the ported library list, including a link to the eeprom emulator. I have some reservations (pending research on flash longevity) about how hard you’d want to hammer on this. Also note in the wiki that the microUSB connector can be flaky, which is pretty standard. Just got a GearBest 1.5w mini laser engraver where the connector fell completely off within a couple days (return to China will kill that warranty, asymmetric shipping cost, negotiating with them about a new board)

Some if them have 64k, some have 128k, don’t know what the 5 I got have.

There’s a wiki for the board:

http://wiki.stm32duino.com/index.php?title=Blue_Pill

One possibly significant thing is that eeprom doesn’t wear out, while flash
does. Given that the maslow stores it’s postition as it moves, this may be
signfificant.

I feared for that… The bigger the router the bigger the magnetic waves…

In tha case it would make sense to use an SD card and cut direct from an SD on the machine itself… But then you also need a display and control buttons … Future options?

I really wonder how much noise is picked up on the encoder signal lines with all these magnetic forces at play

I had a look at what the next generation of Arduino is about.

The newer boards, ZERO, PRIMO, TIAN have slightly more powerful calculators on board.

Will maslow firmware be able to run on those without the need to port any software?

Had my hope all up! Sadly, these are all in the Uno form factor, so they don’t provide as many GPIO pins as the Mega does and the Maslow uses. Interesting developments, though.

The ZERO https://store.arduino.cc/genuino-zero has 10 PWM pins and then there are still the inputs This seems to be enough. Though I’m not sure how they are linked to the timers etc…

Then there is also the M0 (seems to be another new one… also 32bit Cortex M0) https://store.arduino.cc/arduino-m0
Thisone has 12 PWM outputs, and the price of €20 isn’t to bad either. This one would be awesome on a Arduino Nano footprint!
there is also a M0 PRO that includes a step-by-step debugger.

Is this one also an arduino?? Can Arduino IDE upload firmware to this, or does it need the IDE from ST? (that doesn’t have a counterpart that runs on Linux…)
This formfactor just makes more sense then the Arduino’s female headers.

how about this little giant? https://www.aliexpress.com/store/product/SAMD21-M0-Mini-32-bit-ARM-Cortex-M0-core-Pins-soldered-Compatible-with-Arduino-Zero-Arduino/1950989_32779698644.html
operating voltage is 3v3

Arm based rather than AVR, but works with the Arduino ide and a lot of the libraries have been ported. No eeprom but it’s simulated with flash. I was hoping to try a longevity test (at $2 it’s not a big sacrifice) but work ate up the last rainy day. It was easier to ignore work before the internet let you do it from home

Would this need actual software rewrite or is it just a matter of configuring the pins?

The $2 pricetag makes this all the better, The lifespan of this chip would not be a my biggest concern.

The 3v3 voltage level is a bit of an annoyance with regard of the L298 drivers.
And i would like to know how sensitive these board are to noise.

I also played with the tought of having the motors and electronics on the sled and use the airflow of the router to add to the cooling of the drivers…

Just saw this… TeensyStep – Fast Stepper Library For Teensy | Hackaday know its with steppers but still awesome :grinning:

2 Likes