ลอส หมุด GPIO ของบอร์ด Raspberry Pi 4, 3และรุ่นก่อน ๆ ให้บอร์ด SBC ที่มีความสามารถใกล้เคียงกับที่ Arduino สามารถมีได้เนื่องจากคุณสามารถสร้างโครงการอิเล็กทรอนิกส์ที่น่าสนใจซึ่งควบคุมจากระบบปฏิบัติการด้วยรหัสในภาษาต่างๆเช่น Python
นั่นทำให้บอร์ดเป็นมากกว่าคอมพิวเตอร์ราคาถูก จะช่วยให้คุณสามารถเชื่อมต่อไฟล์ องค์ประกอบอิเล็กทรอนิกส์ ที่คุณสามารถใช้กับ Arduino แต่ยังสามารถควบคุมได้จาก Pi ในคู่มือนี้ฉันจะพยายามให้ข้อมูลเกี่ยวกับพิน 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 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 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 ได้บ้าง?
คุณจะไม่เพียง แต่สามารถ เชื่อมต่ออุปกรณ์อิเล็กทรอนิกส์ ในขณะที่ ทรานซิสเตอร์, เซ็นเซอร์ความชื้น / อุณหภูมิ, เทอร์มิสเตอร์, สเต็ปเปอร์มอเตอร์, ไฟ LEDฯลฯ คุณยังสามารถเชื่อมต่อส่วนประกอบหรือโมดูลที่สร้างขึ้นโดยเฉพาะสำหรับ Raspberry Pi และขยายขีดความสามารถของบอร์ดนอกเหนือจากที่รวมอยู่ในฐาน
ฉันหมายถึงผู้มีชื่อเสียง หมวกหรือหมวก และจานที่คุณสามารถหาได้ในตลาด มีหลายประเภทตั้งแต่ที่ใช้ในการควบคุมมอเตอร์พร้อมไดรเวอร์ไปจนถึงแบบอื่นเพื่อสร้าง คลัสเตอร์คอมพิวเตอร์มี แผงไฟ LED ควบคุมได้เพื่อเพิ่ม ความสามารถของทีวี DVB, หน้าจอ LCDฯลฯ
หมวกไหมพรมเหล่านี้ ติดตั้งบนบอร์ด Raspberry Pi จับคู่ GPIO ที่จำเป็นเพื่อให้ใช้งานได้ ดังนั้นการประกอบจึงค่อนข้างง่ายและรวดเร็ว แน่นอนตรวจสอบให้แน่ใจว่ารุ่นเพลตเข้ากันได้กับหมวกแต่ละแบบเนื่องจากพอร์ต GPIO แตกต่างกันอย่างที่คุณเห็น ...
ฉันพูดแบบนี้ในกรณีที่คุณมีจานที่เก่ากว่าเนื่องจากมีหมวก เข้ากันได้กับรุ่นใหม่ล่าสุดเท่านั้น. เช่นเดียวกับ Raspberry Pi รุ่น A +, B +, 2, 3 และ 4 รุ่น
ข้อมูลเบื้องต้นเกี่ยวกับการใช้ GPIO บน Raspberry Pi
ในการเริ่มต้นบน Raspbian คุณสามารถเปิดคอนโซลและพิมพ์ คำสั่ง pinoutสิ่งที่จะกลับมาหาคุณคือภาพในเทอร์มินัลพร้อมหมุด GPIO ที่มีอยู่บนบอร์ดของคุณและแต่ละอันมีไว้เพื่ออะไร สิ่งที่เป็นประโยชน์อย่างยิ่งที่จะต้องมีอยู่เสมอในขณะทำงานเพื่อที่คุณจะได้ไม่สับสน
โครงการแรก: กะพริบ LED พร้อม GPIO
วิธีพื้นฐานที่สุดในการสร้างไฟล์ "สวัสดีชาวโลก" ด้วย 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
เลือกได้อย่างยืดหยุ่น คนที่คุณชอบมากที่สุดหรือคุณคิดว่าเรียบง่าย
บทความดีๆเกี่ยวกับการเริ่มต้นที่ Rasperry
ขอบคุณมาก
คุณเป็นผู้เขียน?
ใช่