AE3 OLED Breakout¶
تجمع لوحة AE3 OLED Breakout بين OpenMV AE3 وشاشة RGB OLED بدقة 128 × 128، وعصا تحكم بخمسة اتجاهات، ورأس ARM SWD بعشرة دبابيس، وذلك للمعاينة المستقلة والإدخال البسيط وتنقيح أخطاء JTAG/SWD.
للاطلاع على ورقة البيانات الكاملة والصور وطلب الشراء، راجع صفحة منتج 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 وتُخرَج إلى رأسي دبابيس جانبيين — P0–P5 على جانب، وP6–P9 على الجانب الآخر — وكلاهما مرجعهما 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 ( |
4 |
SCL ( |
رأس 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 أن الزر مضغوط:
البت |
الاتجاه |
|---|---|
|
عصا التحكم يميناً |
|
عصا التحكم لأعلى |
|
عصا التحكم يساراً |
|
عصا التحكم لأسفل |
|
الضغط المركزي لعصا التحكم |
|
مفتاح تمكين 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())