मैं रास्पबेरी Pi3 (या बाद के मॉडल) पर सीरियल का काम कैसे करूँ


44

मेरा Pi3 सीरियल कंसोल बकवास बनाता है और कीबोर्ड पर प्रतिक्रिया देने में विफल रहता है।

जवाबों:


65

यह उत्तर अभी भी सही है, और परिवर्तनों की प्रकृति के बारे में और अधिक विस्तार से बताता है, लेकिन वर्तमान रास्पियन के अधिकांश उपयोगकर्ताओं को बस sudo raspi-configचयन करना चाहिए Interfacing Options / Serialफिर निर्दिष्ट करें कि क्या आप एक सीरियल कंसोल चाहते हैं (शायद नहीं) तो यदि आप सीरियल पोर्ट हार्डवेयर सक्षम करना चाहते हैं (शायद हाँ)। फिर /dev/serial0किसी भी कोड में उपयोग करें जो सीरियल पोर्ट तक पहुंचता है।

रास्पबेरी Pi3, Pi3B +, Pi3A +, PiZeroW पर BCM2837 में 2 UART (जैसा कि इसके पूर्ववर्ती) थे, हालांकि ब्लूटूथ कार्यक्षमता का समर्थन करने के लिए पूरी तरह से चित्रित PL011 UART को हेडर पिंस से ब्लूटूथ चिप में स्थानांतरित किया गया था और मिनी UART पर उपलब्ध कराया गया था। हेडर पिन 8 & 10.
(Pi4 पर SOC में अतिरिक्त UARTs हैं, लेकिन BCM2837 के रूप में 2 UARTs पिन 8 और 10 और ब्लूटूथ पर डिफ़ॉल्ट धारावाहिक के लिए उपयोग किए जाते हैं।)

यह सीरियल इंटरफ़ेस के उपयोगकर्ताओं के लिए कई परिणाम हैं।

/dev/ttyAMA0पहले से पहुँच UART अब ब्लूटूथ से कनेक्ट करता है के लिए इस्तेमाल किया।
MiniUART अब उपलब्ध है /dev/ttyS0
नवीनतम ऑपरेटिंग सिस्टम सॉफ़्टवेयर में एक है /dev/serial0जो उचित डिवाइस का चयन करता है तो आप की जगह ले सकता /dev/ttyAMA0साथ /dev/serial0और PI3 और पहले के मॉडलों पर एक ही सॉफ्टवेयर का उपयोग करें।

दुर्भाग्य से कई अन्य परिणाम हैं: -

The mini UART is a secondary low throughput UART  
  intended to be used as a console.
The mini Uart has the following features:
• 7 or 8 bit operation.
• 1 start and 1 stop bit.
• No parities.
• Break generation.
• 8 symbols deep FIFOs for receive and transmit.
• SW controlled RTS, SW readable CTS.
• Auto flow control with programmable FIFO level.
• 16550 like registers.
• Baudrate derived from system clock.

समता के लिए कोई समर्थन नहीं है और थ्रूपुट सीमित है, लेकिन बाद वाले को अधिकांश उपयोगों को प्रभावित नहीं करना चाहिए।

एक हत्यारी विशेषता है "सिस्टम घड़ी से प्राप्त बैड्रेट" जो मिनी को बेकार बनाता है क्योंकि यह घड़ी गतिशील रूप से बदल सकती है जैसे कि सिस्टम कम शक्ति में या कम पावर मोड में जाता है।

संशोधित करना /boot/config.txtअंत में निम्नलिखित पंक्ति जोड़कर हटा देगा यह निर्भरता: -

core_freq=250

यह समस्या को ठीक करता है और कम प्रभाव डालता है। SPI clock frequencyऔर ARM Timerभी सिस्टम घड़ी पर निर्भर हैं।

कुछ विचित्र कारणों से नवीनतम 4.4.9 कर्नेल का उपयोग करते हुए Pi3 के लिए डिफॉल्ट UART में है। इसे सक्षम करने के लिए आप को बदलने की जरूरत enable_uart=1में /boot/config.txt। (यह भी ठीक करता है, core_freqइसलिए यह आवश्यक नहीं है।)

अंत में यदि आप ब्लूटूथ का उपयोग नहीं करते हैं (या उपयोग में नहीं आता है) तो डिवाइस ट्री में वापस पोर्ट स्वैप करना संभव है। वहाँ एक pi3-miniuart-btऔर pi3-disable-btमॉड्यूल है जो में वर्णित हैं /boot/overlays/README


महान स्पष्टीकरण के लिए @Milliways धन्यवाद। हालांकि मैं क्या नहीं गया ... मेरे पास एक रेडियो-मॉड्यूल है जो UART का उपयोग करके मेरी रास्पबेरी से जुड़ता है और यह एक बॉड-रेट पसंद करता है 9600। तो यह काम करना चाहिए अगर मैं सेट करता हूं core_freq=250और फिर मा पायथन स्क्रिप्ट में अपनी बॉड दर को कॉन्फ़िगर करता हूं? इसके अलावा, यदि आप एक नज़र देख सकते हैं तो बहुत अच्छा होगा: raspberrypi.stackexchange.com/questions/47379/… धन्यवाद!
जॉर्ज

मैंने कोशिश की है / dev / serial0, और enable_uart = 1 in /boot/config.txt, एक वायरिंगपीआई कोड के साथ, जो रास्पबेरी पाई 2 के साथ काम करता था, फिर भी यह धारावाहिक संचार शुरू करने में विफल रहता है (वापसी की स्थिति -1 है)। मैंने भी कोई फायदा नहीं हुआ। मुझे क्या याद आ रही है? (raspi-config से सीरियल पोर्ट को भी मुक्त किया)। (रसियन सहित सब कुछ अप टू डेट है)
ओजेनराल

1
@ OE1 यदि आपका कोई प्रश्न किसी नए प्रश्न में है, तो टिप्पणियाँ में नहीं।
मिलियावेज़

मैं थोड़ा उलझन में हूं। तुम कैसे मतलब है कि यह समता का समर्थन नहीं करता है? मेरे पास एक डिवाइस है जो मेरी pi3 से बात करती है और इसे EVEN समता प्राप्त करनी है या मेरा सिस्टम इससे बात नहीं करेगा। आपके उत्तर और नसीर के जवाब के बाद, मैं अपने pi3 को पाने में सक्षम था, जो कि इस कार्यक्रम के बारे में बात कर रहा था।
13

1
क्या आप उस USB को UART कनवर्टर में जोड़ सकते हैं जो 3.3V संगत होना चाहिए और 5V संगत नहीं होना चाहिए।
MaNyYaCk

20

अंत में यह मेरे pi3 के लिए काम मिल गया (ओएस: डेबियन jessie)

कृपया इन 6 चरणों का ध्यानपूर्वक पालन करें

चरण 1 - एक एसडी कार्ड पर रास्पियन जेसी स्थापित करें और टर्मिनल या डेस्कटॉप के माध्यम से नेटवर्क से कनेक्ट होने पर पाई बूट करें और शेल को सिस्टम के साथ कॉन्फ़िगर करें:

sudo raspi-config

फाइलसिस्टम का विस्तार करें और उन्नत पृष्ठ पर सीरियल को सक्षम करें, बाहर निकलें और रिबूट करें।

चरण 2 के लिए आवश्यक नहीं होगा यदि आपके पास जेसी नई रिलीज़ है

sudo apt-get update

sudo apt-get upgrade

चरण 3 - डिवाइस ट्री सेटिंग्स नीचे के रूप में:

रास्पबेरी पाई 3 ब्लूटूथ को निष्क्रिय करने के लिए /boot/config.txt पर डिवाइस ट्री जोड़ें ।

sudo nano /boot/config.txt

फ़ाइल के अंत में जोड़ें

* अगर आप ब्लुटूथ को मिनीटार्ट पोर्ट (खराब) में बदलना चाहते हैं

dtoverlay=pi3-miniuart-bt

* अगर आप ब्लुटूथ (अच्छा) को निष्क्रिय करना चाहते हैं

dtoverlay=pi3-disable-bt

अपने परिवर्तनों को सहेजने वाले संपादक से बाहर निकलें।

चरण 4 - पाई को रिबूट करें

sudo reboot

चरण 5 -

a) सीरियल कंसोल को निष्क्रिय करने के लिए फ़ाइल का उपयोग करके संपादित करें

sudo nano /boot/cmdline.txt

शब्द " console=serial0,115200" या " console=ttyAMA0,115200" हटा दें

बाहर निकलें और अपने परिवर्तनों को सहेजें

ख) सीरियल कंसोल को सक्षम करने के लिए फ़ाइल का उपयोग कर संपादित करें

sudo nano /boot/cmdline.txt

फ़ाइल को निम्न में बदलें:

dwc_otg.lpm_enable=0 console=tty1 console=serial0(or ttyAMA0),115200 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

बाहर निकलें और अपने परिवर्तनों को सहेजें

चरण 6 - पाई को रिबूट करें

sudo reboot

----------------- यह सब, मज़े करो ---------------------------- ---


Rpi2 पर यह काम करता है और मैंने इसे एक ब्लूटूथ रिले बोर्ड से जोड़ा है और एटी कमांड के माध्यम से इसे संदेश भेजता है। लेकिन क्या मैं इस तरह से एक arduino से डेटा प्राप्त कर सकता हूं?
मार्सिओको

10

नसीर का जवाब सही है लेकिन थोड़ा सा विस्तृत अगर आप सिर्फ नवीनतम रसियन पर प्रकाश डाला। मुझे बस इतना करना है, बस मेरे config.txt में निम्न पंक्ति को जोड़ना है (उदाहरण के लिए खिड़कियां जहां आप वसा कार्ड विभाजन पर एसडी कार्ड में प्लग करते हैं):

dtoverlay=pi3-disable-bt

फिर इसे प्लग करें, और पीआई सीधे कंसोल पिंस पर सामान प्रिंट करेगा।


यह कैसे काम कर सकता है? ब्लूटूथ UART भी GPIO पिन से कनेक्ट नहीं है!
दिमित्री ग्रिगोरीव

4
@DmitryGrigoryev यह मेरे लिए मेरे PI 3 पर काम करता है।
ThN

2
इसने मेरे लिए भी काम किया, मैंने पाया कि इस धागे ने कुछ छोटे मुद्दों को स्पष्ट करने में मदद की: raspberrypi.org/forums/…
क्रिस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.