Instant Omni Pro 18 Toaster Oven and Air Fryer

From RECESSIM, A Reverse Engineering Community
Jump to navigation Jump to search

Intro

This particular device is some version of functional, with some dim display segments and plausibly faulty touch regions. Display/buttons communicate with the main power and relay board using something like serial communications around 1200bps 600/625bps. Reverse engineering the communication protocol to implement an alternative control interface. So far blinky and "singing" CW has been achieved using oscilloscope and logic analyzer dumps and then re-creating the signals using an ESP32-S3 running Micropython.

See also: Whirlybird for ESP32-S3-WROOM-2 details.

Recovered as part of unrelated e-waste pickup of Coffee Brew bits.

Instant Omni Pro Front Exterior Light On 400 F 10 Minute Start Cancel.jpg

Note: RXD replaces TX, TXD replaces RX, reciprocal of Front Panel connection. 5 volt and Ground White/Yellow, data Black/Red (WTF).


Docs


Image Gallery

Click any image to expand, use side arrows or left/right keys to navigate as slideshow.


Code

Micropython

vvv.py

Winner winner Chinese Dinner! FARS Home Brew QSV Edition.

from machine import Pin
from time import sleep_us, sleep_ms, ticks_us, ticks_diff, localtime

print("instatoast vvv")

# "Message" starts with LHL then 10 PRE "Bits" then 44 or 43 Dx "Bits"
# Each "Bit" ends Low, each "Message" ends holding High

LHL = (4450,9140,4450) # Low High Low start
NIB = 800
BIT = 1600

# 0 Bit = BIT Low
# 1 Bit = NIB High, NIB Low

PRE = (1,1,1,1,0,1,1,1,1,0) # Preamble


D0 = (1,1,1,1,1,1,1,1,1,1, 0,1,0,1,1,0,1,0,1,1, 1,1,1,0,1,0,1,1,1,0, 1,0,1,0,1,1,0,1,0,1, 1,1,1)
D1 = (1,1,1,1,1,1,1,1,1,0, 1,0,1,0,1,1,0,1,0,1, 1,1,1,1,0,1,0,1,1,1, 0,1,0,1,1,1,0,1,0,1, 1,1,1)
D2 = (1,0,1,1,1,1,1,1,1,1, 0,1,1,0,1,1,0,1,0,1, 1,1,1,1,0,1,0,1,1,1, 0,1,0,1,1,0,1,0,1,0, 1,1,1,1)
D3 = (1,0,1,1,1,1,1,1,1,1, 1,1,0,1,1,0,1,0,1,1, 1,1,1,0,1,0,1,1,1,0, 1,0,1,0,1,0,1,0,1,0, 1,1,1,1)

rxPin = Pin(0, Pin.IN)
txPin = Pin(43, Pin.OUT, value=1)

sleep_ms(100)

def send(bits):
 txPin.off()
 sleep_us(LHL[0])
 txPin.on()
 sleep_us(LHL[1])
 txPin.off()
 sleep_us(LHL[2])
 for b in bits:
  if b == 1:
   txPin.on()
   sleep_us(NIB)
   txPin.off()
   sleep_us(NIB)
  else:
   sleep_us(BIT)
 txPin.on()



def vvv():
 while True:
  send(PRE+D2)
  sleep_ms(60)
  send(PRE+D3)
  sleep_ms(60)
  send(PRE+D2)
  sleep_ms(60)
  send(PRE+D3)
  sleep_ms(18)
  send(PRE+D2)
  sleep_ms(18)
  send(PRE+D3)
  sleep_ms(500)

  send(PRE+D0)
  sleep_ms(60)
  send(PRE+D1)
  sleep_ms(60)
  send(PRE+D0)
  sleep_ms(60)
  send(PRE+D1)
  sleep_ms(18)
  send(PRE+D0)
  sleep_ms(18)
  send(PRE+D1)
  sleep_ms(500)
vvv()


MCU BF7515BM44

BF7515BM44-LJTX SPEC V1.5

Home appliance 8-bit general-purpose MCU

BF7515BM44-LJTX MCU General Description

Features  Core: 1T 8051 ○ Operating frequency: 12M, 8M, 4M, 1M,  Operating Voltage: 2.5V~5.5V ○ Clock error: ±1% @25℃, 5V  Operating Temperature: -40℃~+105℃ ○ Enhanced industrial grade, in line with JESD ±3% @-40℃ ~ +105℃, 5V  Memory (FLASH) ○ CODE: 63K Bytes  12-bit High-speed ADC ○ DATA: 1K Bytes +2*512 Bytes ○ Up to 42 analog input channels ○ SRAM: 256 Bytes(data)+4K Bytes(xdata) ○ Built-in reference voltage 4V ○ Support 2K/4K/8K BOOT function area  Interrupt  Clock Source, Reset ○ Two-level interrupt priority capablity ○ Internal low-speed clock LIRC: 32kHz ○ ADC, LCD, LED, INT0/1/2/3, LVDT , industrial grade reliability certification standards Clock error: ±15%@25℃, 5V Timer0/1/2/3, UART0/1/2, IIC, WDT, SPI ±35%@ -40℃ ~ +105℃, 5V interrupt ○ Internal high-speed RC oscillator: 1MHz  Timer ○ External crystal oscillator: 32768Hz ○ 16-bit Timer0/1/3, 32-bit Timer2 ○ 8 resets, brown-out voltage (Bor): 1.9V ○ Timer2 clock source: internal low-speed clock ○ Low voltage detection: 2.7V/3.0V/3.8V  IO ○ Watchdog timer, overflow time 18ms to 2.304s ○ Built-in pull-up resistor 30k  LED Driver ○ High current sink port (PB0~PB7) ○ Support 7*8, 6*7, 5*6, 4*5 dot matrix driver ○ Support IO function remapping ○ Support up to 8 COM x 8 SEG matrix driver ○ IO ports support external interrupt function,  LCD Driver INT0~3 (rising-edge, falling-edge, double-edge), ○ Support 4*16, 8*16, 4*20, 5*19, 6*18 INT4(rising-edge, falling-edge)  Low power management  Communication Module ○ Idle mode 0 and Idle mode 1 ○ 3*UART communication, support IO mapping ○ Idle mode 1, power consumption 26uA@5V ○ 1*IIC, support 100/400kHz, support IO mapping  With JTAG debugging emulation interface ○ 1*SPI, support up to 2MHz  Package  16-bit PWM ○ PWM0/1 both support 3-channel output, share ○ LQFP44 LIRC 32kHz or XTAL 32768Hz period and duty cycle ○ PWM2 support 1 channel output ○ PWM3 support 1 channel output Datasheet

Log

TBD: -.-6eau (talk) 06:04, 2 October 2024 (UTC)

October 1st, 2024

  1. Added FARS presentation images to wiki
  2. Added additional images and information to wiki

September 30th, 2024

  1. Detailed Oscilloscope Decoding of "Proof" & "Dehydrate" messages
  2. Confirmed controllable enable/disable low and high heat
  3. Found alternative long tone "dahhh" command

September 29th, 2024

  1. Wiki "hellorld", documentation started

September 27th, 2024

  1. Integrated Bi-Directional Level Shifter
  2. Got first successful ESP32/Micropython Toaster Blink
  3. Hacked Toaster "beep" to generate "dit" and "dahhh"
  4. Presented at FARS Annual Home Brew Night "Singing Toaster QSV"

September 26th, 2024

  1. First attempted ESP32/Micropython data capture (Worked to some extent)
  2. First attempted ESP32/Micropython data transmit (Generated signal, did not function)

September 25th, 2024

  1. Added Front Panel (Back) Header Tap
  2. Initial Logic Analyzer Capture

September 24th, 2024

  1. More WhirlyBird RE

September 23rd, 2024

  1. More WhirlyBird RE

September 22nd, 2024

  1. WhirlyBird first blink

September 21st, 2024

  1. More WhirlyBird RE

September 20th, 2024

  1. Initial WhirlyBird RE
  2. Initial Toaster Teardown
  3. Initial Toaster Probing

September 19th, 2024

  1. Items (e-waste) identified
  2. Items Loaded
  3. Toaster pulled from trunk and thrown on top
  4. Items Transported
  5. Items repacked and parked
  6. Initial Sort