MCP2515 เป็นโมดูลคอนโทรลเลอร์ CAN CAN (CONTROLLER AREA) ที่ได้รับความนิยมซึ่งช่วยให้อุปกรณ์ Raspberry Pi สื่อสารกับระบบที่เปิดใช้งาน CAN สิ่งนี้ทำให้เหมาะสำหรับโครงการยานยนต์ระบบอัตโนมัติอุตสาหกรรมและแอพพลิเคชั่น IoT คู่มือนี้อธิบายวิธีการตั้งค่าและใช้ MCP2515 ด้วย Raspberry Pi
สิ่งที่คุณต้องการ
- Raspberry Pi (รุ่นใด ๆ ที่มีการสนับสนุน GPIO เช่น PI 3, PI 4)
- MCP2515 สามารถโมดูลได้
- เครื่องหั่นขนมปังและสายจัมเปอร์
- คอมพิวเตอร์ที่มีการเข้าถึง SSH ไปยัง Raspberry Pi หรือแป้นพิมพ์และจอภาพที่เชื่อมต่อ
- Python ติดตั้งบน Raspberry Pi
- โมดูลตัวรับส่งสัญญาณสามารถ (ถ้าไม่รวมอยู่ใน MCP2515)
ขั้นตอนที่ 1: เดินสาย MCP2515 ไปยัง Raspberry Pi
MCP2515 สื่อสารกับ Raspberry PI โดยใช้โปรโตคอล SPI
การเชื่อมต่อ (โหมด SPI)
MCP2515 PIN | Raspberry Pi Pin |
---|---|
VCC | 3.3V (พิน 1) |
gnd | พื้นดิน (พิน 6) |
CS | GPIO8 (PIN 24, SPI0_CE0) |
ดังนั้น | GPIO9 (PIN 21, SPI0_MISO) |
ศรี | GPIO10 (PIN 19, SPI0_MOSI) |
SCK | GPIO11 (PIN 23, SPI0_SCLK) |
int | GPIO25 (พิน 22) |
ขั้นตอนที่ 2: เปิดใช้งานอินเทอร์เฟซ SPI บน Raspberry Pi
- เปิดเครื่องมือกำหนดค่า Raspberry Pi:
sudo raspi-config
- นำทางไปยัง ตัวเลือกอินเตอร์เฟส> SPI และเปิดใช้งาน
- รีบูตราสเบอร์รี่ pi:
sudo reboot
ขั้นตอนที่ 3: ติดตั้งไลบรารีและเครื่องมือที่จำเป็น
- อัปเดต Raspberry Pi ของคุณ:
sudo apt update && sudo apt upgrade -y
- ติดตั้ง
can-utils
แพ็คเกจสำหรับการสื่อสารสามารถ:sudo apt install -y can-utils
ขั้นตอนที่ 4: กำหนดค่าอินเตอร์เฟส CAN
-
เปิด
/boot/config.txt
file:sudo nano /boot/config.txt
-
เพิ่มบรรทัดต่อไปนี้เพื่อเปิดใช้งานการซ้อนทับ MCP2515:
dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=25 dtoverlay=spi-bcm2835
บันทึกและออก
-
รีบูตราสเบอร์รี่ pi:
sudo reboot
-
เปิดอินเทอร์เฟซ CAN:
sudo ip link set can0 up type can bitrate 500000
-
ตรวจสอบอินเตอร์เฟส CAN:
ifconfig can0
ขั้นตอนที่ 5: ทดสอบ MCP2515
-
ส่งข้อความ CAN: ใช้
cansend
คำสั่งเพื่อส่งข้อความทดสอบ:cansend can0 123#DEADBEEF
-
รับข้อความ CAN: ใช้
candump
คำสั่งเพื่อตรวจสอบข้อความที่เข้ามา:candump can0
ขั้นตอนที่ 6: การใช้ Python เพื่อสื่อสารกับ MCP2515
ติดตั้ง python-can
ห้องสมุดที่จะส่งและรับข้อความสามารถผ่าน Python
การติดตั้ง
pip install python-can
ตัวอย่างสคริปต์ Python
import can
# Create a CAN bus instance
bus = can.interface.Bus(channel='can0', bustype='socketcan')
# Send a CAN message
msg = can.Message(arbitration_id=0x123, data=[0xDE, 0xAD, 0xBE, 0xEF], is_extended_id=False)
bus.send(msg)
print("Message sent: ", msg)
# Receive a CAN message
print("Waiting for a message...")
message = bus.recv()
print("Received message: ", message)
การแก้ไขปัญหา
-
ไม่พบอินเทอร์เฟซ:
- ตรวจสอบว่าเปิดใช้งานอินเตอร์เฟส SPI
- ตรวจสอบการเดินสายระหว่าง Raspberry Pi และ MCP2515
- ตรวจสอบให้แน่ใจว่า
/boot/config.txt
ไฟล์ได้รับการกำหนดค่าอย่างถูกต้อง
-
ไม่มีข้อความสามารถ:
- ตรวจสอบว่าบัสสามารถยกเลิกได้อย่างเหมาะสมด้วยตัวต้านทาน 120 โอห์ม
- ตรวจสอบให้แน่ใจว่าบิตเรตจับคู่กับอุปกรณ์ทั้งหมดบนรถบัส CAN
-
ข้อผิดพลาดของ Python:
- ตรวจสอบให้แน่ใจว่า
python-can
ติดตั้งห้องสมุด - ตรวจสอบสคริปต์ Python สำหรับการพิมพ์ผิดหรือข้อผิดพลาดการกำหนดค่า
- ตรวจสอบให้แน่ใจว่า
แอปพลิเคชันของ MCP2515
- การวินิจฉัยและการตรวจสอบยานยนต์
- ระบบอัตโนมัติอุตสาหกรรม
- เครือข่ายการสื่อสารของหุ่นยนต์
- โครงการ IoT ที่ต้องการโปรโตคอลการสื่อสารที่เชื่อถือได้
บทสรุป
MCP2515 สามารถเพิ่มโมดูลคอนโทรลเลอร์เพิ่มความสามารถในการสื่อสารที่แข็งแกร่งให้กับ Raspberry Pi ของคุณทำให้เหมาะสำหรับการใช้งานยานยนต์อุตสาหกรรมและ IoT โดยทำตามคำแนะนำนี้คุณสามารถตั้งค่าและทดสอบ MCP2515 และเริ่มสร้างโครงการที่ทรงพลังที่ใช้ประโยชน์จากโปรโตคอล CAN