SuperB has launched!

Hey guys I wanted to make sure everyone saw that the SuperB has launched! Check it out let me know if you have any questions https://www.crowdsupply.com/macchina/superb/

1 Like

Awesome! Congrats! And… YES!!! I’ve been waiting for this to happen. Backed, excited

Also… I’m an idiot. Got overly excited this was a replacement main board, not just a comm board. Congrats regardless.

Oh don’t worry, @captain_morgan, we’ve got one of those cooking too! You’ll be one of the first see some beta hardware :slight_smile:

1 Like

All sorts of yay!

(also, I just realized WillC is that Will.)

Hi Guys
Just received my new SuperBs Congrats on the new add on Comms Board Looks Awesome beautiful work as usual. Cant wait to get to working on software to put this to good use & be cable free.
Tony

Yay, just got mine too!

Question, can I use the SparkFun XBee Explorer USB (https://www.sparkfun.com/products/11812) to program it?

I have the recommended Waveshare one from the docs on order, but since I have a few of the SparkFun adaptors on hand, wondering if they would work?

I cannot connect to the SuperB

The SuperB is another beautiful product from Macchina.

I have not been able to program the M2 to SuperB interface with either the ESP32 Flash tool or the Arduino IDE; both fail for different reason. The cable will allow me to program the M2 on all three USB ports of my laptop which runs in Performance mode, so I do not believe the cable, nor the ports are the issue.

I am following the guide at https://docs.macchina.cc/superB/, but it assumes I have an SBee USB Adapter board which I don’t. My SuperB is plugged directly into the M2,.consequently the button sequence for putting it in bootloader mode is not relevant. Do I need to short the EM and 100 pins on the SuperB to accomplish that?

With ESP32 Flash, the programming initializes, but never finishes though I get “test offset” and “case okay” messages in the dialog box for each bin file. It simply sits in “Sync” mode forever.

With the Arduino IDE running with the board set to ESP32 Dev Module, I can compile, but not upload even with the simple modified Blink file. I get the following error messages.

esptool.py v2.6
Serial port COM9
Connecting…_____…
Traceback (most recent call last):
File “esptool.py”, line 2959, in
File “esptool.py”, line 2952, in _main
File “esptool.py”, line 2653, in main
File “esptool.py”, line 460, in connect
File “esptool.py”, line 440, in _connect_attempt
File “esptool.py”, line 379, in sync
File “esptool.py”, line 322, in command
File “esptool.py”, line 285, in write
File “site-packages\serial\serialwin32.py”, line 323, in write
serial.serialutil.SerialTimeoutException: Write timeout
Failed to execute script esptool
An error occurred while uploading the sketch

Answering my own question - the Sparkfun XBee Explorer works great, you just have to short the same pins (labelled RES and DIO11) on this board. There’s also no Boot button on the board, so I have to short the pins, upload the code with the Aduino IDE, unplug the board, remove the short, plug it back in, and then the code runs. A bit clunky but it does work.

@trevithick I don’t know much about the M2, but I assume the code running in it is not forwarding data through to the XBee headers?

You need to load a transport sketch to talk to the ESP32 through the M2.

I really need to reprogram mine and go through the steps again and change the online docs to reflect how to do this…

Thank you SchemaB. I will try it by shorting those pins and hopefully not let any of the smoke out.

Thanks reheadedrod. Is a transport sketch mentioned int he Docs? If so, I missed it and don’t really know what to look for.

We just posted some instructions for loading code on SuperB through M2:

https://docs.macchina.cc/superB/flashing/arduinoM2.html

This is a first draft to get everyone started, so feel free to suggest improvements. This initial example uses the 2 buttons to toggle RESET and IO0 (Boot).

One thing that would be nice would be to avoid needing to modify some of the low level stuff in the Espressif board files, as described in the docs:

Replace “default_reset” with “no_reset” once on line 100 and once on line 101.

Anyone have ideas here?

Lastly, it would ALSO be nice to not even need to press buttons on M2 to put SuperB into programming mode. This code seems to work, but could probably use some optimization:

boolean ressetted = false;
boolean bootted = false;

void setup() {
  pinMode(DS2, OUTPUT);
  pinMode(DS3, OUTPUT);
  pinMode(XBEE_RST, OUTPUT);
  pinMode(XBEE_MULT4, OUTPUT);
  digitalWrite(XBEE_RST, LOW); //LOW = reset
  digitalWrite(XBEE_MULT4, HIGH); //set up for normal boot
  SerialUSB.begin(1000000); //note, SerialUSB ignores baud rate
  Serial.begin(115200); //get serial port initialized before ESP32 comes up
  delay(200); //give the chip some time to get into reset fully
  digitalWrite(XBEE_RST, HIGH); //enable it which will boot to normal mode.
  delay(3000);
}

char rx_byte = 0;

void loop() {
  if (SerialUSB.available() > 0) {
    rx_byte = SerialUSB.read();
    Serial.write(rx_byte);
  }
  if (Serial.available() > 0) {
    rx_byte = Serial.read();
    SerialUSB.write(rx_byte);
  }

  //RTS - seems to stay TRUE during the entire programming process.

  if (SerialUSB.rts() ) {
    digitalWrite(DS3, LOW); //trigger LED
    digitalWrite(XBEE_MULT4, LOW); //go into firmware update boot mode
    bootted = true;
  } else {
    digitalWrite(DS3, HIGH); //turn off LED
    digitalWrite(XBEE_MULT4, HIGH); //go into normal boot mode
  }

  //DTR - seems to stay TRUE during entire programming process.

  if ((SerialUSB.dtr()) && ressetted == false) {   // If first time seeing DTR, Pulse RESET.
    digitalWrite(DS2, LOW); //turn on the LED
    digitalWrite(XBEE_RST, LOW); //and trigger reset
    delay(100);
    digitalWrite(DS2, HIGH); //turn on the LED
    ressetted = true;
  } else {
    digitalWrite(DS2, HIGH); //no led
    digitalWrite(XBEE_RST, HIGH); //no reset
  }

  // Need another trigger that toggles reset once RTS tranistions for LOW to HIGH (Programming is done)

  if (!SerialUSB.rts() && bootted == true) {
    digitalWrite(DS2, LOW); //turn on the LED
    digitalWrite(XBEE_RST, LOW); //and trigger reset
    delay(100);
    digitalWrite(DS2, HIGH); //turn on the LED
    bootted = false;
    ressetted = false;
  }

}

Woohoo Josh! Excellent instructions and photos to explain the process.

I was able to follow along, and get all the way up to pressing the Reset button to scan for WiFi sources. All Serial Monitor text matches your screen shots, but absolutely nothing happens after initiating the scan. I’ve followed the process four times now with the same results.

Now it’s the following day with a fresh start - I noticed the code sample was close, but not quite what I copied and pasted previously, so I copied the correct sketch, uploaded it,and voila, it functions as advertised.

The code I initially copied is from above. The code that works is from the Instruction page you mention in your above post.

I believe the code Josh posted here was something he suggested could work without the buttons. It has been a while since I did mine but seems like I made mine to not need the buttons and instead just responds to the programming.
I had a set back with my time due to my mom being in the hospital for a week and I am playing catchup with my classwork. Once I have my classwork caught up I am going to try and jump back on my setup.

Can SavvyCAN be used over BT/wifi with the SuperB? How easy is it to set up? What about socketCAN?

I do not believe this functionality has been added yet. I was really sick for about 4 months and did not do anything with it myself.