PHP في عالم الأجهزة: كيفية كتابة كود Embedded بدون متحكمات دقيقة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

PHP والأنظمة المدمجة: مزيج غير متوقع من الأجهزة والنصوص البرمجية



عندما تسمع "تطوير الأنظمة المدمجة"، عادةً ما تتخيل C أو C++ أو Rust الحديث. أما PHP فترتبط بمواقع الويب وأنظمة إدارة المحتوى والنماذج اللزجة. ولكن ماذا لو أخبرتك أن PHP يمكنها التحكم في مصابيح LED، وقراءة مستشعرات درجة الحرارة، أو حتى العمل مع ناقل I2C؟ نعم، هذه ليست مزحة. على الحد الفاصل بين الويب والأنظمة المدمجة، توجد فئة كاملة — تطوير الأنظمة المدمجة باستخدام PHP.



بالطبع، لا أحد يقترح كتابة برامج تشغيل لنظام Linux باستخدام PHP. الأمر يتعلق بشيء آخر: عندما تحتاج إلى إنشاء واجهة ويب بسرعة لمنزل ذكي، أو نموذج أولي لجهاز إنترنت الأشياء، أو أتمتة جمع البيانات من المعدات الصناعية — فإن PHP هو المادة اللاصقة المثالية. فهو يعمل على Linux، ويقرأ/يكتب بسهولة في ملفات الأجهزة، وتسمح مكتباته بالتواصل مع المنافذ التسلسلية و GPIO وحتى Arduino. دعنا نستعرض سيناريوهات حقيقية لاستخدام PHP في الأنظمة المدمجة، مع كود ونصائح عملية.



لماذا PHP للأنظمة المدمجة؟ الخرافات والواقع



الحجة الرئيسية للمعارضين: "PHP بطيء وغير مناسب للتطبيقات الزمنية الحقيقية". وهذا صحيح إذا كنت تحاول التحكم في محرك متدرج بدقة ميكروثانية. ولكن في الحياة الواقعية، 90% من مهام الأنظمة المدمجة لا تتطلب زمنًا حقيقيًا صارمًا. جمع البيانات من مستشعر مرة كل ثانية، تسجيل درجة الحرارة، إرسال أمر عبر UART — كل هذا يفعله PHP بسهولة.



مزايا تطوير الأنظمة المدمجة باستخدام PHP:

  • بداية سريعة — لا حاجة لتعلم المؤشرات وإدارة الذاكرة في C. فقط افتح ملفًا واكتب.
  • واجهة ويب "جاهزة" — يمكن تغليف أي نص PHP فورًا في HTML+CSS+JS.
  • مجتمع ضخم — توجد مكتبات جاهزة للتعامل مع الأجهزة (php-serial, php-gpio, php-i2c).
  • توافق عبر المنصات — يعمل النص على Raspberry Pi و Orange Pi وأجهزة الكمبيوتر العادية التي تعمل بنظام Linux.


هناك أيضًا عيوب: PHP غير مناسب للأنظمة عالية التحميل ذات المقاطعات المتكررة. ولكن للنماذج الأولية والمنزل الذكي أو المراقبة الصناعية — فهو اختيار ممتاز.



العمل مع GPIO عبر PHP: إضاءة مصابيح LED



أسهل طريقة "لمس" الأجهزة هي التحكم في منافذ GPIO على Raspberry Pi أو Orange Pi. في Linux، يتم تمثيل GPIO كملفات في /sys/class/gpio/. يمكن لـ PHP فتحها كملفات نصية عادية. إليك مثال لإضاءة LED باستخدام PHP:



<?php// تعريف رقم دبوس GPIO (مثال: GPIO17 — الدبوس الفيزيائي 11 على RPi)$gpio_pin = 17;

// تصدير الدبوس (إذا لم يتم تصديره بعد)if (!file_exists("/sys/class/gpio/gpio$gpio_pin")) { file_put_contents("/sys/class/gpio/export", $gpio_pin);}

// تعيين الاتجاه — خرجfile_put_contents("/sys/class/gpio/gpio$gpio_pin/direction", "out");

// الوميض 5 مراتfor ($i = 0; $i < 5; $i++) { // تشغيل (1) file_put_contents("/sys/class/gpio/gpio$gpio_pin/value", "1"); sleep(1); // إيقاف (0) file_put_contents("/sys/class/gpio/gpio$gpio_pin/value", "0"); sleep(1);}

// تحرير الدبوسfile_put_contents("/sys/class/gpio/unexport", $gpio_pin);echo "تم الانتهاء من وميض LED!";?>


هذا الكود هو الأساس لأي تحكم في الأجهزة باستخدام PHP. يمكنك بسهولة إضافة قراءة زر (فقط قم بتغيير الاتجاه إلى "in" واقرأ القيمة). بهذه الطريقة، يتحول PHP إلى أداة كاملة للعمل مع الإشارات الرقمية.



استخدام مكتبة php-gpio



لتجنب كتابة التصدير/إلغاء التصدير في كل مرة، استخدم مكتبة جاهزة. قم بتثبيتها عبر Composer:

composer require piwik/gpio


مثال باستخدام نفس المكتبة:

<?phprequire 'vendor/autoload.php';

use Piwik\\Gpio\\Gpio;

$gpio = new Gpio();$pin = $gpio->getPin(17);

// تعيين كخرج$pin->setDirection(Gpio::DIRECTION_OUT);

// تشغيل

المدونات

توصيات الكتب