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.
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/P5yang 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 — P0–P5 di satu sisi, P6–P9 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 ( |
4 |
SCL ( |
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 |
|---|---|
|
Joystick kanan |
|
Joystick atas |
|
Joystick kiri |
|
Joystick bawah |
|
Tekan tengah joystick |
|
Saklar enable OLED (diset dalam |
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())