AE3 OLED Breakout

AE3 OLED Breakout memasangkan OpenMV AE3 dengan OLED RGB 128 × 128, joystick 5 arah, dan header ARM SWD 10 pin untuk pratinjau mandiri, input sederhana, dan debug JTAG/SWD.

AE3 OLED Breakout

Untuk datasheet lengkap, foto, dan pemesanan, lihat halaman produk AE3 OLED Breakout.

Fitur Unggulan

  • OLED RGB 128 × 128 yang dikendalikan oleh kontroler SSD1351 melalui SPI.

  • Joystick AS90R 5 arah dengan tombol tekan di tengah, terekspos pada bus I²C P4/P5.

  • Tombol Reset dan saklar recovery untuk akses UART secure‑enclave.

  • Saklar disconnect OLED untuk melepaskan panel secara elektris dari bus SPI.

  • Dua konektor Qwiic pada bus I²C P4/P5 yang sama.

  • Header ARM 10‑pin Cortex Debug untuk debugging SWD/JTAG.

  • Empat titik uji hook ground.

Catatan

Empat lubang pemasangan M1.6 di sudut memungkinkan Anda memasang breakout ke enclosure atau fixture.

Referensi Pin

Semua sinyal AE3 pada breakout diambil dari header B2B di bagian bawah AE3 dan dikeluarkan ke dua header pin samping — P0P5 di satu sisi, P6P9 di sisi lain — keduanya bertegangan referensi 3,3 V. Daftar fungsi alternatif lengkap untuk setiap pin terdapat di halaman OpenMV AE3; breakout menggunakan pin sebagai berikut:

Pin

Referensi

Fitur AE3

Penggunaan Breakout

P0

3.3 V

SPI0 MOSI / I2C2 SCL / UART4 TX / TIM0 T1 / PDM D3

OLED SPI MOSI

P1

3.3 V

SPI0 MISO / I2C2 SDA / UART4 RX / TIM0 T0

bebas

P2

3.3 V

SPI0 SCLK / LPI2C SDA / UART5 TX / TIM1 T1

OLED SPI SCLK

P3

3.3 V

SPI0 SS / LPI2C SCL / UART5 RX / TIM1 T0 / PDM C3

OLED SPI CS

P4

3.3 V

I2C1 SCL / UART1 TX / TIM2 T1 / PDM C0 / CAN TX

Joystick / Qwiic I²C SCL

P5

3.3 V

I2C1 SDA / UART1 RX / TIM2 T0 / PDM D0 / CAN RX

Joystick / Qwiic I²C SDA

RESET

3.3 V

NRST

Tekan tombol RESET bawaan atau tarik ke GND untuk mereset AE3

P6

3.3 V

I2C1 SDA / UART3 CTS / TIM9 T0

bebas

P7

3.3 V

I2C1 SCL / UART3 RTS / TIM9 T1

OLED RESET

P8

3.3 V

I3C SDA / UART3 RX / TIM5 T0 / ADC ch S10

OLED DC (pilih register)

P9

3.3 V

I3C SCL / UART3 TX / TIM5 T1 / ADC ch S11

IRQ Joystick (aktif rendah saat perubahan status)

3.3V rail

Memberi daya pada OLED, expander joystick, dan perangkat Qwiic

GND rail

Ground bersama

Catatan

Saklar recovery membalik mux USB internal pada AE3: pin USB milik AE3 diputus dari port USB‑C, dan konverter USB‑ke‑serial pada UART secure‑enclave terhubung ke port tersebut sebagai gantinya. Dengan saklar aktif, alat Alif di sisi host dapat berkomunikasi dengan secure enclave untuk memprogram ulang bootloader AE3. Biarkan saklar dinonaktifkan untuk operasi normal agar port USB‑C berfungsi sebagai USB AE3.

Catatan

Saklar enable OLED harus aktif agar OLED berfungsi — saklar ini mengontrol daya ke panel dan menghubungkan pin kontrol OLED (P0, P2, P3, P7, P8) ke GPIO AE3. Dengan saklar mati, hanya P4, P5, dan P9 yang tetap terhubung. Status saklar saat ini muncul pada expander joystick sebagai bit 0x40 — pin expander mentah membaca rendah saat saklar diaktifkan.

Header Qwiic

Dua konektor Qwiic JST‑SH 1.0 mm 4‑pin terletak di breakout dan berbagi bus I²C P4/P5 yang sama dengan expander joystick bawaan, sehingga perangkat Qwiic tambahan harus menghindari alamat expander joystick (0x63).

Pin

Sinyal

1

GND

2

+3.3 V

3

SDA (P5)

4

SCL (P4)

Header JTAG

Header ARM Cortex Debug 1,27 mm 10‑pin pada breakout terhubung langsung ke jalur SWD/JTAG AE3. Semua sinyal bertegangan referensi 1,8 V — gunakan probe yang menggeser level atau yang tegangan targetnya mengikuti VCC_REF (pin 1).

Pin

Sinyal

1

VCC_REF (+1.8 V)

2

TMS (SWDIO)

3

+1.8 V

4

TCK (SWCLK)

5

GND

6

TDO (SWO)

7

key (no pin)

8

TDI

9

GND

10

DEBUG_RST_N (reset JTAG/debug — terpisah dari NRST sistem)

Penggunaan

Kendalikan OLED melalui display.SPIDisplay dengan instance kontroler SSD1351. Streaming bingkai kamera ke panel 128 × 128:

import csi
import time
import display
import image

csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.VGA)
csi0.window((400, 400))

lcd = display.SPIDisplay(width=128, height=128,
                         controller=display.SSD1351())
clock = time.clock()

while True:
    clock.tick()
    lcd.write(csi0.snapshot(),
              hint=image.CENTER | image.SCALE_ASPECT_KEEP)
    print(clock.fps())

Baca joystick 5 arah melalui driver beku pca9674a.PCA9674A. Expander menegaskan P9 pada perubahan status, sehingga hubungkan callback IRQ yang mengunci status tombol baru. Tombol aktif‑rendah pada expander; kode di bawah melakukan XOR hasil baca dengan 0xFF sehingga bit yang diset dalam state berarti ditekan:

Bit

Arah

0x01

Joystick kanan

0x02

Joystick atas

0x04

Joystick kiri

0x08

Joystick bawah

0x10

Tekan tengah joystick

0x40

Saklar enable OLED (diset dalam state saat OLED diaktifkan)

import csi
import time
import display
from pca9674a import PCA9674A
from machine import I2C

csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.VGA)
csi0.window((400, 400))

lcd = display.SPIDisplay(width=128, height=128,
                         controller=display.SSD1351())
clock = time.clock()

state = 0
cursor_x = 0
cursor_y = 0

def read_expander(pin):
    global exp, state
    # Buttons are active‑low on the expander; XOR for active‑high bits.
    state = exp.read() ^ 0xFF

exp = PCA9674A(I2C(1), irq_pin="P9", callback=read_expander)

def update_cursor():
    global cursor_x, cursor_y
    if state & 0x01:  cursor_x += 2     # Right
    if state & 0x02:  cursor_y -= 2     # Up
    if state & 0x04:  cursor_x -= 2     # Left
    if state & 0x08:  cursor_y += 2     # Down
    if state & 0x10:                    # Centre
        cursor_x = 0
        cursor_y = 0

while True:
    clock.tick()
    update_cursor()
    lcd.write(csi0.snapshot(), x=cursor_x, y=cursor_y,
              x_scale=128 / 400, y_scale=128 / 400)
    print(clock.fps())