מאמר זה תורגם במכונה מ- Make Germany 7/2025 עם עריכה קלה של דוד חתן.
NanoPy הוא ה-IDE הסטנדרטי עבור פרויקטים של Oxocard. עם זאת, הודות למיקרו-בקר ESP32 שבלב אוקסוקרדתכנות עם C++ דרך ה-Arduino IDE הוא גם אפשרות פיתוח מעשית. זה מציע יתרונות למתכנתים מתחילים ומנוסים כאחד, כפי שמוכיח מאמר זה.
המונח "אוקסוקארד" מתייחס למשפחה שלמה של מחשבי מיקרו בעיצוב מודולרי בפורמט של כרטיסי אשראי. מערכת Oxocard, שתוכננה כלוח פיתוח, נוצרה כדי לספק מבוא משחקי לפיתוח משובץ בסיסי. כברירת מחדל, התכנות מתבצע באמצעות ה- NanoPy IDE באמצעות שפת הסקריפטים NanoPy, המשתמשת בתחביר פשוט ובספריות שונות מאשר ב-Python הרגילה.
ה Oxocard Connect המכשיר מגיע עם תצוגה וג'ויסטיק, אך ללא כל חיישנים. עם זאת, ניתן לחבר מחסניות, המשמשות להרחבת המערכת עם חיישנים, מפעילים ותכונות אחרות.


Wi-Fi, 2MB PSRAM, 8MB זיכרון פלאש, יציאת USB-C,
ג'ויסטיק ותצוגת LCD.
מחסניות Oxocard Connect
הזמין מחסניות אוקסוקרד התחבר ל-Oxocard Connect באמצעות מחבר קצה (איור 6). ניתן להשתמש בבורג קטן כדי להדביק כרטיסים מחוברים בצורה עמידה יותר ל-Oxocard Connect.
בנוסף למגעים הסטנדרטיים, למחסניות השונות יש דבר משותף נוסף: כל מחסנית מגיעה עם EEPROM של אוטובוס I²C של 512 קילוביט שיכול לאחסן תוכניות ונתונים (איור 6).
כבל USB-C משמש להעלאת תוכניות. פרקטיים יותר הם כבלי ה-USB עם צוואר הגוז המוצעים גם על ידי יצרנית Oxocard Oxon. אלה מאפשרים לחבר את ה-Oxocard Connect, כולל מחסניות מחוברות, למחשבים, למסכים, למטענים מסוג USB או לבנקי חשמל כמו זרוע מסתובבת גמישה ולמקם לפי הרצוי.


וג'ויסטיק שמגיב גם ללחץ וגם לתנועה בכל ארבעת הכיוונים.
Arduino IDE
לתכנות באמצעות ה-Arduino IDE ב-C/C++, ניתן להשתמש במגוון ספריות Arduino קיימות, המכסות כמעט כל אזור יישום. אפשר להשתמש גם בגרסה החדשה יותר 2.3.x וגם בגרסה 1.8 הישנה יותר, אך עדיין בשימוש נרחב. עבור מאמר זה, השתמשנו בגרסאות 1.8.19 ו-2.3.6.
ניתן למצוא קישורים להורדה של שתי הגרסאות בכתובת https://www.arduino.cc/en/software/. יש להתקין את חבילת התמיכה בלוח (BSP) עבור ESP32 מבית Espressif דרך מנהל הלוח של Arduino IDE. גרסת ה-BSP הנוכחית בזמן הכתיבה היא 3.3.0. ה-Oxocard Connect 2 משתמש ב-ESP32-PICO-V3. ב- Arduino IDE, יש לבחור "ESP32 Dev Module" בתור הבקר. לאחר מכן, זמינות אפשרויות שונות לשליטה ותכנות של ה-Oxocard, הציוד ההיקפי והמחסניות שלו.


IDE והגרסה הישנה יותר 1.8.19 המוצגת כאן מתאימים לתכנות את
אוקסוקרד.
ספריות אדפרויט
כדי להשתמש בתצוגה של ה-Oxocard, יש להתקין את "ספריית Adafruit GFX" (גרסה 1.12.3) דרך מנהל הספרייה, המספק פונקציות גרפיות בסיסיות. בתוכניות שלך, יש לכלול את ההגדרות באמצעות #include
#include
#include
#include
בנוסף, #include
ספריות Adafruit מציעות דרך פשוטה לגשת לכל האזורים של Oxocard Connect. עם זאת, עבור יישומים גרפיים ותכנות משחקים, הפלט הגרפי של ספריות Adafruit הוא איטי במקצת. זמינים פתרונות מהירים יותר, כגון TFT_eSPI_ES32Lab של Bodmer.


משחקים או פקדי תפריט יכולים להיות מנוסחים עם מספר שורות קוד בלבד.
Joysticktest.ino
#include
#include
#include
#include
#define TFT_MOSI 13
#define TFT_SCLK 14
#define TFT_CS 15
#define TFT_DC 27
#define TFT_RST 4
#define TFT_BL 19
#define JOY_UP 39
#define JOY_RIGHT 37
#define JOY_DOWN 38
#define JOY_LEFT 36
#define JOY_CENTER 2
#ifndef HSPI
#define HSPI 1
#endif
SPIClass hspi(HSPI);
Adafruit_ST7789 tft = Adafruit_ST7789(&hspi, TFT_CS, TFT_DC, TFT_RST);
bool last_up = false, last_down = false, last_left = false, last_right = false, last_center = false;
void drawJoystickState(bool up, bool down, bool left, bool right, bool center) {
int y = 46;
tft.fillRect(0, y, 240, 200, ST77XX_BLACK);
tft.setTextSize(2);
tft.setTextColor(ST77XX_WHITE, ST77XX_BLACK);
tft.setCursor(10, y + 0); tft.print("UP: "); tft.print(up ? "X" : " ");
tft.setCursor(10, y + 30); tft.print("DOWN: "); tft.print(down ? "X" : " ");
tft.setCursor(10, y + 60); tft.print("LEFT: "); tft.print(left ? "X" : " ");
tft.setCursor(10, y + 90); tft.print("RIGHT: "); tft.print(right ? "X" : " ");
tft.setCursor(10, y + 120); tft.print("CENTER: "); tft.print(center ? "X" : " ");
}
...
ספריית בודמר
אחת הדרכים לשפר ביצועים גרפיים היא באמצעות ספריית TFT_eSPI_ES32Lab של Bodmer (גרסה 2.5.43 בזמן הכתיבה), אותה ניתן להתקין באמצעות מנהל הספרייה. יש לשנות את הגדרות המשתמש הסטנדרטיות בקובץ "User_Setup_Select.h" בספריית הספרייה (בדרך כלל ממוקמת תחת Documents\Arduino\libraries ב-Windows) של TFT_eSPI_ES32Lab, ואת הערך #include
// Oxocard Connect V2
#define TFT_CS 15
#define TFT_DC 27
#define TFT_RST 4
#define TFT_MISO 12
#define TFT_MOSI 13
#define TFT_SCLK 14
יש להעיר הערה על הקצאות הפינים האחרות, החל מ-#define TFT_RGB_ORDER TFT_RGB עד #define TFT_RST -1. הספרייה שכבר השתנתה זמינה כקובץ ZIP להורדה במאגר של מאמר זה: https://github.com/MakeMagazinDE/OxocardArduinoIDE
זה יכול להיות משולב באמצעות Arduino IDE באמצעות התפריט "כלול ספריה -> הוסף ספריית .ZIP".
אם כבר מותקנת ספריית TFT_eSPI, יש להסיר אותה תחילה. שים לב שעדכון ספרייה יחליף את השינויים הללו. השינוי של ספריית TFT_eSPI המתואר כאן נדרש עבור כל דוגמאות התוכניות המשתמשות בתצוגה.
שים לב שהתוכנית שלנו לדוגמה משתמשת ב-EEPROM כדי לבדוק אם מחסנית מוכנסת. כל מחסנית תעבוד למטרה זו. אם המחסנית חסרה, רק תמונה מהבהבת תהיה גלויה בצג Oxocard.
ההתאמה של הפינים ההיקפיים הנותרים עבור I2C, UART ו-GPIOs של Oxocard Connect מתבצעת בקובץ ההצהרה pins.h. קובץ זה חייב להיכלל בסעיף הכותרת בעת שימוש בספריית Bodmer. עבור כל תוכנית לדוגמה, קובץ pins.h המקביל, שכבר השתנה, ממוקם בספרייה עם הסקיצה המתאימה. הקובץ המקורי נמצא בכתובת "User_Setups/Setup25_TTGO_T_Display.h".
תוכנית הבדיקה גם מוציאה כמה הודעות דרך הממשק הטורי. לכן, חשוב להגדיר את קצב ה-baud בצג הטורי של ה-IDE לערך המשמש את הסקיצה, כלומר, 115200.


Oxocard Connect יישומים לדוגמה
הסעיפים הבאים מציגים את המבנה הבסיסי עבור תוכניות Oxocard Connect. את הרשימות המלאות של הסקיצות הבאות, כמו גם אוסף של תוכניות לדוגמה, ניתן למצוא ב- מאגר GitHub. מגוון הדוגמאות מכסה תחומים שונים ומשתרע ממבנים בסיסיים פשוטים לשאילתת נתוני ג'ויסטיק וחיישנים ועד לאחזור מידע מזג אוויר דרך האינטרנט.
התוכנית BBTest.ino בודקת מחסנית מחוברת ומציגה הודעת מצב על ה-LCD. זה גם בודק את ה-EEPROM, הג'ויסטיק והתצוגה ב-Oxocard Connect. התצוגה היא 240 × 240 LHT133T-IG01 TFT עם דרייבר ST7789VW.
יש לכלול את ההצהרות הבאות עבור תוכנית BBTest.ino:
#include "pins.h"
#include "SPI.h"
#include "TFT_eSPI.h"
#include
#include "SparkFun_External_EEPROM.h"
יש להתקין את "ספריית SparkFun External EEPROM Arduino" (גרסה 3.2.11) דרך מנהל הספרייה.
BBTest.ino
#include "pins.h"
#include "SPI.h"
#include "TFT_eSPI.h" // v2.5.43 Adaption to Oxocard Connect V2 required
#include
#include "SparkFun_External_EEPROM.h" // v.3.2.10
// Use hardware SPI
TFT_eSPI tft = TFT_eSPI();
#define EEPROM_ADDRESS 0b1010000 //0b1010(A2 A1 A0)
ExternalEEPROM myEEPROM;
void setup()
{
pinMode(USR_BTN1, INPUT);
pinMode(USR_BTN2, INPUT);
pinMode(USR_BTN3, INPUT);
pinMode(USR_BTN4, INPUT);
pinMode(USR_BTN5, INPUT);
pinMode(IO20, OUTPUT); digitalWrite(IO20, LOW);
pinMode(IO25, OUTPUT); digitalWrite(IO25, LOW);
pinMode(IO26, OUTPUT); digitalWrite(IO26, LOW);
pinMode(IO32, OUTPUT); digitalWrite(IO32, LOW);
pinMode(IO33, OUTPUT); digitalWrite(IO33, LOW);
pinMode(LCD_LED, OUTPUT); digitalWrite(LCD_LED, HIGH); // LCD background light on
Serial.begin(115200);
delay(1000);
...
קישור לכתבת המקור – 2025-12-20 05:20:00




