PHP इन द वर्ल्ड ऑफ हार्डवेयर: माइक्रोकंट्रोलर के बिना एम्बेडेड कोड कैसे लिखें

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

PHP और एम्बेडेड: हार्डवेयर और स्क्रिप्ट का अप्रत्याशित मिश्रण

\n\n

जब आप "एम्बेडेड डेवलपमेंट" सुनते हैं, तो आमतौर पर C, C++ या नया Rust दिमाग में आता है। PHP वेबसाइटों, CMS और चिपचिपे फॉर्म से जुड़ा है। लेकिन क्या होगा अगर मैं कहूं कि PHP LED को नियंत्रित कर सकता है, तापमान सेंसर से डेटा ले सकता है, या I2C बस के साथ भी काम कर सकता है? हाँ, यह कोई मज़ाक नहीं है। वेब और एम्बेडेड सिस्टम के संगम पर एक पूरी निच है — PHP में एम्बेडेड डेवलपमेंट।

\n\n

बेशक, कोई भी Linux के लिए PHP में ड्राइवर लिखने का सुझाव नहीं दे रहा है। बात कुछ और है: जब आपको स्मार्ट होम, IoT डिवाइस प्रोटोटाइप के लिए जल्दी से वेब इंटरफ़ेस बनाना हो, या औद्योगिक उपकरणों से डेटा संग्रह को स्वचालित करना हो — तो PHP एक आदर्श गोंद साबित होता है। यह Linux पर काम करता है, आसानी से डिवाइस फ़ाइलों को पढ़/लिख सकता है, और इसकी लाइब्रेरीज़ COM-पोर्ट, GPIO और यहां तक कि Arduino के साथ संवाद करने की अनुमति देती हैं। आइए एम्बेडेड सिस्टम में PHP के उपयोग के वास्तविक परिदृश्यों को कोड और व्यावहारिक सुझावों के साथ देखें।

\n\n

एम्बेडेड के लिए PHP क्यों? मिथक और वास्तविकता

\n\n

विरोधियों का मुख्य तर्क: "PHP धीमा है और रियल-टाइम के लिए उपयुक्त नहीं है।" और यह सच है, यदि आप माइक्रोसेकंड सटीकता के साथ स्टेपर मोटर को नियंत्रित करने का प्रयास कर रहे हैं। लेकिन वास्तविक जीवन में 90% एम्बेडेड कार्यों को कठोर रियल-टाइम की आवश्यकता नहीं होती है। प्रति सेकंड एक बार सेंसर से डेटा एकत्र करना, तापमान लॉग करना, UART पर कमांड भेजना — यह सब PHP आसानी से करता है।

\n\n

PHP के साथ एम्बेडेड डेवलपमेंट के लाभ:

\n
    \n
  • त्वरित शुरुआत — C में पॉइंटर्स और मेमोरी सीखने की आवश्यकता नहीं है। बस एक फ़ाइल खोलें और लिखें।
  • \n
  • "बॉक्स से बाहर" वेब इंटरफ़ेस — किसी भी PHP स्क्रिप्ट को तुरंत HTML+CSS+JS में लपेटा जा सकता है।
  • \n
  • विशाल समुदाय — हार्डवेयर के साथ काम करने के लिए तैयार लाइब्रेरीज़ (php-serial, php-gpio, php-i2c) उपलब्ध हैं।
  • \n
  • क्रॉस-प्लेटफ़ॉर्म — स्क्रिप्ट Raspberry Pi, Orange Pi, Linux वाले सामान्य PC पर काम करती है।
  • \n
\n\n

नुकसान भी हैं: PHP बार-बार इंटरप्ट वाले उच्च-लोड सिस्टम के लिए उपयुक्त नहीं है। लेकिन प्रोटोटाइपिंग, स्मार्ट होम या औद्योगिक निगरानी के लिए — यह एक उत्कृष्ट विकल्प है।

\n\n

PHP के माध्यम से GPIO के साथ काम करना: LED जलाना

\n\n

हार्डवेयर को "महसूस" करने का सबसे आसान तरीका Raspberry Pi या Orange Pi पर GPIO पिन को नियंत्रित करना है। Linux में, GPIO को /sys/class/gpio/ में फ़ाइलों के रूप में दर्शाया जाता है। PHP उन्हें सामान्य टेक्स्ट फ़ाइलों की तरह खोल सकता है। यहाँ PHP में LED को ब्लिंक करने का एक उदाहरण है:

\n\n
<?php\n// GPIO पिन नंबर परिभाषित करें (उदाहरण के लिए, GPIO17 — RPi पर भौतिक पिन 11)\n$gpio_pin = 17;\n\n// पिन को एक्सपोर्ट करें (यदि पहले से एक्सपोर्ट नहीं किया गया है)\nif (!file_exists("/sys/class/gpio/gpio$gpio_pin")) {\n    file_put_contents("/sys/class/gpio/export", $gpio_pin);\n}\n\n// दिशा सेट करें — आउटपुट\nfile_put_contents("/sys/class/gpio/gpio$gpio_pin/direction", "out");\n\n// 5 बार ब्लिंक करें\nfor ($i = 0; $i < 5; $i++) {\n    // चालू करें (1)\n    file_put_contents("/sys/class/gpio/gpio$gpio_pin/value", "1");\n    sleep(1);\n    // बंद करें (0)\n    file_put_contents("/sys/class/gpio/gpio$gpio_pin/value", "0");\n    sleep(1);\n}\n\n// पिन को मुक्त करें\nfile_put_contents("/sys/class/gpio/unexport", $gpio_pin);\necho "LED blinking finished!";\n?>
\n\n

यह कोड PHP के माध्यम से डिवाइस नियंत्रण के लिए आधार है। आप आसानी से एक बटन पढ़ना जोड़ सकते हैं (बस दिशा को "in" में बदलें और value पढ़ें)। इस प्रकार, PHP डिस्क्रीट सिग्नल के साथ काम करने के लिए एक पूर्ण उपकरण में बदल जाता है।

\n\n

php-gpio लाइब्रेरी का उपयोग

\n\n

हर बार एक्सपोर्ट/अनएक्सपोर्ट लिखने से बचने के लिए, तैयार लाइब्रेरी का उपयोग करें। Composer के माध्यम से इंस्टॉल करें:

\n
composer require piwik/gpio
\n\n

उसी लाइब्रेरी के साथ उदाहरण:

\n
<?php\nrequire 'vendor/autoload.php';\n\nuse Piwik\\Gpio\\Gpio;\n\n$gpio = new Gpio();\n$pin = $gpio->getPin(17);\n\n// आउटपुट के रूप में कॉन्फ़िगर करें\n$pin->setDirection(Gpio::DIRECTION_OUT);\n\n// चालू करें                

ब्लॉग

पुस्तक अनुशंसाएँ