AE3 OLED Breakout¶
OpenMV AE3 kartını 128 × 128 RGB OLED, 5 yönlü bir joystick ve 10 pinli bir ARM SWD başlığıyla birleştiren AE3 OLED Breakout; bağımsız önizleme, basit girdi ve JTAG/SWD hata ayıklaması sağlar.
Tam veri sayfası, fotoğraflar ve sipariş için AE3 OLED Breakout ürün sayfasına bakın.
Öne çıkanlar¶
SPI üzerinden bir SSD1351 denetleyicisiyle sürülen 128 × 128 RGB OLED.
P4/P5I²C veri yolu üzerinde açığa çıkarılan, ortada bir bas-tıkla düğmesi bulunan AS90R 5 yönlü joystick.Güvenli enklav UART erişimi için sıfırlama düğmesi ve kurtarma anahtarı.
Paneli SPI veri yolundan elektriksel olarak ayırmak için bir OLED bağlantı kesme anahtarı.
Aynı
P4/P5I²C veri yolu üzerinde iki Qwiic konektörü.SWD/JTAG hata ayıklaması için ARM 10 pinli Cortex Debug başlığı.
Dört adet topraklama kancası test noktası.
Not
Dört köşedeki M1.6 montaj delikleri, breakout’u bir muhafazaya veya tertibata cıvatalamanıza olanak tanır.
Pin referansı¶
Breakout üzerindeki tüm AE3 sinyalleri, AE3’ün altındaki B2B başlığından alınır ve iki yan pin başlığına getirilir — bir tarafta P0–P5, diğer tarafta P6–P9 — her ikisi de 3,3 V referanslı. Her pinin tam alternatif fonksiyon listesi OpenMV AE3 sayfasında bulunur; breakout pinleri şu şekilde kullanır:
Pin |
Referans |
AE3 özellikleri |
Breakout kullanımı |
|---|---|---|---|
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 |
boş |
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 |
AE3’ü sıfırlamak için kart üzerindeki RESET düğmesine basın veya GND’ye çekin |
P6 |
3,3 V |
I2C1 SDA / UART3 CTS / TIM9 T0 |
boş |
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 (yazmaç seçimi) |
P9 |
3,3 V |
I3C SCL / UART3 TX / TIM5 T1 / ADC ch S11 |
Joystick IRQ (durum değişiminde aktif düşük) |
3,3V hattı |
— |
— |
OLED’i, joystick genişleticisini ve Qwiic cihazlarını besler |
GND hattı |
— |
— |
Ortak toprak |
Not
Kurtarma anahtarı, AE3 üzerindeki dahili bir USB mux’unu çevirir: AE3’ün kendi USB pinleri USB-C bağlantı noktasından ayrılır ve yerlerine güvenli enklav UART’ı üzerindeki bir USB-seri dönüştürücü bağlantı noktasına bağlanır. Anahtar devredeyken, ana bilgisayar tarafındaki Alif araçları AE3’ün önyükleyicisini (bootloader) yeniden programlamak için güvenli enklavla iletişim kurabilir. Normal çalışma için anahtarı devre dışı bırakın; böylece USB-C bağlantı noktası AE3’ün USB’si olarak işlev görür.
Not
OLED etkinleştirme anahtarının OLED’in çalışması için açık olması gerekir — panele giden gücü denetler ve OLED kontrol pinlerini (P0, P2, P3, P7, P8) AE3’ün GPIO’suna bağlar. Anahtar kapalıyken yalnızca P4, P5 ve P9 bağlı kalır. Geçerli anahtar durumu joystick genişleticisinde 0x40 biti olarak görünür — ham genişletici pini anahtar etkinleştirildiğinde düşük okunur.
Qwiic başlıkları¶
Breakout üzerinde, kart üzerindeki joystick genişleticisiyle aynı P4/P5 I²C veri yolunu paylaşan iki Qwiic 4 pinli JST-SH 1,0 mm konektör bulunur; bu nedenle ek Qwiic cihazları joystick genişleticisinin adresinden (0x63) kaçınmalıdır.
Pin |
Sinyal |
|---|---|
1 |
GND |
2 |
+3,3 V |
3 |
SDA ( |
4 |
SCL ( |
JTAG başlığı¶
Breakout üzerindeki 10 pinli 1,27 mm ARM Cortex Debug başlığı, doğrudan AE3’ün SWD/JTAG hatlarına bağlıdır. Tüm sinyaller 1,8 V referanslıdır — seviye kaydırmalı bir prob veya hedef voltajı VCC_REF (pin 1) ile aynı olan bir prob kullanın.
Pin |
Sinyal |
|---|---|
1 |
VCC_REF (+1,8 V) |
2 |
TMS (SWDIO) |
3 |
+1,8 V |
4 |
TCK (SWCLK) |
5 |
GND |
6 |
TDO (SWO) |
7 |
anahtar (pin yok) |
8 |
TDI |
9 |
GND |
10 |
DEBUG_RST_N (JTAG/hata ayıklama sıfırlaması — sistem NRST’sinden ayrı) |
Kullanım¶
OLED’i, bir SSD1351 denetleyici örneğiyle display.SPIDisplay üzerinden sürün. Kamera çerçevelerini 128 × 128 panele aktarın:
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())
5 yönlü joystick’i dondurulmuş pca9674a.PCA9674A sürücüsü üzerinden okuyun. Genişletici, durum değişimlerinde P9‘u etkinleştirir; bu nedenle yeni düğme durumunu yakalayan bir IRQ geri çağırması (callback) bağlayın. Düğmeler genişleticide aktif düşüktür; aşağıdaki kod okumayı 0xFF ile XOR’lar, böylece state içinde ayarlanmış bir bit basıldı anlamına gelir:
Bit |
Yön |
|---|---|
|
Joystick sağ |
|
Joystick yukarı |
|
Joystick sol |
|
Joystick aşağı |
|
Joystick ortaya bas |
|
OLED etkinleştirme anahtarı (OLED etkinleştirildiğinde |
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())