البرمجة

تفاعل مع BLE على Raspberry Pi 3 باستخدام Java

في هذا المقال، سنستكشف كيفية الوصول إلى خاصية BLE (Bluetooth Low Energy) على Raspberry Pi 3 باستخدام لغة البرمجة جافا. يُعد Raspberry Pi 3 جهازًا قويًا ومتعدد الاستخدامات، وتوفر إمكانية دعم BLE، وهو ما يجعله مثاليًا لتطوير تطبيقات IoT (أنترنت الأشياء) التي تعتمد على تقنية BLE.

للبداية، قد تكون قد استخدمت أمر sudo hcitool lescan لفحص الأجهزة المجاورة واسترجاع المعلومات الخاصة بها. ولكن كيف يمكننا القيام بذلك بشكل برمجي باستخدام لغة البرمجة جافا؟

أولاً وقبل كل شيء، يتعين علينا التأكد من أن مكتبات Java المناسبة مثبتة على Raspberry Pi. يمكننا استخدام Java Bluetooth (BlueCove) API لتحقيق ذلك. يمكن تثبيت BlueCove باستخدام أداة إدارة حزم Java المستخدمة عادةً على Raspberry Pi، مثل apt:

bash
sudo apt-get install bluez bluez-hcidump bluez-tools sudo apt-get install libbluetooth-dev

بعد تثبيت BlueZ، يمكنك استخدام Java Bluetooth API للتفاعل مع BLE. يمكنك إنشاء برنامج Java بسيط باستخدام BlueCove لاستكشاف الأجهزة BLE في نطاق الرؤية.

java
import javax.bluetooth.*; import java.io.IOException; public class BLEScanner { public static void main(String[] args) { try { LocalDevice localDevice = LocalDevice.getLocalDevice(); DiscoveryAgent discoveryAgent = localDevice.getDiscoveryAgent(); DiscoveryListener listener = new DiscoveryListener() { public void deviceDiscovered(RemoteDevice remoteDevice, DeviceClass deviceClass) { try { System.out.println("Discovered device: " + remoteDevice.getBluetoothAddress()); System.out.println("Device Name: " + remoteDevice.getFriendlyName(true)); } catch (IOException e) { e.printStackTrace(); } } public void inquiryCompleted(int discType) { if (discType == DiscoveryListener.INQUIRY_COMPLETED) { System.out.println("Inquiry completed."); } else { System.out.println("Inquiry failed."); } System.exit(0); } public void servicesDiscovered(int transID, ServiceRecord[] servRecord) { } public void serviceSearchCompleted(int transID, int respCode) { } }; UUID[] uuids = new UUID[]{new UUID(0x1800), new UUID(0x1801)}; boolean started = discoveryAgent.startInquiry(DiscoveryAgent.GIAC, listener); if (started) { System.out.println("Scanning for devices..."); } else { System.out.println("Failed to start inquiry."); } } catch (BluetoothStateException e) { e.printStackTrace(); } } }

هذا البرنامج يستخدم واجهة DiscoveryAgent للكشف عن الأجهزة في نطاق الرؤية وعرض معلومات حولها، بما في ذلك عنوان BLE (MAC) والاسم الصديق. قم بتشغيل هذا البرنامج على Raspberry Pi لاكتشاف الأجهزة BLE المجاورة.

بهذه الطريقة، يمكنك الوصول إلى BLE على Raspberry Pi 3 باستخدام Java والبدء في تطوير تطبيقات IoT مبتكرة تستفيد من هذه التقنية المثيرة. تذكر دائماً تكامل BlueCove مع مشاريعك وتعديل الشيفرة حسب احتياجات التطبيق الخاص بك.

المزيد من المعلومات

بالتأكيد، دعونا نوسع المعلومات حول كيفية الوصول إلى BLE على Raspberry Pi 3 باستخدام Java. بالنظر إلى أن BlueCove توفر واجهة برمجة تطبيق (API) للتفاعل مع Bluetooth، يمكننا استخدامها لتحقيق مزيد من الوظائف وتوسيع إمكانيات التطبيقات.

استكشاف الخدمات (Services) والخاصيات (Characteristics):

بعد اكتشاف الجهاز، يمكننا استكشاف الخدمات والخاصيات التي يقدمها. يُعتبر هذا جوانب مهمة في تطبيقات BLE حيث توفر خدمات معينة وسمات تحمل البيانات. يمكن تحديد الخدمات بمعرف UUID، والتحقق من الخواص المدعومة.

java
public void servicesDiscovered(int transID, ServiceRecord[] servRecord) { for (ServiceRecord record : servRecord) { String url = record.getConnectionURL(ServiceRecord.NOAUTHENTICATE_NOENCRYPT, false); if (url != null) { DataElement serviceName = record.getAttributeValue(0x0100); System.out.println("Service Name: " + serviceName.getValue()); System.out.println("Service URL: " + url); } } }

الاتصال والقراءة/الكتابة:

بعد استكشاف الخدمات، يمكنك إقامة اتصال والتفاعل مع الخواص. على سبيل المثال، يمكن قراءة قيمة من سمة أو كتابة قيمة إليها.

java
public void servicesDiscovered(int transID, ServiceRecord[] servRecord) { for (ServiceRecord record : servRecord) { String url = record.getConnectionURL(ServiceRecord.NOAUTHENTICATE_NOENCRYPT, false); if (url != null) { try { RemoteDevice remoteDevice = RemoteDevice.getRemoteDevice(url); StreamConnection connection = (StreamConnection) Connector.open(url); InputStream inputStream = connection.openInputStream(); OutputStream outputStream = connection.openOutputStream(); // Perform read/write operations here connection.close(); } catch (IOException e) { e.printStackTrace(); } } } }

هذا يتيح لك بناء تطبيق يقوم بالاتصال بجهاز BLE، وقراءة أو كتابة البيانات بين Raspberry Pi والجهاز المستهدف.

التعامل مع الحدث:

لمتابعة الأحداث مثل فقدان الاتصال أو تغيير حالة BLE، يمكننا استخدام الحدث inquiryCompleted ومعالجة الحالة بما يتناسب.

java
public void inquiryCompleted(int discType) { if (discType == DiscoveryListener.INQUIRY_COMPLETED) { System.out.println("Inquiry completed."); } else { System.out.println("Inquiry failed."); } System.exit(0); }

باستخدام هذه الأدوات والوظائف، يمكنك تطوير تطبيقات معقدة تستفيد من إمكانيات BLE على Raspberry Pi 3 باستخدام Java. تذكر دائمًا تكامل هذه المفاهيم في مشروعك وضبط الشيفرة حسب احتياجات التطبيق الخاص بك.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر