Instant Omni Pro 18 Toaster Oven and Air Fryer
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.
Note: RXD replaces TX, TXD replaces RX, reciprocal of Front Panel connection. 5 volt and Ground White/Yellow, data Black/Red (WTF).
Docs
- https://www.manualslib.com/manual/3150587/Instant-Pot-Omni-Pro.html
- https://www.lcsc.com/datasheet/lcsc_datasheet_2304140030_Sinowealth-SH79F1612AM_C181997.pdf
- https://www.lcsc.com/datasheet/lcsc_datasheet_1808081643_MBI-MBI5124GP-B_C256866.pdf
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
- Added FARS presentation images to wiki
- Added additional images and information to wiki
September 30th, 2024
- Detailed Oscilloscope Decoding of "Proof" & "Dehydrate" messages
- Confirmed controllable enable/disable low and high heat
- Found alternative long tone "dahhh" command
September 29th, 2024
- Wiki "hellorld", documentation started
September 27th, 2024
- Integrated Bi-Directional Level Shifter
- Got first successful ESP32/Micropython Toaster Blink
- Hacked Toaster "beep" to generate "dit" and "dahhh"
- Presented at FARS Annual Home Brew Night "Singing Toaster QSV"
September 26th, 2024
- First attempted ESP32/Micropython data capture (Worked to some extent)
- First attempted ESP32/Micropython data transmit (Generated signal, did not function)
September 25th, 2024
- Added Front Panel (Back) Header Tap
- Initial Logic Analyzer Capture
September 24th, 2024
- More WhirlyBird RE
September 23rd, 2024
- More WhirlyBird RE
September 22nd, 2024
- WhirlyBird first blink
September 21st, 2024
- More WhirlyBird RE
September 20th, 2024
- Initial WhirlyBird RE
- Initial Toaster Teardown
- Initial Toaster Probing
September 19th, 2024
- Items (e-waste) identified
- Items Loaded
- Toaster pulled from trunk and thrown on top
- Items Transported
- Items repacked and parked
- Initial Sort