2017-01-21 8 views
6

मैं यह पता लगाने में सक्षम होना चाहता हूं कि परिधीय सेंसर मेरे रास्पबेरी पीआई से कनेक्ट नहीं होता है।मैं कैसे बता सकता हूं कि परिधीय जीपीआईओ से जुड़ा हुआ है या नहीं?

उदाहरण के लिए, यदि मेरे पास एक जीपीआईओ निष्क्रिय इन्फ्रारेड सेंसर है।

मैं इस तरह सभी GPIO बंदरगाहों प्राप्त कर सकते हैं:

PeripheralManagerService manager = new PeripheralManagerService(); 
List<String> portList = manager.getGpioList(); 
if (portList.isEmpty()) { 
    Log.i(TAG, "No GPIO port available on this device."); 
} else { 
    Log.i(TAG, "List of available ports: " + portList); 
} 

तो मैं इस तरह की एक पोर्ट से कनेक्ट कर सकते हैं:

try { 
    Gpio pir = new PeripheralManagerService().openGpio("BCM4") 
    } catch (IOException e) { 
     // not thrown in the case of an empty pin 
    } 

हालांकि भले ही पिन खाली मैं अभी भी से कनेक्ट कर सकते है यह (जो तकनीकी रूप से समझ में आता है, क्योंकि जीपीओ पर या तो बाइनरी है)। ऐसा कोई एपीआई प्रतीत नहीं होता है, और मैं वैध रूप से तर्कसंगत तरीके से सोच नहीं सकता कि आप एक पिन के बीच अंतर कैसे कर सकते हैं जिसमें परिधीय सेंसर जुड़ा हुआ है और वह "खाली" है।

इसलिए फिलहाल, मेरे प्रोग्रामर्स पर जोर देने का कोई तरीका नहीं है कि मेरे सेंसर और सर्किट सही ढंग से सेटअप हो।

किसी के पास कोई विचार है? क्या यह एक इलेक्ट्रॉनिक्स दृष्टिकोण से भी संभव है?

संदर्भ डॉक्स:

https://developer.android.com/things/sdk/pio/gpio.html

उत्तर

6

तरीके "उपस्थिति का पता लगाने" विद्युत करने के लिए बहुत सारी है, लेकिन कुछ भी नहीं है कि आप SoC में आंतरिक रूप से मिलेगा रहे हैं। यदि कुछ जुड़ा हुआ है तो आप आमतौर पर एक जीपीआईओ पिन नहीं पूछेंगे-इसका आपको कोई बताने का कोई तरीका नहीं होगा।

अतिरिक्त जीपीआईओ पिन अक्सर यह पता लगाने के लिए उपयोग किए जाते हैं कि एक परिधीय परिधीय से जुड़ा हुआ है या नहीं। कुछ सेंसर के प्लग में एक "पहचान" रेखा शामिल हो सकती है जो जमीन पर कम हो जाती है और सेंसर संलग्न होने पर जीपीआईओ को कम खींचती है, उदाहरण के लिए। यूएसबी और एसडीआईओ इंटरफेस में कुछ समर्पित सर्किट्री के साथ कुछ ऐसा करते हैं।

आप वर्तमान सेंसिंग जैसी चीजों का उपयोग करके अधिक विस्तृत पहचान सर्किट भी बना सकते हैं, लेकिन उन्हें अनिवार्य रूप से एक समर्पित जीपीआईओ के माध्यम से एक बाइनरी सिग्नल डालना होगा।

सीरियल परिधीय के लिए यह हासिल करना आसान है, क्योंकि आप आमतौर पर एक मूल कमांड भेज सकते हैं और सत्यापित कर सकते हैं कि आपको प्रतिक्रिया मिलती है।

2

पूरी तरह से इनपुट लाइन का उपयोग करके पता लगाना कठिन हो सकता है। सबसे पहले, आप समस्या के दायरे को सीमित करना चाहते हैं। संवेदक की स्थिति को शामिल नहीं किया गया है, संवेदक जुड़ा हुआ है लेकिन प्रतिक्रिया नहीं दे रहा है, या सेंसर एक अनैच्छिक तरीके से प्रतिक्रिया दे रहा है।

तो, यदि यह एक डिजिटल सेंसर है, तो सेंसर के साथ संचार करना पर्याप्त हो सकता है कि यह मौजूद है या नहीं (विशेष रूप से यदि चेकसम या समानता बिट शामिल हैं)। कुछ एनालॉग सेंसर में विशिष्ट चश्मा भी होते हैं जब यह ट्रिगर होने पर व्यवहार करता है। सेंसर मौजूद नहीं है या नहीं, यह निर्धारित करने के लिए आप उन चश्मे से विचलन का उपयोग कर सकते हैं।

यदि आपके पास डिजिटल सेंसर w/o है, तो यह आउटपुट पर कोई त्रुटि जांच रहा है, जहां आप डेटा देखते हैं (इसलिए सभी 0s या सभी 1s मान्य है) या यह आउटपुट के लिए केवल एक बाइनरी 1 या 0 है, तो आप बाहरी मदद की ज़रूरत है। अधिकांश एनालॉग सेंसर के लिए वही।

यह बाहरी सहायता कुछ ऐसी जगह होगी जहां आपने सिस्टम को एक ज्ञात नियंत्रित स्थिति में रखा है, एक बटन दबाएं, और फिर यह एक विशिष्ट सीमा के भीतर आउटपुट के लिए सेंसर की जांच करता है। पूरी तरह से सुनिश्चित करने के लिए, आप कम से कम दो अलग-अलग राज्य चाहते हैं, यह सुनिश्चित करने के लिए कि आपके डिजिटल या एनालॉग इनपुट आपके परीक्षण के लिए सही स्थिति पर फंसने के लिए नहीं होते हैं।

बस किसी अन्य विधि के बारे में सिस्टम के बाहर बाहरी होगा। सेंसर को "पहचानने" के लिए अतिरिक्त आईओ का उपयोग करने से सेंसर बढ़ने में आत्मविश्वास बढ़ने में मदद मिल सकती है, लेकिन आपको झूठी सकारात्मक चीजें मिल सकती हैं, जहां आपने सीखा है कि "कुछ" वहां है - जरूरी नहीं कि आप जिस सेंसर की अपेक्षा करते हैं।

संबंधित मुद्दे

 संबंधित मुद्दे