אפשר לבנות מערכת כזו גם למחשב (Windows/Linux) וגם לאנדרואיד, אבל חשוב להבין: BLE Beacon לא תמיד מאפשרים קריאת MAC Address באנדרואיד (מגבלות פרטיות החל מ‑Android 6). עדיין אפשר לקרוא את ה‑ID (UUID / Major / Minor) ולבנות טבלת מיפוי.
אכין לך שתי דוגמאות קוד:
- 🖥️ קוד למחשב (Python) – סורק BLE ומחזיר MAC + נתוני Beacon
- 📱 קוד לאנדרואיד (Kotlin) – סורק BLE ומחזיר Beacon ID (ולפעמים MAC אם המכשיר מאפשר)
ובסוף – טבלת המרה פשוטה בין Beacon → מיקום.
🖥️ קוד למחשב (Python – Windows/Linux)
נשתמש בספריית bleak.
from bleak import BleakScanner
# טבלת המרה בין MAC/ID למיקום
beacon_locations = {
"AA:BB:CC:DD:EE:01": "תל אביב",
"AA:BB:CC:DD:EE:02": "ירושלים",
"AA:BB:CC:DD:EE:03": "חיפה"
}
async def scan_beacons():
print("סורק BLE...")
devices = await BleakScanner.discover()
for d in devices:
mac = d.address
name = d.name
rssi = d.rssi
location = beacon_locations.get(mac, "מיקום לא ידוע")
print(f"MAC: {mac}, שם: {name}, RSSI: {rssi}, מיקום: {location}")
import asyncio
asyncio.run(scan_beacons())
✔️ קוד זה מחזיר MAC Address מלא
✔️ מתאים למחשב
✔️ מאפשר מיפוי למיקום לפי טבלה
📱 קוד לאנדרואיד (Kotlin)
אנדרואיד מאפשר סריקת BLE, אבל החל מ‑Android 6 MAC Address לרוב מוסתר.
עדיין אפשר לזהות Beacon לפי ה‑UUID / Major / Minor.
val bluetoothAdapter = BluetoothAdapter.getDefaultAdapter()
val scanner = bluetoothAdapter.bluetoothLeScanner
// טבלת מיפוי לפי UUID
val beaconLocations = mapOf(
"12345678-1234-1234-1234-123456789001" to "תל אביב",
"12345678-1234-1234-1234-123456789002" to "ירושלים"
)
val scanCallback = object : ScanCallback() {
override fun onScanResult(callbackType: Int, result: ScanResult) {
val scanRecord = result.scanRecord ?: return
val serviceUuids = scanRecord.serviceUuids
serviceUuids?.forEach { parcelUuid ->
val uuid = parcelUuid.uuid.toString()
val location = beaconLocations[uuid] ?: "מיקום לא ידוע"
println("Beacon UUID: $uuid, RSSI: ${result.rssi}, מיקום: $location")
}
}
}
val scanSettings = ScanSettings.Builder()
.setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
.build()
scanner.startScan(null, scanSettings, scanCallback)
✔️ מזהה Beacon לפי UUID
✔️ MAC Address לא תמיד זמין – מגבלה של אנדרואיד
✔️ מאפשר מיפוי למיקום לפי טבלה
🗺️ דוגמה לטבלת המרה (Beacon → מיקום)
| Beacon ID / MAC | מיקום |
|---|---|
| AA:BB:CC:DD:EE:01 | תל אביב |
| AA:BB:CC:DD:EE:02 | ירושלים |
| 1234-UUID-001 | תל אביב |
| 1234-UUID-002 | ירושלים |
Designing RF/Beacon system
The user wants a diagram of an RF/Beacon system, referencing BLE beacon mapping and RF systems. I’ll describe the block diagram in text, keeping it concise. The system includes beacons, an RF layer, a receiver (PC/Android), mapping logic, a server, a database, and a UI. I’ll break it down into sections: beacons send signals, the RF layer handles communication, the receiver processes data, mapping logic interprets it, and the server stores info in the database, which is displayed on the UI.
תרשים בלוקים – מערכת Beacon BLE + RF ברמת ארגון
1. שכבת השידור – Beacon RF
Beacon 1
תדר: 2.4GHz (BLE)
שדות שידור: UUID / Major / Minor / Tx PowerBeacon 2
Beacon N
כל הביקונים משדרים בפרקי זמן קבועים (Advertising Interval), בלי חיבור, רק Broadcast.
2. שכבת הקליטה – מכשיר קצה
א. טלפון אנדרואיד
- מודול RF:
אנטנה 2.4GHz → מקלט BLE → Stack Bluetooth - שכבת תוכנה:
Android BluetoothLeScanner
↓
ScanCallback
↓
ניתוח UUID / RSSI
↓
טבלת המרה Beacon→מיקום
↓
הצגת "איפה אני" על המסך
ב. מחשב (PC)
- מודול RF:
דונגל BLE / כרטיס BT → אנטנה → מקלט BLE - שכבת תוכנה:
Python + Bleak
↓
סריקת מכשירים (MAC + RSSI + נתוני Beacon)
↓
טבלת המרה MAC/ID→מיקום
↓
הצגת מיקום / שליחה לשרת
3. שרת מרכזי (אופציונלי אבל ארגוני)
API Server (REST/WebSocket):
מקבל מהטלפון/מחשב:- מזהה משתמש / מכשיר
- Beacon ID / MAC / UUID
- RSSI
- זמן
Logic:
- מיפוי Beacon→מיקום
- שמירת היסטוריית מיקומים
- חישוב "איפה המשתמש עכשיו"
- אפשר גם: זיהוי אזורים (תל אביב / ירושלים / קומה / חדר)
Database:
- טבלת Beacons:
- ID / MAC / UUID
- מיקום (עיר, בניין, קומה, חדר)
- טבלת מיקומים:
- UserID, BeaconID, Time, RSSI, Location
- טבלת Beacons:
4. ממשק משתמש (UI)
אפליקציית מובייל:
- מסך שמראה: "אתה עכשיו: תל אביב – ביקון 2"
- אפשר מפה / רשימת אזורים
ממשק וובי / Desktop:
- מפה ארגונית
- הצגת מיקום משתמשים / ציוד
- דוחות היסטוריים
תרשים טקסטואלי מרוכז
[Beacon RF Layer]
Beacon 1 (UUID/MAC, 2.4GHz)
Beacon 2
...
↓ (Broadcast RF)
[Receiver Device]
אנטנה → מקלט BLE → Stack BT
↓
אפליקציה (Android / PC)
↓
זיהוי Beacon (UUID/MAC + RSSI)
↓
טבלת המרה Beacon→מיקום
↓
הצגת מיקום / שליחה לשרת
[Central Server]
API ← נתוני Beacon מהמכשירים
↓
לוגיקת מיקום + DB
↓
UI (Web / Reports / Monitoring)
אם תרצה, בשלב הבא אני יכול לפרק איתך אחד מהבלוקים האלה לעומק:
למשל—רק שכבת RF (אנטנה, Matching, Link Budget) או רק צד השרת.
הכנתי לך מפת מערכת ברורה, נקייה וקריאה — תרשים ארכיטקטורה של מערכת BLE‑Beacon + RF כפי שביקשת.
היא מוצגת כ־ASCII Diagram כדי שתוכל להעתיק, לשלב במסמכים או להרחיב.
🗺️ מפת מערכת – BLE Beacon RF System
┌──────────────────────────────────────────────────────────────┐
│ שכבת השידור (RF) │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Beacon 1 │ │ Beacon 2 │ ... │ Beacon N │ │
│ │ UUID / MAC │ │ UUID / MAC │ │ UUID / MAC │ │
│ │ Tx Power │ │ Tx Power │ │ Tx Power │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ | | | │
│ └───────────────(Broadcast RF 2.4GHz)───────────┘ │
└──────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────┐
│ שכבת הקליטה (Receivers) │
│ │
│ ┌──────────────────────────┐ ┌────────────────────────┐ │
│ │ טלפון אנדרואיד │ │ מחשב PC │ │
│ │ אנטנה → BLE Scanner │ │ אנטנה → BLE Scanner │ │
│ │ ScanCallback │ │ Python + Bleak │ │
│ │ RSSI + UUID │ │ RSSI + MAC │ │
│ └──────────────┬───────────┘ └──────────────┬─────────┘ │
│ | | │
│ └───────────────┬─────────────────┘ │
│ | │
│ טבלת המרה Beacon → מיקום │
│ (במכשיר או בשרת) │
└──────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────┐
│ שכבת השרת המרכזי (Backend) │
│ │
│ ┌──────────────────────────┐ │
│ │ API Server │ ← נתוני BLE מהמכשירים │
│ │ REST / WebSocket │ │
│ └──────────────┬───────────┘ │
│ | │
│ ┌──────────────┴────────────┐ │
│ │ מנוע לוגיקה (Logic) │ │
│ │ - מיפוי Beacon→מיקום │ │
│ │ - חישוב מיקום נוכחי │ │
│ │ - ניתוח RSSI │ │
│ └──────────────┬────────────┘ │
│ | │
│ ┌──────────────┴────────────┐ │
│ │ Database │ │
│ │ - טבלת Beacons │ │
│ │ - טבלת מיקומים │ │
│ │ - היסטוריית תנועה │ │
│ └───────────────────────────┘ │
└──────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────┐
│ שכבת הצגת מידע (UI) │
│ │
│ ┌──────────────────────────┐ ┌────────────────────────┐ │
│ │ אפליקציית מובייל │ │ ממשק וובי / Desktop │ │
│ │ "אתה נמצא עכשיו ב..." │ │ מפה, דוחות, ניטור │ │
│ └──────────────────────────┘ └────────────────────────┘ │
└──────────────────────────────────────────────────────────────┘
🎯 מה המפה הזו נותנת לך?
- מבנה מלא של מערכת BLE‑RF ארגונית
- זרימת מידע מהביקון → מקלט → שרת → UI
- הפרדה בין שכבות RF, תוכנה, Backend ו־UI
- בסיס מצוין לפיתוח, מצגת או מסמך אפיון
אם תרצה, אוכל גם:
- להוסיף תרשים זרימה (Flowchart)
- להכין Sequence Diagram
- לבנות ארכיטקטורה עם HA / Load Balancing
- להוסיף תכנון RF אמיתי (Link Budget, אנטנות, Matching)
תגיד לי לאן אתה רוצה לקחת את זה.
אם אתה אומר "הכל", אני מבין שאתה רוצה מערכת מלאה מקצה־לקצה:
ארכיטקטורה, תרשימי זרימה, תרשים רצף, תכנון RF, Link Budget, אנטנות, Matching, צד שרת, צד מובייל, צד מחשב, בסיס נתונים, API, לוגיקה, UI — הכול במקום אחד, בצורה מסודרת וברורה.
אז הנה המערכת המלאה, בנויה בשכבות, עם כל התרשימים וההסברים שאתה צריך כדי ממש להקים אותה.
🧱 1. ארכיטקטורה כללית – BLE Beacon RF System
┌──────────────────────────────────────────────────────────────┐
│ שכבת השידור (RF) │
│ Beacon 1 (UUID/MAC, Tx Power) │
│ Beacon 2 │
│ Beacon N │
│ ↓ Broadcast RF 2.4GHz │
└──────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────┐
│ שכבת הקליטה (Receivers) │
│ טלפון אנדרואיד: BLE Scanner → UUID/RSSI │
│ מחשב PC: BLE Scanner → MAC/RSSI │
│ ↓ │
│ טבלת המרה Beacon→מיקום │
└──────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────┐
│ שכבת השרת המרכזי (Backend) │
│ API Server (REST/WebSocket) │
│ ↓ │
│ מנוע לוגיקה: מיפוי, חישוב מיקום, ניתוח RSSI │
│ ↓ │
│ Database: Beacons, Locations, History │
└──────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────┐
│ שכבת הצגת מידע (UI) │
│ אפליקציית מובייל – "איפה אני" │
│ ממשק וובי – מפה, ניטור, דוחות │
└──────────────────────────────────────────────────────────────┘
🔄 2. תרשים זרימה (Flowchart)
[Start]
↓
Scan BLE (Android/PC)
↓
Extract UUID/MAC + RSSI
↓
Lookup in Beacon→Location Table
↓
If found → Assign Location
Else → Unknown Location
↓
Send to Server (optional)
↓
Server stores + analyzes
↓
UI displays current location
↓
[End]
📡 3. תכנון RF מלא – מהנדס RF אמיתי
✔ תדר עבודה
BLE = 2.4GHz ISM band
✔ Link Budget (דוגמה)
- עוצמת שידור Beacon: 0 dBm
- רווח אנטנה Beacon: 2 dBi
- רווח אנטנה מקלט: 0–2 dBi
- Path Loss (10m indoor): ~60 dB
- רגישות BLE Receiver: –90 dBm
חישוב:
( P_{RX} = 0 + 2 + 2 - 60 = -56 \text{ dBm} )
הרבה מעל רגישות המקלט → תקשורת יציבה.
✔ אנטנה
- Patch / Chip / PCB Trace
- רווח 1–3 dBi
- כיוון: Omni
✔ Matching
- התאמת עכבות ל־50Ω
- רשת L או Π
- בדיקה ב־VNA: S11 < –10 dB
✔ רעש (Noise Figure)
- BLE Receiver טיפוסי: 3–5 dB
- מספיק למרחקים של 10–30 מטר בתוך מבנה
🧩 4. תרשים רצף (Sequence Diagram)
User Device BLE Beacon Server
| | |
|<-- Broadcast ---| |
| Scan + Decode | |
| | |
|-- Send Data ------------------->|
| | |
|<-- Location Response -----------|
| | |
Display Location | |
🖥️ 5. צד מחשב (PC) – Python
from bleak import BleakScanner
BEACON_MAP = {
"AA:BB:CC:DD:EE:01": "תל אביב",
"AA:BB:CC:DD:EE:02": "ירושלים"
}
async def scan():
devices = await BleakScanner.discover()
for d in devices:
mac = d.address
rssi = d.rssi
location = BEACON_MAP.get(mac, "לא ידוע")
print(f"{mac} RSSI={rssi} → {location}")
import asyncio
asyncio.run(scan())
📱 6. צד אנדרואיד (Kotlin)
val beaconMap = mapOf(
"12345678-1234-1234-1234-123456789001" to "תל אביב",
"12345678-1234-1234-1234-123456789002" to "ירושלים"
)
val scanCallback = object : ScanCallback() {
override fun onScanResult(type: Int, result: ScanResult) {
val uuid = result.scanRecord?.serviceUuids?.firstOrNull()?.uuid.toString()
val location = beaconMap[uuid] ?: "לא ידוע"
println("UUID=$uuid RSSI=${result.rssi} → $location")
}
}
🗄️ 7. בסיס נתונים (DB Schema)
טבלת Beacons
| id | mac/uuid | city | building | floor | room |
טבלת Locations
| id | user_id | beacon_id | rssi | timestamp |
🌐 8. API Server (REST)
POST /location
{
"device_id": "phone123",
"beacon_id": "12345678-1234",
"rssi": -65
}
Response:
{
"location": "תל אביב - קומה 2"
}
🖥️ 9. ממשק משתמש (UI)
מובייל:
- מסך: "אתה נמצא עכשיו ב: תל אביב – חדר 204"
- צבעים לפי אזור
- היסטוריית מיקומים
וובי:
- מפה ארגונית
- Heatmap של RSSI
- ניטור בזמן אמת
🎯 10. מה נשאר?
כלום — זה הכול:
ארכיטקטורה, תרשימים, RF, קוד, DB, API, UI.
אם תרצה, אוכל עכשיו:
- להפוך את זה למסמך אפיון רשמי
- לבנות גרסה מתקדמת עם Triangulation
- להוסיף Machine Learning לזיהוי מיקום
- או לבנות לך אפליקציה מלאה לפי הדרישות שלך
הכנתי עבורך מסמך אפיון רשמי ומסודר למערכת BLE‑Beacon + RF, כולל עלויות משוערות ברמת ארגון.
המסמך כתוב בפורמט מקצועי, כמו שמגישים להנהלה, ל־IT או לספק חיצוני.
📄 מסמך אפיון רשמי – מערכת איתור מיקום מבוססת BLE Beacon + RF
1. תקציר מנהלים
המערכת מאפשרת זיהוי מיקום משתמשים/ציוד בתוך מבנים או בין אתרים (לדוגמה: תל אביב, ירושלים, חיפה) באמצעות Beacon BLE המשדרים אות RF בתדר 2.4GHz.
המערכת כוללת שכבת שידור (Beacon), שכבת קליטה (טלפון/מחשב), שרת מרכזי, בסיס נתונים וממשק משתמש.
2. מטרות המערכת
- זיהוי מיקום בזמן אמת ברמת חדר/קומה/אתר.
- תמיכה במאות משתמשים במקביל.
- איסוף נתוני RSSI וניתוחם.
- תיעוד היסטוריית מיקומים.
- ממשק ניהול מרכזי.
- תמיכה ב־Android ובמחשבים (Windows/Linux).
3. תכולת המערכת
3.1 שכבת שידור – Beacon RF
- Beacon BLE בתדר 2.4GHz.
- שידור UUID / Major / Minor.
- טווח: 10–40 מטר בתוך מבנה.
- חיי סוללה: 1–3 שנים.
- התקנה פיזית בנקודות מפתח.
3.2 שכבת קליטה – מכשירי קצה
אנדרואיד:
- סריקת BLE באמצעות BluetoothLeScanner.
- קריאת UUID + RSSI.
- שליחת נתונים לשרת.
מחשב:
- סריקת BLE באמצעות Python + Bleak.
- קריאת MAC + RSSI.
- שליחת נתונים לשרת.
3.3 שרת מרכזי
- API לקבלת נתוני Beacon.
- מנוע לוגיקה: מיפוי Beacon→מיקום.
- חישוב מיקום נוכחי.
- ניתוח RSSI.
- שמירת היסטוריה.
3.4 בסיס נתונים
טבלת Beacons:
- מזהה Beacon
- מיקום פיזי (עיר/בניין/קומה/חדר)
- פרמטרי RF (Tx Power, תדר)
טבלת מיקומים:
- מזהה משתמש
- Beacon מזוהה
- RSSI
- זמן
- מיקום מחושב
3.5 ממשק משתמש
- אפליקציית מובייל: הצגת מיקום נוכחי.
- ממשק וובי: מפה, ניטור, דוחות, Heatmap.
4. ארכיטקטורה כללית
Beacons → Receivers (Android/PC) → API Server → Logic Engine → DB → UI
5. דרישות טכניות
5.1 RF
- תדר: 2.4GHz
- הספק שידור: 0–4 dBm
- אנטנה: Omni 1–3 dBi
- התאמת עכבות: 50Ω
- VSWR < 2:1
5.2 תוכנה
- Android 8+
- Python 3.10+
- שרת: Node.js / Python / Java
- DB: PostgreSQL / MySQL
5.3 אבטחה
- תקשורת HTTPS
- Token Authentication
- הרשאות לפי תפקיד
6. תרחישי שימוש
תרחיש 1 – זיהוי מיקום משתמש
- המשתמש נכנס לאזור.
- הטלפון קולט Beacon.
- UUID מזוהה.
- המערכת ממפה למיקום.
- מוצג: “אתה נמצא בתל אביב – חדר 204”.
תרחיש 2 – ניטור ציוד
- מחשב/שרת קולט Beacon של ציוד.
- שולח לשרת.
- מוצג במפה: “ציוד X נמצא בירושלים – קומה 3”.
7. עלויות משוערות
7.1 חומרה – Beacon RF
| פריט | כמות | מחיר יחידה | סה״כ |
|---|---|---|---|
| Beacon BLE איכותי | 50 | 40–60 ₪ | 2,000–3,000 ₪ |
| התקנה פיזית | 50 | 20–40 ₪ | 1,000–2,000 ₪ |
סה״כ שכבת שידור: 3,000–5,000 ₪
7.2 תוכנה – פיתוח
| רכיב | עלות |
|---|---|
| אפליקציית אנדרואיד | 8,000–15,000 ₪ |
| תוכנת PC (Python) | 2,000–4,000 ₪ |
| שרת API + DB | 10,000–20,000 ₪ |
| ממשק וובי | 8,000–15,000 ₪ |
| אינטגרציה ובדיקות | 5,000–10,000 ₪ |
סה״כ פיתוח: 33,000–64,000 ₪
7.3 תשתיות
| רכיב | עלות חודשית |
|---|---|
| שרת בענן (AWS/Azure) | 80–150 ₪ |
| DB מנוהל | 40–80 ₪ |
| ניטור ו־Logging | 20–40 ₪ |
סה״כ חודשי: 140–270 ₪
7.4 עלות כוללת לפרויקט
36,000–70,000 ₪
(תלוי בהיקף, מספר מסכים, מורכבות UI, אינטגרציה וכו')
8. לוחות זמנים
| שלב | זמן |
|---|---|
| אפיון מפורט | 1 שבוע |
| פיתוח אפליקציה | 2–4 שבועות |
| פיתוח שרת + DB | 2–3 שבועות |
| פיתוח UI | 2–3 שבועות |
| בדיקות | 1–2 שבועות |
| התקנה והטמעה | 1 שבוע |
סה״כ: 8–12 שבועות
9. סיכונים ופתרונות
| סיכון | פתרון |
|---|---|
| RSSI לא יציב | פילטר Kalman / ממוצע נע |
| Beacon לא מזוהה | טבלת fallback |
| עומס על השרת | Cache + Load Balancer |
| בעיות RF | מיפוי אתר + בדיקות שטח |
10. מסקנות
המערכת ישימה, זולה יחסית, וניתנת להרחבה.
היא מתאימה לארגונים שרוצים מעקב מיקום פשוט, אמין, וקל לתחזוקה.
אם תרצה, אוכל עכשיו:
- להפוך את המסמך הזה ל־PDF
- להוסיף גרפים ותרשימי RF
- להכין גרסה להצגה להנהלה
- או לבנות הצעת מחיר רשמית לפי דרישות מדויקות שלך
אין תגובות:
הוסף רשומת תגובה