GPIO: ทั้งหมดเกี่ยวกับการเชื่อมต่อ Raspberry Pi 4 และ 3

ราสเบอร์รี่ Pi 4 GPIO

ลอส หมุด GPIO ของบอร์ด Raspberry Pi 4, 3และรุ่นก่อน ๆ ให้บอร์ด SBC ที่มีความสามารถใกล้เคียงกับที่ Arduino สามารถมีได้เนื่องจากคุณสามารถสร้างโครงการอิเล็กทรอนิกส์ที่น่าสนใจซึ่งควบคุมจากระบบปฏิบัติการด้วยรหัสในภาษาต่างๆเช่น Python

นั่นทำให้บอร์ดเป็นมากกว่าคอมพิวเตอร์ราคาถูก จะช่วยให้คุณสามารถเชื่อมต่อไฟล์ องค์ประกอบอิเล็กทรอนิกส์ ที่คุณสามารถใช้กับ Arduino แต่ยังสามารถควบคุมได้จาก Pi ในคู่มือนี้ฉันจะพยายามให้ข้อมูลเกี่ยวกับพิน GPIO เหล่านี้ให้มากที่สุดเพื่อที่คุณจะได้เริ่มใช้ประโยชน์จากมัน ...

GPIO คืออะไร?

GPIO

GPIO เป็นคำย่อของ General Purpose Input / Output นั่นคือ General Purpose Input / Output ผลิตภัณฑ์อิเล็กทรอนิกส์ที่แตกต่างกันสามารถมีได้เช่นชิปเองหรือแผงวงจร PCB บางอย่างเช่น Raspberry Pi นี้ ตามชื่อของพวกเขาพวกเขาเป็นพินที่สามารถกำหนดค่าให้ทำหน้าที่ต่าง ๆ ได้ดังนั้นจึงมีวัตถุประสงค์ทั่วไปไม่ใช่เพื่อการใช้งานเฉพาะ

จะเป็นผู้ใช้ที่รันไทม์ที่สามารถ กำหนดค่าพิน GPIO เหล่านี้ เพื่อให้พวกเขาทำในสิ่งที่เขาต้องการ สามารถทำได้หลายวิธีเช่นด้วยรหัสหรือสคริปต์บางอย่างจากคอนโซลหรือด้วยโปรแกรม Python ซึ่งเป็นหนึ่งในวิธีที่ง่ายที่สุดและเป็นที่ต้องการมากที่สุดเนื่องจากมีตัวเลือกมากมายให้คุณเลือกใช้

ด้วยวิธีนี้ Raspberry Pi ไม่เพียง แต่มีพอร์ตและ อินเตอร์เฟซ เพื่อเชื่อมต่ออุปกรณ์มาตรฐานหลายเครื่อง แต่เพิ่มพิน GPIO เหล่านี้เพื่อให้คุณสามารถเพิ่มอุปกรณ์อิเล็กทรอนิกส์อื่น ๆ หรือโปรเจ็กต์ผู้สร้างที่คุณสร้างขึ้นเอง ในลักษณะเดียวกับที่คุณทำกับ Arduino และพิน I / O สำหรับควบคุม

Y ไม่ใช่เฉพาะ Arduino หรือ Raspberry Piดังนั้นทำบอร์ด SBC อื่น ๆ ที่คล้ายกันและผลิตภัณฑ์ฝังตัว

ฟังก์ชัน GPIO

และระหว่าง CARACTERISTICS ของเธอ โดดเด่นที่สุด:

  • พวกเขาสามารถ ได้รับการกำหนดค่า ดังนั้น เป็นอินพุตเป็นเอาต์พุต. พวกเขามีความเป็นคู่เหมือนที่เกิดขึ้นกับคนเหล่านั้น แพลตฟอร์มฮาร์ดแวร์.
  • หมุด GPIO ด้วย สามารถเปิดใช้งานและปิดใช้งานได้ ตามรหัส นั่นคือสามารถตั้งค่าเป็น 1 (ระดับแรงดันไฟฟ้าสูง) หรือ 0 (ระดับแรงดันไฟฟ้าต่ำ)
  • แน่นอนพวกเขาทำได้ อ่านข้อมูลไบนารีเช่นเดียวกับเลขและศูนย์กล่าวคือสัญญาณแรงดันไฟฟ้าหรือไม่มีสัญญาณ
  • ค่าเอาต์พุตของ การอ่านและการเขียน.
  • ค่าอินพุตสามารถกำหนดค่าได้ในบางกรณีเป็น เหตุการณ์ที่เกิดขึ้น เพื่อให้พวกเขาสร้างการกระทำบางอย่างบนบอร์ดหรือระบบ ระบบฝังตัวบางระบบใช้เป็น IRQ อีกกรณีหนึ่งคือการกำหนดค่าว่าเมื่อเซ็นเซอร์หนึ่งตัวหรือมากกว่านั้นทำงานโดยเซ็นเซอร์บางตัวให้ดำเนินการบางอย่าง
  • สำหรับแรงดันไฟฟ้าและความเข้มคุณต้องทราบถึงความจุสูงสุดที่บอร์ดยอมรับได้ในกรณีนี้คือ Raspberry Pi 4 หรือ 3 คุณไม่ควรผ่านมันเพื่อหลีกเลี่ยงความเสียหาย

อย่างไรก็ตามเมื่อมีการจัดกลุ่มพิน GPIO เช่นเดียวกับกรณีของ Raspberry Pi กลุ่มนี้เรียกว่า พอร์ต GPIO.

หมุด GPIO ของ Raspberry Pi

Raspberry Pi GPIO

โครงการใช้ได้สำหรับเวอร์ชัน 4, 3, Zero

ใหม่ บอร์ด Raspberry Pi 4 และเวอร์ชัน 3 มีหมุด GPIO จำนวนมาก ไม่ใช่ทุกเวอร์ชันที่เสนอจำนวนเท่ากันและไม่ได้มีการกำหนดหมายเลขในลักษณะเดียวกันดังนั้นคุณต้องระมัดระวังในเรื่องนี้เพื่อให้ทราบว่าคุณควรทำการเชื่อมต่ออย่างไรตามรุ่นและการแก้ไขที่คุณมี

แต่สิ่งที่ทั่วไปกว่าคือประเภทของ GPIO ที่คุณสามารถพบได้ในพอร์ตของบอร์ด Raspberry Pi และนั่นจะเป็นสิ่งแรกที่ฉันอยากจะบอกให้ชัดเจนเพราะนั่นคือวิธีที่คุณจะรู้ ประเภทของหมุด คุณสามารถไว้วางใจโครงการของคุณ:

  • การให้อาหาร: หมุดเหล่านี้ใช้เพื่อเชื่อมต่อสายไฟหรือสายไฟสำหรับโครงการอิเล็กทรอนิกส์ของคุณ พวกเขาสอดคล้องกับพินที่คล้ายกับบนบอร์ด Arduino และให้แรงดันไฟฟ้า 5v และ 3v3 (3.3v จำกัด ที่โหลด 50mA) นอกจากนี้คุณยังจะพบคนกราวด์ (GND หรือกราวด์) หากคุณไม่ใช้แหล่งจ่ายไฟภายนอกเช่นแบตเตอรี่หรืออะแดปเตอร์พินเหล่านี้จะช่วยจ่ายไฟให้กับวงจรของคุณ
  • DNC (ห้ามเชื่อมต่อ): เป็นพินที่อยู่ในบางเวอร์ชันและไม่มีฟังก์ชัน แต่ในบอร์ดใหม่พวกเขาได้รับจุดประสงค์อื่น คุณจะพบสิ่งเหล่านี้ใน Pi รุ่นดั้งเดิมเท่านั้น ใน 3 และ 4 ใหม่พวกเขาจะถูกทำเครื่องหมายเป็น GND โดยทั่วไปสามารถรวมเข้ากับกลุ่มก่อนหน้าได้
  • หมุดที่กำหนดค่าได้: เป็น GPIO ปกติและสามารถตั้งโปรแกรมได้โดยใช้รหัสตามที่ฉันจะอธิบายในภายหลังเพื่อทำสิ่งที่คุณต้องการ
  • หมุดพิเศษ: นี่คือการเชื่อมต่อบางส่วนที่มีไว้สำหรับการเชื่อมต่อพิเศษหรืออินเทอร์เฟซเช่นการเชื่อมต่อแบบอนุกรม UART, TXD และ RXD เป็นต้นซึ่งเกิดขึ้นกับ Arduino คุณจะพบบางอย่างเช่น SDA, SCL, MOSI, MISO, SCLK, CE0, CE1 เป็นต้น พวกเขาโดดเด่นในหมู่พวกเขา:
    • PWMซึ่งสามารถควบคุมความกว้างของพัลส์ดังที่เราเห็นในบทความก่อนหน้านี้ ใน Raspberry Pi 3 และ 4 คือ GPIO12, GPIO13, GPIO18 และ GPIO19
    • SPI เป็นอินเทอร์เฟซการสื่อสารอื่นที่ฉันพูดถึงในบทความอื่นด้วย ในกรณีของบอร์ด 40 พินใหม่จะเป็นหมุด (ที่มีช่องทางการสื่อสารที่แตกต่างกันดังที่คุณเห็น):
      • SPI0: MOSI (GPIO10), มิโซะ (GPIO9), SCLK (GPIO11), CE0 (GPIO8), CE1 (GPIO7)
      • SPI1: MOSI (GPIO20); มิโซ (GPIO19); SCLK (GPIO21); CE0 (GPIO18); CE1 (GPIO17); CE2 (GPIO16)
    • I2C เป็นอีกหนึ่งการเชื่อมต่อที่ฉันได้อธิบายไว้ในบล็อกนี้ บัสนี้ประกอบด้วยสัญญาณข้อมูล (GPIO2) และนาฬิกา (GPIO3) นอกเหนือจากข้อมูล EEPROM (GPIO0) และนาฬิกา EEPROM (GPIO1)
    • Serial ซึ่งเป็นอีกหนึ่งการสื่อสารที่ใช้งานได้จริงกับพิน TX (GPIO14) และ RX (GPIO15) เช่นเดียวกับที่คุณสามารถพบได้บนบอร์ด Arduino UNO.

โปรดจำไว้ว่า GPIO เป็นส่วนต่อประสานระหว่าง Raspberry Pi กับโลกภายนอก แต่มี ข้อ จำกัด ของมันโดยเฉพาะไฟฟ้า สิ่งที่คุณต้องคำนึงถึงเพื่อไม่ให้บอร์ดเสียคือจำไว้ว่าพิน GPIO เหล่านี้มักจะไม่มีบัฟเฟอร์กล่าวคือไม่มีบัฟเฟอร์ ซึ่งหมายความว่าพวกเขาไม่มีการป้องกันดังนั้นคุณต้องตรวจสอบขนาดของแรงดันไฟฟ้าและความเข้มที่ใช้เพื่อไม่ให้ลงเอยด้วยแผ่นที่ไร้ประโยชน์ ...

ความแตกต่างระหว่างรุ่นของ GPIO

หมุด Raspberry Pi GPIO เก่า

ที่ผมกล่าวว่า, ไม่ใช่ทุกรุ่นที่เป็นหมุดเดียวกันนี่คือไดอะแกรมบางส่วนเพื่อให้คุณเห็นความแตกต่างระหว่างรุ่นต่างๆและทำให้สามารถโฟกัสไปที่ Raspberry Pi 4 และ 3 ซึ่งเป็นรุ่นใหม่ล่าสุดและเป็นรุ่นที่คุณอาจมีไว้ในครอบครอง ความแตกต่างระหว่าง (ทุกกลุ่มใช้หมุดเดียวกัน):

  • Raspberry Pi 1 Model B Rev 1.0 โดยมี 26 พินแตกต่างจาก Rev2 เล็กน้อย
  • Raspberry Pi 1 Model A และ B Rev 2.0 ทั้งสองรุ่นมี 26-pin
  • Rapsberry Pi Model A +, B +, 2B, 3B, 3B +, Zero และ Zero W และยังมี 4 รุ่นทั้งหมดนี้มีส่วนหัว GPIO 40 พิน

ฉันสามารถเสียบอะไรเข้ากับ GPIO ได้บ้าง?

หมวก Raspberry Pi

คุณจะไม่เพียง แต่สามารถ เชื่อมต่ออุปกรณ์อิเล็กทรอนิกส์ ในขณะที่ ทรานซิสเตอร์, เซ็นเซอร์ความชื้น / อุณหภูมิ, เทอร์มิสเตอร์, สเต็ปเปอร์มอเตอร์, ไฟ LEDฯลฯ คุณยังสามารถเชื่อมต่อส่วนประกอบหรือโมดูลที่สร้างขึ้นโดยเฉพาะสำหรับ Raspberry Pi และขยายขีดความสามารถของบอร์ดนอกเหนือจากที่รวมอยู่ในฐาน

ฉันหมายถึงผู้มีชื่อเสียง หมวกหรือหมวก และจานที่คุณสามารถหาได้ในตลาด มีหลายประเภทตั้งแต่ที่ใช้ในการควบคุมมอเตอร์พร้อมไดรเวอร์ไปจนถึงแบบอื่นเพื่อสร้าง คลัสเตอร์คอมพิวเตอร์มี แผงไฟ LED ควบคุมได้เพื่อเพิ่ม ความสามารถของทีวี DVB, หน้าจอ LCDฯลฯ

หมวกไหมพรมเหล่านี้ ติดตั้งบนบอร์ด Raspberry Pi จับคู่ GPIO ที่จำเป็นเพื่อให้ใช้งานได้ ดังนั้นการประกอบจึงค่อนข้างง่ายและรวดเร็ว แน่นอนตรวจสอบให้แน่ใจว่ารุ่นเพลตเข้ากันได้กับหมวกแต่ละแบบเนื่องจากพอร์ต GPIO แตกต่างกันอย่างที่คุณเห็น ...

ฉันพูดแบบนี้ในกรณีที่คุณมีจานที่เก่ากว่าเนื่องจากมีหมวก เข้ากันได้กับรุ่นใหม่ล่าสุดเท่านั้น. เช่นเดียวกับ Raspberry Pi รุ่น A +, B +, 2, 3 และ 4 รุ่น

ข้อมูลเบื้องต้นเกี่ยวกับการใช้ GPIO บน Raspberry Pi

เอาต์พุตคำสั่ง Pinout

ที่มา: Raspberry Pi

ในการเริ่มต้นบน Raspbian คุณสามารถเปิดคอนโซลและพิมพ์ คำสั่ง pinoutสิ่งที่จะกลับมาหาคุณคือภาพในเทอร์มินัลพร้อมหมุด GPIO ที่มีอยู่บนบอร์ดของคุณและแต่ละอันมีไว้เพื่ออะไร สิ่งที่เป็นประโยชน์อย่างยิ่งที่จะต้องมีอยู่เสมอในขณะทำงานเพื่อที่คุณจะได้ไม่สับสน

โครงการแรก: กะพริบ LED พร้อม GPIO

GPIO พร้อม LED บน Raspberry Pi

วิธีพื้นฐานที่สุดในการสร้างไฟล์ "สวัสดีชาวโลก" ด้วย GPIO คือการใช้ LED แบบธรรมดาเชื่อมต่อกับพินของ Raspberry Pi เพื่อให้คุณเห็นว่ามันทำงานอย่างไร ในกรณีนี้ฉันได้เชื่อมต่อกับ GND และอีกอันกับพิน 17 แม้ว่าคุณจะสามารถเลือกพินปกติอื่นได้ ...

เมื่อเชื่อมต่อแล้วคุณสามารถ ควบคุมพวกเขาจาก Raspbian การใช้เทอร์มินัล ใน Linux ไฟล์เฉพาะจะถูกใช้เช่นเดียวกับไฟล์ในไดเร็กทอรี / sys / class / gpio / ตัวอย่างเช่นในการสร้างไฟล์ที่มีโครงสร้างที่จำเป็นเพื่อเริ่มทำงาน:

echo 17 > /sys/class/gpio/export

จากนั้นคุณสามารถ กำหนดค่าเป็นอินพุต (เข้า) หรือเป็นเอาต์พุต (ออก) หมุด 17 ที่เลือกสำหรับตัวอย่างของเรา คุณสามารถทำได้อย่างง่ายดายด้วย:

echo out > /sys/class/gpio/gpio17/direction

ในกรณีนี้เป็นเอาต์พุตเนื่องจากเราต้องการส่งพัลส์ไฟฟ้าไปยัง LED เพื่อเปิดใช้งาน แต่ถ้าเป็นเซ็นเซอร์ ฯลฯ คุณสามารถใช้ในรูปแบบ. ตอนนี้สำหรับ เปิด (1) หรือปิด (0) LED ที่คุณสามารถใช้ได้:

echo 1 > /sys/class/gpio/gpio17/value
echo 0 > /sys/class/gpio/gpio17/value

หากคุณต้องการย้ายไปยังโครงการอื่นและ ลบรายการ สร้างขึ้นคุณสามารถทำได้ด้วยวิธีนี้:

echo 17 > /sys/class/gpio/unexport

นอกจากนี้คุณยังสามารถรวบรวมคำสั่งที่จำเป็นทั้งหมดสำหรับโครงการของคุณเช่นเดียวกับคำสั่งก่อนหน้าทั้งหมดบันทึกเป็นประเภทไฟล์ สคริปต์ทุบตี จากนั้นเรียกใช้เป็นกลุ่มพร้อมกันแทนที่จะพิมพ์ทีละรายการ สิ่งนี้มีประโยชน์เมื่อคุณทำแบบฝึกหัดเดิมซ้ำหลาย ๆ ครั้งคุณจึงไม่ต้องเขียนซ้ำ เพียงแค่วิ่งและไป ตัวอย่างเช่น:

nano led.sh

#!/bin/bash
source gpio 
gpio mode 17 out
while true; do 
gpio write 17 1 
sleep 1.3 
gpio write 17 0 
sleep 1.3 done

เมื่อคุณเสร็จสิ้นคุณจะบันทึกจากนั้นคุณสามารถให้สิทธิ์ในการดำเนินการและดำเนินการที่เหมาะสมได้ สคริปต์ เพื่อให้ LED เปิดรอ 1.3 วินาทีแล้วปิดแบบนี้วนซ้ำ ...

chmod +x led.sh
./led.sh

โปรแกรมล่วงหน้า

ซอร์สโค้ดภาษาการเขียนโปรแกรม

เห็นได้ชัดว่าข้างต้นใช้งานได้กับโครงการอิเล็กทรอนิกส์ขนาดเล็กที่มีส่วนประกอบไม่กี่ชิ้น แต่ถ้าคุณต้องการสร้างสิ่งที่ก้าวหน้าขึ้นแทนที่จะใช้คำสั่งสิ่งที่คุณสามารถใช้ได้คือ ภาษาโปรแกรม เพื่อสร้างสคริปต์หรือซอร์สโค้ดที่แตกต่างกันซึ่งทำให้การดำเนินการเป็นไปโดยอัตโนมัติ

พวกเขาสามารถใช้ เครื่องมือที่แตกต่างกัน ในการเขียนโปรแกรมด้วยภาษาที่แตกต่างกันมาก ไลบรารีที่ชุมชนได้พัฒนาทำให้สิ่งต่างๆง่ายขึ้นสำหรับคุณเช่น WiringPi, sysfs, pigpio เป็นต้น โปรแกรมมีความหลากหลายตั้งแต่ Python ซึ่งเป็นตัวเลือกที่ต้องการสำหรับหลาย ๆ โปรแกรมผ่าน Ruby, Java, Perl, BASIC และแม้แต่ C #

อย่างเป็นทางการ Raspberry Pi ให้คุณ สิ่งอำนวยความสะดวกมากมาย เพื่อตั้งโปรแกรม GPIO ของคุณเช่น:

  • รอยขีดข่วนสำหรับผู้ที่ไม่ทราบวิธีการเขียนโปรแกรมและต้องการใช้บล็อกปริศนาของโครงการนี้ที่สามารถตั้งโปรแกรม Arduino ได้เป็นต้น การเขียนโปรแกรมด้วยบล็อกกราฟิกนั้นค่อนข้างใช้งานง่ายและใช้ได้จริงสำหรับสาขาการศึกษา
  • หลาม: ภาษาการเขียนโปรแกรมที่ตีความง่ายนี้ช่วยให้คุณสร้างรหัสที่เรียบง่ายและมีประสิทธิภาพพร้อมด้วยไลบรารีจำนวนมากที่คุณสามารถทำได้เกือบทุกอย่าง
  • C / C ++ / C #: เป็นภาษาโปรแกรมที่มีประสิทธิภาพมากขึ้นในการสร้างไบนารีเพื่อใช้โต้ตอบกับ GPIO คุณสามารถทำได้หลายวิธีโดยใช้แบบฟอร์มมาตรฐานหรืออินเทอร์เฟซเคอร์เนลผ่านไลบรารีlibgpiodแต่ยังผ่านไลบรารีของบุคคลที่สามเช่น หมู.
  • การประมวลผล 3คล้ายกับ Arduino

เลือกได้อย่างยืดหยุ่น คนที่คุณชอบมากที่สุดหรือคุณคิดว่าเรียบง่าย


4 ความคิดเห็นฝากของคุณ

แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา

  1.   ศัตรู dijo

    บทความดีๆเกี่ยวกับการเริ่มต้นที่ Rasperry

    1.    ไอแซก dijo

      ขอบคุณมาก

      1.    รู ธ เมดินา dijo

        คุณเป็นผู้เขียน?

        1.    ไอแซก dijo

          ใช่