This is a "pre-alpha" firwmare sources for Skyduino Roaster, a custom Arduino board for Skywalker/ITOP MTCR(SkItop) roaster.
likely going to set your house on Fire
This project was inspired by the original work of Josh Moore, who reversed engineered the Skywalker roaster protocol and built a sketch for connecting the roaster and Artisan allowing either full control of the roaster or just the data logging. Also, I wanted to learn something new and building Arduino boards, with a display and a TC interface required too much soldering, so there always was an idea in the back of my mind of building a custom Arduino board which had everything required for this roaster onboard.
Download the firmware from Skyduino Releases (no published releases yet, but check again in the future), build firmware yourself (easiest way is to use the PlatformIO IDE in VSCode) or as the last resort, try finding a latest artifact in Github Actions run history.
The "Firmware Stepper" zip file contains the modified firmware to control the drum using a stepper motor. This does require a separate stepper motor driver, controlled through J13 Disp header, using the following pins:
| Pin Name | Function | Description |
|---|---|---|
| SCL | STEP | Step signal to stepper driver |
| SDA | nEN | Enable signal to driver, low level is active |
The firmware was tested with TMC2209 driver board. You may need to hardwire the direction pin, as this is not controlled at the moment.
The board is based on ST32F412RET6 microcontroller, therefore the easiest way to install or upgrade the firmware is to use the DFU mode. To enter the DFU mode:
- PowerOff the roaster and unplug the USB-C connection to computer
- hold the boot button
- plug in the USB-C cable to computer and the MCU should be in DFU mode
To flash the firmware, use the dfu-util and run dfu-util -a 0 -s 0x8000000 -D .\firmware.bin
The dfu-util is packaged for the most linux distros.
On Windows:
- Download dfu-util
- Download Zadig USB driver installer for Windows
- Enter the DFU mode on the board
- Install
WinUSBdriver forSTM32 BOOTLOADERusing Zadig - Flash the firmware:
dfu-util -a 0 -s 0x8000000 -D .\firmware.bin
There is also online dfu-util Which works only on Chrome, but this was not tested yet. Can anyone test and let me know?
When a new release becomes available, either follow DFU Mode or you can try switching to DFU mode with a serial command,
either manually, or by running an expect script, e.g. Scripts/skyduino_dfu.sh /dev/ttyUSB0 115200
If you cannot run the script, the other option is to switch manually, by connecting with a serial
terminal to the port, and issuing two commands in quick succession. The first command is just DFU
which starts DFU mode switching negotiation. In response, the roaster will reply with a number,
e.g. 42641. For the second command, enter DFU; followed by number from the previous command
in our example, the full command is going to be DFU;42641 There's a ttimer 5 second running in
the background, from the time the 1st dfu commad was executed and the 2nd dfu command was submitted,
if the second command arrives too late, then you have to start from the beginning, by sending an empty DFU command.
The artisan settings are backward compatible (at least for the moment) with the original Josh's firmware, but the DRUM speed is now adjustable. Sample config is available in Settings/ArtisanSettings
If you are using Linux, then you can also add an udev rule, so the serial port is always available as /dev/ttyUSB.artisan The udev rule file is in Settings/udev/90-arduino-stm32-acm.rules Copy this file into /etc/udev/rules.d then restart the udev daemon with sudo udevadm control --reload and replug the board.
Firmware support TC4 CHAN command which allows remapping of the logical to physical channels. Artisan expects ET on the logical channel #1 and BT on the logical channel #2. On the controller, the physical channel #1 is the Thermocouple Probe and physical channel #2 for the NTC resistive temperature probe.
Thus, CHAN;2100 configures roaster to use the thermocouple for the BT and NTC for the ET (just to log the other probe?).
Alternatively, you could use CHAN;1200 command to use NTC for BT and the thermocouple for ET. Or, if you don't use the thermoucouple at all, use CHAN;1000 to disable ET & thermocouple completely.
The firmware monitors both physical channels for the max temperature, defined as MAX_SAFE_TEMP_C macro in platformio.ini
The safety monitor component requires at least one working temperature channel.
If none of the temperature channels are working (both the NTC & thermocouple are disconnected) then the firmware
switches into failsafe mode. In other words, if you are testing the hardware/firmware, have either NTC or thermocouple connected, otherwise
the firmware is going to ignore the control commands, due to failsafe.
