[Updates at the end of this article]
At today’s Bay Area Maker Faire I was hopeful that I’d hear some news on the Arduino Star OTTO… I walked away with not just news but a new Star OTTO Light! (At $54 USD was not bad at all either – though that was a slightly discounted Maker Faire price it’s also cheaper due to the reduced complexity of the Light device itself, as described later in this article.)
First, some unboxing photos of the Star OTTO Light:
Note the metal rectangle on the topside – that’s the ESP8266 board. It’s inscribed with the identities of the six LEDs to the left of it… but be careful as the legends are not well-aligned with the corresponding LEDs.
Now for comparison, the handout datasheets for the Star OTTO and the Star OTTO Light:
The big difference between the Star OTTO and the Light version is the Light lacks the 16MB SDRAM, the graphics controller, the camera interface and the audio output. We see the unpopulated BGA pads for the erstwhile SDRAM on the back of the board, and the unpopulated pads for the A/V interface as well.
However, the other specs remain the same: most importantly, the ST Micro STM32F469BI ARM Cortex-M4 MCU, 2MB flash, 384KB SRAM + 128 KB EEPROM, running at 180 MHz, with plenty of digital and analog I/O, etc.
In addition, both boards feature Espressif’s ESP8266 WiFi device.
Like the Arduino Due (and most modern boards out there) this is a 3.3V device – if you have a 5V device to connect to it, be sure to use appropriate level shifters for it!
Getting it to work is pretty easy – install the latest Arduino IDE (1.8.2 or greater… the Arduino.cc one seems to be just as good as the Arduino.org one for this). Then, per the FAQ, add the board package for “Arduino STM32F4 Boards”
There’s lots more info on the Getting Started page for the Star OTTO. I’ll be delving into that more as the week progresses.
though for some reason I can’t get mine to flash over serial. I suspect it’s a driver issue on my end, so I’ll also be configuring for local flash and testing that in the coming days.
I’ve been unable to codeload via serial or Wifi (though I do have WiFi configured correctly). I’d love to know if others are having better luck with that! (It’s working now – see below.)
Also, I’ve reported a security issue with regard to the WiFi mode not persisting across reboots. Once you’ve configured WiFi, be sure to switch the device back to “STA” mode each time you reboot it, until this problem is resolved. Given the design it appears to be necessary (if not ideal) to have the insecure AP mode during initial setup, but beyond that even the Getting Started guide recommends STA-only operation. The fact that setup is insecure and means transmitting WiFi credentials in the clear is a larger problem – a secure WiFi and/or serial-only setup mode would be greatly preferred.
This still refuses to work in Windows, but to ensure it’s not a bad board I went through the pain that is installing this on Ubuntu 16.04 (it far more complicated than it should be). After a lot of work I managed to flash an example sketch to the board. Please check out my notes on this process if you’re trying to do this via Ubuntu! As for why I’m having no luck in Windows, either I have some other driver interfering (because over time I’ve used more than a few STM32-type boards) or it’s a fault in the serial programmer as it interacts with Windows… (Fixed)
Update 3: I can upload via Windows now! I had to manually change the driver for the STM device: I have a signed driver for “STM Device in DFU Mode” that was the default. Selecting the “STM32 BOOTLOADER” driver for this configured the correct driver for the Star OTTO. This might affect my Particle Photon builds and any MicroPython firmware builds, but at least it worked…
Also, an OTA codeload caveat: you need to be in DFU mode. Hold Boot and Reset, then release Reset, and finally release Boot. The L13 LED (yellow) should be on and solid when in DFU / Bootloader mode. If your WiFi is configured correctly you should be able to codeload – remember to switch out of STA mode after resetting!
(Note that I’m (now-successfully) using the Arduino.cc IDE for Linux and Windows. For some weird reason Java isn’t included in the Arduino.org IDE for Linux so it’s that much more work to maintain.
and I’m not seeing any advantage to that over the Arduino.cc one.) Edit: The Arduino.org IDE is able to handle serial over IP while the Arduino.cc one cannot… that’s a difference! Both IDEs seem able to do network serial too.
For others who may have encountered this, a before/during shot wherein you can see the wrong driver is loaded and the choice of alternate (installed) drivers:
And the view afterward:
Update 4: Serial problems:
Though clearly I can upload and run a sketch, Serial I/O from within the sketch doesn’t appear to be working. Investigating… Use `SerialUSB`, not `Serial`, for normal terminal comms!
Update 5: Helpful hint: use target-specific #defines to handle custom code variants, e.g.:
#if defined(ARDUINO_STM32_STAR_OTTO) #define Serial SerialUSB #else .... #endif
(Oddly, `ARDUINO_ARCH_STM32` doesn’t appear to be defined for the Star OTTO boards.)
Update 6: The 128KB EEPROM on my board appears to be an ST Micro M24M01-R (a TSSOP-8 device marked 4M1RK), and substitutes for the functionally equivalent Atmel AT24CM01-XHM device shown in the schematic. This EEPROM appears at the 7-bit I2C addresses 0x50/0x51 on I2C interface 2 (via Wire1). As a starting point the Arduino AT24C1024 I2C EEPROM Library may be of use (with modifications to use Wire1 versus Wire).
Update 7: My other major goal was learning how to modify the ESP8266 firmware and to safely recover it in case of problems. I’ve successfully done both, and will create a new post with that information later today!