AE3 OLED Breakout

تجمع لوحة AE3 OLED Breakout بين OpenMV AE3 وشاشة RGB OLED بدقة 128 × 128، وعصا تحكم بخمسة اتجاهات، ورأس ARM SWD بعشرة دبابيس، وذلك للمعاينة المستقلة والإدخال البسيط وتنقيح أخطاء JTAG/SWD.

AE3 OLED Breakout

للاطلاع على ورقة البيانات الكاملة والصور وطلب الشراء، راجع صفحة منتج AE3 OLED Breakout.

أبرز الميزات

  • شاشة RGB OLED بدقة 128 × 128 مُشغَّلة بواسطة وحدة تحكم SSD1351 عبر SPI.

  • عصا تحكم AS90R بخمسة اتجاهات مع زر ضغط مركزي، مكشوفة على ناقل I²C P4/P5.

  • زر إعادة الضبط ومفتاح الاستعادة للوصول إلى UART الخاص بالحاضنة الآمنة (secure-enclave).

  • مفتاح فصل OLED لإزالة اللوحة كهربائياً من ناقل SPI.

  • موصلان Qwiic على نفس ناقل I²C P4/P5.

  • رأس ARM 10‑pin Cortex Debug لتنقيح أخطاء SWD/JTAG.

  • أربع نقاط اختبار خطّاف أرضي.

ملاحظة

تتيح لك أربعة ثقوب تثبيت من نوع M1.6 في الزوايا تثبيت لوحة الـ breakout بإحكام على حاوية أو تجهيزة.

مرجع الدبابيس

تُؤخذ جميع إشارات AE3 الموجودة على لوحة الـ breakout من رأس B2B الموجود في أسفل AE3 وتُخرَج إلى رأسي دبابيس جانبيين — P0P5 على جانب، وP6P9 على الجانب الآخر — وكلاهما مرجعهما 3.3 V. توجد القائمة الكاملة للوظائف البديلة لكل دبوس على صفحة OpenMV AE3؛ وتستخدم لوحة الـ breakout الدبابيس على النحو التالي:

الدبوس

المرجع

ميزات AE3

استخدام الـ 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

حر

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

عصا التحكم / Qwiic I²C SCL

P5

3.3 V

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

عصا التحكم / Qwiic I²C SDA

RESET

3.3 V

NRST

اضغط زر RESET الموجود على اللوحة أو اسحبه إلى GND لإعادة ضبط AE3

P6

3.3 V

I2C1 SDA / UART3 CTS / TIM9 T0

حر

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 (اختيار السجل)

P9

3.3 V

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

عصا التحكم IRQ (نشطة عند المستوى المنخفض عند تغير الحالة)

خط 3.3V

تُغذّي شاشة OLED، ومُوسِّع عصا التحكم، وأجهزة Qwiic

خط GND

أرضي مشترك

ملاحظة

يقوم مفتاح الاستعادة بقلب مازج USB داخلي في AE3: تُفصل دبابيس USB الخاصة بـ AE3 عن منفذ USB‑C، ويُوصَّل محوّل USB إلى تسلسلي على UART الخاص بالحاضنة الآمنة إلى المنفذ بدلاً منها. وعند تفعيل المفتاح، يمكن لأدوات Alif على جانب المضيف التواصل مع الحاضنة الآمنة لإعادة برمجة محمّل إقلاع AE3. اترك المفتاح معطّلاً أثناء التشغيل العادي بحيث يعمل منفذ USB‑C باعتباره USB الخاص بـ AE3.

ملاحظة

يجب أن يكون مفتاح تمكين OLED قيد التشغيل لكي تعمل شاشة OLED — فهو يتحكم في تغذية اللوحة بالطاقة ويصل دبابيس التحكم في OLED (P0 وP2 وP3 وP7 وP8) إلى GPIO الخاص بـ AE3. وعندما يكون المفتاح في وضع الإيقاف، تبقى P4 وP5 وP9 فقط موصولة. وتظهر حالة المفتاح الحالية على مُوسِّع عصا التحكم باعتبارها البت 0x40 — حيث يقرأ دبوس المُوسِّع الخام منخفضاً عند تفعيل المفتاح.

رؤوس Qwiic

يوجد على لوحة الـ breakout موصلان Qwiic من نوع JST‑SH بأربعة دبابيس وبتباعد 1.0 مم، ويتشاركان نفس ناقل I²C P4/P5 مع مُوسِّع عصا التحكم الموجود على اللوحة، لذا يجب على أجهزة Qwiic الإضافية تجنُّب عنوان مُوسِّع عصا التحكم (0x63).

الدبوس

الإشارة

1

GND

2

+3.3 V

3

SDA (P5)

4

SCL (P4)

رأس JTAG

رأس ARM Cortex Debug بعشرة دبابيس وبتباعد 1.27 مم الموجود على لوحة الـ breakout موصول مباشرة بخطوط SWD/JTAG الخاصة بـ AE3. وجميع الإشارات مرجعها 1.8 V — استخدم مسباراً ذا تحويل مستوى أو مسباراً يتتبّع جهد هدفه VCC_REF (الدبوس 1).

الدبوس

الإشارة

1

VCC_REF (+1.8 V)

2

TMS (SWDIO)

3

+1.8 V

4

TCK (SWCLK)

5

GND

6

TDO (SWO)

7

مفتاح (بلا دبوس)

8

TDI

9

GND

10

DEBUG_RST_N (إعادة ضبط JTAG/التنقيح — منفصلة عن NRST الخاص بالنظام)

الاستخدام

شغّل شاشة OLED عبر display.SPIDisplay باستخدام نسخة من وحدة تحكم SSD1351. ادفع إطارات الكاميرا بثاً إلى اللوحة ذات الدقة 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())

اقرأ عصا التحكم بخمسة اتجاهات عبر المشغّل المجمّد pca9674a.PCA9674A. يؤكّد المُوسِّع P9 عند تغيّر الحالة، لذا قم بربط دالة رد نداء IRQ تلتقط حالة الزر الجديدة. الأزرار نشطة عند المستوى المنخفض على المُوسِّع؛ يطبّق الكود أدناه XOR على القراءة مع 0xFF بحيث يعني البت المضبوط في state أن الزر مضغوط:

البت

الاتجاه

0x01

عصا التحكم يميناً

0x02

عصا التحكم لأعلى

0x04

عصا التحكم يساراً

0x08

عصا التحكم لأسفل

0x10

الضغط المركزي لعصا التحكم

0x40

مفتاح تمكين OLED (يُضبط في state عند تمكين OLED)

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())