📋 מדריך התקנה

מתחילים עם NestBoard

לוח ePaper ביתי — צורבים פעם אחת, והמסך מקבל תמונות מהשרת אוטומטית. תהליך ההתקנה לוקח כ-20 דקות.

🔧 Arduino IDE 2.x 📟 XIAO ESP32S3 🖥 7.5" ePaper BW ⏱ ~20 דקות
שלבי ההתקנה
01
התקנת Arduino IDE 5 דקות

נדרש Arduino IDE גרסה 2.x ומעלה.

02
הוספת תמיכת ESP32 5–15 דקות
  • פתח File → Preferences
  • בשדה Additional Boards Manager URLs הוסף:
URL
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
  • פתח Tools → Board → Boards Manager
  • חפש esp32 — התקן של Espressif Systems
  • גרסה: 3.3.8 בדיוק (גרסאות אחרות לא נבדקו)
⚠️
~6GB להורדה ודא אינטרנט יציב. תהליך זה לוקח 5–15 דקות.
03
בחירת הלוח הנכון 1 דקה
  • Tools → Board → esp32 → XIAO_ESP32S3
  • Tools → Partition Scheme → Default 4MB with spiffs
🚫
S3, לא C3 הלוח הוא ESP32S3. בחירת C3 תגרום לשגיאות קומפילציה.
04
התקנת ספריות מ-ZIP 2–3 דקות

כל ספרייה: Sketch → Include Library → Add .ZIP Library

קבצי ה-ZIP נמצאים בתיקיית FW/backups/.

קובץ ZIP ספרייה
Seeed_GFX_v2.0.3.zip Seeed_GFX — דרייבר המסך חובה
ArduinoJson_v7.4.3.zip ArduinoJson v7 חובה
PNGdec_v1.1.6.zip PNGdec — פענוח PNG חובה
Adafruit_BusIO_v1.17.4.zip Adafruit BusIO תלות
Adafruit_GFX_Library_v1.12.5.zip Adafruit GFX תלות
GxEPD2_v1.6.8.zip GxEPD2 תלות
U8g2_for_Adafruit_GFX_v1.8.0.zip U8g2 fonts תלות
⚠️
ArduinoJson v7 בלבד — ה-FW כתוב לסינטקס v7. אם כבר מותקנת v6, הסר והתקן מהזיפ.
05
עריכת id.h — מזהה המכשיר 30 שניות

זהו הקובץ היחיד שמשתנה בין כל לוח פיזי. ערוך לפני כל צריבה חדשה.

id.h
// שנה את המספר — ייחודי לכל לוח
#define DEVICE_SERIAL  "NB-0001"  // ← ערוך!
🚫
לעולם אל תשכפל DEVICE_SERIAL — השרת מזהה כל מכשיר לצמיתות לפי המזהה. כפילות תגרום להתנגשות עדכונים.
06
עריכת config.h — הגדרות (אופציונלי) אופציונלי

ברירות המחדל עובדות ישר מהקופסה. שנה רק אם נדרש:

config.h
// שרת ייצור — לא לשנות בדרך כלל
#define DEFAULT_SERVER_URL  "https://nestboard.online"

// רשת WiFi פתוחה לפריסה ראשונית (אופציונלי)
#define PROVISION_SSID      "שם_רשת"
#define PROVISION_PASSWORD  ""

// עיתוי — ברירת מחדל 30 דקות
#define DEFAULT_SLEEP_SECONDS  1800
💡
לפיתוח מקומי: שנה את DEFAULT_SERVER_URL ל-http://localhost:3001.
07
צריבה דרך USB 2 דקות
  • חבר את הלוח למחשב דרך USB-C
  • Tools → Port → בחר את הפורט של הלוח
  • לחץ Upload (כפתור החץ)
  • המתן לתצוגת Done uploading
⚠️
לא מזהה פורט? — BOOT mode: כבה ← לחץ והחזק BOOT (מאחורי המסגרת) ← הדלק ← המתן 2s ← שחרר ← לחץ Upload.
ℹ️
XIAO ESP32S3 משתמש ב-USB Native — אין צורך בדרייבר CH340. אם Windows לא מזהה, נסה כבל USB אחר (לא "טעינה בלבד").
08
הגדרת WiFi — פורטל ראשוני 3 דקות

בהפעלה הראשונה, הלוח פותח נקודת גישה עצמית להגדרת WiFi:

  • הלוח יוצר רשת: NestBoard-SETUP
  • התחבר אליה מהטלפון או המחשב
  • פתח דפדפן ← http://192.168.4.1
  • הזן שם רשת WiFi ביתית + סיסמה ← שמור
  • הלוח מתחבר ומבצע sync ראשון עם השרת
💡
עד 5 רשתות שמורות. הלוח ינסה כל רשת — שימושי לבית + משרד + dev.
⏱️
הפורטל נשאר פתוח 5 דקות. לאחר מכן הלוח נכנס לשינה ומנסה שוב בהקיצה הבאה.
09
בדיקה ב-Serial Monitor 1 דקה
  • Tools → Serial Monitor
  • Baud Rate: 115200
  • לחץ Reset בלוח

פלט תקין:

Serial Monitor
NestBoard FW v0.1.0 · NB-0001
WiFi connected — 192.168.1.xx
POST /api/devices/NB-0001/sync → 200
Server: updated=true
Downloading image...
PNG decoded OK · 800x480
Display updated.
Sleeping 1800s...
הצלחת! המסך יציג את התמונה ויכנס לשינה עמוקה. עדכון הבא עוד 30 דקות.
Arduino IDE5 min
ESP32 board support (הורדה)5–15 min
ספריות מ-ZIP2–3 min
עריכת id.h + צריבה2–3 min
הגדרת WiFi + sync ראשון3–5 min
סה"כ~20 min
שאלות נפוצות
בדוק את הכבל: כבלי USB-C "לטעינה בלבד" לא מעבירים data. נסה כבל אחר.

BOOT mode: כבה ← לחץ והחזק BOOT ← הדלק ← המתן 2s ← שחרר ← Upload.

Windows: פתח Device Manager ובדוק שמופיע COM port חדש בחיבור הלוח. אם יש סימן קריאה — נסה כבל אחר.
XIAO_ESP32S3 לא נמצא: ודא שהתקנת גרסה 3.3.8 של Espressif Systems (לא גרסה אחרת).

JsonDocument לא מוגדר: הקוד דורש ArduinoJson v7. הסר v6 שמותקנת והתקן מ-ArduinoJson_v7.4.3.zip.
פתח Serial Monitor ובדוק מה מופיע:

— אם NOT DEFINED: ספריית Seeed_GFX לא מותקנת נכון. הוסף מחדש מ-Seeed_GFX_v2.0.3.zip.
— אם PNG decode failed: בעיה בהורדה מהשרת. בדוק חיבור.
— אם לא מופיע כלום: ייתכן שהצריבה נכשלה. צרוב שוב.
ה-AP נפתח רק אם אין רשת WiFi שמורה ב-NVS.

לאפס ולהתחיל מחדש: ב-Arduino IDE לפני צריבה: Tools → Erase All Flash Before Sketch Upload → Enabled, צרוב שוב — הלוח יפתח את פורטל ה-Setup.
בדוק ב-Serial Monitor מה ה-HTTP status code.

Timeout / Connection refused: השרת ב-Render free tier עלול לישון. המתן 30–60 שניות ונסה שוב.

403 / 401: בדוק DEVICE_TOKEN ב-config.h — אם השרת דורש token שנאלחץ בהתחלה.

שרת שגוי: ב-config.h ודא שה-DEFAULT_SERVER_URL נכון ולא נשאר localhost.
בדוק ב-Serial: מופיע updated=false — השרת לא שינה render. עדכן בממשק הניהול ומתן ל-sync הבא.

אם updated=true אבל המסך לא משתנה — בעיה בהורדת ה-PNG. בדוק שה-image_url בתגובה נגיש.
זמן השינה נשלט על ידי השרת — השדה next_check_in_seconds בתגובת ה-sync.

ברירת מחדל: 1800 שניות (30 דקות) מוגדרת ב-config.h → DEFAULT_SLEEP_SECONDS.

לשינוי קבוע: ערוך ב-config.h. לשינוי דינמי: שלח מהשרת ב-sync response.
רק קובץ אחד משתנה: id.h

לוח ראשון: DEVICE_SERIAL "NB-0001"
לוח שני: DEVICE_SERIAL "NB-0002"

שאר הקבצים (config.h, FW.ino, driver.h, display.h) זהים לכל הלוחות.
הלוח שומר עד 5 רשתות ב-NVS.

להוסיף רשת: כרגע דרך צריבה מחדש עם Erase Flash — או בעדכון FW עתידי שיוסיף API לניהול WiFi בזמן ריצה.

לאפס הכל: Tools → Erase All Flash Before Sketch Upload → Enabled → צרוב.
Device Sync Protocol
POST
/api/devices/{deviceId}/sync

הלוח שולח בכל הקיצה:

Request Body
{
  "device_serial":       "NB-0001",
  "fw_version":          "0.1.0",
  "current_render_hash": "abc123...",
  "battery_mv":          3750,
  "rssi":                -62
}

תגובה כאשר אין עדכון:

Response · no update
{ "updated": false, "next_check_in_seconds": 1800 }

תגובה כאשר יש תמונה חדשה:

Response · updated
{
  "updated":               true,
  "render_hash":           "xyz789...",
  "image_url":             "https://nestboard.online/.../image.png",
  "next_check_in_seconds": 1800
}
Device wakes
POST /sync
compare hash
updated=true
GET image.png
display
Deep Sleep
next_check_in_seconds